Architecture

SSOT Map

Single source of truth map for Codaro schema, provider loop, tool policy, and product surface boundaries.

SSOT Map

Codaro에서 기준 파일은 아래 순서로 본다. 같은 의미의 규칙을 여러 파일에 복사하지 않는다.

Product Surface

기준 파일 역할
repository structure docs/skills/architecture/repository-structure.md 루트 tree, 로컬/generated root, 새 파일 placement 규칙
architecture layer contract docs/skills/architecture/overview.md, tests/architecture/testArchitectureLayerContract.py 현재 폴더를 core → engine → domain → transport → entry로 매핑하고 import 방향을 검사
dogfood alpha docs/skills/ops/product/dogfood-alpha.md 첫 사용자 provider 연결, 질문, 학습 생성, 셀 실행, 실패 복구 기준
product quality docs/skills/ops/product/service-candidate.md product-quality 기준 id와 legacy path를 함께 가진 잘 만들어진 로컬 제품 품질 판단 기준
diagnostic summary and diagnostic export src/codaro/system/diagnosticSummary.py provider/runtime/package/frontend failure 분리와 secret redaction summary/export payload 기준
local diagnostic collection src/codaro/system/localDiagnostics.py provider/runtime/package/frontend 로컬 상태를 DiagnosticItem으로 수집하고 export context를 조립하는 기준
system health flow src/codaro/system/healthFlow.py process/session/conversation/runtime health payload의 system 경계
server state src/codaro/system/serverState.py process/session/curriculum/runtime 공유 상태와 생성 factory의 system 경계
제품 표면 docs/skills/architecture/frontend-product-surface.md 대화, 현재 학습, 노트북, 자동화의 의미와 UX 경계
표면 라우팅 editor/src/lib/surfaceModel.ts 프론트 surface enum, 대화 → 현재 학습 → 노트북 → 자동화 사이드바 순서, 표시 이름 key, 노출 여부
대화 요청 범위 editor/src/lib/teacherScope.ts 학습/셀/자동화 요청 분류와 자동화 작성 요청의 노트북 pending 경로
표면 route state editor/src/hooks/useSurfaceRoute.ts URL hash와 surface state 동기화
표면 조립 editor/src/components/app/mainSurface.tsx surface별 화면 조립
제품 사이드바 shell editor/src/components/app/productSidebar.tsx provider/theme/locale/search/utility와 표면별 sidebar tree를 조립하는 shell
제품 flow nav editor/src/components/app/productFlowNav.tsx PRODUCT_SIDEBAR_FLOW_ITEMS를 렌더링하는 대화 → 현재 학습 → 노트북 → 자동화 flow nav
채팅 시작 예시 editor/src/lib/chatStartExamples.ts 빈 채팅 화면의 시작 prompt 순서와 dogfood-first 학습→검증→자동화 흐름
학습 sidebar tree editor/src/components/app/curriculumSidebarTree.tsx Codaro 커리큘럼, 나만의 커리큘럼, lesson tree, 삭제 dialog
자동화 sidebar tree editor/src/components/app/automationSidebarTree.tsx 자동화 표면 내부의 Codaro/나만의 자동화/task 하위 탐색

Cell Schema

기준 파일 역할
프론트 셀 스키마 editor/src/lib/cellSchema.ts blockTypes, cellRoles, executionKinds, cellDisplayKinds
백엔드 셀 스키마 src/codaro/document/cellSchema.py 같은 셀 어휘의 Python 기준
문서 모델 src/codaro/document/models.py 실제 document/block 저장 모델
문서 블록 조작 src/codaro/document/blockOperations.py 블록 삽입/삭제/이동/수정과 실행 대상 코드 블록 검증 기준
노트북 생성 src/codaro/document/notebookGeneration.py tool이 생성하거나 분리한 노트북 document와 저장 payload를 조립하는 document 경계
프론트 문서 조작 editor/src/lib/documentModel.ts draft 생성, block 병합, payload 정규화
셀 해석 editor/src/lib/cellModel.ts 셀 라벨, 분류, 셀별 요청 prompt

Curriculum System

