refactor: v2.2.195-201 — slashRouter god-file 해체 (–95%) + 인프라 5개 추출

아키텍처 감사 결과 HIGH 2건 + MED 2건 + LOW 1건 — 7 라운드 정리 시리즈.
기능 변경 없음, 순수 구조 정리.

**slashRouter.ts: 4,174 → 201줄 (–3,973, –95%)**
**agent.ts: 1,617 → 1,551줄 (–66, –4%)**

v2.2.195: eventSourcedStore + SystemPromptBlock registry
  - createEventStore<E>(opts) — 4 store (customers/hire/runway/feedback) I/O 240줄 중복 제거
  - _turnCtx 5 named string field → 1 Map<string, string> (새 verification block 추가 25곳→1곳)
  - buildAstraModeSystemPrompt: 5 ternary gate + 5 위치 → 1 for-loop join

v2.2.196: trackers cluster split
  - src/features/teamops/handlers/_shared.ts (fmtKrw/parseAmount/daysUntil/parseTaskOwner/stageEmoji/STAGE_ORDER/TERMINAL_STAGES)
  - src/features/teamops/handlers/trackers.ts (runway/customers/hire)
  - src/features/teamops/handlers/index.ts (barrel)
  - extension.ts 에 side-effect import (순환 import 회피)

v2.2.197: mtimeFileCache + PostAnswerHook registry
  - src/lib/mtimeFileCache.ts — createMtimeFileCache<T>(name, parse) (terminologyBlock + termValidator 2-cache invariant 자동화)
  - src/agent/postAnswerHooks/{types,index}.ts — Devil/SelfCheck/TermValidator 3 _maybeX method → 1 runPostAnswerHooks(ctx) loop
  - agent.ts –66줄

v2.2.198: dashboards cluster split
  - src/features/teamops/handlers/dashboards.ts (morning/evening/cohort/weekly)

v2.2.199: coordination + communication clusters split
  - src/features/teamops/handlers/coordination.ts (task/decisions/onesie/blocked/standup)
  - src/features/teamops/handlers/communication.ts (draft/feedback)
  - callLmSynthesis export 노출 (communication 이 사용)
  - 옛 parseTaskOwner local 정의 삭제 (_shared.ts 사용)

v2.2.200: system cluster split
  - src/features/system/handlers.ts (memory/glossary/help)

v2.2.201: datacollect cluster split + LLM 인프라 추출
  - src/features/datacollect/handlers.ts (research/benchmark/youtube/blog/wikify/meet)
  - src/features/datacollect/llm.ts (callLmSynthesis + repairKoreanGlitches + bridgeErrorRemedy)
  - slashRouter import 4개로 축소: vscode/logInfo/getBridgeBaseUrl/bridgeErrorRemedy

**최종 slashRouter (201줄):**
- REGISTRY Map + registerSlashCommand/listSlashCommands/isSlashCommand
- handleSlashCommand (dispatcher + 에러 처리)
- Webview interface + chunk helper
- getRecentSlashCommands ring buffer (actionability scoring 용)

