diff --git a/.astra/project-context/architecture.md b/.astra/project-context/architecture.md index 730404c..0aad35e 100644 --- a/.astra/project-context/architecture.md +++ b/.astra/project-context/architecture.md @@ -3,15 +3,15 @@ ## Snapshot -- **Workspace**: `connectai` `v2.2.210` _(absolute path varies by environment; resolved from the active VS Code workspace)_ +- **Workspace**: `connectai` `v2.2.212` _(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**: 441 source files, ~71,522 lines across 5 top-level modules. +- **Stats**: 469 source files, ~76,324 lines across 5 top-level modules. ## Last Refresh -- **Time**: 2026-06-09T02:20:50.409Z -- **Files newly analysed**: 3 -- **Files reused from cache**: 438 +- **Time**: 2026-06-11T04:29:35.678Z +- **Files newly analysed**: 5 +- **Files reused from cache**: 464 ## Directory Map ```mermaid @@ -23,7 +23,7 @@ mindmap agent/ lib/ retrieval/ - core/ + intelligence/ media/ tests/ helpers/ @@ -40,11 +40,11 @@ mindmap > Arrows: which top-level module imports from which. ```mermaid flowchart LR - src["src/
280 files"] + src["src/
298 files"] media["media/
6 files"] - tests["tests/
37 files"] + tests["tests/
45 files"] core_py["core_py/
6 files"] - docs["docs/
112 files"] + docs["docs/
114 files"] tests --> src ``` @@ -67,26 +67,26 @@ flowchart LR ## Modules -### `src/` — 280 files, ~53,526 lines +### `src/` — 298 files, ~56,880 lines **Sub-directories** -- `src/features/` (103) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H +- `src/features/` (105) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H - `src/sidebar/` (35) — Brain profile lifecycle 의 pure helpers — sidebarProvider 의 add/edit/delete 흐름에서 modal UI 와 config 쓰기를 제외한 데이터 변환 만 격리. 현 - `src/agent/` (29) — Post-answer hook registry — 답변 완료 후 실행되는 부가 작업 모음. 새 hook 추가 = 1 객체 push. agent.ts 는 이 배열을 iterate 만 함. 현재 등록 순서 (v2.2.1 - `src/lib/` (29) — Astra Mode Architecture Context Builder. 의도: 사용자가 Astra 자체의 mode 디자인 (Guard vs Multi-Agent 가 별도 모드여야 하는지) 을 묻는 메타 질문에 답할 - `src/retrieval/` (18) — Actionability Scoring — 검색 결과를 "현재 작업 상태" 신호로 재가중. 기존 TF-IDF (단어 매칭) + recency (시간) 만으로는 "지금 이 사용자가 하고 있는 작업과 직접 연결 된 문서 +- `src/intelligence/` (16) — Confidence Engine — 답변 확신도 0~100 결정론적 산출. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-1. 신뢰 조건 T4 "확신이 없으면 사람에게 묻는다" 의 측정 - `src/core/` (15) — Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토 - `src/extension/` (9) — 9 files (.ts) - `src/memory/` (9) — Distillation Loop — stale Episodic Memory → Long-Term "episode-digest" 승급. 배경: Episodic Memory 가 무한히 누적되면 검색 노이즈. 30일+ 지 - `src/docs/` (6) — Bug: Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts Edited agent.ts ... - `src/integrations/` (6) — 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) -- `src/skills/` (4) — 4 files (.ts) **Key files** - `src/utils.ts` (472 lines) -- `src/config.ts` (585 lines) -- `src/agent.ts` (1503 lines) +- `src/config.ts` (637 lines) +- `src/agent.ts` (1514 lines) - `src/features/company/types.ts` (446 lines) — Type definitions for the 1인 기업 (One-Person Company) mode. The mode turns the user into a virtual CEO that dispatches work to a roster of specialist agents. Each turn produces a session directory conta - `src/core/services.ts` (176 lines) - `src/sidebarProvider.ts` (3180 lines) @@ -98,17 +98,17 @@ flowchart LR - `src/skills/agentKnowledgeMap.ts` (374 lines) - `src/features/datacollect/slashRouter.ts` (201 lines) - `src/retrieval/types.ts` (66 lines) — Retrieval Types (검색 결과 통합 타입) 모든 검색 소스(Brain, Memory, Project, Episode)의 결과를 통합 인터페이스로 정의합니다. +- `src/intelligence/requirementGraph.ts` (273 lines) — Requirement Graph — 업무 유형별 필수 요소 정의 + 감지 + 커버리지 검사. Self-Evolving Digital Employee OS 마스터 플랜(docs/SELFEVOLVINGOSMASTERPLAN.md) Phase 1 / Track 2-1. 신뢰 조건 T3 "품질이 일관적이다 — 필수 요소 누락 없음" 담당. 동작 2단계: 1. In - `src/memory/types.ts` (151 lines) — Memory Type Definitions (메모리 타입 정의) Astra의 5-Layer Cognitive Memory System의 모든 타입을 정의합니다. ① Short-Term ② Long-Term ③ Project ④ Procedural ⑤ Episodic - `src/retrieval/scoring.ts` (541 lines) — Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다. - `src/features/stocks/types.ts` (53 lines) — Stocks 모듈 공유 타입. investresults/targetstocks.json 스키마를 그대로 받아서, ConnectAI 의 /.astra/stocks.json 으로 옮긴 뒤 같은 필드명을 유지. 한글 필드명은 사용자의 도메인 데이터라 변경하지 않는다 — 마이그레이션 충돌 회피 + 사용자가 직접 JSON 편집할 때 frictio - `src/lib/contextBuilders/promptDetection.ts` (85 lines) — 사용자 prompt 의 의도 분류 류 detection helpers. 모두 stateless 정규식 매칭. 옛 코드는 agent.ts 의 private 메서드로 박혀 있었는데, system prompt 빌더 (buildJarvisProjectBriefContext 등) 가 이걸 의존하면서 god-file 안에서 서로 얽힘. 헬퍼만 먼저 떼면 의존 그래프가 - `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/intelligence/confidenceEngine.ts` (165 lines) — Confidence Engine — 답변 확신도 0~100 결정론적 산출. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-1. 신뢰 조건 T4 "확신이 없으면 사람에게 묻는다" 의 측정 기반 — Escalation Engine 의 입력. 설계 원칙 (termValidator 와 동일): LLM 호출 없음. 검색 그라운딩 신호(턴 - `src/retrieval/brainIndex.ts` (536 lines) — Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 /.astra/brain-index.json 에 - `src/security.ts` (159 lines) - `src/features/secondBrainTrace.ts` (792 lines) -- `src/features/providers/types.ts` (63 lines) — Cloud LLM provider routing — model id prefix → provider id 매핑. Prefix 규칙: openrouter:anthropic/claude-3.5-sonnet → { provider: 'openrouter', model: 'anthropic/claude-3.5-sonnet' } anthropic:claude-3-5 -- `src/integrations/telegram/telegramBot.ts` (270 lines) -- `src/lib/contextBuilders/localProjectIntent.ts` (233 lines) +- `src/intelligence/reflectionStore.ts` (162 lines) — Reflection Store — 업무 turn 회고 기록 + Failure Pattern 집계. Self-Evolving OS 마스터 플랜 Phase 1 / Track 2-4 (Reflection Engine v1) + Phase 3 / Track 3-6 (Failure Pattern DB v1 시드). 신뢰 조건 T5 "같은 실수를 반복하지 않는다" 의 ### `media/` — 6 files, ~7,785 lines @@ -120,7 +120,7 @@ flowchart LR - `media/settings-panel.js` (505 lines) - `media/settings-panel.css` (254 lines) — Stylesheet -### `tests/` — 37 files, ~5,875 lines +### `tests/` — 45 files, ~7,027 lines *Depends on*: `src/` **Sub-directories** @@ -131,29 +131,29 @@ flowchart LR **Key files** - `tests/helpers/mockLLMClient.ts` (112 lines) — MockLLMClient — IAIService 의 Mock 구현체. 의도: 회사 모드 dispatcher / ChunkedWriter / ceoPlanner 등 LLM 을 호출하는 코드 경로를 CI 환경에서도 테스트 가능하게. 실제 Ollama / LM Studio 없이도 응답을 미리 정의하거나 동적으로 생성 가능. 사용 예: const ai = new - `tests/agentEngine.test.ts` (413 lines) — AgentEngine Tests — Chunked Writer Architecture 예전 buildup(planner → researcher → reflector → writer → synthesizer)을 단일 ChunkedWriter 의 outline → section[N] → polish 로 교체한 뒤의 회귀 테스트. 다루는 범위: 1. ErrorC -- `tests/lmStudioLifecycle.test.ts` (326 lines) — 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 +- `tests/lmStudioLifecycle.test.ts` (330 lines) — 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 - `tests/localPathPreflight.test.ts` (520 lines) - `tests/telegramBot.test.ts` (363 lines) — 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 +- `tests/criticReflectionEval.test.ts` (200 lines) — Critic Agent / Reflection Store / Task Eval Harness (Self-Evolving OS P1 잔여 + P3) 테스트. - `tests/lmStudioStreamer.test.ts` (222 lines) — 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. - `tests/secondBrainTrace.test.ts` (407 lines) - `tests/approvalQueue.test.ts` (164 lines) — 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. +- `tests/confidenceEngine.test.ts` (175 lines) — Confidence Engine + Escalation Engine (Self-Evolving OS Phase 2) 단위 테스트. 순수 함수만 검증 — vscode 의존 없음. +- `tests/knowledgeOps.test.ts` (174 lines) — Knowledge Validation / Belief Revision / Decay / Debt (Self-Evolving OS Phase 4 — 지식 운영) 테스트. +- `tests/needEngineQueue.test.ts` (159 lines) — Gap Detector / Need Engine / Knowledge Inventory / Learning Queue (Self-Evolving OS Phase 3 — 성장 루프 코어) 테스트. - `tests/projectScaffolder.test.ts` (135 lines) — Unit tests for FileSystemProjectScaffolder. Drives against a real temp directory so end-to-end file IO + path-traversal defenses are exercised. +- `tests/requirementGraph.test.ts` (126 lines) — Requirement Graph (Self-Evolving OS Phase 1 / Track 2-1) 단위 테스트. 순수 함수만 검증 — vscode 의존 없음. +- `tests/researchSkill.test.ts` (122 lines) — Research Agent / Skill Score / Success Pattern DB (Self-Evolving OS Phase 6) 테스트. - `tests/resilience_stress.test.ts` (197 lines) — Resilience & Boundary Stress Test Suite (v2.77.3) 이 테스트는 ConnectAI 엔진이 극한의 환경(인증 실패, 네트워크 차단, 타임아웃 등)에서 얼마나 안정적으로 복구되고, 신뢰성 지표(Resilience Metrics)를 정확히 기록하는지 검증합니다. - `tests/skillInjectionService.test.ts` (172 lines) — 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 +- `tests/stocksCriteria.test.ts` (129 lines) — criteriaEval — /stocks judge 결정론 평가기 테스트. 픽스처는 옛 LLM 프롬프트에 명시돼 있던 사용자의 실제 분류 예시 3종 (마녀공장/기가비스/엔켐) — 코드 판정이 사용자 패턴과 일치해야 한다. +- `tests/conflictCheck.test.ts` (63 lines) — Schedule Conflict Check (Self-Evolving OS Track 6-2/6-3) 테스트. - `tests/dataProcessor.test.ts` (87 lines) — / - `tests/findBrainFilesCache.test.ts` (80 lines) — Unit tests for findBrainFiles TTL cache. - `tests/integration/mockLLMClient.test.ts` (86 lines) — MockLLMClient 자체의 sanity test. 이게 통과하면 dispatcher / ceoPlanner / ChunkedWriter 등 IAIService 를 받는 코드가 실제 LLM 없이 단위 / integration 테스트 가능. 향후 dispatcher 의 multi-stage flow 같은 큰 integration 테스트는 이 mock 을 - `tests/officeSchema.test.ts` (241 lines) - `tests/paths.test.ts` (84 lines) — Unit tests for the centralized path resolver. - `tests/systemSpecs.test.ts` (90 lines) — Unit tests for SystemSpecs + HeuristicModelMemoryEstimator. Strategy: - HeuristicModelMemoryEstimator is pure — directly drive it with model ids. - NodeSystemSpecsProvider depends on os. so we test: a -- `tests/transaction.test.ts` (68 lines) — / -- `tests/vulnerability.test.ts` (60 lines) — / -- `tests/brainIndex.test.ts` (107 lines) -- `tests/calendarApi.test.ts` (131 lines) -- `tests/contextManager.test.ts` (149 lines) -- `tests/icsParser.test.ts` (134 lines) -- `tests/lessonHelpers.test.ts` (191 lines) -- `tests/projectChronicle.test.ts` (199 lines) ### `core_py/` — 6 files, ~409 lines @@ -165,17 +165,18 @@ flowchart LR - `core_py/optimizer.py` (55 lines) - `core_py/queue_worker.py` (82 lines) -### `docs/` — 112 files, ~3,927 lines +### `docs/` — 114 files, ~4,223 lines **Sub-directories** -- `docs/records/` (99) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고... +- `docs/records/` (100) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고... - `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ... - `docs/Meeting/` (0) **Key files** - `docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md` (452 lines) — Telegram Remote Execution 기획서 - `docs/AgentEngine_Architecture.md` (314 lines) — AgentEngine Architecture Document -- `docs/records/ConnectAI/timeline.md` (248 lines) — Project Timeline +- `docs/records/ConnectAI/timeline.md` (251 lines) — Project Timeline +- `docs/SELF_EVOLVING_OS_MASTER_PLAN.md` (274 lines) — ASTRA Self-Evolving Digital Employee OS — 마스터 개발 계획 v1.1 - `docs/ASTRA_OFFICE_REFACTOR.md` (198 lines) — Astra Office Refactor — Design Doc - `docs/EXPERIENCE_MEMORY_PLAN.md` (122 lines) — Experience Memory (Mistake / Lesson Loop) — Implementation Plan - `docs/records/ConnectAI/development/2026-05-02_connectai_project_knowledge_overview.md` (121 lines) — Astra Project Knowledge Overview @@ -197,14 +198,18 @@ flowchart LR - `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 프로젝트에만 완전히 집중하겠습니다. ... ## VS Code Extension Surface - **Extension ID**: `g1nation.astra` - **Activation events**: `onStartupFinished` -- **Commands** (31): +- **Commands** (36): - `g1nation.newChat` — Astra: New Chat - `g1nation.eval.retrieval` — Astra: 검색 평가 실행 (recall@k / MRR) + - `g1nation.eval.tasks` — Astra: 업무 평가 실행 (회의록 골든셋) + - `g1nation.growth.report` — Astra: 성장 리포트 (Reflection 추이) + - `g1nation.growth.learningQueue` — Astra: 학습 큐 갱신 (Need Engine) + - `g1nation.knowledge.decayAudit` — Astra: 지식 노후 점검 (Knowledge Decay) + - `g1nation.research.runQueue` — Astra: 학습 실행 (Research Agent — 승인된 큐 항목) - `g1nation.embeddings.backfill` — Astra: 두뇌 임베딩 전체 색인 - `g1nation.exportChat` — Astra: Export Chat as Markdown - `g1nation.explainSelection` — Astra: Explain Selected Code @@ -234,7 +239,7 @@ flowchart LR - `g1nation.calendar.refresh` — Astra: Google Calendar 새로고침 📅 - `g1nation.calendar.connectOAuth` — Astra: Google Calendar OAuth 연결 (쓰기) 🔐 - `g1nation.devilAgent.toggle` — Astra: Toggle Devil Agent 🎭 -- **Configuration** (129 settings): +- **Configuration** (138 settings): - `g1nation.multiAgentEnabled` *(boolean)* _(default: `false`)_ — Enable Multi-Agent Workflow (Planner -> Researcher -> Writer) for complex tasks. - `g1nation.datacollectBridgeTarget` *(string)* _(default: `"local"`)_ - `g1nation.datacollectBridgeUrl` *(string)* _(default: `"http://127.0.0.1:3002"`)_ — [local 타깃] Wiki/Datacollect MCP Bridge URL. /benchmark, /youtube, /wikify chat slash commands route here. The Bridge must be running (`npm run bridge` in the Datacollect project). @@ -247,6 +252,7 @@ flowchart LR - `g1nation.chatTemperature` *(number)* _(default: `0.3`)_ - `g1nation.meetUsesTasks` *(boolean)* _(default: `true`)_ - `g1nation.meetUsesCalendar` *(boolean)* _(default: `false`)_ + - `g1nation.meetVerifyPass` *(boolean)* _(default: `false`)_ - `g1nation.teamVoiceGuide` *(string)* _(default: `""`)_ - `g1nation.memoryEnabled` *(boolean)* _(default: `true`)_ — Enable layered memory injection before each model response. - `g1nation.memoryShortTermMessages` *(number)* _(default: `8`)_ — Number of recent conversation messages included as short-term memory. @@ -294,8 +300,7 @@ flowchart LR - `g1nation.skillKnowledgeMapPath` *(string)* _(default: `""`)_ — Absolute path to the agent ↔ knowledge mapping JSON. When empty, defaults to '/.astra/agent-knowledge-map.json'. - `g1nation.skillKnowledgeMap` *(object)* _(default: `{}`)_ — Inline fallback for the agent ↔ knowledge mapping. Used only when the JSON file is missing. Shape: { defaultAgent?, agents: [{ name, knowledgeFolders, model?, description? }] }. Folder paths can be ab - `g1nation.agentSkillsPath` *(string)* _(default: `""`)_ — Absolute path to the agent skills folder (`.agent/skills/*.md`). When empty, defaults to '/.agent/skills'. Use this on Windows or when your skills live outside the workspace. - - `g1nation.embeddingModel` *(string)* _(default: `""`)_ — Embedding model registered in LM Studio / Ollama (e.g. 'text-embedding-bge-small-en-v1.5', 'nomic-embed-text', 'multilingual-e5-small'). When empty, Astra uses TF-IDF only. When set, the brain is embe - - _…and 69 more_ + - _…and 78 more_ ## Dependencies - **Runtime** (2): `@lmstudio/sdk`, `pdf-parse` @@ -343,7 +348,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한 **Designed for High-Performance Decision Making.** Copyright (C) **g1nation**. All rights reserved. -_Last auto-scan: 2026-06-09T02:20:50.409Z · signature `18ddda74`_ +_Last auto-scan: 2026-06-11T04:29:35.678Z · signature `84d17da6`_ ## Purpose diff --git a/.astra/project-context/scan-cache.json b/.astra/project-context/scan-cache.json index 5180f0f..363ff39 100644 --- a/.astra/project-context/scan-cache.json +++ b/.astra/project-context/scan-cache.json @@ -1,6 +1,6 @@ { "version": 1, - "generatedAt": "2026-06-09T02:20:50.597Z", + "generatedAt": "2026-06-11T04:29:35.747Z", "files": { "src/agent/actions/brainOps.ts": { "mtimeMs": 1779764602582.9768, @@ -14,14 +14,15 @@ ] }, "src/agent/actions/calendar.ts": { - "mtimeMs": 1779764602583.981, - "size": 2264, - "lines": 43, + "mtimeMs": 1781152132419.819, + "size": 3755, + "lines": 66, "role": "", "imports": [ "src/agent/actions/types", "src/agent/attrParsers", - "src/features/calendar" + "src/features/calendar", + "src/features/calendar/conflictCheck" ] }, "src/agent/actions/fileCreateEdit.ts": { @@ -100,9 +101,9 @@ ] }, "src/agent/attrParsers.ts": { - "mtimeMs": 1779764602587.8208, - "size": 4724, - "lines": 116, + "mtimeMs": 1781152115192.5432, + "size": 4985, + "lines": 121, "role": "", "imports": [ "src/features/tasks", @@ -299,24 +300,33 @@ ] }, "src/agent/postAnswerHooks/index.ts": { - "mtimeMs": 1780278997000.157, - "size": 3900, - "lines": 96, + "mtimeMs": 1781147845848.1248, + "size": 11486, + "lines": 243, "role": "Post-answer hook registry — 답변 완료 후 실행되는 부가 작업 모음. 새 hook 추가 = 1 객체 push. agent.ts 는 이 배열을 iterate 만 함. 현재 등록 순서 (v2.2.197): 1. devilRebuttal — Devil Agent 반박 카드 (비활성 시 silent skip) 2. postHocSelfChec", "imports": [ "src/agent/postAnswerHooks/types", "src/agent/llm/devilRebuttal", "src/agent/postHocSelfCheck", "src/agent/termValidator", + "src/intelligence/requirementGraph", + "src/intelligence/confidenceEngine", + "src/intelligence/escalationEngine", + "src/intelligence/criticAgent", + "src/intelligence/reflectionStore", + "src/intelligence/gapDetector", + "src/intelligence/skillScore", "src/config" ] }, "src/agent/postAnswerHooks/types.ts": { - "mtimeMs": 1780278967597.8257, - "size": 2001, - "lines": 48, + "mtimeMs": 1781144501440.8574, + "size": 2345, + "lines": 52, "role": "Post-Answer Hook 인터페이스 — 답변 streaming 완료 후 실행되는 부가 작업. 옛 구조: agent.ts 의 maybeEmitDevilRebuttal, maybePostHocSelfCheck, maybeRunTermValidator 3개 private method. 새 hook 추가 시 (1) method 정의 (2) import (3)", - "imports": [] + "imports": [ + "src/intelligence/confidenceEngine" + ] }, "src/agent/postHocSelfCheck.ts": { "mtimeMs": 1780033021215.5054, @@ -346,9 +356,9 @@ ] }, "src/agent.ts": { - "mtimeMs": 1780278886140.8762, - "size": 81193, - "lines": 1503, + "mtimeMs": 1781144502524.7754, + "size": 81710, + "lines": 1514, "role": "", "imports": [ "src/utils", @@ -422,6 +432,7 @@ "src/agent/postAnswerHooks", "src/agent/handlePrompt/applyAutoContinuation", "src/features/approval/approvalQueue", + "src/intelligence/confidenceEngine", "src/features/providers", "src/features/selfReflector/selfReflectorExecution", "src/features/selfReflector/selfReflectorHollow" @@ -462,9 +473,9 @@ ] }, "src/config.ts": { - "mtimeMs": 1780910530256.6797, - "size": 32937, - "lines": 585, + "mtimeMs": 1781147453907.465, + "size": 35924, + "lines": 637, "role": "", "imports": [] }, @@ -648,9 +659,9 @@ ] }, "src/extension/evalCommands.ts": { - "mtimeMs": 1780913394558.156, - "size": 12681, - "lines": 228, + "mtimeMs": 1781147900732.2805, + "size": 29561, + "lines": 521, "role": "", "imports": [ "src/config", @@ -658,7 +669,18 @@ "src/retrieval", "src/retrieval/brainIndex", "src/retrieval/embeddings", - "src/retrieval/evalHarness" + "src/retrieval/evalHarness", + "src/intelligence/taskEvalHarness", + "src/intelligence/requirementGraph", + "src/intelligence/epistemicGuardBlock", + "src/intelligence/llmCall", + "src/intelligence/reflectionStore", + "src/intelligence/needEngine", + "src/intelligence/knowledgeDecay", + "src/intelligence/skillScore", + "src/intelligence/researchAgent", + "src/intelligence/knowledgeValidation", + "src/intelligence/learningQueue" ] }, "src/extension/initialSetup.ts": { @@ -889,14 +911,21 @@ ] }, "src/features/calendar/calendarCache.ts": { - "mtimeMs": 1779065453870.9949, - "size": 12065, - "lines": 241, + "mtimeMs": 1781152082335.483, + "size": 13392, + "lines": 271, "role": "Google Calendar (iCal) 캐시 — fetch + parse + 회사 shared/calendarcache.md 에 저장. Connectorigin 의 googlecalendar.py 를 TypeScript / native fetch 로 옮김. OAuth 없음. 사용자가 Google Calendar 설정 → \"비공개 주소(iCal 형식)\" 복", "imports": [ "src/features/calendar/icsParser" ] }, + "src/features/calendar/conflictCheck.ts": { + "mtimeMs": 1781152051164.7207, + "size": 3481, + "lines": 81, + "role": "Schedule Conflict Check — 일정 생성 전 기존 일정과의 겹침 감지. Self-Evolving OS 마스터 플랜 병렬 트랙 6-2 + 6-3. Requirement Graph 의 일정 필수 요소 \"충돌 확인\" 과 Constitution \"승인 없는 외부 액션 금지\" 의 실행 계층: - 에이전트가 로 ", + "imports": [] + }, "src/features/calendar/icsParser.ts": { "mtimeMs": 1779065453870.9949, "size": 4937, @@ -905,13 +934,14 @@ "imports": [] }, "src/features/calendar/index.ts": { - "mtimeMs": 1779879082214.362, - "size": 711, - "lines": 40, + "mtimeMs": 1781152148411.5476, + "size": 877, + "lines": 48, "role": "", "imports": [ "src/features/calendar/icsParser", "src/features/calendar/calendarCache", + "src/features/calendar/conflictCheck", "src/features/calendar/oauth", "src/features/calendar/calendarApi", "src/features/calendar/tasksApi" @@ -1172,9 +1202,9 @@ "imports": [] }, "src/features/datacollect/handlers.ts": { - "mtimeMs": 1780624678671.3047, - "size": 35540, - "lines": 666, + "mtimeMs": 1781084265385.7295, + "size": 39566, + "lines": 724, "role": "Datacollect handlers — /benchmark · /youtube · /blog · /wikify · /meet. (/research(NotebookLM)는 v2.2.205 에서 제거 — 로컬 Datacollect 앱 전용으로 분리) v2.2.201 에서 slashRouter.ts 에서 분리. Datacollect bridge (port 30", "imports": [ "src/features/datacollect/slashRouter", @@ -1198,9 +1228,9 @@ ] }, "src/features/datacollect/prompts/meetPrompt.ts": { - "mtimeMs": 1780626429387.7917, - "size": 7379, - "lines": 95, + "mtimeMs": 1781084257519.8074, + "size": 12477, + "lines": 194, "role": "회의 녹취 텍스트 → 사실 기반 구조화 회의록(Actionable Minutes) LLM 프롬프트. 사용자 정의 규칙: Fact/Discussion/Decision/Risk/Action 분류, 메타데이터 우선.", "imports": [] }, @@ -1540,6 +1570,16 @@ "src/features/calendar/calendarApi" ] }, + "src/features/stocks/criteriaEval.ts": { + "mtimeMs": 1781086243443.0957, + "size": 12293, + "lines": 209, + "role": "/stocks judge 의 결정론적 기준 평가기. 기존에는 \"유보율: 5,800%\" 같은 문자열 파싱과 임계값 비교(ROE ≥ 10% 등)까지 전부 LLM 에게 맡겼는데, 로컬 소형 모델은 콤마 숫자 파싱·다중 기준 동시 비교에서 자주 틀린다. 수치 기준은 코드로 100% 정확하게 계산하고, LLM 은 ① '기술력' 도메인 정성 판단(키워드 매칭이 모호할", + "imports": [ + "src/features/stocks/types", + "src/features/stocks/naverFundamentals" + ] + }, "src/features/stocks/discoveryAnalyzer.ts": { "mtimeMs": 1779764602625.2075, "size": 10526, @@ -1564,21 +1604,22 @@ ] }, "src/features/stocks/llmJudge.ts": { - "mtimeMs": 1779764602626.2107, - "size": 7011, - "lines": 127, + "mtimeMs": 1781084049810.22, + "size": 6072, + "lines": 125, "role": "", "imports": [ "src/core/services", "src/utils", "src/features/stocks/stocksStore", - "src/features/stocks/types" + "src/features/stocks/criteriaEval", + "src/features/stocks/naverFundamentals" ] }, "src/features/stocks/naverFundamentals.ts": { - "mtimeMs": 1779764602626.2107, - "size": 7238, - "lines": 161, + "mtimeMs": 1781086142605.6724, + "size": 8323, + "lines": 178, "role": "", "imports": [ "src/utils" @@ -1616,9 +1657,9 @@ ] }, "src/features/stocks/slashStocks.ts": { - "mtimeMs": 1779857133519.0603, - "size": 33999, - "lines": 621, + "mtimeMs": 1781084110909.264, + "size": 34650, + "lines": 629, "role": "", "imports": [ "src/utils", @@ -1874,6 +1915,137 @@ "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/intelligence/confidenceEngine.ts": { + "mtimeMs": 1781142298902.0667, + "size": 6993, + "lines": 165, + "role": "Confidence Engine — 답변 확신도 0~100 결정론적 산출. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-1. 신뢰 조건 T4 \"확신이 없으면 사람에게 묻는다\" 의 측정 기반 — Escalation Engine 의 입력. 설계 원칙 (termValidator 와 동일): LLM 호출 없음. 검색 그라운딩 신호(턴", + "imports": [] + }, + "src/intelligence/criticAgent.ts": { + "mtimeMs": 1781144246295.8977, + "size": 7294, + "lines": 174, + "role": "Critic Agent + Debate Loop (v1) — 제출된 업무 산출물의 LLM 검수. Self-Evolving OS 마스터 플랜 Phase 1 / Track 2-3. 신뢰 조건 T3 의 LLM 계층: Requirement Coverage(결정론적, 정규식) 가 \"요소가 언급 됐는가\" 만 보면, Critic 은 \"내용이 충실 한가 + 결정/미결 구", + "imports": [ + "src/intelligence/requirementGraph" + ] + }, + "src/intelligence/epistemicGuardBlock.ts": { + "mtimeMs": 1781142349593.672, + "size": 2559, + "lines": 45, + "role": "Epistemic Guard — 모름/추정/확실 3분류 강제 시스템 프롬프트 블록. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-3 (Anti-Hallucination Layer). 신뢰 조건 T1 \"모르면 모른다고 말한다\" 담당. CoVe(coveBlock) 와의 분업: - CoVe: 검색 출처가 있을 때 주장-출처 매핑을 ", + "imports": [] + }, + "src/intelligence/escalationEngine.ts": { + "mtimeMs": 1781142325031.3643, + "size": 3501, + "lines": 74, + "role": "Escalation Engine — 인간 개입 필요성 판단. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-2. 신뢰 조건 T4 의 행동 부분: Confidence Engine 이 \"얼마나 확실한가\" 를 재면, 이 모듈은 \"그래서 사람에게 물어야 하는가\" 를 결정한다. 설계서 13장 조건: 확신도 낮음 / 영향도 높음 / 정보 ", + "imports": [ + "src/intelligence/confidenceEngine", + "src/intelligence/requirementGraph" + ] + }, + "src/intelligence/gapDetector.ts": { + "mtimeMs": 1781146607158.5022, + "size": 3135, + "lines": 73, + "role": "Gap Detector — Gap = Requirement − Knowledge (설계서 7.4). Self-Evolving OS 마스터 플랜 Phase 3 / Track 3-2. 업무 turn 마다 \"필요한 것\" (Requirement Graph 의 필수 요소)과 \"가진 것\"(검색 그라운딩 + 산출물 커버리지)을 비교해 부족 지식·영향도·긴급도를 산출한다", + "imports": [ + "src/intelligence/requirementGraph", + "src/intelligence/confidenceEngine" + ] + }, + "src/intelligence/knowledgeDecay.ts": { + "mtimeMs": 1781147140600.4475, + "size": 5151, + "lines": 110, + "role": "Knowledge Decay — 지식 노후 감쇠 점검 (설계서 10장, \"인간처럼 잊어버리는 기능\"). Self-Evolving OS 마스터 플랜 Phase 4 / Track 4-3. 분야별 반감기로 지식의 신선도 계수를 계산하고, 노후 지식을 보고서로 노출한다. v1 은 비침습적 감사 — 검색 랭킹은 건드리지 않는다. RAG 평가 하니스로 튜닝된 검색 경", + "imports": [] + }, + "src/intelligence/knowledgeValidation.ts": { + "mtimeMs": 1781147318275.7917, + "size": 6473, + "lines": 168, + "role": "Knowledge Validation + Belief Revision — 지식 저장 전 검증 (설계서 10장). Self-Evolving OS 마스터 플랜 Phase 4 / Track 4-1 + 4-2. 새 지식 후보를 기존 지식과 비교해 수용/검토/거부를 판정하고, 충돌 시 Add/Update/Retire 권고를 만든다. Constitution 준수: 이", + "imports": [] + }, + "src/intelligence/learningQueue.ts": { + "mtimeMs": 1781146722080.366, + "size": 4962, + "lines": 118, + "role": "Learning Queue — 승인 기반 학습 대기열 (설계서 9장). Self-Evolving OS 마스터 플랜 Phase 3 / Track 3-5. Need Engine 의 우선순위를 사람이 승인 가능한 큐로 영속화한다. Constitution 준수 (Track 8-2, Permission Based Learning): - 시스템은 항목을 propose", + "imports": [ + "src/intelligence/needEngine" + ] + }, + "src/intelligence/llmCall.ts": { + "mtimeMs": 1781144318025.0918, + "size": 2099, + "lines": 52, + "role": "단순 non-streaming LLM 호출 — Ollama / LM Studio(OpenAI 호환) 듀얼 엔드포인트. postHocSelfCheck 의 호출 패턴을 재사용 가능한 헬퍼로 분리. 평가 하니스·Critic 등 AgentExecutor 밖에서 LLM 1회 호출이 필요한 곳이 사용한다 (확장 명령 등). agent turn 내부에서는 agent.t", + "imports": [] + }, + "src/intelligence/needEngine.ts": { + "mtimeMs": 1781147322252.6475, + "size": 9219, + "lines": 220, + "role": "Need Engine — 학습 필요성 산출 (설계서 7.6) + Knowledge Inventory v1 (7.3). Self-Evolving OS 마스터 플랜 Phase 3 / Track 3-3 + 3-1. Reflection 기록을 집계해 \"무엇을 먼저 배워야 하는가\" 를 점수로 산출한다 — 성장 루프의 두뇌. Need Score (설계서 공식, 0~1", + "imports": [ + "src/intelligence/reflectionStore" + ] + }, + "src/intelligence/orgMemoryBlock.ts": { + "mtimeMs": 1781147430047.9055, + "size": 2750, + "lines": 68, + "role": "Organizational Memory — 조직 규칙·프로세스·선호 방식 시스템 프롬프트 블록. Self-Evolving OS 마스터 플랜 Phase 5 / Track 5-2 (설계서 11장 Organizational Memory). \"이 회사는 속도 우선, 완벽주의 지양\" 류의 조직 문화·업무 방식을 모든 업무 turn 에 주입한다. Terminology", + "imports": [] + }, + "src/intelligence/reflectionStore.ts": { + "mtimeMs": 1781146621996.6653, + "size": 6906, + "lines": 162, + "role": "Reflection Store — 업무 turn 회고 기록 + Failure Pattern 집계. Self-Evolving OS 마스터 플랜 Phase 1 / Track 2-4 (Reflection Engine v1) + Phase 3 / Track 3-6 (Failure Pattern DB v1 시드). 신뢰 조건 T5 \"같은 실수를 반복하지 않는다\" 의", + "imports": [] + }, + "src/intelligence/requirementGraph.ts": { + "mtimeMs": 1781144397584.8677, + "size": 12495, + "lines": 273, + "role": "Requirement Graph — 업무 유형별 필수 요소 정의 + 감지 + 커버리지 검사. Self-Evolving Digital Employee OS 마스터 플랜(docs/SELFEVOLVINGOSMASTERPLAN.md) Phase 1 / Track 2-1. 신뢰 조건 T3 \"품질이 일관적이다 — 필수 요소 누락 없음\" 담당. 동작 2단계: 1. In", + "imports": [] + }, + "src/intelligence/researchAgent.ts": { + "mtimeMs": 1781147776688.333, + "size": 7355, + "lines": 153, + "role": "Research Agent — 학습 큐 approved 항목의 조사 실행 (설계서 9장). Self-Evolving OS 마스터 플랜 Phase 6 / Track 7-1. 학습 루프의 마지막 구간: Need Engine → Learning Queue(approved) → Research Agent → Validation 게이트 → 저장 제안 v1 은 \"조사", + "imports": [ + "src/intelligence/learningQueue", + "src/intelligence/knowledgeValidation" + ] + }, + "src/intelligence/skillScore.ts": { + "mtimeMs": 1781147811826.0857, + "size": 6870, + "lines": 168, + "role": "Skill Score + Success Pattern DB — 역량 점수와 성공 사례 축적 (설계서 12장). Self-Evolving OS 마스터 플랜 Phase 6 / Track 7-3 + 7-4. Skill Score (0~100, 업무 유형 단위 v1): 최근 N건 reflection 의 (확신도 50% + 요소 충족률 30% + 비에스컬레이션율 2", + "imports": [ + "src/intelligence/reflectionStore" + ] + }, + "src/intelligence/taskEvalHarness.ts": { + "mtimeMs": 1781144360998.8086, + "size": 7942, + "lines": 185, + "role": "Task Eval Harness — 업무 산출물 골든셋 자동 채점 (Self Evaluation v1). Self-Evolving OS 마스터 플랜 Phase 3 / Track 3-4. \"성장세를 숫자로 증명\" 의 핵심: 같은 골든셋을 버전마다 돌려 점수 추이를 비교한다 (검색 평가 하니스가 recall@1 37.5%→75% 를 증명한 것과 같은 방법론을 ", + "imports": [ + "src/intelligence/requirementGraph" + ] + }, "src/lib/contextBuilders/astraModeArchitecture.ts": { "mtimeMs": 1779764602634.5583, "size": 3982, @@ -1960,9 +2132,9 @@ ] }, "src/lib/contextBuilders/memoryContext.ts": { - "mtimeMs": 1780911285246.217, - "size": 17357, - "lines": 331, + "mtimeMs": 1781147441753.4504, + "size": 20436, + "lines": 381, "role": "", "imports": [ "src/agent", @@ -1981,7 +2153,12 @@ "src/retrieval/semanticRerank", "src/retrieval/intentClarification", "src/retrieval/citationTrace", - "src/retrieval/terminologyBlock" + "src/retrieval/terminologyBlock", + "src/intelligence/requirementGraph", + "src/intelligence/epistemicGuardBlock", + "src/intelligence/reflectionStore", + "src/intelligence/orgMemoryBlock", + "src/intelligence/confidenceEngine" ] }, "src/lib/contextBuilders/modelCandidates.ts": { @@ -2310,9 +2487,9 @@ "imports": [] }, "src/retrieval/citationTrace.ts": { - "mtimeMs": 1780032397612.986, - "size": 2348, - "lines": 49, + "mtimeMs": 1781142381872.4841, + "size": 4887, + "lines": 102, "role": "Citation Trace — 답변 끝 에 \"출처:\" 한 줄 명시 지시. CoVe Strict 모드 (v2.2.184) 와 차이: - CoVe Strict: 모든 사실 주장 뒤에 inline [S1] 인용 강제 — verbose, 학술적 - Citation Trace: 답변 끝에 사용된 출처 한 줄 정리 — 가벼움, 항상 ON 권장 둘은 함께 동작 가능. ", "imports": [ "src/retrieval/types" @@ -3013,6 +3190,29 @@ "src/agent" ] }, + "tests/confidenceEngine.test.ts": { + "mtimeMs": 1781142599349.454, + "size": 7643, + "lines": 175, + "role": "Confidence Engine + Escalation Engine (Self-Evolving OS Phase 2) 단위 테스트. 순수 함수만 검증 — vscode 의존 없음.", + "imports": [ + "src/intelligence/confidenceEngine", + "src/intelligence/escalationEngine", + "src/intelligence/epistemicGuardBlock", + "src/retrieval/citationTrace", + "src/retrieval/types" + ] + }, + "tests/conflictCheck.test.ts": { + "mtimeMs": 1781152169364.555, + "size": 2794, + "lines": 63, + "role": "Schedule Conflict Check (Self-Evolving OS Track 6-2/6-3) 테스트.", + "imports": [ + "src/features/calendar/conflictCheck", + "src/agent/attrParsers" + ] + }, "tests/contextManager.test.ts": { "mtimeMs": 1779764602681.109, "size": 7904, @@ -3022,6 +3222,18 @@ "src/lib/contextManager" ] }, + "tests/criticReflectionEval.test.ts": { + "mtimeMs": 1781144662610.272, + "size": 8327, + "lines": 200, + "role": "Critic Agent / Reflection Store / Task Eval Harness (Self-Evolving OS P1 잔여 + P3) 테스트.", + "imports": [ + "src/intelligence/criticAgent", + "src/intelligence/reflectionStore", + "src/intelligence/taskEvalHarness", + "src/intelligence/requirementGraph" + ] + }, "tests/dataProcessor.test.ts": { "mtimeMs": 1778028987448.8394, "size": 3517, @@ -3086,6 +3298,19 @@ "src/utils" ] }, + "tests/knowledgeOps.test.ts": { + "mtimeMs": 1781147477013.794, + "size": 8035, + "lines": 174, + "role": "Knowledge Validation / Belief Revision / Decay / Debt (Self-Evolving OS Phase 4 — 지식 운영) 테스트.", + "imports": [ + "src/intelligence/knowledgeValidation", + "src/intelligence/knowledgeDecay", + "src/intelligence/needEngine", + "src/intelligence/reflectionStore", + "src/intelligence/orgMemoryBlock" + ] + }, "tests/lessonHelpers.test.ts": { "mtimeMs": 1778664139972.9592, "size": 9591, @@ -3096,9 +3321,9 @@ ] }, "tests/lmStudioLifecycle.test.ts": { - "mtimeMs": 1779764602684.1619, - "size": 11865, - "lines": 326, + "mtimeMs": 1780971798141.8428, + "size": 12218, + "lines": 330, "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": [ "src/lmstudio/lifecycleManager", @@ -3142,6 +3367,18 @@ "role": "", "imports": [] }, + "tests/needEngineQueue.test.ts": { + "mtimeMs": 1781146804618.2693, + "size": 7123, + "lines": 159, + "role": "Gap Detector / Need Engine / Knowledge Inventory / Learning Queue (Self-Evolving OS Phase 3 — 성장 루프 코어) 테스트.", + "imports": [ + "src/intelligence/gapDetector", + "src/intelligence/needEngine", + "src/intelligence/learningQueue", + "src/intelligence/reflectionStore" + ] + }, "tests/officeSchema.test.ts": { "mtimeMs": 1779065453896.7021, "size": 10125, @@ -3208,6 +3445,27 @@ "src/features/providers/streamHelpers" ] }, + "tests/requirementGraph.test.ts": { + "mtimeMs": 1781140474254.644, + "size": 5535, + "lines": 126, + "role": "Requirement Graph (Self-Evolving OS Phase 1 / Track 2-1) 단위 테스트. 순수 함수만 검증 — vscode 의존 없음.", + "imports": [ + "src/intelligence/requirementGraph" + ] + }, + "tests/researchSkill.test.ts": { + "mtimeMs": 1781147950430.0676, + "size": 5860, + "lines": 122, + "role": "Research Agent / Skill Score / Success Pattern DB (Self-Evolving OS Phase 6) 테스트.", + "imports": [ + "src/intelligence/researchAgent", + "src/intelligence/skillScore", + "src/intelligence/learningQueue", + "src/intelligence/reflectionStore" + ] + }, "tests/resilience_stress.test.ts": { "mtimeMs": 1779764602686.1758, "size": 8610, @@ -3273,6 +3531,16 @@ "src/skills/skillInjectionService" ] }, + "tests/stocksCriteria.test.ts": { + "mtimeMs": 1781086406001.8665, + "size": 7191, + "lines": 129, + "role": "criteriaEval — /stocks judge 결정론 평가기 테스트. 픽스처는 옛 LLM 프롬프트에 명시돼 있던 사용자의 실제 분류 예시 3종 (마녀공장/기가비스/엔켐) — 코드 판정이 사용자 패턴과 일치해야 한다.", + "imports": [ + "src/features/stocks/criteriaEval", + "src/features/stocks/types" + ] + }, "tests/systemPrompt.test.ts": { "mtimeMs": 1779764602687.5603, "size": 1487, @@ -3551,7 +3819,7 @@ "imports": [] }, "docs/records/ConnectAI/chronicle.config.json": { - "mtimeMs": 1780969084053.7776, + "mtimeMs": 1781146591626.768, "size": 371, "lines": 11, "role": "JSON configuration", @@ -3781,6 +4049,13 @@ "role": "ADR: 아래 프로젝트의 로직을 분석하고 어떻게 하면 astra가 더 정확하고, 정교하게 개선할 수 있는 부분이 있는지 검토해주고 의견을 주면 좋겠어. ...", "imports": [] }, + "docs/records/ConnectAI/decisions/ADR-0033-e-wiki-connectai-지금-코드-개선-중인데-분석해주면-좋겠어-지금-너의-기능에서-어떠한-부분이-더.md": { + "mtimeMs": 1781146591614.5254, + "size": 1791, + "lines": 19, + "role": "ADR: E:\\Wiki\\connectai 지금 코드 개선 중인데 분석해주면 좋겠어. 지금 너의 기능에서 어떠한 부분이 더 개선이 되고 있는지. 어떠한 효...", + "imports": [] + }, "docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": { "mtimeMs": 1778028987330.4185, "size": 1564, @@ -4132,9 +4407,9 @@ "imports": [] }, "docs/records/ConnectAI/timeline.md": { - "mtimeMs": 1780914060076.0566, - "size": 15782, - "lines": 248, + "mtimeMs": 1781146591617.6985, + "size": 15976, + "lines": 251, "role": "Project Timeline", "imports": [] }, @@ -4145,6 +4420,13 @@ "role": "🛠️ ConnectAI 아키텍처 리팩토링 로드맵", "imports": [] }, + "docs/SELF_EVOLVING_OS_MASTER_PLAN.md": { + "mtimeMs": 1781151693182.0251, + "size": 21957, + "lines": 274, + "role": "ASTRA Self-Evolving Digital Employee OS — 마스터 개발 계획 v1.1", + "imports": [] + }, "docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md": { "mtimeMs": 1778664139927.3354, "size": 12706, diff --git a/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json b/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json index 04ba5f7..ee019fe 100644 --- a/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json +++ b/.astra/tests/engine/.astra/cache/7fa9e2c0ed212d5dbde1172e996cde86955f34dda22a6e02b95c9adc0a456927.json @@ -1,5 +1,5 @@ { "result": "직답 결과 — single-pass mock 응답입니다.", - "createdAt": 1781085022765, + "createdAt": 1781152586601, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json b/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json index 1215a85..0080f6f 100644 --- a/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json +++ b/.astra/tests/engine/.astra/cache/8c208151bed9108b665cd93e98fc10d377a9fef641dd359504b8d53aecd0a4c3.json @@ -1,5 +1,5 @@ { - "result": "---\nid: wiki_on\ndate: 2026-06-10T09:50:22.767Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (20ms)\n", - "createdAt": 1781085022767, + "result": "---\nid: wiki_on\ndate: 2026-06-11T04:36:26.603Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\n직답 결과 — single-pass mock 응답입니다.\n\n직답 결과 — single-pass mock 응답입니다.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `0/100` | ✅ Low |\n| **Fallbacks Used** | `0` | ✅ None |\n| **Auto Retries** | `0` | ✅ Stable |\n| **Deduplication** | `0` | Standard |\n| **Processing Time** | `0.0s` | ✅ Fast |\n\n### 🔍 Decision Audit Trail\n- **[DIRECT]** 답변 작성 중... (단일 호출 fast-path) (20ms)\n", + "createdAt": 1781152586603, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/engine/.astra/missions/wiki_on.json b/.astra/tests/engine/.astra/missions/wiki_on.json index 9791b41..d9ec413 100644 --- a/.astra/tests/engine/.astra/missions/wiki_on.json +++ b/.astra/tests/engine/.astra/missions/wiki_on.json @@ -1,7 +1,7 @@ { "missionId": "wiki_on", "status": "completed", - "startTime": "2026-06-10T09:50:22.743Z", + "startTime": "2026-06-11T04:36:26.579Z", "totalElapsedMs": 25, "results": { "direct": "직답 결과 — single-pass mock 응답입니다." @@ -14,14 +14,14 @@ "to": "direct", "durationMs": 20, "message": "답변 작성 중... (단일 호출 fast-path)", - "ts": "2026-06-10T09:50:22.763Z" + "ts": "2026-06-11T04:36:26.599Z" }, { "from": "direct", "to": "completed", "durationMs": 5, "message": "미션 완료", - "ts": "2026-06-10T09:50:22.768Z" + "ts": "2026-06-11T04:36:26.604Z" } ], "resilienceMetrics": { diff --git a/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json b/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json index a674b90..13585b1 100644 --- a/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json +++ b/.astra/tests/stress/.astra/cache/21818066876cbf8515758bc351bb3d9d44f32b0e4cd024b2e055db3a0d34417e.json @@ -1,5 +1,5 @@ { "result": "Final report with inconsistencies. This should be long enough to pass validation.", - "createdAt": 1781085029846, + "createdAt": 1781152593245, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json b/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json index bc1a4c4..084f529 100644 --- a/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json +++ b/.astra/tests/stress/.astra/cache/4fc755e372f1dd80d6bffc7b2ef973124fb64ba505f767c53a783833bbc3fa6a.json @@ -1,5 +1,5 @@ { "result": "Final report with inconsistencies. This should be long enough to pass validation.", - "createdAt": 1781085029845, + "createdAt": 1781152593243, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json b/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json index 0edec87..204c74d 100644 --- a/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json +++ b/.astra/tests/stress/.astra/cache/6e559207c4542d959700ff14f360e6575e54853929e991e579e318f2f5a19030.json @@ -1,5 +1,5 @@ { "result": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", - "createdAt": 1781085029841, + "createdAt": 1781152593239, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json b/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json index 71154aa..b48d679 100644 --- a/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json +++ b/.astra/tests/stress/.astra/cache/f65136cebc95448a7e93a45745cb73b3a5a01af5d82391ec29a25bd72b8239a5.json @@ -1,5 +1,5 @@ { "result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", - "createdAt": 1781085029843, + "createdAt": 1781152593241, "modelVersion": "unknown" } \ No newline at end of file diff --git a/.astra/tests/stress/.astra/missions/stress_conflict_1781085029821.json b/.astra/tests/stress/.astra/missions/stress_conflict_1781152593224.json similarity index 75% rename from .astra/tests/stress/.astra/missions/stress_conflict_1781085029821.json rename to .astra/tests/stress/.astra/missions/stress_conflict_1781152593224.json index d701790..97df3ed 100644 --- a/.astra/tests/stress/.astra/missions/stress_conflict_1781085029821.json +++ b/.astra/tests/stress/.astra/missions/stress_conflict_1781152593224.json @@ -1,8 +1,8 @@ { - "missionId": "stress_conflict_1781085029821", + "missionId": "stress_conflict_1781152593224", "status": "completed", - "startTime": "2026-06-10T09:50:29.821Z", - "totalElapsedMs": 26, + "startTime": "2026-06-11T04:36:33.224Z", + "totalElapsedMs": 22, "results": { "outline": "[{\"heading\":\"본문\",\"scope\":\"전체 답변\"}]", "section_0": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.", @@ -14,30 +14,30 @@ { "from": "idle", "to": "outline", - "durationMs": 19, + "durationMs": 13, "message": "답변 구조 잡는 중...", - "ts": "2026-06-10T09:50:29.840Z" + "ts": "2026-06-11T04:36:33.237Z" }, { "from": "outline", "to": "section", - "durationMs": 2, + "durationMs": 3, "message": "본문 작성 중...", - "ts": "2026-06-10T09:50:29.842Z" + "ts": "2026-06-11T04:36:33.240Z" }, { "from": "section", "to": "polish", "durationMs": 2, "message": "최종 다듬기 중...", - "ts": "2026-06-10T09:50:29.844Z" + "ts": "2026-06-11T04:36:33.242Z" }, { "from": "polish", "to": "completed", - "durationMs": 2, + "durationMs": 3, "message": "미션 완료", - "ts": "2026-06-10T09:50:29.846Z" + "ts": "2026-06-11T04:36:33.245Z" } ], "resilienceMetrics": { diff --git a/docs/records/ConnectAI/chronicle.config.json b/docs/records/ConnectAI/chronicle.config.json index 8500477..21ec866 100644 --- a/docs/records/ConnectAI/chronicle.config.json +++ b/docs/records/ConnectAI/chronicle.config.json @@ -7,5 +7,5 @@ "corePurpose": "", "detailLevel": "standard", "createdAt": "2026-05-20T09:42:40.003Z", - "updatedAt": "2026-06-09T03:09:47.208Z" + "updatedAt": "2026-06-11T02:56:31.625Z" } diff --git a/docs/records/ConnectAI/decisions/ADR-0033-e-wiki-connectai-지금-코드-개선-중인데-분석해주면-좋겠어-지금-너의-기능에서-어떠한-부분이-더.md b/docs/records/ConnectAI/decisions/ADR-0033-e-wiki-connectai-지금-코드-개선-중인데-분석해주면-좋겠어-지금-너의-기능에서-어떠한-부분이-더.md new file mode 100644 index 0000000..a636093 --- /dev/null +++ b/docs/records/ConnectAI/decisions/ADR-0033-e-wiki-connectai-지금-코드-개선-중인데-분석해주면-좋겠어-지금-너의-기능에서-어떠한-부분이-더.md @@ -0,0 +1,19 @@ +# ADR: E:\Wiki\connectai 지금 코드 개선 중인데 분석해주면 좋겠어. 지금 너의 기능에서 어떠한 부분이 더 개선이 되고 있는지. 어떠한 효... + +## Status +accepted + +## Context +E:\Wiki\connectai 지금 코드 개선 중인데 분석해주면 좋겠어. 지금 너의 기능에서 어떠한 부분이 더 개선이 되고 있는지. 어떠한 효과를 내가 기대하면 될것인지. + +## Decision +이 질문은 단순히 코드를 리뷰해달라는 요청을 넘어, 현재 진행 중인 프로젝트(ConnectAI)의 진화 방향과 그로 인한 사용자 경험(UX)의 변화를 묻고 계십니다. 현재 정보만으로는 기술 구조를 판단할 수 없습니다. 기술적 안정성, 아키텍처 유연성, 모듈화 여부는 소스 코드나 설계 문서 확인이 필요합니다. 직전 답변에서 제가 분석한 `041190(우리기술투자)`의 사례와 연결 지어 볼 때, 사용자는 현재 "데이터 추출 → 기술적/재무적 필터링 → LLM을 통한 전략적 인사이트 도출"이라는 일련의 자동화된 파이프라인을 구축하고 계신 상태입니다. 현재 코드 개선 작업(Refactoring & Optimization)이 이루어지고 있다면, 제가 체감하는 개선 포인트와 기대 효과는 다음과 같습니다. --- 1. 기능적 측면: "단순 조회를 넘어선 '지능형 에이전트'로의 진화" 현재 코드가 개선됨에 따라 Astra(또는 시스템)는 단순한 데이터 출력기가 아닌, 판단력을 갖춘 분석가로 변모하... + +## Reason +Captured automatically because the conversation contained decision-oriented language. + +## Alternatives +Not captured yet. + +## Consequences +- Future prompts should treat this as project context unless the user changes direction. diff --git a/docs/records/ConnectAI/timeline.md b/docs/records/ConnectAI/timeline.md index 872f467..c5d81f1 100644 --- a/docs/records/ConnectAI/timeline.md +++ b/docs/records/ConnectAI/timeline.md @@ -246,3 +246,6 @@ ## 2026-06-08 - Auto development record created: development\2026-06-08_아니-지금-코드-업데이트를-했거든-다시-코드를-검토하고-의견을-줘_implementation.md + +## 2026-06-11 +- Auto decision record created: decisions\ADR-0033-e-wiki-connectai-지금-코드-개선-중인데-분석해주면-좋겠어-지금-너의-기능에서-어떠한-부분이-더.md