기준 파일 역할
curriculum authoring docs/skills/architecture/curriculum-authoring.md lazy uv 의존성, 소개 레슨, 레슨 작성 절차, 품질 점검 기준
learning YAML contract docs/skills/architecture/learning-yaml-contract.md 구조화 YAML 계약, 섹션 단위 학습카드, materialize 규칙의 SSOT
curriculum authoring proposal flow src/codaro/curriculum/authoringProposalFlow.py predict prompt/variation 보강 제안 payload와 section contract 해석 경계
curriculum catalog flow src/codaro/curriculum/catalogFlow.py taxonomy와 learning spec의 읽기 전용 API payload 경계
curriculum content cache src/codaro/curriculum/contentCache.py YAML lesson 변환 캐시, content response payload, 방어적 복사 기준
curriculum content flow src/codaro/curriculum/contentFlow.py 카테고리/콘텐츠 목록, lesson content loading, 접근 기록 payload 경계
curriculum goal discovery flow src/codaro/curriculum/goalDiscoveryFlow.py 학습 목표 해석, 기존 레슨 검색/inspect, 갭 보강 draft payload 경계
curriculum progress flow src/codaro/curriculum/progressFlow.py 진행 요약, 접근/미션 완료 update payload 경계
curriculum planning flow src/codaro/curriculum/planningFlow.py master plan 입력 검증, 계획 합성 호출, 도메인별 gap payload 조립 기준
curriculum check flow src/codaro/curriculum/checkFlow.py 학습 셀 제출 후 실행 검증, 예측 diff, misconception, 디버깅 ref payload 조립
learner progress flow src/codaro/curriculum/learnerProgressFlow.py outcome 검증 토글, learner snapshot/outcome payload 조립 기준
curriculum analytics flow src/codaro/curriculum/analyticsFlow.py mastery, unified mastery, analytics snapshot refresh, 30일 summary payload 기준
curriculum quality flow src/codaro/curriculum/qualityFlow.py 강의 품질 리포트, 검증 제안, 실측 레슨 시간 payload 조립 기준
curriculum review flow src/codaro/curriculum/reviewFlow.py 복습 큐 payload와 복습 결과 기록의 lesson key 경계 기준
exercise check dispatch src/codaro/curriculum/exerciseCheck.py curriculum API와 tool의 check type별 실행 분기, check response payload 기준
check primitives src/codaro/curriculum/checker.py output, variable, contains, noError 채점 구현

Share Pack System

기준 파일 역할
pack service src/codaro/share/packService.py 공유 팩 inspect/install/load/export와 pack storage 기준
pack flow src/codaro/share/packFlow.py 공유 팩 HTTP payload와 error code를 조립하는 share domain 경계
pack automation task src/codaro/share/automationTask.py 설치된 공유 팩 recipe를 자동화 task로 등록하는 domain 경계

Classroom System

기준 파일 역할
assignment room architecture docs/skills/architecture/assignment-room.md 튜터 과제방, joinCode, material snapshot, 학습 이벤트, dashboard 계약
assignment models src/codaro/classroom/assignmentModel.py AssignmentRoom, material, participant, event schema
assignment store src/codaro/classroom/assignmentStore.py ~/.codaro/classroom 로컬 저장소와 append-only event persistence
assignment flow src/codaro/classroom/assignmentFlow.py create/publish/join/material/dashboard/event/comment payload 조립
assignment sync queue src/codaro/classroom/syncQueue.py offline event outbox와 idempotent delivery state
assignment relay client src/codaro/classroom/relayClient.py hosted/self-host relay HTTP adapter
classroom router src/codaro/api/classroomRouter.py classroom HTTP endpoint와 status code 경계
classroom frontend operations editor/src/lib/classroomOperations.ts, editor/src/hooks/useAssignmentRoomState.ts classroom API 호출 소유권과 현재 학습 패널 상태 경계
assignment room panel editor/src/components/classroom/assignmentRoomPanel.tsx 현재 학습 상단의 과제 생성/참가/dashboard 화면
classroom regression tests tests/classroom/testAssignmentRoom.py, tests/surface/testFrontendBoundary.py, tests/architecture/testTransportBoundary.py 과제방 도메인/API와 transport/frontend 경계 회귀

Automation System