**미래 부담 감소 metrics:**
- 새 슬래시 명령: god-file 끝에 함수 + register → 1 파일 + 1 register call
- 새 verification block: 5곳 편집 → 1 set call
- 새 event store: 60줄 boilerplate → createEventStore 한 줄
- 새 post-answer hook: 3 step → 1 push
- 새 mtime cache: Map + invariant 관리 → createMtimeFileCache 한 줄

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-01 11:55:22 +09:00
parent 15a34e0889
commit 7bec20620a
40 changed files with 4784 additions and 4545 deletions
+18 -18
View File
@@ -3,15 +3,15 @@
<!-- ASTRA:AUTO-START -->
## Snapshot
- **Workspace**: `connectai` `v2.2.194` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Workspace**: `connectai` `v2.2.200` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Description**: The personal intelligence layer for Antigravity and VS Code. A private cognitive partner for deep project context, memory, and proactive strategic decision-making.
- **Stack**: TypeScript, Node.js, VS Code Extension, LM Studio SDK, Test runner
- **Stats**: 419 source files, ~70,411 lines across 5 top-level modules.
- **Stats**: 431 source files, ~70,417 lines across 5 top-level modules.
## Last Refresh
- **Time**: 2026-05-29T07:30:42.899Z
- **Time**: 2026-06-01T02:30:44.120Z
- **Files newly analysed**: 3
- **Files reused from cache**: 416
- **Files reused from cache**: 428
## Directory Map
```mermaid
@@ -20,8 +20,8 @@ mindmap
src/
features/
sidebar/
lib/
agent/
lib/
retrieval/
core/
media/
@@ -40,11 +40,11 @@ mindmap
> Arrows: which top-level module imports from which.
```mermaid
flowchart LR
src["src/<br/>263 files"]
src["src/<br/>274 files"]
media["media/<br/>6 files"]
tests["tests/<br/>37 files"]
core_py["core_py/<br/>6 files"]
docs["docs/<br/>107 files"]
docs["docs/<br/>108 files"]
tests --> src
```
@@ -57,8 +57,8 @@ flowchart LR
## Hub Files
> Imported by many other files — touching these has wide blast radius.
- `src/utils.ts` — referenced by **87** files
- `src/config.ts` — referenced by **35** files
- `src/agent.ts` — referenced by **34** files
- `src/config.ts` — referenced by **33** files
- `src/core/services.ts` — referenced by **15** files
- `src/features/company/index.ts` — referenced by **14** files · Public API for 1인 기업 모드. Consumers (sidebarProvider, chatHandlers, command handlers) import from this barrel so internal layout can move around without touching every call site.
- `src/features/company/types.ts` — referenced by **14** files · Type definitions for the 1인 기업 (One-Person Company) mode. The mode turns the user into a virtual CEO that dispatches work to a roster of specialist agents. Each turn produces a session directory conta
@@ -67,13 +67,13 @@ flowchart LR
## Modules
### `src/` — 263 files, ~52,640 lines
### `src/` — 274 files, ~52,627 lines
**Sub-directories**
- `src/features/` (92) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
- `src/features/` (100) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
- `src/sidebar/` (35) — Brain profile lifecycle 의 pure helpers — sidebarProvider 의 add/edit/delete 흐름에서 modal UI 와 config 쓰기를 제외한 데이터 변환 만 격리. 현
- `src/lib/` (28) — Astra Mode Architecture Context Builder. 의도: 사용자가 Astra 자체의 mode 디자인 (Guard vs Multi-Agent 가 별도 모드여야 하는지) 을 묻는 메타 질문에 답할
- `src/agent/` (27) — Post-hoc Self-Check — 답변 완료 후 LLM 한 번 호출로 3가지 평가. 사용자 제안: "[Self-Check] 단계 — 이 답변이 사용자 질문에 직접 답하는가 / 규칙 준수 / 논리 모순 없는가".
- `src/agent/` (29) — Post-answer hook registry — 답변 완료 후 실행되는 부가 작업 모음. 새 hook 추가 = 1 객체 push. agent.ts 는 이 배열을 iterate 만 함. 현재 등록 순서 (v2.2.1
- `src/lib/` (29) — Astra Mode Architecture Context Builder. 의도: 사용자가 Astra 자체의 mode 디자인 (Guard vs Multi-Agent 가 별도 모드여야 하는지) 을 묻는 메타 질문에 답할
- `src/retrieval/` (16) — Actionability Scoring — 검색 결과를 "현재 작업 상태" 신호로 재가중. 기존 TF-IDF (단어 매칭) + recency (시간) 만으로는 "지금 이 사용자가 하고 있는 작업과 직접 연결 된 문서
- `src/core/` (15) — Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토
- `src/memory/` (9) — Distillation Loop — stale Episodic Memory → Long-Term "episode-digest" 승급. 배경: Episodic Memory 가 무한히 누적되면 검색 노이즈. 30일+ 지
@@ -86,12 +86,13 @@ flowchart LR
**Key files**
- `src/utils.ts` (471 lines)
- `src/config.ts` (557 lines)
- `src/agent.ts` (1589 lines)
- `src/agent.ts` (1503 lines)
- `src/features/company/types.ts` (446 lines) — Type definitions for the 1인 기업 (One-Person Company) mode. The mode turns the user into a virtual CEO that dispatches work to a roster of specialist agents. Each turn produces a session directory conta
- `src/core/services.ts` (176 lines)
- `src/sidebarProvider.ts` (3186 lines)
- `src/lib/contextManager.ts` (278 lines) — Context Manager (컨텍스트 한계 관리) "context length = 132k" 는 "답변을 132k 토큰까지 생성해도 된다" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변 + 여유분 ≤ context length 이 모듈은 요청을 보내기 전에 입력 토큰을 추정하고, - 동적으로 출력 상한(maxTokens)을 계
- `src/features/company/companyConfig.ts` (896 lines) — State + config plumbing for 1인 기업 모드. Two surfaces: - CompanyState (runtime data: enabled flag, company name, which agents are active, per-agent model overrides). Persisted in VS Code's globalState so
- `src/features/datacollect/slashRouter.ts` (1240 lines)
- `src/integrations/telegram/telegramClient.ts` (154 lines)
- `src/lib/paths.ts` (151 lines)
- `src/agent/actions/types.ts` (41 lines)
@@ -108,7 +109,6 @@ flowchart LR
- `src/integrations/telegram/telegramBot.ts` (270 lines)
- `src/lib/contextBuilders/localProjectIntent.ts` (233 lines)
- `src/lib/engine.ts` (1114 lines)
- `src/lmstudio/streamer.ts` (252 lines)
### `media/` — 6 files, ~7,671 lines
@@ -165,17 +165,17 @@ flowchart LR
- `core_py/optimizer.py` (55 lines)
- `core_py/queue_worker.py` (82 lines)
### `docs/` — 107 files, ~3,816 lines
### `docs/` — 108 files, ~3,835 lines
**Sub-directories**
- `docs/records/` (94) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/records/` (95) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
- `docs/Meeting/` (0)
**Key files**
- `docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md` (452 lines) — Telegram Remote Execution 기획서
- `docs/AgentEngine_Architecture.md` (314 lines) — AgentEngine Architecture Document
- `docs/records/ConnectAI/timeline.md` (233 lines) — Project Timeline
- `docs/records/ConnectAI/timeline.md` (236 lines) — Project Timeline
- `docs/ASTRA_OFFICE_REFACTOR.md` (198 lines) — Astra Office Refactor — Design Doc
- `docs/EXPERIENCE_MEMORY_PLAN.md` (122 lines) — Experience Memory (Mistake / Lesson Loop) — Implementation Plan
- `docs/records/ConnectAI/development/2026-05-02_connectai_project_knowledge_overview.md` (121 lines) — Astra Project Knowledge Overview
@@ -341,7 +341,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
**Designed for High-Performance Decision Making.**
Copyright (C) **g1nation**. All rights reserved.
_Last auto-scan: 2026-05-29T07:30:42.899Z · signature `246e4864`_
_Last auto-scan: 2026-06-01T02:30:44.120Z · signature `a95021db`_
<!-- ASTRA:AUTO-END -->
## Purpose
+183 -46
View File
@@ -1,6 +1,6 @@
{
"version": 1,
"generatedAt": "2026-05-29T07:30:42.949Z",
"generatedAt": "2026-06-01T02:30:44.174Z",
"files": {
"src/agent/actions/brainOps.ts": {
"mtimeMs": 1779764602582.9768,
@@ -135,9 +135,9 @@
]
},
"src/agent/handlePrompt/buildAstraModeSystemPrompt.ts": {
"mtimeMs": 1780033670993.9626,
"size": 8427,
"lines": 133,
"mtimeMs": 1780276266500.7705,
"size": 6433,
"lines": 100,
"role": "",
"imports": [
"src/lib/contextBuilders/localProjectIntent",
@@ -298,6 +298,26 @@
"src/agent"
]
},
"src/agent/postAnswerHooks/index.ts": {
"mtimeMs": 1780278997000.157,
"size": 3900,
"lines": 96,
"role": "Post-answer hook registry — 답변 완료 후 실행되는 부가 작업 모음. 새 hook 추가 = 1 객체 push. agent.ts 는 이 배열을 iterate 만 함. 현재 등록 순서 (v2.2.197): 1. devilRebuttal — Devil Agent 반박 카드 (비활성 시 silent skip) 2. postHocSelfChec",
"imports": [
"src/agent/postAnswerHooks/types",
"src/agent/llm/devilRebuttal",
"src/agent/postHocSelfCheck",
"src/agent/termValidator",
"src/config"
]
},
"src/agent/postAnswerHooks/types.ts": {
"mtimeMs": 1780278967597.8257,
"size": 2001,
"lines": 48,
"role": "Post-Answer Hook 인터페이스 — 답변 streaming 완료 후 실행되는 부가 작업. 옛 구조: agent.ts 의 maybeEmitDevilRebuttal, maybePostHocSelfCheck, maybeRunTermValidator 3개 private method. 새 hook 추가 시 (1) method 정의 (2) import (3)",
"imports": []
},
"src/agent/postHocSelfCheck.ts": {
"mtimeMs": 1780033021215.5054,
"size": 8943,
@@ -317,16 +337,18 @@
]
},
"src/agent/termValidator.ts": {
"mtimeMs": 1780039129011.7288,
"size": 8675,
"lines": 221,
"mtimeMs": 1780278698973.1787,
"size": 8156,
"lines": 202,
"role": "Post-generation Term Validator — 답변 완료 후 정규식/사전 기반 결정론적 스캔. v2.2.192 의 Terminology Dictionary 가 instructional (LLM 에게 표준 표기 사용 지시) 이면, 이건 deterministic — LLM 이 지시를 안 따랐을 때 catch. Glossary 파싱 — 두 패턴 인식",
"imports": []
"imports": [
"src/lib/mtimeFileCache"
]
},
"src/agent.ts": {
"mtimeMs": 1780039163639.0967,
"size": 87154,
"lines": 1589,
"mtimeMs": 1780278886140.8762,
"size": 81193,
"lines": 1503,
"role": "",
"imports": [
"src/utils",
@@ -397,8 +419,7 @@
"src/agent/handlePrompt/buildAstraModeSystemPrompt",
"src/agent/handlePrompt/computeBudgetedRequest",
"src/agent/handlePrompt/processFinalAnswer",
"src/agent/postHocSelfCheck",
"src/agent/termValidator",
"src/agent/postAnswerHooks",
"src/agent/handlePrompt/applyAutoContinuation",
"src/features/approval/approvalQueue",
"src/features/providers",
@@ -704,11 +725,13 @@
]
},
"src/extension.ts": {
"mtimeMs": 1779764602602.9807,
"size": 17079,
"lines": 354,
"mtimeMs": 1780280902153.7483,
"size": 17342,
"lines": 358,
"role": "",
"imports": [
"src/features/teamops/handlers",
"src/features/system/handlers",
"src/utils",
"src/config",
"src/agent",
@@ -1117,11 +1140,13 @@
"imports": []
},
"src/features/customers/customersStore.ts": {
"mtimeMs": 1779952731356.5476,
"size": 6815,
"lines": 176,
"mtimeMs": 1780275713140.8125,
"size": 5722,
"lines": 149,
"role": "고객사 / MRR / 갱신 트래커. 4인 기업의 수입 쪽 — /runway 가 통장과 burn 을 본다면, 여기는 어디서 돈이 들어오나. Salesforce / HubSpot 같은 CRM 아닌 가벼운 event-sourced 로그. 저장 형식: JSON Lines (.jsonl) — append-only event log. 같은 customer 의 여러 이",
"imports": []
"imports": [
"src/features/_shared/eventSourcedStore"
]
},
"src/features/datacollect/bridgeClient.ts": {
"mtimeMs": 1779764602617.1548,
@@ -1166,9 +1191,9 @@
"imports": []
},
"src/features/datacollect/slashRouter.ts": {
"mtimeMs": 1780039211177.6035,
"size": 226165,
"lines": 4096,
"mtimeMs": 1780280990100.2815,
"size": 67318,
"lines": 1240,
"role": "",
"imports": [
"src/utils",
@@ -1179,6 +1204,7 @@
"src/config",
"src/retrieval/terminologyBlock",
"src/agent/termValidator",
"src/features/teamops/handlers/_shared",
"src/features/setup/datacollectSetup",
"src/features/datacollect/prompts/synthesisPrompt",
"src/features/datacollect/prompts/youtubePrompts",
@@ -1214,18 +1240,22 @@
]
},
"src/features/feedback/feedbackStore.ts": {
"mtimeMs": 1779931731117.0737,
"size": 3406,
"lines": 81,
"mtimeMs": 1780275889230.5403,
"size": 1851,
"lines": 44,
"role": "고객 피드백 누적 저장소. 단일 운영자(대표) 모드에서 슬랙·이메일·CS 채널에 흩어진 고객 피드백을 /feedback <텍스트> 한 줄로 모아 둔다. 패턴 분석은 /feedback summary 로 LLM 이 누적 데이터를 보고 카테고리 분포 + 반복 주제를 추출. 저장 형식: JSON Lines (.jsonl) — 한 줄 = 한 entry. 누적·app",
"imports": []
"imports": [
"src/features/_shared/eventSourcedStore"
]
},
"src/features/hire/hireStore.ts": {
"mtimeMs": 1779964473915.006,
"size": 5586,
"lines": 150,
"mtimeMs": 1780275773463.53,
"size": 4567,
"lines": 125,
"role": "채용 파이프라인 트래커. 4인 → 5인 이상 확장 시점에 후보자가 여러 명, 여러 역할(개발/기획/디자인) 로 들어오기 시작 — 노션·스프레드시트·이메일에 흩어진 정보를 한 명령으로 본다. Event-sourced (customersStore 와 동일 패턴) — append-only 이벤트 로그를 재생해 후보자별 현재 단계 + 노트 누적 도출. 위치: <w",
"imports": []
"imports": [
"src/features/_shared/eventSourcedStore"
]
},
"src/features/projectArchitecture/index.ts": {
"mtimeMs": 1778720117531.2734,
@@ -1378,11 +1408,13 @@
"imports": []
},
"src/features/runway/runwayStore.ts": {
"mtimeMs": 1779935315716.9917,
"size": 6666,
"lines": 173,
"mtimeMs": 1780275853704.5698,
"size": 5511,
"lines": 146,
"role": "Runway / Cash 누적 저장소. 4인 기업 운영의 가장 중요한 숫자 — 현금 잔고 / 월 소진율 / 남은 개월수 — 를 한 명령 (/runway) 로 본다. 회계 시스템은 아니고, 대표가 머리에 가지고 있는 \"지금 통장에 얼마, 한 달에 얼마 나감\" 을 코드 옆에서 잡는 가벼운 트래커. 저장 형식: JSON Lines (.jsonl) — 한 줄 = ",
"imports": []
"imports": [
"src/features/_shared/eventSourcedStore"
]
},
"src/features/secondBrainTrace.ts": {
"mtimeMs": 1779411561816.5603,
@@ -1631,6 +1663,19 @@
"src/utils"
]
},
"src/features/system/handlers.ts": {
"mtimeMs": 1780280889224.8892,
"size": 20518,
"lines": 394,
"role": "System handlers — /memory · /glossary · /help (인프라·관리·발견). v2.2.200 에서 slashRouter.ts 에서 분리. 4인 팀 운영 도메인 아닌 \"ASTRA 자체 인프라\" 슬래시 명령. teamops handlers 와 같은 패턴.",
"imports": [
"src/features/datacollect/slashRouter",
"src/config",
"src/memory",
"src/retrieval/terminologyBlock",
"src/agent/termValidator"
]
},
"src/features/tasks/index.ts": {
"mtimeMs": 1779065453887.9194,
"size": 238,
@@ -1647,6 +1692,82 @@
"role": "Task tracker — .astra/company/shared/tasks.md 단일 파일. 설계 원칙: - 외부 DB 없이 사람이 읽을 수 있는 마크다운 테이블에 누적. git 으로 history 추적 가능. - 파싱은 regex 기반 (셀 구분자 |). 사용자가 손으로 편집해도 fault-tolerant. - 모든 task 는 안정적 id (t001,",
"imports": []
},
"src/features/teamops/handlers/communication.ts": {
"mtimeMs": 1780280515102.4714,
"size": 13781,
"lines": 254,
"role": "TeamOps Communication — /draft · /feedback (외부 출력·기록). v2.2.199 에서 slashRouter.ts 에서 분리. (원래는 v2.2.200 예정이었으나 coordination 추출 시 register 라인이 인접해 묶여 함께 진행.)",
"imports": [
"src/features/datacollect/slashRouter",
"src/features/feedback/feedbackStore"
]
},
"src/features/teamops/handlers/coordination.ts": {
"mtimeMs": 1780280322364.4475,
"size": 30738,
"lines": 572,
"role": "TeamOps Coordination — /task · /decisions · /onesie · /blocked · /standup. v2.2.199 에서 slashRouter.ts 에서 분리. 작업·결정·1:1·블로커·스탠드업 등 \"팀 운영의 실시간 부분\" 클러스터. 공통 헬퍼는 ./shared.ts 에서. 옛 slashRouter 의 local pars",
"imports": [
"src/features/datacollect/slashRouter",
"src/features/teamops/handlers/_shared",
"src/features/calendar",
"src/sidebar/managers/chronicleProjectStore"
]
},
"src/features/teamops/handlers/dashboards.ts": {
"mtimeMs": 1780279486170.9111,
"size": 42079,
"lines": 806,
"role": "TeamOps Dashboards — /morning · /evening · /cohort · /weekly (CEO 일·주 리듬). v2.2.198 에서 slashRouter.ts 에서 분리. cross-data 합성 (Tasks + customers + hire + runway + Chronicle ADR) 으로 일/주/월 단위 시야 제공. 공통 헬퍼는",
"imports": [
"src/features/datacollect/slashRouter",
"src/features/teamops/handlers/_shared",
"src/features/calendar",
"src/sidebar/managers/chronicleProjectStore",
"src/features/runway/runwayStore",
"src/features/customers/customersStore",
"src/features/hire/hireStore"
]
},
"src/features/teamops/handlers/index.ts": {
"mtimeMs": 1780280542425.257,
"size": 501,
"lines": 14,
"role": "TeamOps handlers 배럴 — extension activate 시 1회 import 로 모든 핸들러 등록. 각 핸들러 파일은 module scope 에서 registerSlashCommand({...}) 호출하므로 import 만으로 등록 완료. 새 핸들러 파일은 여기에 한 줄 추가. v2.2.196 — trackers (runway/custom",
"imports": [
"src/features/teamops/handlers/trackers",
"src/features/teamops/handlers/dashboards",
"src/features/teamops/handlers/coordination",
"src/features/teamops/handlers/communication"
]
},
"src/features/teamops/handlers/trackers.ts": {
"mtimeMs": 1780278032934.0896,
"size": 36032,
"lines": 704,
"role": "TeamOps Trackers — /runway · /customers · /hire (event-sourced 트래커 3종). v2.2.196 에서 slashRouter.ts 에서 분리. 모두 .astra/.jsonl event log 를 읽고 (createEventStore via 각 store 모듈) 대시보드 / 수정 명령 제공. 공통 헬퍼 (fmtK",
"imports": [
"src/features/datacollect/slashRouter",
"src/features/teamops/handlers/_shared",
"src/features/runway/runwayStore",
"src/features/customers/customersStore",
"src/features/hire/hireStore"
]
},
"src/features/teamops/handlers/_shared.ts": {
"mtimeMs": 1780277843419.9949,
"size": 3647,
"lines": 84,
"role": "TeamOps handlers 공통 헬퍼 — 4인 팀 운영 슬래시 명령 클러스터가 공유하는 함수·상수. 이전 위치: src/features/datacollect/slashRouter.ts 내부 module-local 함수 (v2.2.196 에서 분리). 핸들러 도메인별 분할 시 공통 항목만 여기에. 추후 datacollect / system 핸들러도 비슷한",
"imports": []
},
"src/features/_shared/eventSourcedStore.ts": {
"mtimeMs": 1780275610701.943,
"size": 3216,
"lines": 83,
"role": "Generic event-sourced store — append-only .jsonl 파일 1개를 읽고/쓰는 공통 기반. 배경: customers, hire, runway, feedback 4개 store 가 같은 패턴 4번 반복 (getXFilePath / readX / appendX / countX) — byte-for-byte 중복 ~240줄. 한 ",
"imports": []
},
"src/integrations/telegram/conversationHistory.ts": {
"mtimeMs": 1778720117535.294,
"size": 6427,
@@ -1797,9 +1918,9 @@
]
},
"src/lib/contextBuilders/memoryContext.ts": {
"mtimeMs": 1780033602782.2012,
"size": 18059,
"lines": 352,
"mtimeMs": 1780276328602.9944,
"size": 16862,
"lines": 328,
"role": "",
"imports": [
"src/agent",
@@ -1974,6 +2095,13 @@
"src/lib/engine"
]
},
"src/lib/mtimeFileCache.ts": {
"mtimeMs": 1780278539124.1875,
"size": 2553,
"lines": 72,
"role": "mtime-keyed file cache utility — 파일을 parse 결과 까지 캐싱. 배경: terminologyBlock.ts 와 termValidator.ts 가 같은 글로서리 파일에 별도 캐시 2개를 보유. \"함께 무효화\" 가 사람이 손으로 보장하는 invariant — 한쪽만 잊고 invalidate 안 하면 stale read 위험. 이 ",
"imports": []
},
"src/lib/paths.ts": {
"mtimeMs": 1778664139961.0637,
"size": 6567,
@@ -2249,11 +2377,13 @@
]
},
"src/retrieval/terminologyBlock.ts": {
"mtimeMs": 1780033577419.837,
"size": 5735,
"lines": 137,
"mtimeMs": 1780278609386.6382,
"size": 5450,
"lines": 127,
"role": "Terminology Dictionary — 프로젝트 표준 용어집을 시스템 프롬프트에 주입. 사용자 제안: \"표준 표기 강제 + 답변 내 표기 일관성 검증\". 예: runway vs 런웨이, P-Reinforce vs p-reinforce, Chronicle vs 크로니클. 설계 — 사용자 편집 markdown 파일: - 위치: <workspace>/.as",
"imports": []
"imports": [
"src/lib/mtimeFileCache"
]
},
"src/retrieval/types.ts": {
"mtimeMs": 1779764602656.6587,
@@ -3356,8 +3486,15 @@
"role": "Bug: 논문 Outline Title 인간-AI 상호작용에서 의도 정렬을 높이기 위한 최소 질의 구조 연구 또는 사용자의 인지적 편향을 보완하는 구조화...",
"imports": []
},
"docs/records/ConnectAI/bugs/BUG-0015-짚어둘-관찰-사항-참고용-face-api-js-환경-face-api-js는-원래-브라우저용입니다-node-단.md": {
"mtimeMs": 1780281037883.6174,
"size": 2482,
"lines": 16,
"role": "Bug: 짚어둘 관찰 사항 (참고용) face-api.js 환경: face-api.js는 원래 브라우저용입니다. Node 단독 실행 시 @tensorfl...",
"imports": []
},
"docs/records/ConnectAI/chronicle.config.json": {
"mtimeMs": 1780039836702.8801,
"mtimeMs": 1780281037893.3647,
"size": 371,
"lines": 11,
"role": "JSON configuration",
@@ -3910,9 +4047,9 @@
"imports": []
},
"docs/records/ConnectAI/timeline.md": {
"mtimeMs": 1780039836694.6646,
"size": 14881,
"lines": 233,
"mtimeMs": 1780281037885.788,
"size": 15049,
"lines": 236,
"role": "Project Timeline",
"imports": []
},