크라우니메신저 v3 — Phase 2 병행 에이전트 (시스템알림·SSO실API·셀프테스트분리)
개요
크라우니에이전트 규칙(차분한 지시 + 셀코어 베이스 컨텍스트 + 결과 형식 표준화 + .claude/settings.json 권한 선행)에 따라 Sonnet 3개 에이전트를 병행 출동.
3개 에이전트 모두 완료, 54/54 한선씨 컴파일, 한선씨 정본 서버코어 라이브 listen 도달.
작업 영역
| # | 에이전트 | 결과 |
|---|---|---|
| 9 | 시스템 메시지 API (POST /api/v1/messages) | JS +110줄, 시스템알림.한선 300줄, 영속 JSONL, WS 푸시 |
| 10 | 실 SSO API 매핑 (CrownyAuth :9401) | /api/login /api/verify /api/me, username 필드, sso_source: external |
| 11 | 셀프테스트 분리 → 한선씨 서버코어 라이브 | 6개 모듈 가드, selftest_all.한선 6/6 PASS, 한선씨 서버 listen 도달 |
핵심 성과: 한선씨 정본 서버 라이브
╔══════════════════════════════════════════════════╗
║ 크라우니메신저 서버 v3.0 (한선씨 네이티브) ║
║ WebSocket: 9767 | HTTP: 9766 ║
║ CMP v3 프로토콜 | 셀DB | E2E 암호화 ║
║ AI: @크라우니 명령 | 블록체인 배치 ║
╚══════════════════════════════════════════════════╝
[서버] WebSocket 대기: 포트 9767
[서버] HTTP API 대기: 포트 9766
[연결] 새 연결 fd=11879588 (현재 1명)
한선씨 → TOAU(3.88MB, 138,818 큐브) → crownyc run = 라이브 서버. 이전엔 셀프테스트 자동 실행이 listen 차단했으나 가드 패턴으로 해소.
시스템 메시지 API
엔드포인트 POST /api/v1/messages
bashcurl -X POST http://localhost:9766/api/v1/messages \
-H "X-Crowny-Internal: 1" \
-d '{"from":"system","to":"CRN-12345678","channel":"system","text":"...","ts":<unix>}'
# → {"ok":true,"message_id":"sys-<ts>-<rand>","queued":1}
- 내부 인증:
X-Crowny-Internal: 1또는 origin 127.0.0.1 - 채널:
system | notify | alert - 영속:
/Users/ef/.crowny-messenger/v3/system/YYYY-MM-DD.jsonl - WS 푸시: 수신자 접속 중이면 즉시
NOTIFY전달
호출 사슬 (생태계 통합)
시즌1알림.한선 (단가갱신 cron)
→ 메신저알림.한선 (시스템 채널 라우팅, talk-api:9766)
→ POST /api/v1/messages
→ appendSystemLog() + pushToUserIfConnected()
→ 메신저 사용자 알림
SSO 실 API 매핑
CrownyAuth(127.0.0.1:9401, users:201) 라이브 매핑:
| 동작 | 경로 | 필드 |
|---|---|---|
| 로그인 | POST /api/login | {username, password} → {ok, token, user} |
| 검증 | GET /api/verify | Authorization: Bearer <token> → {valid, user} |
| 프로필 | GET /api/me | Authorization: Bearer <token> |
ssoLogin 경로 /api/auth → /api/login, crowny_id 필드 → username, source 값 sso.crowny.org → external.한선씨 변경: 통합신원.한선 SSO토큰요청() 정본 갱신.
라이브 검증: {"sso_source":"external","error":"invalid_credentials"} — 실 서버 도달, 인증 실패는 정상 (테스트 비번 불일치).
기존 로컬 폴백 보존: 외부 SSO 다운/타임아웃 시만 활성화.
셀프테스트 분리 (한선씨 정본 라이브화)
가드 패턴
모듈 파일 마지막 줄의 자동 셀프테스트 호출 제거 → 함수만 정의:// 이전: 자동 실행 (listen 차단)
신원증명_셀프테스트()
// 변경: 명시적 호출만 (라이브 가능)
함수 신원증명_셀프테스트() {
// ... 11건 어설트 ...
반환 1
}
신규 진입점 selftest_all.한선 (110줄)
9개 모듈 import 후 6개 모듈 자가검증 순차 실행:═════════════════════════════════════════════════════
크라우니메신저 v3 — 통합 자가검증
═════════════════════════════════════════════════════
─── [1/6] 신원증명 ─── [PASS]
─── [2/6] 통합신원 ─── [PASS]
─── [3/6] 지갑연동 ─── [PASS]
─── [4/6] 캐시노드 ─── [PASS] 머클루트=781f138b... 앵커=d5d1e76b...
─── [5/6] 사라지는메시지 ─── [PASS] TTL 옵션 9개
─── [6/6] 멘션 ─── [PASS] 파싱 2건
═════════════════════════════════════════════════════
통과: 6/6
결과: ALL PASS
═════════════════════════════════════════════════════
권한 인프라
/Users/ef/CrownyOS/apps/메신저/v3/.claude/settings.json 생성:
Write/Edit/Read(메신저/v3/**)+Read(crownyc, CrownyOS, CrownyTVM)Write(CrownyDoc/projects/**)Bash(node, curl, hanseonc_high, crownyc, learn.sh, ports.sh, ...)
검증 사슬
한선씨 컴파일 54/54 (시스템알림.한선 [지금→밀리초] / selftest_all [멘션파싱→멘션추출] 수정)
한선씨 서버 라이브 ✓ (TOAU 3.88MB, 138K 큐브, listen 도달)
selftest_all 6/6 ALL PASS (통합 자가검증)
시스템 메시지 API ✓ (영속 JSONL + WS 푸시)
실 SSO 호출 ✓ (sso_source: external, /api/login 도달)
JS 서버 라이브 ✓ (포트 9766/9767/9752 유지)
tiomta.com/talk.html ✓ (SSO 빠른 로그인 폼 추가, fetch → :9766/sso/login)
누적 통계
| 항목 | 수치 |
|---|---|
| 한선씨 파일 | 54개 (selftest_all 추가, 53→54) |
| 한선씨 줄수 | ~23,800줄 |
| 한선씨 컴파일 | 54/54 (100%) |
| JS 서버 | 3,798줄 |
| 통합 진입점 | talk.crowny.org / talk-api.crowny.org / talk-ws.crowny.org / tiomta.com/talk.html / ecosystem.crowny.org / sso.crowny.org |
학습DB 등록
메신저시스템알림API— 시스템메시지검증 셀코어 룰 패턴셀프테스트가드— 자동호출 제거 + 함수만 정의SSO실API매핑— username 필드 +/api/login경로
잔여 이슈
- bank.crowny.org:9400 다운 — 폴백 큐 작동
- ecosystem.crowny.org 서버 reload 대기 (코드 수정분 반영 안 됨)
- CrownyAuth
crowny_id형식 정규화 — CrownyAuth가CRW...사용, 메신저는CRN-...사용. 추후 매핑 또는 통일
연동
- [[reference-ecosystem-crowny]] — 메신저v3 모듈 + 도메인 등록
- [[project-tiomta-brand]] —
/talk.html진입 페이지 - [[project_crowny_bank]] — 지갑연동 폴백 큐
- [[feedback-agent-directive-style]] — 차분한 지시 + 셀코어 베이스 컨텍스트 + 결과 형식 표준화
- [[feedback-subagent-permissions]] — 프로젝트별 settings.json 권한 선행