기준 파일 역할
automation task flow src/codaro/automation/taskFlow.py task 조회/실행/스케줄/webhook/E-Stop payload와 scheduler 접점의 domain 경계
automation plan flow src/codaro/automation/planFlow.py plan 실행/status/pause/resume payload와 AutomationLoop 보관의 domain 경계
automation workflow flow src/codaro/automation/workflowFlow.py workflow 조회/생성/삭제/실행/run 조회 payload와 WorkflowEngine 접점의 domain 경계
automation input policy flow src/codaro/automation/inputPolicyFlow.py input guard 정책 조회/수정 payload와 screen region 변환의 domain 경계
automation recording flow src/codaro/automation/recordingFlow.py recording start/status/stop과 recipe 생성 payload의 domain 경계
automation notification flow src/codaro/automation/notificationFlow.py 외부 channel 등록/삭제/조회와 notification 전송 payload의 domain 경계
automation voice flow src/codaro/automation/voiceFlow.py voice listen/speak/command payload와 Whisper/TTS/CommandParser 접점의 domain 경계
automation monitoring flow src/codaro/automation/monitoringFlow.py resource usage와 audit log payload의 domain 경계
automation integration flow src/codaro/automation/integrationFlow.py 외부 integration 조회/configure/test/execute payload와 registry 접점의 domain 경계
automation session flow src/codaro/automation/sessionFlow.py 영속 브라우저/OS 자동화 세션 open/list/state/step/close payload와 getSessionRegistry 접점의 domain 경계
automation session cell flow src/codaro/automation/sessionCellFlow.py executionKind=browser/os/mouse 노트북 셀 내용을 영속 자동화 세션 open/query/step/close payload로 해석하는 domain 경계
automation persistent session src/codaro/automation/session/ task·턴 경계 너머로 라이브 Playwright/OS 객체를 유지하는 self-loop 런타임 + registry (E-Stop check + audit + BUSY 단일-writer)

Teacher Loop

기준 파일 역할
loop 절차 문서 docs/skills/architecture/teacher-tool-loop.md 요청 분류, cell map, dependency preflight, tool lifecycle 원칙
automation authoring loop docs/skills/architecture/automation-authoring-loop.md 자동화 요청을 recipe, automation 셀, dry-run, task 등록으로 전개하는 기준
conversation state src/codaro/ai/conversation.py conversation 저장소 singleton, system prompt, 생성/목록/삭제 payload 기준
turn session src/codaro/ai/teacher/turnSession.py conversation, provider, messages, tools를 한 turn 실행 단위로 준비
turn runtime src/codaro/ai/teacher/turnRuntime.py context 주입, request payload, turn session, tool executor를 provider 실행 단위로 조립
orchestrator src/codaro/ai/teacher/teacherOrchestrator.py context, policy, trace, tool payload를 묶는 진입점
provider loop src/codaro/ai/teacher/providerLoop.py teacher/provider loop에서 provider tool call과 turn 완료 payload를 conversation, policy, executor, trace에 반영
provider stream src/codaro/ai/teacher/providerStream.py streaming token과 tool lifecycle event를 생성하되 완료 payload는 provider loop 기준을 공유
provider stream events src/codaro/ai/teacher/streamEvents.py streaming start/delta/tool/done/error event payload 기준
context builder src/codaro/ai/teacher/contextBuilder.py provider에 들어가는 context text 구성
tool policy src/codaro/ai/teacher/toolPolicy.py packages-check 선행, 실행 전 preflight, policy violation payload 같은 강제 규칙
trace model src/codaro/ai/teacher/traceModel.py turn/tool lifecycle, tool sequence, summary 추적
turn execution src/codaro/ai/teacher/turnExecution.py 준비된 runtime turn을 loop/stream 실행으로 넘기는 router 경계
skill registry src/codaro/ai/teacher/skillRegistry.py provider가 따라야 할 작업별 skill 목록과 required tool 계약
eval harness src/codaro/ai/teacher/evalHarness.py response trace payload, tool sequence golden case, batch report 기준
completion runtime src/codaro/ai/completion.py editor code completion request payload, prompt, context 축약, provider 호출 기준
provider profile mutation src/codaro/ai/profileMutation.py provider profile update와 secret 저장 정책
provider profile events src/codaro/ai/profileEvents.py provider profile change SSE frame과 fingerprint polling 기준
provider oauth flow src/codaro/ai/oauthFlow.py OAuth authorize/status/logout와 callback state/html 응답 기준
provider models src/codaro/ai/providerModels.py provider별 모델 목록 조회와 fallback 기준
provider validation src/codaro/ai/providerValidation.py provider 연결 검증 config와 availability probe 기준
live provider ops docs/skills/architecture/live-provider-ops.md 실제 provider/OAuth/live smoke gate, token lifecycle, credential 보안 기준

Runtime System

