diff --git a/.astra/project-context/architecture.md b/.astra/project-context/architecture.md
index 6bcdcd0..4c243ed 100644
--- a/.astra/project-context/architecture.md
+++ b/.astra/project-context/architecture.md
@@ -3,20 +3,20 @@
## Snapshot
-- **Workspace**: `connectai` `v2.1.2` _(absolute path varies by environment; resolved from the active VS Code workspace)_
+- **Workspace**: `ConnectAI` `v2.1.2` _(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**: 209 source files, ~36,083 lines across 5 top-level modules.
+- **Stats**: 205 source files, ~36,036 lines across 5 top-level modules.
## Last Refresh
-- **Time**: 2026-05-14T03:14:40.992Z
-- **Files newly analysed**: 3
-- **Files reused from cache**: 206
+- **Time**: 2026-05-13T17:43:53.933Z
+- **Files newly analysed**: 0
+- **Files reused from cache**: 205
## Directory Map
```mermaid
mindmap
- root((connectai))
+ root((ConnectAI))
src/
features/
core/
@@ -41,7 +41,7 @@ flowchart LR
media["media/
6 files"]
tests["tests/
27 files"]
core_py["core_py/
6 files"]
- docs["docs/
70 files"]
+ docs["docs/
66 files"]
tests --> src
```
@@ -64,14 +64,14 @@ flowchart LR
## Modules
-### `src/` — 100 files, ~23,880 lines
+### `src/` — 100 files, ~23,874 lines
**Sub-directories**
- `src/features/` (28) — The 9-agent roster for 1인 기업 모드. Each entry is a static description — persona, role, specialty — used to build the speci
- `src/core/` (15) — Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토
- `src/memory/` (8) — Episodic Memory (일화 기억) 과거 대화/회의/결정의 맥락 흐름을 저장합니다. 세션 종료 시 자동으로 에피소드를 요약하여 저장합니다. "왜 이렇게 결정했는지", "어떤 흐름으로 진행했는지" 기록. 저장
- `src/retrieval/` (8) — Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-I
-- `src/docs/` (6) — Bug: Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts ...
+- `src/docs/` (6) — src Chronicle Records
- `src/lib/` (6) — Context Manager (컨텍스트 한계 관리) "context length = 132k" 는 "답변을 132k 토큰까지 생성해도 된다" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변
- `src/integrations/` (4) — Per-chat conversation history for the Telegram bot. Why this exists: the previous bot was stateless — every inbound mess
- `src/lmstudio/` (4) — 4 files (.ts)
@@ -85,13 +85,13 @@ flowchart LR
- `src/config.ts` (216 lines)
- `src/features/company/types.ts` (150 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/lib/paths.ts` (151 lines)
-- `src/sidebarProvider.ts` (3023 lines)
+- `src/sidebarProvider.ts` (3026 lines)
- `src/features/company/agents.ts` (136 lines) — The 9-agent roster for 1인 기업 모드. Each entry is a static description — persona, role, specialty — used to build the specialist's system prompt at dispatch time. The set was adopted from Connectorigin's
- `src/memory/types.ts` (126 lines) — Memory Type Definitions (메모리 타입 정의) Astra의 5-Layer Cognitive Memory System의 모든 타입을 정의합니다. ① Short-Term ② Long-Term ③ Project ④ Procedural ⑤ Episodic
- `src/retrieval/scoring.ts` (518 lines) — Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다.
- `src/skills/agentKnowledgeMap.ts` (374 lines)
- `src/core/services.ts` (164 lines)
-- `src/agent.ts` (3241 lines)
+- `src/agent.ts` (3232 lines)
- `src/features/company/companyConfig.ts` (330 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/retrieval/lessonHelpers.ts` (325 lines) — Lesson / Experience Memory — pure helpers (no vscode dependency) "Lesson" = a markdown file in the active brain that captures a past mistake/risk and how to avoid repeating it. Identified by a lessons
- `src/lib/engine.ts` (880 lines)
@@ -107,11 +107,11 @@ flowchart LR
- `src/features/company/promptBuilder.ts` (202 lines) — System-prompt construction for company-mode agents. Each specialist needs a prompt that includes: - Their identity (name, role, specialty) + optional persona. - The action-tag contract (,
- `src/features/company/sessionStore.ts` (231 lines) — Disk persistence for company-mode session artefacts. Each company turn produces a timestamped directory: /.astra/company/sessions/2026-05-13T21-29/ ├─ brief.md ← CEO's task decompositio
-### `media/` — 6 files, ~4,098 lines
+### `media/` — 6 files, ~4,099 lines
**Key files**
- `media/sidebar.css` (1225 lines) — Stylesheet
-- `media/sidebar.js` (1873 lines)
+- `media/sidebar.js` (1874 lines)
- `media/sidebar.html` (356 lines) — Astra
- `media/settings-panel.css` (210 lines) — Stylesheet
- `media/settings-panel.html` (164 lines) — Astra Settings
@@ -160,11 +160,11 @@ flowchart LR
- `core_py/optimizer.py` (55 lines)
- `core_py/queue_worker.py` (82 lines)
-### `docs/` — 70 files, ~2,758 lines
+### `docs/` — 66 files, ~2,716 lines
**Sub-directories**
-- `docs/records/` (58) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
-- `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
+- `docs/records/` (54) — Astra Project Chronicle Records
+- `docs/docs/` (5) — docs Chronicle Records
**Key files**
- `docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md` (452 lines) — Telegram Remote Execution 기획서
@@ -172,26 +172,26 @@ flowchart LR
- `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
- `docs/records/ConnectAI/development/2026-05-03_connectai_project_knowledge_overview.md` (121 lines) — Astra Project Knowledge Overview
-- `docs/records/ConnectAI/timeline.md` (146 lines) — Project Timeline
+- `docs/records/ConnectAI/timeline.md` (134 lines) — Project Timeline
- `docs/Advanced_Features_Implementation_Guide.md` (40 lines) — Advanced Features Implementation Guide
+- `docs/PROJECT_CHRONICLE_GUARD_ROADMAP.md` (43 lines) — Project Chronicle Guard: Search Engine Roadmap
+- `docs/UX_UI_Consistency_Guidelines.md` (44 lines) — UX/UI Consistency Guidelines
+- `docs/docs/records/docs/README.md` (18 lines) — docs Chronicle Records
- `docs/docs/records/docs/bugs/BUG-0001-viewed-integration-retrieval-test-ts-1-59-integration-retrie.md` (16 lines) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
- `docs/docs/records/docs/chronicle.config.json` (11 lines) — JSON configuration
- `docs/docs/records/docs/project-profile.md` (31 lines) — Project Profile
-- `docs/docs/records/docs/README.md` (18 lines) — docs Chronicle Records
- `docs/docs/records/docs/timeline.md` (7 lines) — Project Timeline
-- `docs/PROJECT_CHRONICLE_GUARD_ROADMAP.md` (43 lines) — Project Chronicle Guard: Search Engine Roadmap
-- `docs/records/ConnectAI/bugs/BUG-0001-volumes-data-project-antigravity-connectai-프로젝트-코드-리뷰-해줄-수-있.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
-- `docs/records/ConnectAI/bugs/BUG-0002-지금-내가-분석-요청하고-너가-답을-줄때-아래-템플릿에-맞춰-답을-써주고-있는데-개선-포인트가-있는지-확인해.md` (16 lines) — Bug: 지금 내가 분석 요청하고 너가 답을 줄때 아래 템플릿에 맞춰 답을 써주고 있는데, 개선 포인트가 있는지 확인해줘. ## 내가 보는 위험 가장 큰...
-- `docs/records/ConnectAI/bugs/BUG-0003-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
-- `docs/records/ConnectAI/bugs/BUG-0004-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
-- `docs/records/ConnectAI/bugs/BUG-0005-다시한번-답줘-volumes-data-project-antigravity-connectai-내-질문에-대한-.md` (16 lines) — Bug: 다시한번 답줘. /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는...
-- `docs/records/ConnectAI/bugs/BUG-0006-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
-- `docs/records/ConnectAI/bugs/BUG-0007-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
-- `docs/records/ConnectAI/bugs/BUG-0008-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
-- `docs/records/ConnectAI/bugs/BUG-0009-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md` (16 lines) — Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...
-- `docs/records/ConnectAI/bugs/BUG-0010-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md` (16 lines) — Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...
-- `docs/records/ConnectAI/bugs/BUG-0011-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md` (16 lines) — Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...
-- `docs/records/ConnectAI/bugs/BUG-0012-질문이-있어-논문을-쓰려고해-논문-주제는-서비스적이-아닌-사용자가-ai에게-구조로-질문을-해야-사용자의-의도.md` (16 lines) — Bug: 질문이 있어. 논문을 쓰려고해. 논문 주제는 서비스적이 아닌 사용자가 ai에게 구조로 질문을 해야 사용자의 의도에 맞는 답변을 받을 수 있을까야...
+- `docs/records/ConnectAI/README.md` (18 lines) — Astra Project Chronicle Records
+- `docs/records/ConnectAI/bugs/BUG-0001-volumes-data-project-antigravity-connectai-프로젝트-코드-리뷰-해줄-수-있.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
+- `docs/records/ConnectAI/bugs/BUG-0002-지금-내가-분석-요청하고-너가-답을-줄때-아래-템플릿에-맞춰-답을-써주고-있는데-개선-포인트가-있는지-확인해.md` (16 lines) — Bug: 지금 내가 분석 요청하고 너가 답을 줄때 아래 템플릿에 맞춰 답을 써주고 있는데, 개선 포인트가 있는지 확인해줘. ## 내가 보는 위험 가장 큰...
+- `docs/records/ConnectAI/bugs/BUG-0003-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
+- `docs/records/ConnectAI/bugs/BUG-0004-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
+- `docs/records/ConnectAI/bugs/BUG-0005-다시한번-답줘-volumes-data-project-antigravity-connectai-내-질문에-대한-.md` (16 lines) — Bug: 다시한번 답줘. /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는...
+- `docs/records/ConnectAI/bugs/BUG-0006-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
+- `docs/records/ConnectAI/bugs/BUG-0007-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
+- `docs/records/ConnectAI/bugs/BUG-0008-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md` (16 lines) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...
+- `docs/records/ConnectAI/bugs/BUG-0009-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md` (16 lines) — Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...
+- `docs/records/ConnectAI/bugs/BUG-0010-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md` (16 lines) — Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...
## VS Code Extension Surface
- **Extension ID**: `g1nation.astra`
@@ -307,7 +307,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
**Designed for High-Performance Decision Making.**
Copyright (C) **g1nation**. All rights reserved.
-_Last auto-scan: 2026-05-14T03:14:40.992Z · signature `1f7ace87`_
+_Last auto-scan: 2026-05-13T17:43:53.933Z · signature `5020e02c`_
## Purpose
diff --git a/.astra/project-context/scan-cache.json b/.astra/project-context/scan-cache.json
index d060443..7560c6b 100644
--- a/.astra/project-context/scan-cache.json
+++ b/.astra/project-context/scan-cache.json
@@ -1,11 +1,11 @@
{
"version": 1,
- "generatedAt": "2026-05-14T03:14:41.017Z",
+ "generatedAt": "2026-05-13T17:43:53.948Z",
"files": {
"src/agent.ts": {
- "mtimeMs": 1778720117489.3945,
- "size": 189153,
- "lines": 3241,
+ "mtimeMs": 1778683690000,
+ "size": 185807,
+ "lines": 3232,
"role": "",
"imports": [
"src/utils",
@@ -38,8 +38,8 @@
]
},
"src/agents/AgentWorkflowManager.ts": {
- "mtimeMs": 1778720117490.4294,
- "size": 2322,
+ "mtimeMs": 1778690404000,
+ "size": 2262,
"lines": 60,
"role": "",
"imports": [
@@ -49,8 +49,8 @@
]
},
"src/agents/factory.ts": {
- "mtimeMs": 1778720117507.1616,
- "size": 11242,
+ "mtimeMs": 1778690336000,
+ "size": 11023,
"lines": 219,
"role": "",
"imports": [
@@ -59,8 +59,8 @@
]
},
"src/bridge.ts": {
- "mtimeMs": 1778549008895.9155,
- "size": 9932,
+ "mtimeMs": 1778681774000,
+ "size": 9705,
"lines": 227,
"role": "",
"imports": [
@@ -72,21 +72,21 @@
]
},
"src/config.ts": {
- "mtimeMs": 1778720117515.6978,
- "size": 9835,
+ "mtimeMs": 1778690442000,
+ "size": 9619,
"lines": 216,
"role": "",
"imports": []
},
"src/core/astraPath.ts": {
- "mtimeMs": 1778037123135.2776,
- "size": 1832,
+ "mtimeMs": 1778169995000,
+ "size": 1782,
"lines": 50,
"role": "Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토리를 해결하여, 사용자 프로젝트 루트가 아닌 ConnectAI 패키지 내부에 데이터를 저장합니다. 이 모듈은 AAL(Astra Autonomou",
"imports": []
},
"src/core/conflict.ts": {
- "mtimeMs": 1778038174478.8147,
+ "mtimeMs": 1778169995000,
"size": 1726,
"lines": 30,
"role": "",
@@ -95,35 +95,35 @@
]
},
"src/core/dataProcessor.ts": {
- "mtimeMs": 1778038193232.0127,
+ "mtimeMs": 1778169995000,
"size": 3235,
"lines": 96,
"role": "Aggregate result type definition",
"imports": []
},
"src/core/errorHandler.ts": {
- "mtimeMs": 1777511752606.2458,
- "size": 2354,
+ "mtimeMs": 1777808065000,
+ "size": 2305,
"lines": 49,
"role": "",
"imports": []
},
"src/core/errors.ts": {
- "mtimeMs": 1778037081022.028,
- "size": 958,
+ "mtimeMs": 1778169995000,
+ "size": 924,
"lines": 34,
"role": "g1nation Custom Error Classes",
"imports": []
},
"src/core/events.ts": {
- "mtimeMs": 1778028987396.9893,
- "size": 1028,
+ "mtimeMs": 1777808065000,
+ "size": 993,
"lines": 35,
"role": "",
"imports": []
},
"src/core/health.ts": {
- "mtimeMs": 1778038139567.3984,
+ "mtimeMs": 1778169995000,
"size": 2873,
"lines": 79,
"role": "",
@@ -133,7 +133,7 @@
]
},
"src/core/lock.ts": {
- "mtimeMs": 1778038157826.973,
+ "mtimeMs": 1778169995000,
"size": 2358,
"lines": 66,
"role": "",
@@ -142,8 +142,8 @@
]
},
"src/core/queue.ts": {
- "mtimeMs": 1778666871393.5244,
- "size": 2509,
+ "mtimeMs": 1778674336000,
+ "size": 2428,
"lines": 81,
"role": "",
"imports": [
@@ -151,8 +151,8 @@
]
},
"src/core/responseRecovery.ts": {
- "mtimeMs": 1778664139958.9634,
- "size": 12529,
+ "mtimeMs": 1778598587000,
+ "size": 12304,
"lines": 225,
"role": "Response Recovery — Thought Quarantine + Final-only Retry + Auto-Continuation The user already asked their question; they're waiting for an answer, not for a chance to babysit the generation engine. S",
"imports": [
@@ -160,8 +160,8 @@
]
},
"src/core/services.ts": {
- "mtimeMs": 1778549008895.9155,
- "size": 6856,
+ "mtimeMs": 1778421200000,
+ "size": 6692,
"lines": 164,
"role": "",
"imports": [
@@ -170,8 +170,8 @@
]
},
"src/core/session.ts": {
- "mtimeMs": 1777511752609.8882,
- "size": 2873,
+ "mtimeMs": 1777808065000,
+ "size": 2785,
"lines": 88,
"role": "",
"imports": [
@@ -180,14 +180,14 @@
]
},
"src/core/statusBar.ts": {
- "mtimeMs": 1778028987401.3042,
- "size": 2057,
+ "mtimeMs": 1777808065000,
+ "size": 2000,
"lines": 57,
"role": "",
"imports": []
},
"src/core/telemetry.ts": {
- "mtimeMs": 1778666901466.1726,
+ "mtimeMs": 1778674336000,
"size": 5442,
"lines": 129,
"role": "Telemetry — append-only usage events to .astra/usage.jsonl Why local-file telemetry instead of a webview dashboard or remote endpoint: - Astra is local-first. No data leaves the machine. - JSONL is tr",
@@ -197,8 +197,8 @@
]
},
"src/core/transaction.ts": {
- "mtimeMs": 1778549008897.4194,
- "size": 4590,
+ "mtimeMs": 1778251556000,
+ "size": 4458,
"lines": 132,
"role": "",
"imports": [
@@ -206,51 +206,51 @@
"src/utils"
]
},
+ "src/docs/records/src/README.md": {
+ "mtimeMs": 1777949473000,
+ "size": 422,
+ "lines": 18,
+ "role": "src Chronicle Records",
+ "imports": []
+ },
"src/docs/records/src/bugs/BUG-0001-edited-agent-ts-edited-agent-ts-edited-agent-ts-edited-agent.md": {
- "mtimeMs": 1778028987403.465,
- "size": 1813,
+ "mtimeMs": 1777949473000,
+ "size": 1797,
"lines": 16,
"role": "Bug: Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts ...",
"imports": []
},
- "src/docs/records/src/bugs/BUG-0002-viewed-agent-ts-2159-2206-제공해주신-세부-파일-구조와-지식-수집-워크플로우-관점의-코드.md": {
- "mtimeMs": 1778028987403.9697,
- "size": 2217,
+ "src/docs/records/src/bugs/BUG-0002-viewed-agent-ts-2159-2206-제공해주신-세부-파일-구조와-지식-수집-워크플로우-관점의-코드.md": {
+ "mtimeMs": 1777949638000,
+ "size": 2201,
"lines": 16,
"role": "Bug: Viewed agent.ts:2159-2206 제공해주신 세부 파일 구조와 지식 수집 워크플로우 관점의 코드리뷰 요청을 정독했습니다. 이...",
"imports": []
},
"src/docs/records/src/chronicle.config.json": {
- "mtimeMs": 1778028987403.9697,
- "size": 528,
+ "mtimeMs": 1777949638000,
+ "size": 517,
"lines": 11,
"role": "JSON configuration",
"imports": []
},
"src/docs/records/src/project-profile.md": {
- "mtimeMs": 1778028987404.973,
- "size": 613,
+ "mtimeMs": 1777949473000,
+ "size": 582,
"lines": 31,
"role": "Project Profile",
"imports": []
},
- "src/docs/records/src/README.md": {
- "mtimeMs": 1778028987402.338,
- "size": 440,
- "lines": 18,
- "role": "src Chronicle Records",
- "imports": []
- },
"src/docs/records/src/timeline.md": {
- "mtimeMs": 1778028987405.4775,
- "size": 391,
+ "mtimeMs": 1777949638000,
+ "size": 381,
"lines": 10,
"role": "Project Timeline",
"imports": []
},
"src/extension.ts": {
- "mtimeMs": 1778720117520.6597,
- "size": 51505,
+ "mtimeMs": 1778693606000,
+ "size": 50539,
"lines": 966,
"role": "",
"imports": [
@@ -284,8 +284,8 @@
]
},
"src/features/approval/approvalPanelProvider.ts": {
- "mtimeMs": 1778664480470.9922,
- "size": 7285,
+ "mtimeMs": 1778674336000,
+ "size": 7132,
"lines": 153,
"role": "",
"imports": [
@@ -294,8 +294,8 @@
]
},
"src/features/approval/approvalQueue.ts": {
- "mtimeMs": 1778549008899.4456,
- "size": 4851,
+ "mtimeMs": 1778251548000,
+ "size": 4722,
"lines": 129,
"role": "",
"imports": [
@@ -303,8 +303,8 @@
]
},
"src/features/approval/approvalStatusBar.ts": {
- "mtimeMs": 1778549008899.4456,
- "size": 1642,
+ "mtimeMs": 1778251623000,
+ "size": 1601,
"lines": 41,
"role": "",
"imports": [
@@ -312,8 +312,8 @@
]
},
"src/features/company/agents.ts": {
- "mtimeMs": 1778720117521.671,
- "size": 6820,
+ "mtimeMs": 1778680824000,
+ "size": 6684,
"lines": 136,
"role": "The 9-agent roster for 1인 기업 모드. Each entry is a static description — persona, role, specialty — used to build the specialist's system prompt at dispatch time. The set was adopted from Connectorigin's",
"imports": [
@@ -321,8 +321,8 @@
]
},
"src/features/company/ceoPlanner.ts": {
- "mtimeMs": 1778720117522.671,
- "size": 8625,
+ "mtimeMs": 1778681095000,
+ "size": 8406,
"lines": 219,
"role": "CEO planner — turns a user prompt into a CompanyTaskPlan. Lifecycle of one planner call: 1. Build the planner system prompt (template + active-agent list). 2. Hit the AI service with the user prompt a",
"imports": [
@@ -336,8 +336,8 @@
]
},
"src/features/company/ceoReporter.ts": {
- "mtimeMs": 1778720117523.1748,
- "size": 4932,
+ "mtimeMs": 1778681122000,
+ "size": 4812,
"lines": 120,
"role": "CEO synthesis pass — runs after all specialists have finished. Given the per-agent outputs, this asks the CEO model to produce the final markdown report (✅ 완료 / 🚀 다음 / 💡 인사이트) that the user actually",
"imports": [
@@ -349,8 +349,8 @@
]
},
"src/features/company/companyConfig.ts": {
- "mtimeMs": 1778720117524.177,
- "size": 13803,
+ "mtimeMs": 1778686762000,
+ "size": 13473,
"lines": 330,
"role": "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",
"imports": [
@@ -359,8 +359,8 @@
]
},
"src/features/company/dispatcher.ts": {
- "mtimeMs": 1778720117524.6816,
- "size": 20463,
+ "mtimeMs": 1778686839000,
+ "size": 20029,
"lines": 434,
"role": "Sequential dispatcher for 1인 기업 모드. Drives one company \"turn\": user prompt → CEO planner (JSON {brief, tasks}) → for each task in plan: dispatch one specialist (sequentially) - build specialist prompt",
"imports": [
@@ -380,8 +380,8 @@
]
},
"src/features/company/index.ts": {
- "mtimeMs": 1778720117525.2087,
- "size": 1169,
+ "mtimeMs": 1778686769000,
+ "size": 1114,
"lines": 55,
"role": "Public API for 1인 기업 모드. Consumers (sidebarProvider, chatHandlers, command handlers) import from this barrel so internal layout can move around without touching every call site.",
"imports": [
@@ -393,15 +393,15 @@
]
},
"src/features/company/promptAssets.ts": {
- "mtimeMs": 1778720117525.2087,
- "size": 6896,
+ "mtimeMs": 1778680887000,
+ "size": 6782,
"lines": 114,
"role": "Inlined prompt assets for the 1인 기업 mode. The CEO planner / reporter / casual-chat prompts are kept as TS string constants rather than loaded from prompts/.md at runtime, for two reasons: 1. Bundling.",
"imports": []
},
"src/features/company/promptBuilder.ts": {
- "mtimeMs": 1778720117527.2378,
- "size": 10519,
+ "mtimeMs": 1778686868000,
+ "size": 10317,
"lines": 202,
"role": "System-prompt construction for company-mode agents. Each specialist needs a prompt that includes: - Their identity (name, role, specialty) + optional persona. - The action-tag contract (, ",
"imports": [
@@ -411,29 +411,29 @@
]
},
"src/features/company/prompts/ceo-chat.md": {
- "mtimeMs": 1778720117527.2378,
- "size": 466,
+ "mtimeMs": 1778680831000,
+ "size": 462,
"lines": 4,
"role": "당신은 {{COMPANY}}의 CEO입니다. 사용자(사장님)와 짧게 인사·안부·잡담을 주고받습니다. - 한국어로 1~3문장. 친근하지만 사장-CEO 관계는 유지. - 인사·안부 질문이면 자연스럽게 응답하세요. 작업 지시가 아니면 굳이 작업 분배 제안 X. - 회사 정체성·최근 결정·추적기 상태가 컨텍스트에 있으면 자연스럽게 활용. - JSON 출력 금지. ",
"imports": []
},
"src/features/company/prompts/ceo-planner.md": {
- "mtimeMs": 1778720117527.2378,
- "size": 3237,
+ "mtimeMs": 1778680831000,
+ "size": 3199,
"lines": 38,
"role": "당신은 \"{{COMPANY}}\"의 CEO입니다. 1인 AI 기업의 사령관이자 오케스트레이터입니다.",
"imports": []
},
"src/features/company/prompts/ceo-report.md": {
- "mtimeMs": 1778720117528.7502,
- "size": 1394,
+ "mtimeMs": 1778680831000,
+ "size": 1373,
"lines": 21,
"role": "당신은 {{COMPANY}}의 CEO입니다. 방금 팀이 작업을 끝냈습니다. 각 에이전트의 산출물을 읽고 사장님께 올릴 종합 보고서를 작성하세요.",
"imports": []
},
"src/features/company/sessionStore.ts": {
- "mtimeMs": 1778720117528.7502,
- "size": 8958,
+ "mtimeMs": 1778680971000,
+ "size": 8727,
"lines": 231,
"role": "Disk persistence for company-mode session artefacts. Each company turn produces a timestamped directory: /.astra/company/sessions/2026-05-13T21-29/ ├─ brief.md ← CEO's task decompositio",
"imports": [
@@ -442,8 +442,8 @@
]
},
"src/features/company/telegramReport.ts": {
- "mtimeMs": 1778720117530.263,
- "size": 8279,
+ "mtimeMs": 1778686162000,
+ "size": 8111,
"lines": 168,
"role": "Telegram mirror for the secretary agent (영숙). After every company turn finishes, this helper takes the CEO synthesis + task list and pushes it to the user's Telegram chat — same behaviour as Connector",
"imports": [
@@ -455,15 +455,15 @@
]
},
"src/features/company/types.ts": {
- "mtimeMs": 1778720117530.263,
- "size": 6604,
+ "mtimeMs": 1778686714000,
+ "size": 6454,
"lines": 150,
"role": "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",
"imports": []
},
"src/features/projectArchitecture/index.ts": {
- "mtimeMs": 1778720117531.2734,
- "size": 25946,
+ "mtimeMs": 1778691699000,
+ "size": 25373,
"lines": 573,
"role": "Project Architecture Context (Feature 2) Builds a markdown document that captures the durable facts about a project — its purpose, modules, key files, constraints, decisions — so Astra can attach it t",
"imports": [
@@ -473,15 +473,15 @@
]
},
"src/features/projectArchitecture/intentDetector.ts": {
- "mtimeMs": 1778720117532.2788,
- "size": 6318,
+ "mtimeMs": 1778676956000,
+ "size": 6170,
"lines": 148,
"role": "Project-intent detection from a chat message. Goal: when the user says \"나 ConnectAI 프로젝트 진행할 거야\" (or similar), spot the intent + project handle so the sidebar can activate Project Mode and auto-attach",
"imports": []
},
"src/features/projectArchitecture/mermaid.ts": {
- "mtimeMs": 1778720117533.2854,
- "size": 2768,
+ "mtimeMs": 1778678215000,
+ "size": 2699,
"lines": 69,
"role": "Mermaid diagram renderers for the architecture doc. Two diagrams: a directory mindmap so the user can see the shape of the project at a glance, and a flowchart that shows which top-level module import",
"imports": [
@@ -489,8 +489,8 @@
]
},
"src/features/projectArchitecture/scanner.ts": {
- "mtimeMs": 1778720117534.286,
- "size": 28943,
+ "mtimeMs": 1778678939000,
+ "size": 28299,
"lines": 644,
"role": "Deep static analyser for the Project Architecture Context generator. Walks the project tree (skipping the usual nodemodules / out / dist noise), pulls the role of each interesting file from its leadin",
"imports": [
@@ -500,8 +500,8 @@
]
},
"src/features/projectChronicle/guardPrompt.ts": {
- "mtimeMs": 1778028987407.7454,
- "size": 6955,
+ "mtimeMs": 1777870211000,
+ "size": 6880,
"lines": 75,
"role": "",
"imports": [
@@ -509,8 +509,8 @@
]
},
"src/features/projectChronicle/index.ts": {
- "mtimeMs": 1778028987408.4517,
- "size": 7679,
+ "mtimeMs": 1777808065000,
+ "size": 7490,
"lines": 189,
"role": "",
"imports": [
@@ -521,15 +521,15 @@
]
},
"src/features/projectChronicle/markdownFileWriter.ts": {
- "mtimeMs": 1778028987409.2556,
- "size": 1358,
+ "mtimeMs": 1777808065000,
+ "size": 1317,
"lines": 41,
"role": "",
"imports": []
},
"src/features/projectChronicle/templates.ts": {
- "mtimeMs": 1778028987409.766,
- "size": 6957,
+ "mtimeMs": 1777808065000,
+ "size": 6699,
"lines": 258,
"role": "",
"imports": [
@@ -537,15 +537,15 @@
]
},
"src/features/projectChronicle/types.ts": {
- "mtimeMs": 1778720117534.7898,
- "size": 3247,
+ "mtimeMs": 1778676848000,
+ "size": 3129,
"lines": 118,
"role": "",
"imports": []
},
"src/features/secondBrainTrace.ts": {
- "mtimeMs": 1778549008900.949,
- "size": 38235,
+ "mtimeMs": 1778248166000,
+ "size": 37475,
"lines": 760,
"role": "",
"imports": [
@@ -554,8 +554,8 @@
]
},
"src/features/settings/settingsPanelProvider.ts": {
- "mtimeMs": 1778664502139.8142,
- "size": 21911,
+ "mtimeMs": 1778674336000,
+ "size": 21422,
"lines": 489,
"role": "",
"imports": [
@@ -567,8 +567,8 @@
]
},
"src/integrations/telegram/conversationHistory.ts": {
- "mtimeMs": 1778720117535.294,
- "size": 6427,
+ "mtimeMs": 1778684811000,
+ "size": 6273,
"lines": 154,
"role": "Per-chat conversation history for the Telegram bot. Why this exists: the previous bot was stateless — every inbound message hit AIService.chat({system, user}) in isolation, with no memory of what the ",
"imports": [
@@ -576,8 +576,8 @@
]
},
"src/integrations/telegram/telegramBot.ts": {
- "mtimeMs": 1778549008903.0078,
- "size": 11614,
+ "mtimeMs": 1778421270000,
+ "size": 11344,
"lines": 270,
"role": "",
"imports": [
@@ -587,8 +587,8 @@
]
},
"src/integrations/telegram/telegramClient.ts": {
- "mtimeMs": 1778549008904.013,
- "size": 6027,
+ "mtimeMs": 1778252333000,
+ "size": 5873,
"lines": 154,
"role": "",
"imports": [
@@ -597,22 +597,22 @@
]
},
"src/integrations/telegram/types.ts": {
- "mtimeMs": 1778549008904.013,
- "size": 1309,
+ "mtimeMs": 1778252305000,
+ "size": 1255,
"lines": 54,
"role": "Subset of the Telegram Bot API types we actually consume. Source: https://core.telegram.org/bots/api Only fields the bot reads or writes are typed — leaving the rest as unknown keeps the surface narro",
"imports": []
},
"src/lib/contextManager.ts": {
- "mtimeMs": 1778664139961.0637,
- "size": 13257,
+ "mtimeMs": 1778597095000,
+ "size": 12982,
"lines": 275,
"role": "Context Manager (컨텍스트 한계 관리) \"context length = 132k\" 는 \"답변을 132k 토큰까지 생성해도 된다\" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변 + 여유분 ≤ context length 이 모듈은 요청을 보내기 전에 입력 토큰을 추정하고, - 동적으로 출력 상한(maxTokens)을 계",
"imports": []
},
"src/lib/diagnostics.ts": {
- "mtimeMs": 1778028987412.5159,
- "size": 8599,
+ "mtimeMs": 1777978189000,
+ "size": 8389,
"lines": 210,
"role": "",
"imports": [
@@ -620,8 +620,8 @@
]
},
"src/lib/discoverModels.ts": {
- "mtimeMs": 1778549008905.0132,
- "size": 1590,
+ "mtimeMs": 1778255896000,
+ "size": 1555,
"lines": 35,
"role": "",
"imports": [
@@ -629,8 +629,8 @@
]
},
"src/lib/engine.ts": {
- "mtimeMs": 1778720117536.941,
- "size": 41710,
+ "mtimeMs": 1778690608000,
+ "size": 40830,
"lines": 880,
"role": "",
"imports": [
@@ -643,8 +643,8 @@
]
},
"src/lib/formatter.ts": {
- "mtimeMs": 1778028987413.7585,
- "size": 3932,
+ "mtimeMs": 1777980992000,
+ "size": 3851,
"lines": 81,
"role": "",
"imports": [
@@ -652,22 +652,22 @@
]
},
"src/lib/paths.ts": {
- "mtimeMs": 1778664139961.0637,
- "size": 6567,
+ "mtimeMs": 1778591351000,
+ "size": 6416,
"lines": 151,
"role": "",
"imports": []
},
"src/lmstudio/activityTracker.ts": {
- "mtimeMs": 1778549008906.526,
- "size": 445,
+ "mtimeMs": 1778246443000,
+ "size": 426,
"lines": 19,
"role": "",
"imports": []
},
"src/lmstudio/client.ts": {
- "mtimeMs": 1778549008907.0293,
- "size": 5920,
+ "mtimeMs": 1778472808000,
+ "size": 5773,
"lines": 147,
"role": "",
"imports": [
@@ -675,8 +675,8 @@
]
},
"src/lmstudio/lifecycleManager.ts": {
- "mtimeMs": 1778549008907.0293,
- "size": 11074,
+ "mtimeMs": 1778251087000,
+ "size": 10783,
"lines": 291,
"role": "",
"imports": [
@@ -687,8 +687,8 @@
]
},
"src/lmstudio/streamer.ts": {
- "mtimeMs": 1778664139962.1995,
- "size": 7924,
+ "mtimeMs": 1778598444000,
+ "size": 7762,
"lines": 162,
"role": "",
"imports": [
@@ -697,17 +697,65 @@
]
},
"src/memory/EpisodicMemory.ts": {
- "mtimeMs": 1778028987414.7522,
- "size": 9855,
+ "mtimeMs": 1777858161000,
+ "size": 9577,
"lines": 278,
"role": "Episodic Memory (일화 기억) 과거 대화/회의/결정의 맥락 흐름을 저장합니다. 세션 종료 시 자동으로 에피소드를 요약하여 저장합니다. \"왜 이렇게 결정했는지\", \"어떤 흐름으로 진행했는지\" 기록. 저장 위치: {brainPath}/memory/episodes/.json",
"imports": [
"src/memory/types"
]
},
+ "src/memory/LongTermMemory.ts": {
+ "mtimeMs": 1777858068000,
+ "size": 8364,
+ "lines": 243,
+ "role": "Long-Term Memory (장기 기억) 사용자의 취향, 프로젝트 목표, 반복 규칙, 과거 결정 사항을 영구적으로 저장하고 관리합니다. 저장 위치: {brainPath}/memory/longterm.json",
+ "imports": [
+ "src/memory/types"
+ ]
+ },
+ "src/memory/MemoryExtractor.ts": {
+ "mtimeMs": 1777858183000,
+ "size": 3838,
+ "lines": 115,
+ "role": "Memory Extractor (기억 추출기) 대화 종료 시 히스토리를 분석하여 각 메모리 레이어에 저장할 정보를 자동으로 추출합니다. LLM 호출 없이 패턴 매칭 기반으로 동작합니다.",
+ "imports": [
+ "src/memory/LongTermMemory",
+ "src/memory/ProjectMemory",
+ "src/memory/EpisodicMemory"
+ ]
+ },
+ "src/memory/ProceduralMemory.ts": {
+ "mtimeMs": 1777858120000,
+ "size": 5533,
+ "lines": 173,
+ "role": "Procedural Memory (절차 기억) 반복 작업의 절차와 패턴을 관리합니다. 기존 skill.md 시스템과 통합되어, Brain의 memory/procedures/ 아래의 MD 파일을 스캔하여 절차를 로드합니다. 저장 위치: {brainPath}/memory/procedures/.md",
+ "imports": [
+ "src/memory/types"
+ ]
+ },
+ "src/memory/ProjectMemory.ts": {
+ "mtimeMs": 1777864677000,
+ "size": 6533,
+ "lines": 212,
+ "role": "Project Memory (프로젝트 기억) 프로젝트별 요구사항, 코드 구조, 아키텍처 결정, 버그 기록 등을 Astra 확장 프로그램 내부에 저장하고 관리합니다. 저장 위치: {ConnectAI}/.astra/projectmemory.json (기존: {projectRoot}/.astra/ → 변경됨)",
+ "imports": [
+ "src/memory/types",
+ "src/core/astraPath"
+ ]
+ },
+ "src/memory/ShortTermMemory.ts": {
+ "mtimeMs": 1777858031000,
+ "size": 1167,
+ "lines": 37,
+ "role": "Short-Term Memory (단기 기억) 현재 대화의 즉시 맥락을 관리합니다. FIFO 방식으로 최근 N개 메시지를 유지합니다.",
+ "imports": [
+ "src/memory/types"
+ ]
+ },
"src/memory/index.ts": {
- "mtimeMs": 1778028987418.8357,
- "size": 6498,
+ "mtimeMs": 1777858214000,
+ "size": 6310,
"lines": 188,
"role": "MemoryManager — 5-Layer Cognitive Memory System (통합 진입점) Astra의 모든 메모리 레이어를 통합 관리하는 중앙 매니저입니다. ① Short-Term Memory — 현재 대화 흐름 (FIFO) ② Long-Term Memory — 사용자 취향/규칙/결정 ③ Project Memory — 프로젝트별 지식 ④ Pro",
"imports": [
@@ -721,64 +769,16 @@
"src/memory/types"
]
},
- "src/memory/LongTermMemory.ts": {
- "mtimeMs": 1778028987415.2708,
- "size": 8607,
- "lines": 243,
- "role": "Long-Term Memory (장기 기억) 사용자의 취향, 프로젝트 목표, 반복 규칙, 과거 결정 사항을 영구적으로 저장하고 관리합니다. 저장 위치: {brainPath}/memory/longterm.json",
- "imports": [
- "src/memory/types"
- ]
- },
- "src/memory/MemoryExtractor.ts": {
- "mtimeMs": 1778028987415.8738,
- "size": 3953,
- "lines": 115,
- "role": "Memory Extractor (기억 추출기) 대화 종료 시 히스토리를 분석하여 각 메모리 레이어에 저장할 정보를 자동으로 추출합니다. LLM 호출 없이 패턴 매칭 기반으로 동작합니다.",
- "imports": [
- "src/memory/LongTermMemory",
- "src/memory/ProjectMemory",
- "src/memory/EpisodicMemory"
- ]
- },
- "src/memory/ProceduralMemory.ts": {
- "mtimeMs": 1778028987416.5232,
- "size": 5706,
- "lines": 173,
- "role": "Procedural Memory (절차 기억) 반복 작업의 절차와 패턴을 관리합니다. 기존 skill.md 시스템과 통합되어, Brain의 memory/procedures/ 아래의 MD 파일을 스캔하여 절차를 로드합니다. 저장 위치: {brainPath}/memory/procedures/.md",
- "imports": [
- "src/memory/types"
- ]
- },
- "src/memory/ProjectMemory.ts": {
- "mtimeMs": 1778028987417.0342,
- "size": 6745,
- "lines": 212,
- "role": "Project Memory (프로젝트 기억) 프로젝트별 요구사항, 코드 구조, 아키텍처 결정, 버그 기록 등을 Astra 확장 프로그램 내부에 저장하고 관리합니다. 저장 위치: {ConnectAI}/.astra/projectmemory.json (기존: {projectRoot}/.astra/ → 변경됨)",
- "imports": [
- "src/memory/types",
- "src/core/astraPath"
- ]
- },
- "src/memory/ShortTermMemory.ts": {
- "mtimeMs": 1778028987418.1267,
- "size": 1204,
- "lines": 37,
- "role": "Short-Term Memory (단기 기억) 현재 대화의 즉시 맥락을 관리합니다. FIFO 방식으로 최근 N개 메시지를 유지합니다.",
- "imports": [
- "src/memory/types"
- ]
- },
"src/memory/types.ts": {
- "mtimeMs": 1778028987419.3413,
- "size": 3575,
+ "mtimeMs": 1777858019000,
+ "size": 3449,
"lines": 126,
"role": "Memory Type Definitions (메모리 타입 정의) Astra의 5-Layer Cognitive Memory System의 모든 타입을 정의합니다. ① Short-Term ② Long-Term ③ Project ④ Procedural ⑤ Episodic",
"imports": []
},
"src/retrieval/brainIndex.ts": {
- "mtimeMs": 1778667252738.4248,
- "size": 13270,
+ "mtimeMs": 1778674336000,
+ "size": 12945,
"lines": 325,
"role": "Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 /.astra/brain-index.json 에",
"imports": [
@@ -788,8 +788,8 @@
]
},
"src/retrieval/contextBudget.ts": {
- "mtimeMs": 1778665501089.1736,
- "size": 5283,
+ "mtimeMs": 1778674336000,
+ "size": 5143,
"lines": 140,
"role": "Context Budget Manager (컨텍스트 예산 관리) 시스템 프롬프트의 토큰 예산을 관리하여 로컬 모델의 context window를 효율적으로 활용합니다.",
"imports": [
@@ -797,7 +797,7 @@
]
},
"src/retrieval/embeddings.ts": {
- "mtimeMs": 1778667198243.6443,
+ "mtimeMs": 1778674336000,
"size": 7294,
"lines": 167,
"role": "Embeddings — local hybrid (sparse + dense) retrieval support TF-IDF is fast and zero-cost but misses synonyms / paraphrase. A small local embedding model (BGE-small, multilingual-e5-small, nomic-embed",
@@ -806,8 +806,8 @@
]
},
"src/retrieval/index.ts": {
- "mtimeMs": 1778720117542.9775,
- "size": 24278,
+ "mtimeMs": 1778676255000,
+ "size": 23764,
"lines": 514,
"role": "RetrievalOrchestrator — Unified RAG Pipeline Astra의 모든 검색 소스를 통합 관리하는 오케스트레이터입니다. 검색 흐름: ① Query Planning — 의도 분류 + 검색 전략 결정 ② Parallel Search — Brain + Memory + Project + Episode 동시 검색 ③ Result Fusio",
"imports": [
@@ -824,8 +824,8 @@
]
},
"src/retrieval/knowledgeMix.ts": {
- "mtimeMs": 1778720117543.9883,
- "size": 7108,
+ "mtimeMs": 1778676121000,
+ "size": 6947,
"lines": 161,
"role": "Knowledge Mix — controls how much the assistant leans on Second Brain evidence vs. the model's own general knowledge for a given query. The single integer \"secondBrainWeight\" (0–100) drives three thin",
"imports": [
@@ -834,8 +834,8 @@
]
},
"src/retrieval/lessonHelpers.ts": {
- "mtimeMs": 1778665428445.0337,
- "size": 14459,
+ "mtimeMs": 1778674336000,
+ "size": 14134,
"lines": 325,
"role": "Lesson / Experience Memory — pure helpers (no vscode dependency) \"Lesson\" = a markdown file in the active brain that captures a past mistake/risk and how to avoid repeating it. Identified by a lessons",
"imports": [
@@ -843,22 +843,22 @@
]
},
"src/retrieval/scoring.ts": {
- "mtimeMs": 1778667038342.5154,
- "size": 21311,
+ "mtimeMs": 1778674336000,
+ "size": 20793,
"lines": 518,
"role": "Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다.",
"imports": []
},
"src/retrieval/types.ts": {
- "mtimeMs": 1778665510728.6262,
- "size": 2490,
+ "mtimeMs": 1778674336000,
+ "size": 2424,
"lines": 66,
"role": "Retrieval Types (검색 결과 통합 타입) 모든 검색 소스(Brain, Memory, Project, Episode)의 결과를 통합 인터페이스로 정의합니다.",
"imports": []
},
"src/scaffolder/projectScaffolder.ts": {
- "mtimeMs": 1778549008910.5835,
- "size": 4619,
+ "mtimeMs": 1778251854000,
+ "size": 4508,
"lines": 111,
"role": "",
"imports": [
@@ -868,22 +868,22 @@
]
},
"src/scaffolder/templates.ts": {
- "mtimeMs": 1778549008910.5835,
- "size": 5051,
+ "mtimeMs": 1778251830000,
+ "size": 4897,
"lines": 154,
"role": "Scaffolder template catalog. Templates are pure data — (projectName) => { [relativePath]: contents }. New templates are added by appending to TEMPLATES; the rest of the scaffolder (validation, IO, com",
"imports": []
},
"src/security.ts": {
- "mtimeMs": 1778038102847.8362,
- "size": 3400,
+ "mtimeMs": 1778169995000,
+ "size": 3310,
"lines": 90,
"role": "",
"imports": []
},
"src/sidebar/agentHandlers.ts": {
- "mtimeMs": 1778720117552.737,
- "size": 7921,
+ "mtimeMs": 1778676515000,
+ "size": 7752,
"lines": 169,
"role": "",
"imports": [
@@ -893,8 +893,8 @@
]
},
"src/sidebar/brainHandlers.ts": {
- "mtimeMs": 1778549008912.5908,
- "size": 1113,
+ "mtimeMs": 1778248976000,
+ "size": 1080,
"lines": 33,
"role": "",
"imports": [
@@ -902,8 +902,8 @@
]
},
"src/sidebar/chatHandlers.ts": {
- "mtimeMs": 1778720117556.8992,
- "size": 13720,
+ "mtimeMs": 1778686906000,
+ "size": 13454,
"lines": 266,
"role": "",
"imports": [
@@ -914,8 +914,8 @@
]
},
"src/sidebar/chronicleHandlers.ts": {
- "mtimeMs": 1778549008912.5908,
- "size": 2120,
+ "mtimeMs": 1778248986000,
+ "size": 2068,
"lines": 52,
"role": "",
"imports": [
@@ -923,9 +923,9 @@
]
},
"src/sidebarProvider.ts": {
- "mtimeMs": 1778720117564.9683,
- "size": 135062,
- "lines": 3023,
+ "mtimeMs": 1778693581000,
+ "size": 132228,
+ "lines": 3026,
"role": "",
"imports": [
"src/utils",
@@ -949,8 +949,8 @@
]
},
"src/skills/agentKnowledgeMap.ts": {
- "mtimeMs": 1778720117565.968,
- "size": 16081,
+ "mtimeMs": 1778676092000,
+ "size": 15707,
"lines": 374,
"role": "",
"imports": [
@@ -959,8 +959,8 @@
]
},
"src/skills/externalSkillLoader.ts": {
- "mtimeMs": 1778549008916.6155,
- "size": 6018,
+ "mtimeMs": 1778470672000,
+ "size": 5859,
"lines": 159,
"role": "",
"imports": [
@@ -969,8 +969,8 @@
]
},
"src/skills/scopedBrainRetriever.ts": {
- "mtimeMs": 1778549008916.6155,
- "size": 5859,
+ "mtimeMs": 1778419289000,
+ "size": 5706,
"lines": 153,
"role": "",
"imports": [
@@ -981,8 +981,8 @@
]
},
"src/skills/skillInjectionService.ts": {
- "mtimeMs": 1778549008918.12,
- "size": 6421,
+ "mtimeMs": 1778681774000,
+ "size": 6276,
"lines": 145,
"role": "",
"imports": [
@@ -991,22 +991,22 @@
]
},
"src/system/specs.ts": {
- "mtimeMs": 1778549008918.12,
- "size": 4444,
+ "mtimeMs": 1778251036000,
+ "size": 4326,
"lines": 118,
"role": "",
"imports": []
},
"src/types/interfaces.ts": {
- "mtimeMs": 1778036927218.7627,
- "size": 1299,
+ "mtimeMs": 1778169995000,
+ "size": 1260,
"lines": 39,
"role": "Service Interfaces (서비스 인터페이스 정의) 각 서비스(Agent, Brain, FileSystem 등)의 추상화 인터페이스를 정의합니다. 의존성 주입(DI)과 단위 테스트를 위해 필수적입니다.",
"imports": []
},
"src/utils.ts": {
- "mtimeMs": 1778720117572.7004,
- "size": 11718,
+ "mtimeMs": 1778675047000,
+ "size": 11450,
"lines": 268,
"role": "",
"imports": [
@@ -1014,50 +1014,50 @@
]
},
"media/settings-panel.css": {
- "mtimeMs": 1778549008877.4587,
- "size": 4756,
+ "mtimeMs": 1778255405000,
+ "size": 4546,
"lines": 210,
"role": "Stylesheet",
"imports": []
},
"media/settings-panel.html": {
- "mtimeMs": 1778549008877.4587,
- "size": 7823,
+ "mtimeMs": 1778255979000,
+ "size": 7659,
"lines": 164,
"role": "Astra Settings",
"imports": []
},
"media/settings-panel.js": {
- "mtimeMs": 1778549008878.4905,
- "size": 11446,
+ "mtimeMs": 1778256014000,
+ "size": 11176,
"lines": 270,
"role": "",
"imports": []
},
"media/sidebar.css": {
- "mtimeMs": 1778720117436.0583,
- "size": 50572,
+ "mtimeMs": 1778688155000,
+ "size": 49347,
"lines": 1225,
"role": "Stylesheet",
"imports": []
},
"media/sidebar.html": {
- "mtimeMs": 1778720117442.547,
- "size": 20855,
+ "mtimeMs": 1778687548000,
+ "size": 20499,
"lines": 356,
"role": "Astra",
"imports": []
},
"media/sidebar.js": {
- "mtimeMs": 1778720117453.3223,
- "size": 105804,
- "lines": 1873,
+ "mtimeMs": 1778688191000,
+ "size": 103898,
+ "lines": 1874,
"role": "",
"imports": []
},
"tests/agentEngine.test.ts": {
- "mtimeMs": 1778720117574.2246,
- "size": 34703,
+ "mtimeMs": 1778690770000,
+ "size": 33921,
"lines": 782,
"role": "AgentEngine Integration Tests & Performance Benchmarks 검증 대상: 1. ErrorClassifier — 오류 유형(Transient/Permanent/Abort) 자동 분류 2. ErrorRecoveryMatrix — 각 규칙이 의도한 대응 전략으로 매핑되는지 검증 3. resilientExecute — 지수 백",
"imports": [
@@ -1065,8 +1065,8 @@
]
},
"tests/approvalQueue.test.ts": {
- "mtimeMs": 1778549008920.1624,
- "size": 6079,
+ "mtimeMs": 1778251690000,
+ "size": 5915,
"lines": 164,
"role": "Unit tests for ApprovalQueue. Strategy: drive enqueue → approve / reject / clear / pre-empt directly, confirm the onChange event fires at the right moments and callbacks fire exactly once.",
"imports": [
@@ -1074,8 +1074,8 @@
]
},
"tests/brainIndex.test.ts": {
- "mtimeMs": 1778664139970.806,
- "size": 5513,
+ "mtimeMs": 1778594450000,
+ "size": 5406,
"lines": 107,
"role": "",
"imports": [
@@ -1083,8 +1083,8 @@
]
},
"tests/contextManager.test.ts": {
- "mtimeMs": 1778664139971.9563,
- "size": 6674,
+ "mtimeMs": 1778594523000,
+ "size": 6545,
"lines": 129,
"role": "",
"imports": [
@@ -1092,8 +1092,8 @@
]
},
"tests/dataProcessor.test.ts": {
- "mtimeMs": 1778028987448.8394,
- "size": 3517,
+ "mtimeMs": 1777808065000,
+ "size": 3430,
"lines": 87,
"role": "/ ",
"imports": [
@@ -1101,8 +1101,8 @@
]
},
"tests/findBrainFilesCache.test.ts": {
- "mtimeMs": 1778549008921.7842,
- "size": 2800,
+ "mtimeMs": 1778247665000,
+ "size": 2720,
"lines": 80,
"role": "Unit tests for findBrainFiles TTL cache.",
"imports": [
@@ -1110,8 +1110,8 @@
]
},
"tests/integration_retrieval.test.ts": {
- "mtimeMs": 1778028987449.4358,
- "size": 4108,
+ "mtimeMs": 1777949141000,
+ "size": 4017,
"lines": 91,
"role": "",
"imports": [
@@ -1120,8 +1120,8 @@
]
},
"tests/lessonHelpers.test.ts": {
- "mtimeMs": 1778664139972.9592,
- "size": 9591,
+ "mtimeMs": 1778595482000,
+ "size": 9400,
"lines": 191,
"role": "",
"imports": [
@@ -1129,8 +1129,8 @@
]
},
"tests/lmStudioLifecycle.test.ts": {
- "mtimeMs": 1778549008921.7842,
- "size": 11703,
+ "mtimeMs": 1778250254000,
+ "size": 11385,
"lines": 318,
"role": "Unit tests for ModelLifecycleManager. Strategy: inject mock ILMStudioClient and a simple in-memory IActivityTracker. No real LM Studio or SDK is touched — the manager file does not import the SDK dire",
"imports": [
@@ -1140,8 +1140,8 @@
]
},
"tests/lmStudioStreamer.test.ts": {
- "mtimeMs": 1778664139973.4685,
- "size": 8880,
+ "mtimeMs": 1778591604000,
+ "size": 8660,
"lines": 220,
"role": "Unit tests for LMStudioStreamer. Strategy: inject a fake ILMStudioClient that returns a fake model handle whose respond() yields a controllable async iterable. No real SDK or WebSocket touched.",
"imports": [
@@ -1150,8 +1150,8 @@
]
},
"tests/localPathPreflight.test.ts": {
- "mtimeMs": 1778664139974.819,
- "size": 24177,
+ "mtimeMs": 1778595955000,
+ "size": 23687,
"lines": 490,
"role": "",
"imports": [
@@ -1159,15 +1159,15 @@
]
},
"tests/mocks/vscode.js": {
- "mtimeMs": 1778549008931.3582,
- "size": 1738,
+ "mtimeMs": 1778246810000,
+ "size": 1670,
"lines": 68,
"role": "",
"imports": []
},
"tests/paths.test.ts": {
- "mtimeMs": 1778549008931.3582,
- "size": 2674,
+ "mtimeMs": 1778250990000,
+ "size": 2590,
"lines": 84,
"role": "Unit tests for the centralized path resolver.",
"imports": [
@@ -1175,8 +1175,8 @@
]
},
"tests/projectChronicle.test.ts": {
- "mtimeMs": 1778029332769.3286,
- "size": 8558,
+ "mtimeMs": 1778169995000,
+ "size": 8359,
"lines": 199,
"role": "",
"imports": [
@@ -1184,8 +1184,8 @@
]
},
"tests/projectChronicleGuardPrompt.test.ts": {
- "mtimeMs": 1778028987452.0652,
- "size": 2890,
+ "mtimeMs": 1777808369000,
+ "size": 2838,
"lines": 52,
"role": "",
"imports": [
@@ -1193,8 +1193,8 @@
]
},
"tests/projectScaffolder.test.ts": {
- "mtimeMs": 1778549008932.6519,
- "size": 5935,
+ "mtimeMs": 1778251915000,
+ "size": 5800,
"lines": 135,
"role": "Unit tests for FileSystemProjectScaffolder. Drives against a real temp directory so end-to-end file IO + path-traversal defenses are exercised.",
"imports": [
@@ -1202,8 +1202,8 @@
]
},
"tests/resilience_stress.test.ts": {
- "mtimeMs": 1778028987453.0332,
- "size": 7164,
+ "mtimeMs": 1777968922000,
+ "size": 6981,
"lines": 183,
"role": "Resilience & Boundary Stress Test Suite (v2.77.3) 이 테스트는 ConnectAI 엔진이 극한의 환경(인증 실패, 네트워크 차단, 타임아웃 등)에서 얼마나 안정적으로 복구되고, 신뢰성 지표(Resilience Metrics)를 정확히 기록하는지 검증합니다.",
"imports": [
@@ -1211,8 +1211,8 @@
]
},
"tests/resilience_v4.test.ts": {
- "mtimeMs": 1778028987453.5366,
- "size": 3519,
+ "mtimeMs": 1777978211000,
+ "size": 3435,
"lines": 84,
"role": "",
"imports": [
@@ -1221,8 +1221,8 @@
]
},
"tests/responseRecovery.test.ts": {
- "mtimeMs": 1778664139974.819,
- "size": 8933,
+ "mtimeMs": 1778598707000,
+ "size": 8782,
"lines": 151,
"role": "",
"imports": [
@@ -1230,8 +1230,8 @@
]
},
"tests/scoring.test.ts": {
- "mtimeMs": 1778043314856.5872,
- "size": 6189,
+ "mtimeMs": 1778169995000,
+ "size": 6055,
"lines": 134,
"role": "",
"imports": [
@@ -1239,8 +1239,8 @@
]
},
"tests/secondBrainTrace.test.ts": {
- "mtimeMs": 1778028987455.0378,
- "size": 23431,
+ "mtimeMs": 1777866065000,
+ "size": 23024,
"lines": 407,
"role": "",
"imports": [
@@ -1248,8 +1248,8 @@
]
},
"tests/skillInjectionService.test.ts": {
- "mtimeMs": 1778549008933.6833,
- "size": 6913,
+ "mtimeMs": 1778681774000,
+ "size": 6741,
"lines": 172,
"role": "Unit tests for FileSystemSkillInjectionService. Strategy: drive the service against a real temp directory so path-traversal defenses and writeFileSync paths are exercised end-to-end. The service accep",
"imports": [
@@ -1257,8 +1257,8 @@
]
},
"tests/systemPrompt.test.ts": {
- "mtimeMs": 1778028987455.4153,
- "size": 1244,
+ "mtimeMs": 1777966465000,
+ "size": 1215,
"lines": 29,
"role": "",
"imports": [
@@ -1266,8 +1266,8 @@
]
},
"tests/systemSpecs.test.ts": {
- "mtimeMs": 1778549008934.187,
- "size": 3554,
+ "mtimeMs": 1778251130000,
+ "size": 3464,
"lines": 90,
"role": "Unit tests for SystemSpecs + HeuristicModelMemoryEstimator. Strategy: - HeuristicModelMemoryEstimator is pure — directly drive it with model ids. - NodeSystemSpecsProvider depends on os. so we test: a",
"imports": [
@@ -1275,8 +1275,8 @@
]
},
"tests/telegramBot.test.ts": {
- "mtimeMs": 1778549008934.187,
- "size": 13375,
+ "mtimeMs": 1778253785000,
+ "size": 13012,
"lines": 363,
"role": "Unit tests for TelegramBot + truncateForTelegram. Strategy: - TelegramBot is driven by an injected ITelegramClient stub. We script getUpdates to return queued batches and assert that: - the offset cur",
"imports": [
@@ -1286,8 +1286,8 @@
]
},
"tests/transaction.test.ts": {
- "mtimeMs": 1777511752614.9685,
- "size": 2132,
+ "mtimeMs": 1777808065000,
+ "size": 2064,
"lines": 68,
"role": "/ ",
"imports": [
@@ -1295,8 +1295,8 @@
]
},
"tests/vulnerability.test.ts": {
- "mtimeMs": 1777511752615.9702,
- "size": 2160,
+ "mtimeMs": 1777808065000,
+ "size": 2100,
"lines": 60,
"role": "/ ",
"imports": [
@@ -1305,536 +1305,508 @@
]
},
"core_py/events.py": {
- "mtimeMs": 1778028987265.2336,
- "size": 2438,
+ "mtimeMs": 1777559069000,
+ "size": 2374,
"lines": 64,
"role": "",
"imports": []
},
"core_py/inference.py": {
- "mtimeMs": 1778028987265.8833,
- "size": 3925,
+ "mtimeMs": 1777559249000,
+ "size": 3834,
"lines": 91,
"role": "",
"imports": []
},
"core_py/loader.py": {
- "mtimeMs": 1778028987266.8376,
- "size": 2429,
+ "mtimeMs": 1777559060000,
+ "size": 2368,
"lines": 61,
"role": "",
"imports": []
},
"core_py/monitoring.py": {
- "mtimeMs": 1778028987266.8376,
- "size": 2116,
+ "mtimeMs": 1777559685000,
+ "size": 2060,
"lines": 56,
"role": "",
"imports": []
},
"core_py/optimizer.py": {
- "mtimeMs": 1778028987267.4917,
- "size": 2382,
+ "mtimeMs": 1777559265000,
+ "size": 2327,
"lines": 55,
"role": "",
"imports": []
},
"core_py/queue_worker.py": {
- "mtimeMs": 1778028987268.5847,
- "size": 3069,
+ "mtimeMs": 1777559676000,
+ "size": 2987,
"lines": 82,
"role": "",
"imports": []
},
"docs/Advanced_Features_Implementation_Guide.md": {
- "mtimeMs": 1778028987294.7693,
- "size": 1844,
+ "mtimeMs": 1777808065000,
+ "size": 1804,
"lines": 40,
"role": "Advanced Features Implementation Guide",
"imports": []
},
"docs/AgentEngine_Architecture.md": {
- "mtimeMs": 1778028987295.9912,
- "size": 14652,
+ "mtimeMs": 1777863061000,
+ "size": 14338,
"lines": 314,
"role": "AgentEngine Architecture Document",
"imports": []
},
- "docs/docs/records/docs/bugs/BUG-0001-viewed-integration-retrieval-test-ts-1-59-integration-retrie.md": {
- "mtimeMs": 1778028987313.924,
- "size": 2075,
- "lines": 16,
- "role": "Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...",
- "imports": []
- },
- "docs/docs/records/docs/chronicle.config.json": {
- "mtimeMs": 1778028987314.4072,
- "size": 533,
- "lines": 11,
- "role": "JSON configuration",
- "imports": []
- },
- "docs/docs/records/docs/project-profile.md": {
- "mtimeMs": 1778028987314.9126,
- "size": 617,
- "lines": 31,
- "role": "Project Profile",
- "imports": []
- },
- "docs/docs/records/docs/README.md": {
- "mtimeMs": 1778028987312.8103,
- "size": 445,
- "lines": 18,
- "role": "docs Chronicle Records",
- "imports": []
- },
- "docs/docs/records/docs/timeline.md": {
- "mtimeMs": 1778028987315.4329,
- "size": 217,
- "lines": 7,
- "role": "Project Timeline",
- "imports": []
- },
"docs/EXPERIENCE_MEMORY_PLAN.md": {
- "mtimeMs": 1778664139926.1729,
- "size": 9512,
+ "mtimeMs": 1778595595000,
+ "size": 9390,
"lines": 122,
"role": "Experience Memory (Mistake / Lesson Loop) — Implementation Plan",
"imports": []
},
"docs/PROJECT_CHRONICLE_GUARD_ROADMAP.md": {
- "mtimeMs": 1778028987296.7407,
- "size": 1677,
+ "mtimeMs": 1777948230000,
+ "size": 1634,
"lines": 43,
"role": "Project Chronicle Guard: Search Engine Roadmap",
"imports": []
},
- "docs/records/ConnectAI/bugs/BUG-0001-volumes-data-project-antigravity-connectai-프로젝트-코드-리뷰-해줄-수-있.md": {
- "mtimeMs": 1778028987317.1565,
- "size": 1424,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0002-지금-내가-분석-요청하고-너가-답을-줄때-아래-템플릿에-맞춰-답을-써주고-있는데-개선-포인트가-있는지-확인해.md": {
- "mtimeMs": 1778028987317.6665,
- "size": 2575,
- "lines": 16,
- "role": "Bug: 지금 내가 분석 요청하고 너가 답을 줄때 아래 템플릿에 맞춰 답을 써주고 있는데, 개선 포인트가 있는지 확인해줘. ## 내가 보는 위험 가장 큰...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0003-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
- "mtimeMs": 1778028987320.982,
- "size": 1907,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0004-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
- "mtimeMs": 1778028987321.984,
- "size": 1899,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0005-다시한번-답줘-volumes-data-project-antigravity-connectai-내-질문에-대한-.md": {
- "mtimeMs": 1778028987322.4868,
- "size": 1884,
- "lines": 16,
- "role": "Bug: 다시한번 답줘. /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0006-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
- "mtimeMs": 1778028987322.9897,
- "size": 1639,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0007-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
- "mtimeMs": 1778028987322.9897,
- "size": 1839,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0008-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
- "mtimeMs": 1778028987323.9915,
- "size": 1753,
- "lines": 16,
- "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0009-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
- "mtimeMs": 1778028987324.4944,
- "size": 2311,
- "lines": 16,
- "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0010-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
- "mtimeMs": 1778028987324.9973,
- "size": 2355,
- "lines": 16,
- "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0011-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
- "mtimeMs": 1778028987325.5178,
- "size": 2293,
- "lines": 16,
- "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0012-질문이-있어-논문을-쓰려고해-논문-주제는-서비스적이-아닌-사용자가-ai에게-구조로-질문을-해야-사용자의-의도.md": {
- "mtimeMs": 1778727537111.4634,
- "size": 2354,
- "lines": 16,
- "role": "Bug: 질문이 있어. 논문을 쓰려고해. 논문 주제는 서비스적이 아닌 사용자가 ai에게 구조로 질문을 해야 사용자의 의도에 맞는 답변을 받을 수 있을까야...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0013-thesis-paper를-쓰려고-하는데-아래와-같이-쓰면-좋을까-이런-식으로-쓰면-되지-않을까-싶음-1-in.md": {
- "mtimeMs": 1778728112255.496,
- "size": 2527,
- "lines": 16,
- "role": "Bug: Thesis paper를 쓰려고 하는데 아래와 같이 쓰면 좋을까? 이런 식으로 쓰면 되지 않을까 싶음 1. Introduction Thesis ...",
- "imports": []
- },
- "docs/records/ConnectAI/bugs/BUG-0014-논문-outline-title-인간-ai-상호작용에서-의도-정렬을-높이기-위한-최소-질의-구조-연구-또는-사.md": {
- "mtimeMs": 1778728474713.4639,
- "size": 2531,
- "lines": 16,
- "role": "Bug: 논문 Outline Title 인간-AI 상호작용에서 의도 정렬을 높이기 위한 최소 질의 구조 연구 또는 사용자의 인지적 편향을 보완하는 구조화...",
- "imports": []
- },
- "docs/records/ConnectAI/chronicle.config.json": {
- "mtimeMs": 1778728474789.8633,
- "size": 371,
- "lines": 11,
- "role": "JSON configuration",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0001-volumes-data-project-antigravity-connectai-이-프로젝트를-지금-개발-중에-.md": {
- "mtimeMs": 1778028987326.5986,
- "size": 1463,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트를 지금 개발 중에 있어. 코드 리뷰를 하고 잘된점과 ...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0002-지금-너의-제2뇌-지식을-이용해서-아래-프로젝트-평가하고-앞으로-어느부분을-더-집중해서-개선을-하면-좋을지-.md": {
- "mtimeMs": 1778028987326.5986,
- "size": 1897,
- "lines": 19,
- "role": "ADR: 지금 너의 제2뇌 지식을 이용해서 아래 프로젝트 평가하고 앞으로 어느부분을 더 집중해서 개선을 하면 좋을지 알려주면 좋겠어. /Volumes/D...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0003-volumes-data-project-antigravity-connectai-이-프로젝트-자체를-나는-자비스.md": {
- "mtimeMs": 1778028987328.1038,
- "size": 1805,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 자체를 나는 자비스와 같은 툴로 만드는 것이 내 목표...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0004-volumes-data-project-antigravity-connectai-이-프로젝트-자체를-나는-자비스.md": {
- "mtimeMs": 1778028987328.613,
- "size": 1491,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 자체를 나는 자비스와 같은 툴로 만드는 것이 내 목표...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0005-volumes-data-project-antigravity-connectai-이-프로젝트-아키텍처-분석해줘.md": {
- "mtimeMs": 1778028987329.1296,
- "size": 1531,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 아키텍처 분석해줘.",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0006-volumes-data-project-antigravity-connectai-프로젝트에-대해서-너가-사용자-.md": {
- "mtimeMs": 1778028987329.1296,
- "size": 1623,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트에 대해서 너가 사용자 입장에서 평가 해주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0007-volumes-data-project-antigravity-connectai-이거에-기능-개선을-하고-싶어-.md": {
- "mtimeMs": 1778549008870.013,
- "size": 1944,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이거에 기능 개선을 하고 싶어. 너가 기획과 방향성을 정해주면 좋...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0008-volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이.md": {
- "mtimeMs": 1778664139928.3345,
- "size": 1625,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0009-이-프로젝트의-구조에-대해서-설명해봐.md": {
- "mtimeMs": 1778720117388.955,
- "size": 1526,
- "lines": 19,
- "role": "ADR: 이 프로젝트의 구조에 대해서 설명해봐.",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0010-volumes-data-project-antigravity-connectai-self-reflection-기.md": {
- "mtimeMs": 1778720117389.4595,
- "size": 1487,
- "lines": 19,
- "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI self reflection 기능이 적용되었는지 확인해줘. 1인 ...",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0011-e-wiki-connectai-self-reflection-기능이-있는데-어떻게-self-reflection.md": {
- "mtimeMs": 1778720344688.4775,
- "size": 1604,
- "lines": 19,
- "role": "ADR: E:\\Wiki\\connectai self reflection 기능이 있는데 어떻게 SELF REFLECTION이 반영되는지 분석해줘.",
- "imports": []
- },
- "docs/records/ConnectAI/decisions/ADR-0012-e-wiki-connectai-self-reflection-기능이-있는데-어떻게-self-reflection.md": {
- "mtimeMs": 1778720368351.8215,
- "size": 1448,
- "lines": 19,
- "role": "ADR: E:\\Wiki\\connectai self reflection 기능이 있는데 어떻게 SELF REFLECTION이 반영되는지 분석해줘.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": {
- "mtimeMs": 1778028987330.4185,
- "size": 1564,
- "lines": 30,
- "role": "Development Log: Answer Format Readability Tuning",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_connectai_project_knowledge_overview.md": {
- "mtimeMs": 1778028987330.9385,
- "size": 4661,
- "lines": 121,
- "role": "Astra Project Knowledge Overview",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_local-path-code-review-preflight.md": {
- "mtimeMs": 1778028987330.9385,
- "size": 1890,
- "lines": 35,
- "role": "Development Log: Local Path Code Review Preflight",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_no-evidence-no-project-claim.md": {
- "mtimeMs": 1778028987331.969,
- "size": 1563,
- "lines": 35,
- "role": "Development Log: No Evidence, No Project Claim",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_progressive-answer-format.md": {
- "mtimeMs": 1778028987332.698,
- "size": 1223,
- "lines": 29,
- "role": "Development Log: Progressive Answer Format",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_project-claim-output-brake.md": {
- "mtimeMs": 1778028987333.7078,
- "size": 1524,
- "lines": 35,
- "role": "Development Log: Project Claim Output Brake",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_project-claim-policy-enforcement.md": {
- "mtimeMs": 1778028987334.2126,
- "size": 1551,
- "lines": 35,
- "role": "Development Log: Project Claim Policy Enforcement",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_query-intent-search-tuning.md": {
- "mtimeMs": 1778028987335.4814,
- "size": 1946,
- "lines": 35,
- "role": "Development Log: Query Intent Search Tuning",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_remove-local-template-replies.md": {
- "mtimeMs": 1778028987335.4814,
- "size": 1074,
- "lines": 25,
- "role": "Development Log: Remove Local Template Replies",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-02_second-brain-trace-quality-tuning.md": {
- "mtimeMs": 1778028987336.4841,
- "size": 1467,
- "lines": 26,
- "role": "Development Log: Second Brain Trace Quality Tuning",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-03_connectai_project_knowledge_overview.md": {
- "mtimeMs": 1778028987336.988,
- "size": 4787,
- "lines": 121,
- "role": "Astra Project Knowledge Overview",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-오늘-많은-것을-업데이트했어-많_implementation.md": {
- "mtimeMs": 1778028987337.4993,
- "size": 1858,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 오늘 많은 것을 업데이트했어. 많이 고친것 같지만 그럼에도 불구하...",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-이-프로젝트-분석해줘-volum_implementation.md": {
- "mtimeMs": 1778028987337.4993,
- "size": 1770,
- "lines": 23,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 분석해줘./Volumes/Data/project/An...",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-이-프로젝트-분석해줘_implementation.md": {
- "mtimeMs": 1778028987338.1978,
- "size": 1749,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 분석해줘.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-2.md": {
- "mtimeMs": 1778664139929.635,
- "size": 1597,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-3.md": {
- "mtimeMs": 1778664139930.2983,
- "size": 1663,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-4.md": {
- "mtimeMs": 1778664139930.8157,
- "size": 1739,
- "lines": 24,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation.md": {
- "mtimeMs": 1778664139931.329,
- "size": 706,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업할거야_implementation.md": {
- "mtimeMs": 1778720117403.2517,
- "size": 1012,
- "lines": 22,
- "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업할거야",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-13_너는-분석-요청하거나-내가-작업-요청을-할때-connectai-architecture-md-문서를-참고하고-_implementation.md": {
- "mtimeMs": 1778720117403.2517,
- "size": 1760,
- "lines": 22,
- "role": "Development Log: 너는 분석 요청하거나 내가 작업 요청을 할때 connectai architecture.md 문서를 참고하고 작업을 하나?",
- "imports": []
- },
- "docs/records/ConnectAI/development/2026-05-14_reflector-에이전트가-1인-기업-에이전트-목록에는-안보이는데_implementation.md": {
- "mtimeMs": 1778720474901.9106,
- "size": 1519,
- "lines": 24,
- "role": "Development Log: REFLECTOR 에이전트가 1인 기업 에이전트 목록에는 안보이는데",
- "imports": []
- },
- "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업-할-거야.md": {
- "mtimeMs": 1778720117404.2578,
- "size": 668,
- "lines": 16,
- "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업 할 거야.",
- "imports": []
- },
- "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업할거야.md": {
- "mtimeMs": 1778720117405.2607,
- "size": 667,
- "lines": 16,
- "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업할거야",
- "imports": []
- },
- "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-하위-폴더-포함해서.md": {
- "mtimeMs": 1778720117405.2607,
- "size": 736,
- "lines": 16,
- "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 하위 폴더 포함해서 딥 리서치 해줘. 최적화 할 부분...",
- "imports": []
- },
- "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트를-작업할거야.md": {
- "mtimeMs": 1778720117406.7637,
- "size": 735,
- "lines": 16,
- "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트를 작업할거야.",
- "imports": []
- },
- "docs/records/ConnectAI/planning/2026-05-02_project-chronicle-guard.md": {
- "mtimeMs": 1778028987339.2349,
- "size": 3004,
- "lines": 58,
- "role": "Feature Plan: Project Chronicle Guard",
- "imports": []
- },
- "docs/records/ConnectAI/planning/2026-05-02_second-brain-trace-mode.md": {
- "mtimeMs": 1778028987339.818,
- "size": 1503,
- "lines": 36,
- "role": "Feature Plan: Second Brain Trace Mode",
- "imports": []
- },
- "docs/records/ConnectAI/planning/2026-05-13_상세하게-아키텍처-기준으로-설명해줘.md": {
- "mtimeMs": 1778720117406.7637,
- "size": 1260,
- "lines": 40,
- "role": "Feature Plan: 상세하게 아키텍처 기준으로 설명해줘.",
- "imports": []
- },
- "docs/records/ConnectAI/project-profile.md": {
- "mtimeMs": 1778028987341.925,
- "size": 987,
- "lines": 30,
- "role": "Project Profile",
- "imports": []
- },
- "docs/records/ConnectAI/README.md": {
- "mtimeMs": 1778028987316.5518,
- "size": 616,
- "lines": 18,
- "role": "Astra Project Chronicle Records",
- "imports": []
- },
- "docs/records/ConnectAI/timeline.md": {
- "mtimeMs": 1778728474718.0542,
- "size": 9652,
- "lines": 146,
- "role": "Project Timeline",
- "imports": []
- },
- "docs/refactoring_roadmap.md": {
- "mtimeMs": 1778232062143.956,
- "size": 3176,
- "lines": 53,
- "role": "🛠️ ConnectAI 아키텍처 리팩토링 로드맵",
- "imports": []
- },
"docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md": {
- "mtimeMs": 1778664139927.3354,
- "size": 12706,
+ "mtimeMs": 1778592247000,
+ "size": 12254,
"lines": 452,
"role": "Telegram Remote Execution 기획서",
"imports": []
},
"docs/UX_UI_Consistency_Guidelines.md": {
- "mtimeMs": 1778028987311.5012,
- "size": 2553,
+ "mtimeMs": 1777808065000,
+ "size": 2509,
"lines": 44,
"role": "UX/UI Consistency Guidelines",
"imports": []
+ },
+ "docs/docs/records/docs/README.md": {
+ "mtimeMs": 1777949758000,
+ "size": 427,
+ "lines": 18,
+ "role": "docs Chronicle Records",
+ "imports": []
+ },
+ "docs/docs/records/docs/bugs/BUG-0001-viewed-integration-retrieval-test-ts-1-59-integration-retrie.md": {
+ "mtimeMs": 1777949758000,
+ "size": 2059,
+ "lines": 16,
+ "role": "Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...",
+ "imports": []
+ },
+ "docs/docs/records/docs/chronicle.config.json": {
+ "mtimeMs": 1777949758000,
+ "size": 522,
+ "lines": 11,
+ "role": "JSON configuration",
+ "imports": []
+ },
+ "docs/docs/records/docs/project-profile.md": {
+ "mtimeMs": 1777949758000,
+ "size": 586,
+ "lines": 31,
+ "role": "Project Profile",
+ "imports": []
+ },
+ "docs/docs/records/docs/timeline.md": {
+ "mtimeMs": 1777949758000,
+ "size": 210,
+ "lines": 7,
+ "role": "Project Timeline",
+ "imports": []
+ },
+ "docs/records/ConnectAI/README.md": {
+ "mtimeMs": 1777808202000,
+ "size": 598,
+ "lines": 18,
+ "role": "Astra Project Chronicle Records",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0001-volumes-data-project-antigravity-connectai-프로젝트-코드-리뷰-해줄-수-있.md": {
+ "mtimeMs": 1777865266000,
+ "size": 1408,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0002-지금-내가-분석-요청하고-너가-답을-줄때-아래-템플릿에-맞춰-답을-써주고-있는데-개선-포인트가-있는지-확인해.md": {
+ "mtimeMs": 1777889979000,
+ "size": 2559,
+ "lines": 16,
+ "role": "Bug: 지금 내가 분석 요청하고 너가 답을 줄때 아래 템플릿에 맞춰 답을 써주고 있는데, 개선 포인트가 있는지 확인해줘. ## 내가 보는 위험 가장 큰...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0003-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
+ "mtimeMs": 1777962835000,
+ "size": 1891,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0004-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
+ "mtimeMs": 1777964236000,
+ "size": 1883,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0005-다시한번-답줘-volumes-data-project-antigravity-connectai-내-질문에-대한-.md": {
+ "mtimeMs": 1777965245000,
+ "size": 1868,
+ "lines": 16,
+ "role": "Bug: 다시한번 답줘. /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0006-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
+ "mtimeMs": 1777965308000,
+ "size": 1623,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0007-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
+ "mtimeMs": 1777965612000,
+ "size": 1823,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0008-volumes-data-project-antigravity-connectai-내-질문에-대한-답변이-잘-정리.md": {
+ "mtimeMs": 1777966704000,
+ "size": 1737,
+ "lines": 16,
+ "role": "Bug: /Volumes/Data/project/Antigravity/ConnectAI 내 질문에 대한 답변이 잘 정리되서 알려주긴 하는데 focused...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0009-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
+ "mtimeMs": 1777977740000,
+ "size": 2295,
+ "lines": 16,
+ "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0010-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
+ "mtimeMs": 1777981089000,
+ "size": 2339,
+ "lines": 16,
+ "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/bugs/BUG-0011-문제점을-읽고-어떻게-개선하는게-최선인지-분석해주면-좋겠어-알겠습니다-지금부터-connectai-프로젝트-에.md": {
+ "mtimeMs": 1777982331000,
+ "size": 2277,
+ "lines": 16,
+ "role": "Bug: 문제점을 읽고 어떻게 개선하는게 최선인지 분석해주면 좋겠어. 알겠습니다. 지금부터 ConnectAI 프로젝트에만 완전히 집중하겠습니다. ...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/chronicle.config.json": {
+ "mtimeMs": 1778694061000,
+ "size": 416,
+ "lines": 11,
+ "role": "JSON configuration",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0001-volumes-data-project-antigravity-connectai-이-프로젝트를-지금-개발-중에-.md": {
+ "mtimeMs": 1777860282000,
+ "size": 1444,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트를 지금 개발 중에 있어. 코드 리뷰를 하고 잘된점과 ...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0002-지금-너의-제2뇌-지식을-이용해서-아래-프로젝트-평가하고-앞으로-어느부분을-더-집중해서-개선을-하면-좋을지-.md": {
+ "mtimeMs": 1777869330000,
+ "size": 1878,
+ "lines": 19,
+ "role": "ADR: 지금 너의 제2뇌 지식을 이용해서 아래 프로젝트 평가하고 앞으로 어느부분을 더 집중해서 개선을 하면 좋을지 알려주면 좋겠어. /Volumes/D...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0003-volumes-data-project-antigravity-connectai-이-프로젝트-자체를-나는-자비스.md": {
+ "mtimeMs": 1777877376000,
+ "size": 1786,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 자체를 나는 자비스와 같은 툴로 만드는 것이 내 목표...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0004-volumes-data-project-antigravity-connectai-이-프로젝트-자체를-나는-자비스.md": {
+ "mtimeMs": 1777878318000,
+ "size": 1472,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 자체를 나는 자비스와 같은 툴로 만드는 것이 내 목표...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0005-volumes-data-project-antigravity-connectai-이-프로젝트-아키텍처-분석해줘.md": {
+ "mtimeMs": 1777889802000,
+ "size": 1512,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 아키텍처 분석해줘.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0006-volumes-data-project-antigravity-connectai-프로젝트에-대해서-너가-사용자-.md": {
+ "mtimeMs": 1777902312000,
+ "size": 1604,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트에 대해서 너가 사용자 입장에서 평가 해주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0007-volumes-data-project-antigravity-connectai-이거에-기능-개선을-하고-싶어-.md": {
+ "mtimeMs": 1778398958000,
+ "size": 1925,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 이거에 기능 개선을 하고 싶어. 너가 기획과 방향성을 정해주면 좋...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0008-volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이.md": {
+ "mtimeMs": 1778600479000,
+ "size": 1606,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0009-이-프로젝트의-구조에-대해서-설명해봐.md": {
+ "mtimeMs": 1778678639000,
+ "size": 1507,
+ "lines": 19,
+ "role": "ADR: 이 프로젝트의 구조에 대해서 설명해봐.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/decisions/ADR-0010-volumes-data-project-antigravity-connectai-self-reflection-기.md": {
+ "mtimeMs": 1778689955000,
+ "size": 1468,
+ "lines": 19,
+ "role": "ADR: /Volumes/Data/project/Antigravity/ConnectAI self reflection 기능이 적용되었는지 확인해줘. 1인 ...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1534,
+ "lines": 30,
+ "role": "Development Log: Answer Format Readability Tuning",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_connectai_project_knowledge_overview.md": {
+ "mtimeMs": 1777808211000,
+ "size": 4540,
+ "lines": 121,
+ "role": "Astra Project Knowledge Overview",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_local-path-code-review-preflight.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1855,
+ "lines": 35,
+ "role": "Development Log: Local Path Code Review Preflight",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_no-evidence-no-project-claim.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1528,
+ "lines": 35,
+ "role": "Development Log: No Evidence, No Project Claim",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_progressive-answer-format.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1194,
+ "lines": 29,
+ "role": "Development Log: Progressive Answer Format",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_project-claim-output-brake.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1489,
+ "lines": 35,
+ "role": "Development Log: Project Claim Output Brake",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_project-claim-policy-enforcement.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1516,
+ "lines": 35,
+ "role": "Development Log: Project Claim Policy Enforcement",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_query-intent-search-tuning.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1911,
+ "lines": 35,
+ "role": "Development Log: Query Intent Search Tuning",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_remove-local-template-replies.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1049,
+ "lines": 25,
+ "role": "Development Log: Remove Local Template Replies",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-02_second-brain-trace-quality-tuning.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1441,
+ "lines": 26,
+ "role": "Development Log: Second Brain Trace Quality Tuning",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-03_connectai_project_knowledge_overview.md": {
+ "mtimeMs": 1777808211000,
+ "size": 4666,
+ "lines": 121,
+ "role": "Astra Project Knowledge Overview",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-오늘-많은-것을-업데이트했어-많_implementation.md": {
+ "mtimeMs": 1777986879000,
+ "size": 1836,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 오늘 많은 것을 업데이트했어. 많이 고친것 같지만 그럼에도 불구하...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-이-프로젝트-분석해줘-volum_implementation.md": {
+ "mtimeMs": 1777967233000,
+ "size": 1747,
+ "lines": 23,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 분석해줘./Volumes/Data/project/An...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-05_volumes-data-project-antigravity-connectai-이-프로젝트-분석해줘_implementation.md": {
+ "mtimeMs": 1777966822000,
+ "size": 1727,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 분석해줘.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-2.md": {
+ "mtimeMs": 1778598784000,
+ "size": 1575,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-3.md": {
+ "mtimeMs": 1778599019000,
+ "size": 1641,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation-4.md": {
+ "mtimeMs": 1778600781000,
+ "size": 1715,
+ "lines": 24,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-12_volumes-data-project-antigravity-connectai-분석하고-부족한-부분이나-개선이_implementation.md": {
+ "mtimeMs": 1778598509000,
+ "size": 684,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 분석하고 부족한 부분이나 개선이 필요한 부분을 알려주면 좋겠어.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업할거야_implementation.md": {
+ "mtimeMs": 1778691256000,
+ "size": 990,
+ "lines": 22,
+ "role": "Development Log: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업할거야",
+ "imports": []
+ },
+ "docs/records/ConnectAI/development/2026-05-13_너는-분석-요청하거나-내가-작업-요청을-할때-connectai-architecture-md-문서를-참고하고-_implementation.md": {
+ "mtimeMs": 1778678912000,
+ "size": 1738,
+ "lines": 22,
+ "role": "Development Log: 너는 분석 요청하거나 내가 작업 요청을 할때 connectai architecture.md 문서를 참고하고 작업을 하나?",
+ "imports": []
+ },
+ "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업-할-거야.md": {
+ "mtimeMs": 1778690673000,
+ "size": 652,
+ "lines": 16,
+ "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업 할 거야.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업할거야.md": {
+ "mtimeMs": 1778680095000,
+ "size": 651,
+ "lines": 16,
+ "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 작업할거야",
+ "imports": []
+ },
+ "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-하위-폴더-포함해서.md": {
+ "mtimeMs": 1778689036000,
+ "size": 720,
+ "lines": 16,
+ "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트 하위 폴더 포함해서 딥 리서치 해줘. 최적화 할 부분...",
+ "imports": []
+ },
+ "docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트를-작업할거야.md": {
+ "mtimeMs": 1778677791000,
+ "size": 719,
+ "lines": 16,
+ "role": "Discussion: /Volumes/Data/project/Antigravity/ConnectAI 이 프로젝트를 작업할거야.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/planning/2026-05-02_project-chronicle-guard.md": {
+ "mtimeMs": 1777808065000,
+ "size": 2946,
+ "lines": 58,
+ "role": "Feature Plan: Project Chronicle Guard",
+ "imports": []
+ },
+ "docs/records/ConnectAI/planning/2026-05-02_second-brain-trace-mode.md": {
+ "mtimeMs": 1777808065000,
+ "size": 1467,
+ "lines": 36,
+ "role": "Feature Plan: Second Brain Trace Mode",
+ "imports": []
+ },
+ "docs/records/ConnectAI/planning/2026-05-13_connectai-architecture-문서-최신화-해줘.md": {
+ "mtimeMs": 1778693933000,
+ "size": 1340,
+ "lines": 40,
+ "role": "Feature Plan: Connectai architecture 문서 최신화 해줘.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/planning/2026-05-13_상세하게-아키텍처-기준으로-설명해줘.md": {
+ "mtimeMs": 1778678870000,
+ "size": 1220,
+ "lines": 40,
+ "role": "Feature Plan: 상세하게 아키텍처 기준으로 설명해줘.",
+ "imports": []
+ },
+ "docs/records/ConnectAI/planning/2026-05-13_지금-connectai-architecture-md-문서-내용-중-업데이트가-필요한-부분이-있는지-확인해줘-.md": {
+ "mtimeMs": 1778694061000,
+ "size": 2970,
+ "lines": 40,
+ "role": "Feature Plan: 지금 connectai architecture.md 문서 내용 중 업데이트가 필요한 부분이 있는지 확인해줘. 그러고 최신화해줘. 너가 분석해",
+ "imports": []
+ },
+ "docs/records/ConnectAI/project-profile.md": {
+ "mtimeMs": 1777808208000,
+ "size": 957,
+ "lines": 30,
+ "role": "Project Profile",
+ "imports": []
+ },
+ "docs/records/ConnectAI/timeline.md": {
+ "mtimeMs": 1778694061000,
+ "size": 8783,
+ "lines": 134,
+ "role": "Project Timeline",
+ "imports": []
+ },
+ "docs/refactoring_roadmap.md": {
+ "mtimeMs": 1778171332000,
+ "size": 3123,
+ "lines": 53,
+ "role": "🛠️ ConnectAI 아키텍처 리팩토링 로드맵",
+ "imports": []
}
}
}
\ No newline at end of file
diff --git a/docs/records/ConnectAI/chronicle.config.json b/docs/records/ConnectAI/chronicle.config.json
index 39122f2..8a060b4 100644
--- a/docs/records/ConnectAI/chronicle.config.json
+++ b/docs/records/ConnectAI/chronicle.config.json
@@ -1,11 +1,11 @@
{
"projectId": "connectai",
- "projectName": "connectai",
- "projectRoot": "E:\\Wiki\\connectai",
- "recordRoot": "E:\\Wiki\\connectai\\docs\\records\\connectai",
+ "projectName": "ConnectAI",
+ "projectRoot": "/Volumes/Data/project/Antigravity/ConnectAI",
+ "recordRoot": "/Volumes/Data/project/Antigravity/ConnectAI/docs/records/ConnectAI",
"description": "Auto-created by Project Architecture activation.",
"corePurpose": "",
"detailLevel": "standard",
- "createdAt": "2026-05-14T00:57:32.245Z",
- "updatedAt": "2026-05-14T04:39:56.139Z"
+ "createdAt": "2026-05-13T13:09:33.788Z",
+ "updatedAt": "2026-05-14T12:42:12.047Z"
}
diff --git a/docs/records/ConnectAI/planning/2026-05-13_connectai-architecture-문서-최신화-해줘.md b/docs/records/ConnectAI/planning/2026-05-13_connectai-architecture-문서-최신화-해줘.md
new file mode 100644
index 0000000..f65584a
--- /dev/null
+++ b/docs/records/ConnectAI/planning/2026-05-13_connectai-architecture-문서-최신화-해줘.md
@@ -0,0 +1,40 @@
+# Feature Plan: Connectai architecture 문서 최신화 해줘.
+
+## 1. Feature Name
+Connectai architecture 문서 최신화 해줘.
+
+## 2. Reason
+Capture the current planning or architecture direction before implementation continues.
+
+## 3. Original User Request
+Connectai architecture 문서 최신화 해줘.
+
+## 4. Interpreted User Intent
+Connectai architecture 문서 최신화 해줘.
+
+## 5. Background
+문서의 최신화를 위해 현재 내용과 업데이트 방향에 대한 구체적인 요구사항이 필요합니다.
+
+## 6. Scope
+- Continue from the active project conversation.
+- Use the selected project record folder automatically.
+
+## 7. Out Of Scope
+- Manual record type selection.
+- Blocking the user with record-writing prompts.
+
+## 8. Development Direction
+문서의 최신화를 위해 현재 내용과 업데이트 방향에 대한 구체적인 요구사항이 필요합니다.
+
+## 9. Dependency Strategy
+Prefer existing project modules and local Markdown records.
+
+## 10. Expected Value
+Future work can resume with the latest project intent and reasoning preserved.
+
+## 11. Success Criteria
+- The record is saved automatically after a meaningful project turn.
+- The record stays under the active project.
+
+## 12. Developer Instruction
+Use this record as lightweight context for the next development or review pass.
diff --git a/docs/records/ConnectAI/planning/2026-05-13_지금-connectai-architecture-md-문서-내용-중-업데이트가-필요한-부분이-있는지-확인해줘-.md b/docs/records/ConnectAI/planning/2026-05-13_지금-connectai-architecture-md-문서-내용-중-업데이트가-필요한-부분이-있는지-확인해줘-.md
new file mode 100644
index 0000000..544a3ee
--- /dev/null
+++ b/docs/records/ConnectAI/planning/2026-05-13_지금-connectai-architecture-md-문서-내용-중-업데이트가-필요한-부분이-있는지-확인해줘-.md
@@ -0,0 +1,40 @@
+# Feature Plan: 지금 connectai architecture.md 문서 내용 중 업데이트가 필요한 부분이 있는지 확인해줘. 그러고 최신화해줘. 너가 분석해
+
+## 1. Feature Name
+지금 connectai architecture.md 문서 내용 중 업데이트가 필요한 부분이 있는지 확인해줘. 그러고 최신화해줘. 너가 분석해
+
+## 2. Reason
+Capture the current planning or architecture direction before implementation continues.
+
+## 3. Original User Request
+지금 connectai architecture.md 문서 내용 중 업데이트가 필요한 부분이 있는지 확인해줘. 그러고 최신화해줘. 너가 분석해
+
+## 4. Interpreted User Intent
+지금 connectai architecture.md 문서 내용 중 업데이트가 필요한 부분이 있는지 확인해줘. 그러고 최신화해줘. 너가 분석해
+
+## 5. Background
+제가 분석을 수행하려면 먼저 `ARCHITECTURE_ANALYSIS.md` 파일의 실제 내용이 필요합니다. 이전 확인 결과, 해당 파일을 읽는 과정에서 접근에 실패했거나 내용을 확인할 수 없었습니다. 따라서 제가 문서의 최신화 작업을 시작하고 어떤 부분을 업데이트해야 할지 판단하기 위해서는 **해당 파일의 전체 내용을 제공**해 주시거나, 파일이 실제로 접근 가능한 상태인지 다시 확인해 주셔야 합니다. 파일 내용을 제공해 주시면, 그 내용을 바탕으로 현재 프로젝트 상황과 기술적 맥락을 고려하여 최신화 방향과 구체적인 수정 사항을 제시해 드리겠습니다.
+
+## 6. Scope
+- Continue from the active project conversation.
+- Use the selected project record folder automatically.
+
+## 7. Out Of Scope
+- Manual record type selection.
+- Blocking the user with record-writing prompts.
+
+## 8. Development Direction
+제가 분석을 수행하려면 먼저 `ARCHITECTURE_ANALYSIS.md` 파일의 실제 내용이 필요합니다. 이전 확인 결과, 해당 파일을 읽는 과정에서 접근에 실패했거나 내용을 확인할 수 없었습니다. 따라서 제가 문서의 최신화 작업을 시작하고 어떤 부분을 업데이트해야 할지 판단하기 위해서는 **해당 파일의 전체 내용을 제공**해 주시거나, 파일이 실제로 접근 가능한 상태인지 다시 확인해 주셔야 합니다. 파일 내용을 제공해 주시면, 그 내용을 바탕으로 현재 프로젝트 상황과 기술적 맥락을 고려하여 최신화 방향과 구체적인 수정 사항을 제시해 드리겠습니다.
+
+## 9. Dependency Strategy
+Prefer existing project modules and local Markdown records.
+
+## 10. Expected Value
+Future work can resume with the latest project intent and reasoning preserved.
+
+## 11. Success Criteria
+- The record is saved automatically after a meaningful project turn.
+- The record stays under the active project.
+
+## 12. Developer Instruction
+Use this record as lightweight context for the next development or review pass.
diff --git a/docs/records/ConnectAI/timeline.md b/docs/records/ConnectAI/timeline.md
index 5d7bce0..e2d2964 100644
--- a/docs/records/ConnectAI/timeline.md
+++ b/docs/records/ConnectAI/timeline.md
@@ -127,23 +127,8 @@
## 2026-05-13
- Auto development record created: development/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업할거야_implementation.md
-## 2026-05-14
-- Auto decision record created: decisions\ADR-0011-e-wiki-connectai-self-reflection-기능이-있는데-어떻게-self-reflection.md
+## 2026-05-13
+- Auto planning record created: planning/2026-05-13_connectai-architecture-문서-최신화-해줘.md
-## 2026-05-14
-- Auto decision record created: decisions\ADR-0012-e-wiki-connectai-self-reflection-기능이-있는데-어떻게-self-reflection.md
-
-## 2026-05-14
-- Auto development record created: development\2026-05-14_reflector-에이전트가-1인-기업-에이전트-목록에는-안보이는데_implementation.md
-
-## 2026-05-14
-- Auto bug record created: bugs\BUG-0012-질문이-있어-논문을-쓰려고해-논문-주제는-서비스적이-아닌-사용자가-ai에게-구조로-질문을-해야-사용자의-의도.md
-
-## 2026-05-14
-- Auto bug record created: bugs\BUG-0013-thesis-paper를-쓰려고-하는데-아래와-같이-쓰면-좋을까-이런-식으로-쓰면-되지-않을까-싶음-1-in.md
-
-## 2026-05-14
-- Auto bug record created: bugs\BUG-0014-논문-outline-title-인간-ai-상호작용에서-의도-정렬을-높이기-위한-최소-질의-구조-연구-또는-사.md
-
-## 2026-05-14
-- Auto discussion record created: discussions\2026-05-14_최성연-알아-칼리버스에서-근무한데.md
+## 2026-05-13
+- Auto planning record created: planning/2026-05-13_지금-connectai-architecture-md-문서-내용-중-업데이트가-필요한-부분이-있는지-확인해줘-.md
diff --git a/media/sidebar.css b/media/sidebar.css
index 65ee44e..f0b1e4c 100644
--- a/media/sidebar.css
+++ b/media/sidebar.css
@@ -749,12 +749,24 @@
margin: 4px 0;
font-size: 10.5px;
color: var(--text-primary);
+ opacity: 1;
+ transition: opacity 600ms ease, margin 600ms ease, padding 600ms ease, max-height 600ms ease;
+ max-height: 80px;
+ overflow: hidden;
}
.arch-refresh-card .arc-head {
color: var(--text-bright); font-weight: 600; margin-bottom: 2px;
}
.arch-refresh-card .arc-meta { color: var(--text-dim); font-size: 9.5px; }
.arch-refresh-card.no-changes { border-style: dashed; }
+ .arch-refresh-card.fading {
+ opacity: 0;
+ max-height: 0;
+ margin: 0;
+ padding-top: 0;
+ padding-bottom: 0;
+ border-width: 0;
+ }
/* Inline model picker that lives in the input footer, next to the attach
button. Replaces the (now-removed) bottom model row + the separate
diff --git a/media/sidebar.js b/media/sidebar.js
index 21e741b..6b58b14 100644
--- a/media/sidebar.js
+++ b/media/sidebar.js
@@ -932,6 +932,10 @@
if (chatEl) {
chatEl.appendChild(card);
chatEl.scrollTop = chatEl.scrollHeight;
+ setTimeout(() => {
+ card.classList.add('fading');
+ card.addEventListener('transitionend', () => card.remove(), { once: true });
+ }, 3000);
}
break;
}
diff --git a/package.json b/package.json
index 26da7f0..3dbe83e 100644
--- a/package.json
+++ b/package.json
@@ -416,6 +416,11 @@
"type": "boolean",
"default": true,
"description": "Insert a Self-Reflection (Reflector) stage between Researcher and Writer in the multi-agent workflow. The Reflector critically reviews the plan and research output (gaps, contradictions, unsupported claims, drift from the original objective) and feeds a structured critique to the Writer, which must address it before producing the final report. Reflection failures are non-fatal (the Writer still runs with empty critique). Disable to save one LLM call per mission if you prioritize latency or are running on a very small model."
+ },
+ "g1nation.autoLessonFromReflection": {
+ "type": "boolean",
+ "default": true,
+ "description": "Persist substantive Reflector critiques to the active brain as lesson cards under `lessons/auto-reflector/`. Future missions automatically retrieve these cards (via the existing Experience-Memory pipeline) and inject them as ‘[⚠ ACTIVE LESSONS — verify these BEFORE finalizing]’ guardrails into Planner/Researcher/Writer context. A repeated critique (similar title) bumps `occurrences` and escalates `severity` (low→medium→high) instead of duplicating the card, so recurring patterns get louder over time. Disable to keep critiques single-mission only."
}
}
}
diff --git a/src/agents/reflectionPersister.ts b/src/agents/reflectionPersister.ts
new file mode 100644
index 0000000..cfa3a5b
--- /dev/null
+++ b/src/agents/reflectionPersister.ts
@@ -0,0 +1,308 @@
+/**
+ * ============================================================
+ * Reflection → Lesson persistence
+ *
+ * Take the Reflector agent's structured critique and persist any substantive
+ * findings as a `lesson` card in `/lessons/auto-reflector/`. The
+ * existing brain retrieval pipeline (see `retrieval/brainIndex.ts` +
+ * `retrieval/lessonHelpers.ts`) then automatically boosts these cards and
+ * injects them as an `[⚠ ACTIVE LESSONS — verify these BEFORE finalizing your
+ * answer]` block in *future* missions' Planner/Researcher/Writer context, so a
+ * critique caught in mission N becomes a guardrail in mission N+1.
+ *
+ * Recurrence handling: if a similarly-titled auto-reflector lesson already
+ * exists, we bump `occurrences:` and escalate `severity` (low→medium→high)
+ * instead of producing a duplicate card. Same pattern reappearing 3+ times
+ * surfaces as severity:high, which the lesson retrieval/scoring layer
+ * propagates as a stronger guardrail.
+ * ============================================================
+ */
+
+import * as fs from 'fs';
+import * as path from 'path';
+import { logInfo, logError } from '../utils';
+import {
+ lessonSlug,
+ parseLessonFrontmatter,
+ bumpLessonOccurrences,
+ normalizeLessonTitle,
+} from '../retrieval/lessonHelpers';
+
+interface ReflectionSections {
+ alignment: string;
+ gaps: string;
+ contradictions: string;
+ unsupported: string;
+ guidance: string;
+}
+
+/**
+ * Pull the body of a `## ……` section out of the Reflector's markdown. Line-scan rather
+ * than a multi-line regex so it survives emoji headers and trailing whitespace without
+ * leaning on JS-unsupported regex features.
+ */
+function extractSection(text: string, headerKeyword: string): string {
+ if (!text) return '';
+ const kw = headerKeyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+ const headerRe = new RegExp(`^##[^\\n]*${kw}[^\\n]*$`, 'i');
+ const lines = text.split(/\r?\n/);
+ const buf: string[] = [];
+ let inSection = false;
+ for (const line of lines) {
+ if (headerRe.test(line)) { inSection = true; continue; }
+ if (inSection && /^##\s/.test(line)) break;
+ if (inSection) buf.push(line);
+ }
+ return buf.join('\n').trim();
+}
+
+function parseReflection(text: string): ReflectionSections {
+ return {
+ alignment: extractSection(text, 'Alignment'),
+ gaps: extractSection(text, 'Gaps'),
+ contradictions: extractSection(text, 'Contradictions'),
+ unsupported: extractSection(text, 'Unsupported'),
+ guidance: extractSection(text, 'Guidance'),
+ };
+}
+
+/**
+ * "Trivial" = the Reflector explicitly said nothing was found, or the section is too short to be
+ * meaningful. We don't want to spam the brain with `발견되지 않음` cards.
+ */
+function isTrivial(section: string): boolean {
+ if (!section) return true;
+ const stripped = section.replace(/[-*•·\s\n]+/g, '').toLowerCase();
+ if (!stripped) return true;
+ if (/^(없음|발견되지않음|해당없음|na|nothing|none|n\/a)$/.test(stripped)) return true;
+ if (stripped.length < 12) return true;
+ return false;
+}
+
+function hasSubstantiveContent(sections: ReflectionSections): boolean {
+ return !isTrivial(sections.gaps)
+ || !isTrivial(sections.contradictions)
+ || !isTrivial(sections.unsupported)
+ || !isTrivial(sections.guidance);
+}
+
+/** Pick a short (≤80 char) title from the first actionable bullet across the substantive sections. */
+function deriveTitle(sections: ReflectionSections): string {
+ const order = [sections.guidance, sections.gaps, sections.unsupported, sections.contradictions];
+ for (const sec of order) {
+ if (isTrivial(sec)) continue;
+ const firstBullet = sec.split('\n').find((l) => /^\s*[-*•]/.test(l));
+ const raw = (firstBullet || sec.split('\n')[0] || '').replace(/^\s*[-*•]\s*/, '').trim();
+ if (raw.length >= 10) {
+ return raw.length > 80 ? raw.slice(0, 77) + '…' : raw;
+ }
+ }
+ return 'Reflector finding (auto)';
+}
+
+function severityFor(occurrences: number): 'low' | 'medium' | 'high' {
+ if (occurrences >= 3) return 'high';
+ if (occurrences >= 2) return 'medium';
+ return 'low';
+}
+
+function buildLessonCard(params: {
+ title: string;
+ today: string;
+ situation: string;
+ sections: ReflectionSections;
+ severity: 'low' | 'medium' | 'high';
+}): string {
+ const { title, today, situation, sections, severity } = params;
+ const safeTitle = title.replace(/\n/g, ' ').trim();
+
+ const riskParts = [
+ isTrivial(sections.gaps) ? '' : `**Gaps**\n${sections.gaps.trim()}`,
+ isTrivial(sections.unsupported) ? '' : `**Unsupported claims**\n${sections.unsupported.trim()}`,
+ isTrivial(sections.contradictions) ? '' : `**Contradictions**\n${sections.contradictions.trim()}`,
+ ].filter(Boolean);
+ const risk = riskParts.length ? riskParts.join('\n\n') : '';
+
+ const rootCause = isTrivial(sections.alignment)
+ ? '<원본 요청 대비 이탈/근본 원인이 critique에 명시되지 않음 — 회고 시 보강>'
+ : sections.alignment.trim();
+
+ const fix = isTrivial(sections.guidance)
+ ? ''
+ : sections.guidance.trim();
+
+ const bullets = isTrivial(sections.guidance)
+ ? []
+ : sections.guidance
+ .split('\n')
+ .map((l) => l.trim())
+ .filter((l) => /^[-*•]/.test(l))
+ .map((l) => l.replace(/^[-*•]\s*/, ''))
+ .filter((l) => l.length > 0)
+ .slice(0, 6);
+ const checklistBlock = (bullets.length
+ ? bullets
+ : ['<다음 유사 mission 전에 위 Gaps / Unsupported 항목을 사전 점검>']
+ ).map((c) => `- ${c}`).join('\n');
+
+ return [
+ '---',
+ 'type: lesson',
+ `title: ${safeTitle}`,
+ 'applies-to: []',
+ `severity: ${severity}`,
+ 'source: auto-reflector',
+ 'occurrences: 1',
+ `last-seen: ${today}`,
+ '---',
+ '',
+ `# Lesson: ${safeTitle}`,
+ '',
+ '## Situation',
+ situation,
+ '',
+ '## Mistake / Risk',
+ risk,
+ '',
+ '## Root Cause',
+ rootCause,
+ '',
+ '## Fix',
+ fix,
+ '',
+ '## Prevention Checklist',
+ checklistBlock,
+ '',
+ '## Applies To',
+ '- auto-reflector',
+ '',
+ ].join('\n');
+}
+
+/**
+ * Cheap title-overlap match against existing auto-reflector cards. Exact-normalized-title hit wins
+ * outright; otherwise the best ≥60% term-overlap candidate is returned (or none).
+ */
+function findExistingLesson(autoDir: string, newTitle: string): { filePath: string; content: string } | undefined {
+ let entries: string[];
+ try {
+ entries = fs.readdirSync(autoDir).filter((f) => f.endsWith('.md'));
+ } catch {
+ return undefined;
+ }
+ const newNorm = normalizeLessonTitle(newTitle);
+ if (!newNorm) return undefined;
+ const tokenize = (norm: string) => new Set(norm.match(/[a-z0-9]{3,}|[가-힣]{2,}/g) || []);
+ const newTerms = tokenize(newNorm);
+
+ let best: { filePath: string; content: string; score: number } | undefined;
+ for (const f of entries) {
+ const filePath = path.join(autoDir, f);
+ let content = '';
+ try {
+ content = fs.readFileSync(filePath, 'utf8');
+ } catch {
+ continue;
+ }
+ const fm = parseLessonFrontmatter(content);
+ const existingTitle = (fm.title || '').trim();
+ const existingNorm = normalizeLessonTitle(existingTitle);
+ if (!existingNorm) continue;
+ if (existingNorm === newNorm) return { filePath, content };
+ if (newTerms.size === 0) continue;
+ const existingTerms = tokenize(existingNorm);
+ let overlap = 0;
+ for (const t of newTerms) if (existingTerms.has(t)) overlap++;
+ const score = overlap / newTerms.size;
+ if (score >= 0.6 && (!best || score > best.score)) {
+ best = { filePath, content, score };
+ }
+ }
+ return best ? { filePath: best.filePath, content: best.content } : undefined;
+}
+
+/**
+ * Replace (or insert) the `severity:` line in a lesson's frontmatter. Returns content unchanged if
+ * there is no frontmatter block — caller is responsible for not calling on free-form notes.
+ */
+function setSeverityInFrontmatter(content: string, severity: 'low' | 'medium' | 'high'): string {
+ if (!/^?---\s*\n/.test(content)) return content;
+ const end = content.indexOf('\n---', 4);
+ if (end < 0) return content;
+ let block = content.slice(0, end);
+ const rest = content.slice(end);
+ if (/^\s*severity\s*:/m.test(block)) {
+ block = block.replace(/^(\s*severity\s*:\s*).*$/m, `$1${severity}`);
+ } else {
+ block += `\nseverity: ${severity}`;
+ }
+ return block + rest;
+}
+
+export interface PersistResult {
+ /** Absolute path of the file written or bumped. */
+ filePath: string;
+ /** True if an existing lesson was updated (occurrences++); false for a new card. */
+ bumped: boolean;
+ /** Current occurrences value after the operation. */
+ occurrences: number;
+ /** Current severity after the operation. */
+ severity: 'low' | 'medium' | 'high';
+}
+
+/**
+ * Persist the Reflector's critique as a lesson card. Returns `undefined` when nothing was written
+ * (no brain path, critique trivial, IO failure — all soft-fail by design; never throws).
+ */
+export function persistReflectionAsLesson(params: {
+ reflection: string;
+ originalPrompt: string;
+ brainDir: string;
+}): PersistResult | undefined {
+ const { reflection, originalPrompt, brainDir } = params;
+ if (!reflection || !brainDir || !path.isAbsolute(brainDir)) return undefined;
+
+ try {
+ const sections = parseReflection(reflection);
+ if (!hasSubstantiveContent(sections)) {
+ logInfo('[reflectionPersister] critique is trivial — skipping lesson dump.');
+ return undefined;
+ }
+
+ const today = new Date().toISOString().slice(0, 10);
+ const title = deriveTitle(sections);
+ const autoDir = path.join(brainDir, 'lessons', 'auto-reflector');
+ try {
+ fs.mkdirSync(autoDir, { recursive: true });
+ } catch {
+ // Fall through; the write below will surface the real failure.
+ }
+
+ const existing = findExistingLesson(autoDir, title);
+ if (existing) {
+ let bumped = bumpLessonOccurrences(existing.content, today);
+ const newOcc = parseLessonFrontmatter(bumped).occurrences ?? 1;
+ const sev = severityFor(newOcc);
+ bumped = setSeverityInFrontmatter(bumped, sev);
+ fs.writeFileSync(existing.filePath, bumped, 'utf8');
+ logInfo(`[reflectionPersister] bumped existing lesson (occ=${newOcc}, severity=${sev}): ${existing.filePath}`);
+ return { filePath: existing.filePath, bumped: true, occurrences: newOcc, severity: sev };
+ }
+
+ const situation = (originalPrompt || '').slice(0, 400).replace(/\s+/g, ' ').trim()
+ || '';
+ const card = buildLessonCard({ title, today, situation, sections, severity: 'low' });
+
+ let filePath = path.join(autoDir, `${today}-${lessonSlug(title)}.md`);
+ let n = 2;
+ while (fs.existsSync(filePath)) {
+ filePath = path.join(autoDir, `${today}-${lessonSlug(title)}-${n++}.md`);
+ }
+ fs.writeFileSync(filePath, card, 'utf8');
+ logInfo(`[reflectionPersister] new lesson saved: ${filePath}`);
+ return { filePath, bumped: false, occurrences: 1, severity: 'low' };
+ } catch (e: any) {
+ logError('[reflectionPersister] failed to persist lesson.', { error: e?.message ?? String(e) });
+ return undefined;
+ }
+}
diff --git a/src/config.ts b/src/config.ts
index b65a9f3..bee4409 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -73,6 +73,13 @@ export interface IAgentConfig {
* false: 기존 3단계(Planner→Researcher→Writer) 그대로 — 1 LLM 호출 절약 (저성능 모델/저지연 우선 시).
*/
enableReflection: boolean;
+ /**
+ * [Self-Reflection → Knowledge] Reflector critique 중 의미 있는 발견을 brain의
+ * `lessons/auto-reflector/`에 lesson 카드로 영속화할지 여부. true(기본)이면 동일/유사 패턴이
+ * 다음 미션에서 retrieval로 자동 주입되고, 같은 critique이 반복될수록 occurrences/severity가
+ * 누적됨. false면 critique은 그 미션 한정으로만 사용되고 사라짐.
+ */
+ autoLessonFromReflection: boolean;
}
// ─── 경로 정규화 유틸리티 ───
@@ -160,6 +167,7 @@ export function getConfig(): IAgentConfig {
cfg.get('knowledgeMix.secondBrainWeight', 50)
))),
enableReflection: cfg.get('enableReflection', true),
+ autoLessonFromReflection: cfg.get('autoLessonFromReflection', true),
};
}
diff --git a/src/lib/engine.ts b/src/lib/engine.ts
index de73cea..abbcdf5 100644
--- a/src/lib/engine.ts
+++ b/src/lib/engine.ts
@@ -4,10 +4,12 @@ import * as path from 'path';
import { createHash } from 'crypto';
import { lockManager } from '../core/lock';
import { actionQueue } from '../core/queue';
-import { logInfo, logError } from '../utils';
+import { logInfo, logError, getActiveBrainProfile } from '../utils';
import { AgentDataValidator, PerformanceProfiler, CognitionAudit } from './diagnostics';
import { WikiFormatter } from './formatter';
import { ErrorType, RecoveryRule } from '../types/interfaces';
+import { getConfig } from '../config';
+import { persistReflectionAsLesson } from '../agents/reflectionPersister';
export { ErrorType, RecoveryRule };
// ─────────────────────────────────────────────
@@ -557,6 +559,30 @@ export class AgentEngine {
logError(`[AgentEngine] Reflector soft-fail — Writer 계속 진행: ${reflErr?.message || reflErr}`);
reflection = '';
}
+
+ // [Self-Reflection → Knowledge] Reflector가 의미 있는 critique을 내놓았으면
+ // brain에 lesson 카드로 영속화한다. 다음 미션의 Planner/Researcher/Writer는
+ // 기존 lesson retrieval 경로를 통해 이 카드를 자동으로 inject받는다.
+ // 동일 패턴 재발 시 카드를 새로 만들지 않고 occurrences를 증가시키며 severity를
+ // low→medium→high로 가중. fire-and-forget으로 미션 흐름을 막지 않는다.
+ if (reflection && getConfig().autoLessonFromReflection !== false) {
+ try {
+ const brainDir = getActiveBrainProfile()?.localBrainPath;
+ if (brainDir) {
+ const result = persistReflectionAsLesson({
+ reflection,
+ originalPrompt: prompt,
+ brainDir,
+ });
+ if (result) {
+ logInfo(`[AgentEngine] Reflector critique → lesson (${result.bumped ? 'bumped' : 'new'}, severity=${result.severity}, occ=${result.occurrences}).`);
+ }
+ }
+ } catch (persistErr: any) {
+ // Lesson 영속화 실패는 미션 결과에 영향 없음 — 로그만 남기고 계속 진행.
+ logError(`[AgentEngine] lesson 영속화 실패 (무시): ${persistErr?.message || persistErr}`);
+ }
+ }
}
// --- Phase 4: Writer ---