기준 파일 역할
kernel 실행 payload src/codaro/kernel/executionPayload.py 실행 결과를 HTTP, websocket, tool payload로 변환하는 기준
document block execution src/codaro/kernel/documentExecution.py 검증된 document code block을 kernel 실행 payload로 넘기는 document/runtime 접점
kernel UI event flow src/codaro/kernel/uiEventFlow.py widget callback 호출 결과를 UiEventResponse와 reactive trigger로 변환하는 기준
kernel session src/codaro/kernel/session.py runtime engine을 kernel protocol로 변환하는 session 경계
reactive 실행 src/codaro/kernel/reactive.py block 의존 그래프와 reactive 실행 순서
runtime engine src/codaro/runtime/executionEngine.py 교체 가능한 실행 capability 인터페이스
local engine src/codaro/runtime/localEngine.py 로컬 기본 실행 engine 구현

Extension System

기준 파일 역할
extension flow src/codaro/extensions/extensionFlow.py extension 조회/등록/삭제/capability 조회 payload와 registry 접점의 extension 경계
extension registry src/codaro/extensions/registry.py extension 보관, capability 조회, hook 보관 기준

Tool System

기준 파일 역할
tool 진입점 src/codaro/ai/tools.py 기본 tool 목록, 등록 순서, 하위 호환 export
tool 정의 모듈 src/codaro/ai/toolDefinitions/ 제품 경계별 기본 tool 이름, description, parameter schema
tool 계약 검증 src/codaro/ai/toolContract.py 기본 tool 정의, manifest metadata, handler 연결성 검증
registry src/codaro/ai/toolRegistry.py ToolDef와 register/get/schema 변환
manifest src/codaro/ai/toolManifest.py tool별 category, lane, target, risk 단일 메타데이터와 표시 그룹
dispatch src/codaro/ai/toolExecutor.py session/document 공통 접근과 handler dispatch
workbench handlers src/codaro/ai/toolHandlers/workbench.py 셀 읽기/쓰기, curriculum YAML 전개. 현재 문서 셀 변경은 document block operations에 위임
curriculum OS tool handlers src/codaro/ai/toolHandlers/curriculumOs.py teacher curriculum tool 요청을 curriculum flow/cache 경계로 위임하는 접점
runtime handlers src/codaro/ai/toolHandlers/runtime.py 실행, 변수, 패키지, 검증
learning handlers src/codaro/ai/toolHandlers/learning.py 학습 카드, 퀴즈, 노트북 생성
automation handlers src/codaro/ai/toolHandlers/automation.py 화면 인식, 입력, 녹화, 자동화 recipe 작성, task 등록, 자동화 실행, 알림
automation recipe authoring src/codaro/automation/recipeAuthoring.py percent-format recipe draft, dry-run body, task authoring input validation

Transport Boundary

기준 파일 역할
provider HTTP/SSE src/codaro/api/aiRouter.py request parsing, provider 호출, SSE 전송만 담당
kernel websocket transport src/codaro/api/kernelWebSocket.py websocket message validation, 실행 event 전송, session status payload 기준
server state compatibility src/codaro/api/appState.py legacy import 호환용 재수출만 담당. 내부 router는 system/serverState.py를 직접 본다
frontend API editor/src/lib/api.ts 제품 표면에서 server와 통신하는 유일한 통로

Frontend State Boundary

기준 파일 역할
assistant context editor/src/lib/assistantContext.ts provider 요청에 들어가는 document/cell/dependency/tool context
assistant state types editor/src/lib/assistantTypes.ts assistant message, work step, trace UI state 타입 기준
assistant turn request editor/src/lib/assistantTurnRequest.ts provider turn request payload와 context materialization 기준
assistant stream protocol editor/src/lib/assistantStream.ts provider SSE event parsing, done/error response 누적 기준
assistant message state editor/src/lib/assistantConversationState.ts stream event와 response를 assistant message state로 변환
assistant provider turn editor/src/lib/assistantProviderTurn.ts provider stream 호출과 stream event를 message state에 연결
mobile chat turn editor/src/lib/mobileChatTurn.ts 모바일 채팅 route의 teacher chat API 호출 경계
assistant artifact routing editor/src/lib/assistantArtifactRouting.ts provider/local 답변 산출물을 현재 학습 또는 노트북으로 여는 surface, pending target, application payload shape 결정
assistant response plan editor/src/lib/assistantResponsePlan.ts provider 응답과 tool 결과를 에디터 적용, pending blocks, 나만의 커리큘럼 저장/표면 전환 계획으로 변환하되 직접 저장하지 않는다
assistant local turn editor/src/lib/assistantLocalTurn.ts provider 미연결 시 local fallback 저장, notice, pending reset 결정
assistant turn state hook editor/src/hooks/useAssistantTurnState.ts 대화 prompt/message/conversation 상태와 provider/local turn 실행 UI 상태
pending changes editor/src/lib/pendingChanges.ts 생성된 셀 대기분을 노트북/커리큘럼에 적용하거나 버리는 정책
pending changes state hook editor/src/hooks/usePendingChangesState.ts 생성된 셀 대기분 상태와 적용/버리기 UI handler
local fallback editor/src/lib/localFallback.ts provider 미연결 시 기본 안내, 로컬 커리큘럼/자동화 초안
app bootstrap editor/src/lib/appBootstrap.ts 앱 시작 시 health, bootstrap, 기본 커리큘럼, provider profile, session 초기 상태
app bootstrap effect hook editor/src/hooks/useAppBootstrapEffect.ts 앱 시작 결과를 surface state, provider, curriculum, automation state에 적용
notebook document state hook editor/src/hooks/useNotebookDocumentState.ts 편집기 document, draft, 선택 셀, 셀 추가/적용 상태
provider connection editor/src/lib/providerConnection.ts provider 선택, OAuth polling, API key 저장, 연결 notice, 설정 prompt 정책, recovery action 분류 결정
provider profile display editor/src/lib/providerProfile.ts provider 표시 이름과 ready 판정의 프론트 상태 경계
provider connection state editor/src/hooks/useProviderConnection.ts provider profile, 설정 sheet, 연결 중 상태와 UI handler
system diagnostics export editor/src/lib/systemDiagnostics.ts 앱 조립부의 진단 export API 호출 경계
local runtime editor/src/lib/localRuntime.ts provider/server 미연결 시 셀 실행 결과와 출력/변수 추론
notebook runtime editor/src/lib/notebookRuntime.ts 세션 생성, 셀 실행, reactive 노트북 실행, runtime package preflight 결정
automation cell runtime editor/src/lib/automationCellRuntime.ts persistent automation 셀의 /api/automation/session-cell 호출과 실행 결과/notice 변환
notebook runtime state hook editor/src/hooks/useNotebookRuntimeState.ts 세션, 변수, 실행 결과, 셀/노트북 실행 UI 상태
code completion editor/src/lib/codeCompletion.ts 노트북 코드 자동완성 API 호출과 completion context payload 경계
widget UI events editor/src/lib/widgetUiEvents.ts 위젯 callback을 kernel ui-event API와 reactive trigger 이벤트로 연결하는 경계
workloop state editor/src/lib/workLoop.ts tool_start/tool_results와 response trace summary를 UI state, group label, payload text로 변환
custom curricula editor/src/lib/customCurricula.ts 나만의 커리큘럼 저장/로드, 저장 후 현재 학습 열기 정책, 선택 상태 적용
custom curricula state hook editor/src/hooks/useCustomCurriculaState.ts 나만의 커리큘럼 저장소 persistence와 선택 상태
curriculum progress editor/src/lib/curriculumProgress.ts 현재 학습 진행률 조회 API 경계
curriculum selection editor/src/lib/curriculumSelection.ts 기본 커리큘럼 fallback, 콘텐츠/레슨 로딩, 선택 상태
curriculum package preparation editor/src/lib/curriculumPackagePreparation.ts 현재 학습 dependency panel의 패키지 조회/설치 API 경계
share pack operations editor/src/lib/sharePackOperations.ts 숨겨진 공유 팩 표면의 pack 조회/검사/설치/자동화 task API 경계
curriculum library state hook editor/src/hooks/useCurriculumLibraryState.ts 커리큘럼 목록/레슨 로딩과 현재 학습 셀 선택 상태
curriculum navigation state hook editor/src/hooks/useCurriculumNavigationState.ts 기본/나만의 커리큘럼 선택과 사이드바 검색/목록 상태
automation state editor/src/lib/automationState.ts 자동화/태스크 상태
automation state hook editor/src/hooks/useAutomationState.ts 자동화 snapshot refresh, 긴급 정지, 태스크 실행 UI 상태
theme state hook editor/src/hooks/useThemeMode.ts theme local storage와 document class 동기화

원칙

  • router는 판단하지 않는다. 판단 재료는 domain/provider loop 계층에서 만든다.
  • UI 컴포넌트는 context를 직접 조립하지 않는다. editor/src/lib/*를 통한다.
  • tool을 추가할 때는 tools.py의 schema, toolManifest.py의 노출 메타데이터, toolHandlers/*의 실행 위치를 같이 본다.
  • 셀 어휘를 늘릴 때는 프론트/백엔드 셀 스키마와 문서 모델 영향까지 같이 본다.
  • provider 응답 품질은 평가 harness로 판단한다. 감으로 좋고 나쁨을 말하지 않는다.