v2.2.313~319: 보고 품질·조사 신뢰성 수술 + 네이버 쇼핑인사이트/검색어트렌드 연동

- 파트별 완성, 웹 실접속 증빙, 턴 의도 브리핑, 본문 불일치 검증, 하위 질문
  체크리스트, 사이트 심층 수집 (PATCHNOTES.md v2.2.313~318 참조)
- /naver-shopping, /naver-trend: 네이버 데이터랩 API 연동. compare/discover
  자동 판별, API 배치 상한 캡슐화, 카테고리 트리 fuzzy 매칭, 자격증명은
  Astra 설정 패널 SecretStorage 로 관리
This commit is contained in:
2026-08-05 18:20:32 +09:00
parent 7d6b8b509f
commit c79eda1862
51 changed files with 37435 additions and 89 deletions
+27 -27
View File
@@ -3,15 +3,15 @@
<!-- ASTRA:AUTO-START -->
## Snapshot
- **Workspace**: `connectai` `v2.2.312` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Workspace**: `connectai` `v2.2.318` _(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**: 617 source files, ~90,403 lines across 5 top-level modules.
- **Stats**: 633 source files, ~91,804 lines across 5 top-level modules.
## Last Refresh
- **Time**: 2026-07-20T04:20:03.384Z
- **Files newly analysed**: 1
- **Files reused from cache**: 616
- **Time**: 2026-07-21T04:22:55.352Z
- **Files newly analysed**: 3
- **Files reused from cache**: 630
## Directory Map
```mermaid
@@ -19,11 +19,11 @@ mindmap
root((connectai))
src/
features/
lib/
agent/
lib/
sidebar/
retrieval/
intelligence/
retrieval/
media/
tests/
helpers/
@@ -41,11 +41,11 @@ mindmap
> Arrows: which top-level module imports from which.
```mermaid
flowchart LR
src["src/<br/>342 files"]
src["src/<br/>345 files"]
media["media/<br/>6 files"]
tests["tests/<br/>86 files"]
tests["tests/<br/>91 files"]
core_py["core_py/<br/>6 files"]
docs["docs/<br/>177 files"]
docs["docs/<br/>185 files"]
tests --> src
```
@@ -57,10 +57,10 @@ flowchart LR
## Hub Files
> Imported by many other files — touching these has wide blast radius.
- `src/utils.ts` — referenced by **116** files
- `src/utils.ts` — referenced by **118** files
- `src/config.ts` — referenced by **44** files
- `src/agent.ts` — referenced by **37** files
- `src/core/services.ts` — referenced by **23** files
- `src/agent.ts` — referenced by **39** files
- `src/core/services.ts` — referenced by **24** files
- `src/retrieval/brainIndex.ts` — referenced by **14** files · Brain Index — persistent, mtime-keyed tokenized cache of the Second Brain RAG 검색은 매 질의마다 브레인의 모든 .md 파일을 읽고 토크나이즈해서 TF-IDF 점수를 계산했습니다 — 파일 수가 많아지면 그게 병목입니다. 이 모듈은 <brainPath>/.astra/brain-index.json 에
- `src/agent/actions/types.ts` — referenced by **13** files
- `src/integrations/telegram/telegramClient.ts` — referenced by **13** files
@@ -68,15 +68,15 @@ flowchart LR
## Modules
### `src/` — 342 files, ~65,381 lines
### `src/` — 345 files, ~66,209 lines
**Sub-directories**
- `src/features/` (126) — 데일리 브리핑 워처 — 평일(월~금) KST 09:30 에 "오늘의 할 일"을 텔레그램으로 발송. 소스: 1. Google Calendar — iCal 캐시 새로고침 후 오늘 일정 (readCalendarEvents
- `src/agent/` (37) — <investigatefiles path="..." focus="..."/> — 폴더(또는 단일 파일) 강제 정독 조사. listfiles 가 "이름 목록"을 주는 것과 달리, 이 액션은 대상 파일들을 코드가 직접
- `src/lib/` (37) — Astra Mode Architecture Context Builder. 의도: 사용자가 Astra 자체의 mode 디자인 (Guard vs Multi-Agent 가 별도 모드여야 하는지) 을 묻는 메타 질문에 답할
- `src/agent/` (36) — <investigatefiles path="..." focus="..."/> — 폴더(또는 단일 파일) 강제 정독 조사. listfiles 가 "이름 목록"을 주는 것과 달리, 이 액션은 대상 파일들을 코드가 직접
- `src/sidebar/` (32) — Brain profile lifecycle 의 pure helpers — sidebarProvider 의 add/edit/delete 흐름에서 modal UI 와 config 쓰기를 제외한 데이터 변환 만 격리. 현
- `src/intelligence/` (21) — Confidence Engine — 답변 확신도 0~100 결정론적 산출. Self-Evolving OS 마스터 플랜 Phase 2 / Track 1-1. 신뢰 조건 T4 "확신이 없으면 사람에게 묻는다" 의 측정
- `src/retrieval/` (20) — Actionability Scoring — 검색 결과를 "현재 작업 상태" 신호로 재가중. 기존 TF-IDF (단어 매칭) + recency (시간) 만으로는 "지금 이 사용자가 하고 있는 작업과 직접 연결 된 문서
- `src/intelligence/` (19) — 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/` (13) — 두뇌(Second Brain) 기본 위치 부트스트랩 — 첫 실행 온보딩. 문제: 두뇌 미설정 시 config 가 ~/.g1nation-brain(숨김 점폴더)로 조용히 폴백했다. - 폴더가 실제로 생성되지 않고, 설
- `src/memory/` (9) — Distillation Loop — stale Episodic Memory → Long-Term "episode-digest" 승급. 배경: Episodic Memory 가 무한히 누적되면 검색 노이즈. 30일+ 지
@@ -86,8 +86,8 @@ flowchart LR
**Key files**
- `src/utils.ts` (538 lines)
- `src/config.ts` (727 lines)
- `src/agent.ts` (1979 lines)
- `src/config.ts` (745 lines)
- `src/agent.ts` (2229 lines)
- `src/core/services.ts` (218 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/sidebarProvider.ts` (2992 lines)
@@ -99,10 +99,10 @@ flowchart LR
- `src/retrieval/scoring.ts` (541 lines) — Scoring Engine — TF-IDF + Bilingual Tokenizer 단순 includes() 키워드 매칭을 넘어서, TF-IDF 가중치 기반의 문서 스코어링을 제공합니다. 한국어/영어 양국어 토크나이저를 포함합니다.
- `src/features/company/companyConfig.ts` (896 lines) — State + config plumbing for 1인 기업 모드. Two surfaces: - CompanyState (runtime data: enabled flag, company name, which agents are active, per-agent model overrides). Persisted in VS Code's globalState so
- `src/features/stocks/types.ts` (61 lines) — Stocks 모듈 공유 타입. investresults/targetstocks.json 스키마를 그대로 받아서, ConnectAI 의 <workspace>/.astra/stocks.json 으로 옮긴 뒤 같은 필드명을 유지. 한글 필드명은 사용자의 도메인 데이터라 변경하지 않는다 — 마이그레이션 충돌 회피 + 사용자가 직접 JSON 편집할 때 frictio
- `src/intelligence/requirementGraph.ts` (312 lines) — Requirement Graph — 업무 유형별 필수 요소 정의 + 감지 + 커버리지 검사. Self-Evolving Digital Employee OS 마스터 플랜(docs/SELFEVOLVINGOSMASTERPLAN.md) Phase 1 / Track 2-1. 신뢰 조건 T3 "품질이 일관적이다 — 필수 요소 누락 없음" 담당. 동작 2단계: 1. In
- `src/lib/paths.ts` (151 lines)
- `src/skills/agentKnowledgeMap.ts` (374 lines)
- `src/retrieval/types.ts` (66 lines) — Retrieval Types (검색 결과 통합 타입) 모든 검색 소스(Brain, Memory, Project, Episode)의 결과를 통합 인터페이스로 정의합니다.
- `src/intelligence/requirementGraph.ts` (312 lines) — Requirement Graph — 업무 유형별 필수 요소 정의 + 감지 + 커버리지 검사. Self-Evolving Digital Employee OS 마스터 플랜(docs/SELFEVOLVINGOSMASTERPLAN.md) Phase 1 / Track 2-1. 신뢰 조건 T3 "품질이 일관적이다 — 필수 요소 누락 없음" 담당. 동작 2단계: 1. In
- `src/security.ts` (159 lines)
- `src/lib/contextBuilders/promptDetection.ts` (107 lines) — 사용자 prompt 의 의도 분류 류 detection helpers. 모두 stateless 정규식 매칭. 옛 코드는 agent.ts 의 private 메서드로 박혀 있었는데, system prompt 빌더 (buildJarvisProjectBriefContext 등) 가 이걸 의존하면서 god-file 안에서 서로 얽힘. 헬퍼만 먼저 떼면 의존 그래프가
- `src/memory/types.ts` (151 lines) — Memory Type Definitions (메모리 타입 정의) Astra의 5-Layer Cognitive Memory System의 모든 타입을 정의합니다. ① Short-Term ② Long-Term ③ Project ④ Procedural ⑤ Episodic
@@ -121,7 +121,7 @@ flowchart LR
- `media/settings-panel.js` (577 lines)
- `media/settings-panel.css` (254 lines) — Stylesheet
### `tests/` — 86 files, ~11,085 lines
### `tests/` — 91 files, ~11,476 lines
*Depends on*: `src/`
**Sub-directories**
@@ -137,6 +137,7 @@ flowchart LR
- `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/emailCommand.test.ts` (282 lines) — v2.2.269 — /email (Gmail + Outlook) 순수 로직 테스트. COM/네트워크는 통합 영역이라 제외 — 참조 파싱·프롬프트·트랜스크립트 컷만 고정.
- `tests/investigationPipeline.test.ts` (217 lines) — Investigation Pipeline — 파일명만 보고 상상하는 헛조사 차단 3중 방어. (v2.2.309) ① 조사형 요청 감지 + 증거 게이트 ② 강제 정독 Map + 해시 캐시 ③ Hollow 감지
- `tests/lmStudioStreamer.test.ts` (295 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/meetRegistration.test.ts` (232 lines) — /meet 확신 게이트 — 분류·confirm 파싱·날짜 정규화 테스트. 정책: 확정+기한만 자동, 진행미정/기한미정/조건부는 보류, 반복은 첫 1회, 과거 날짜는 등록하되 완료확인 표기, 기한 해석 불가 확정건은 보류(추측 등록 금지).
- `tests/secondBrainTrace.test.ts` (407 lines)
@@ -146,7 +147,6 @@ flowchart LR
- `tests/confidenceEngine.test.ts` (175 lines) — Confidence Engine + Escalation Engine (Self-Evolving OS Phase 2) 단위 테스트. 순수 함수만 검증 — vscode 의존 없음.
- `tests/correctionLoop.test.ts` (158 lines) — Correction Loop 단위 테스트 — 순수 로직 (감지·프로필·레슨·큐 등록·영속화). LLM 의존 부분(classifyCorrection)은 엔드포인트 실패 → 휴리스틱 fallback 경로만 검증.
- `tests/emailState.test.ts` (121 lines) — v2.2.271 — 이메일 영속 상태 머신 (syncThreads / detectOverdue / setThreadState). "명령 안 쳐도 f/u 되는" 핵심 로직: 창 밖 미회신 보존, done 자동 재개, 알림 중복 차단.
- `tests/investigationPipeline.test.ts` (193 lines) — Investigation Pipeline — 파일명만 보고 상상하는 헛조사 차단 3중 방어. (v2.2.309) ① 조사형 요청 감지 + 증거 게이트 ② 강제 정독 Map + 해시 캐시 ③ Hollow 감지
- `tests/knowledgeOps.test.ts` (174 lines) — Knowledge Validation / Belief Revision / Decay / Debt (Self-Evolving OS Phase 4 — 지식 운영) 테스트.
- `tests/largeInputMapReduce.test.ts` (159 lines) — Phase 2 — large-input map-reduce core. Pure orchestration with an injected callLLM, so no network / SDK is touched.
- `tests/needEngineQueue.test.ts` (159 lines) — Gap Detector / Need Engine / Knowledge Inventory / Learning Queue (Self-Evolving OS Phase 3 — 성장 루프 코어) 테스트.
@@ -166,16 +166,16 @@ flowchart LR
- `core_py/optimizer.py` (55 lines)
- `core_py/queue_worker.py` (82 lines)
### `docs/` — 177 files, ~5,946 lines
### `docs/` — 185 files, ~6,128 lines
**Sub-directories**
- `docs/records/` (160) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/records/` (168) — Bug: /Volumes/Data/project/Antigravity/ConnectAI 프로젝트 코드 리뷰 해줄 수 있어? 개선할 부분이 있는지, 그러고...
- `docs/docs/` (5) — Bug: Viewed integrationretrieval.test.ts:1-59 integrationretrieval.test.ts를 통해 ...
- `docs/plans/` (2) — Alignment Self-Learning 개선 계획 (v2 — 적대적 리뷰 반영)
- `docs/Meeting/` (0)
**Key files**
- `docs/records/ConnectAI/timeline.md` (431 lines) — Project Timeline
- `docs/records/ConnectAI/timeline.md` (455 lines) — Project Timeline
- `docs/TELEGRAM_REMOTE_EXECUTION_PLAN.md` (452 lines) — Telegram Remote Execution 기획서
- `docs/AgentEngine_Architecture.md` (314 lines) — AgentEngine Architecture Document
- `docs/SELF_EVOLVING_OS_MASTER_PLAN.md` (275 lines) — ASTRA Self-Evolving Digital Employee OS — 마스터 개발 계획 v1.1
@@ -244,7 +244,7 @@ flowchart LR
- `g1nation.calendar.refresh` — Astra: Google Calendar 새로고침 📅
- `g1nation.calendar.connectOAuth` — Astra: Google Calendar OAuth 연결 (쓰기) 🔐
- `g1nation.devilAgent.toggle` — Astra: Toggle Devil Agent 🎭
- **Configuration** (183 settings):
- **Configuration** (187 settings):
- `g1nation.multiAgentEnabled` *(boolean)* _(default: `false`)_ — Enable Multi-Agent Workflow (Planner -> Researcher -> Writer) for complex tasks.
- `g1nation.datacollectBridgeTarget` *(string)* _(default: `"nas"`)_
- `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). 백엔드를 NAS로 옮긴 경우 보통 사
@@ -305,7 +305,7 @@ flowchart LR
- `g1nation.largeInputMapReduce` *(boolean)* _(default: `true`)_ — When a single message is too large to fit the model's context window, split it into chunks, extract only the request-relevant facts from each (no hallucination/summary), integrate them, and answer fro
- `g1nation.mapReduceTriggerRatio` *(number)* _(default: `0.6`)_ — Map-reduce kicks in when a single message exceeds (effective context window × this ratio). Lower = engages sooner (safer for big inputs, more LLM calls). Default: 0.6
- `g1nation.mapReduceConcurrency` *(number)* _(default: `2`)_ — How many chunk extractions run in parallel. Keep low on a single local GPU (one model serves them sequentially anyway). Default: 2
- _…and 123 more_
- _…and 127 more_
## Dependencies
- **Runtime** (2): `@lmstudio/sdk`, `pdf-parse`
@@ -353,7 +353,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
**Designed for High-Performance Decision Making.**
Copyright (C) **g1nation**. All rights reserved.
_Last auto-scan: 2026-07-20T04:20:03.384Z · signature `ff87bb88`_
_Last auto-scan: 2026-07-21T04:22:55.352Z · signature `ca99a170`_
<!-- ASTRA:AUTO-END -->
## Purpose
+164 -30
View File
@@ -1,6 +1,6 @@
{
"version": 1,
"generatedAt": "2026-07-20T04:20:03.483Z",
"generatedAt": "2026-07-21T04:22:55.502Z",
"files": {
"src/agent/actions/brainOps.ts": {
"mtimeMs": 1779764602582.9768,
@@ -254,9 +254,9 @@
]
},
"src/agent/handlePrompt/processFinalAnswer.ts": {
"mtimeMs": 1779764602591.863,
"size": 6606,
"lines": 147,
"mtimeMs": 1784522477358.286,
"size": 7268,
"lines": 158,
"role": "",
"imports": [
"src/utils",
@@ -273,6 +273,16 @@
"src/lib/contextManager"
]
},
"src/agent/handlePrompt/sectionedCompletion.ts": {
"mtimeMs": 1784521634407.0134,
"size": 6304,
"lines": 116,
"role": "[v2.2.313] 파트별 완성 (Sectioned Completion) — 사용자 제안 구현. 문제: 보고서형 답변이 출력 토큰 한계에 닿으면 자동 이어쓰기(같은 호출의 연장)를 최대 N회 시도하고, 그래도 못 채우면 \"더 좁은 주제로 나눠 질문하세요\" 안내로 끝났다. 나눠서 다시 묻는 부담을 사용자에게 떠넘긴 것. 해결: 한계에 닿은 초안을 받으면 백엔",
"imports": [
"src/utils",
"src/agent"
]
},
"src/agent/hangulHygiene.ts": {
"mtimeMs": 1781239601929.7876,
"size": 3244,
@@ -436,9 +446,9 @@
]
},
"src/agent.ts": {
"mtimeMs": 1784517985649.1714,
"size": 113583,
"lines": 1979,
"mtimeMs": 1784602363613.244,
"size": 130400,
"lines": 2229,
"role": "",
"imports": [
"src/utils",
@@ -455,6 +465,9 @@
"src/features/web/webFetch",
"src/intelligence/correctionLoop",
"src/intelligence/investigationPipeline",
"src/intelligence/requirementGraph",
"src/intelligence/turnIntentBrief",
"src/intelligence/subQuestions",
"src/lib/contextBuilders/multiAgentRouting",
"src/lib/contextBuilders/thinkingPartnerContract",
"src/lib/contextBuilders/droppedHistorySummary",
@@ -527,6 +540,7 @@
"src/agent/handlePrompt/applyAutoContinuation",
"src/features/approval/approvalQueue",
"src/intelligence/confidenceEngine",
"src/core/services",
"src/features/providers"
]
},
@@ -577,9 +591,9 @@
]
},
"src/config.ts": {
"mtimeMs": 1784510604793.408,
"size": 42409,
"lines": 727,
"mtimeMs": 1784602367128.109,
"size": 43582,
"lines": 745,
"role": "",
"imports": []
},
@@ -2410,9 +2424,9 @@
]
},
"src/intelligence/investigationPipeline.ts": {
"mtimeMs": 1784517973427.466,
"size": 13722,
"lines": 256,
"mtimeMs": 1784521742026.5295,
"size": 15022,
"lines": 282,
"role": "Investigation Pipeline — \"파일명만 보고 상상하는 조사\" 를 구조적으로 차단. (v2.2.309) 문제: 소형 로컬 모델은 <listfiles> 로 파일명 목록을 받으면 <readfile> 을 부르지 않고 이름에서 내용을 상상해 조사 결과를 지어낸다 (lazy tool-use 할루시네이션). 해법 3중: ① 증거 게이트 — 조사형 요청 ",
"imports": [
"src/config"
@@ -2508,6 +2522,13 @@
"src/intelligence/reflectionStore"
]
},
"src/intelligence/subQuestions.ts": {
"mtimeMs": 1784605847771.3826,
"size": 4647,
"lines": 85,
"role": "[v2.2.318] 하위 질문 체크리스트 — \"질문 3개에 하나도 직접 답하지 않는\" 실사례 대응. 사용자가 한 메시지에 물음을 여러 개 명시하면(\"어떤 주제인지, 퀄리티는 어떤지, 도움이 될지\") 각 물음이 답변에서 다뤄지는지를 결정론으로 관리한다: 1) 프롬프트에서 물음 절(clause)을 규칙 기반 추출 (LLM 없음) 2) 답변 전: \"각 물음에 별",
"imports": []
},
"src/intelligence/taskEvalHarness.ts": {
"mtimeMs": 1781144360998.8086,
"size": 7942,
@@ -2517,6 +2538,15 @@
"src/intelligence/requirementGraph"
]
},
"src/intelligence/turnIntentBrief.ts": {
"mtimeMs": 1784524229904.1582,
"size": 7105,
"lines": 121,
"role": "[v2.2.316] 턴 의도 브리핑 — \"질문 의도를 판단하지 못한다\" 문제의 구조적 해결. 진단: 의도 브리핑(왜 묻는지·진짜 궁금증·답의 용도 추출→주입)은 멀티에이전트 보고서 경로(v2.2.301)에만 있었고, 일반 채팅 턴은 \"[답변 전 이해 원칙]\" 4줄짜리 추상 지시뿐이었다. 소형 로컬 모델은 추상 지시(\"의도를 파악하라\")를 실행하지 못한다 —",
"imports": [
"src/utils"
]
},
"src/lib/contextBuilders/astraModeArchitecture.ts": {
"mtimeMs": 1779764602634.5583,
"size": 3982,
@@ -2650,22 +2680,23 @@
"imports": []
},
"src/lib/contextBuilders/multiAgentRouting.ts": {
"mtimeMs": 1783907905794.681,
"size": 5728,
"lines": 103,
"mtimeMs": 1784523758683.9956,
"size": 6310,
"lines": 111,
"role": "",
"imports": [
"src/config",
"src/lib/contextManager",
"src/lib/contextBuilders/promptDetection",
"src/lib/contextBuilders/astraModeArchitecture",
"src/lib/contextBuilders/localProjectIntent"
"src/lib/contextBuilders/localProjectIntent",
"src/features/web/webFetch"
]
},
"src/lib/contextBuilders/outputSanitization.ts": {
"mtimeMs": 1784019840678.9001,
"size": 5958,
"lines": 108,
"mtimeMs": 1784522459809.4607,
"size": 9673,
"lines": 175,
"role": "모델 출력 후처리 (post-stream sanitization). 모두 stateless pure transform. 1) sanitizeAssistantContent — 모델이 답변에 흘려보낸 내부 마커 (rationale, reasoning channels, Harmony/GPT-OSS 채널 마커, [PROBLEM]/[GOAL]/[REASONING] ",
"imports": []
},
@@ -2781,9 +2812,9 @@
"imports": []
},
"src/lib/contextBuilders/urlContext.ts": {
"mtimeMs": 1781491584068.7393,
"size": 5546,
"lines": 108,
"mtimeMs": 1784602315425.4807,
"size": 12372,
"lines": 234,
"role": "URL 컨텍스트 빌더 — 채팅 프롬프트에 URL 이 있으면 본문을 추출해 실데이터로 주입. 문제: /wikify 는 URL 에 접근하지만(브리지 /api/web-extract), 일반 채팅에 URL 을 주면 추출 경로가 없어 모델이 \"접근할 수 없습니다\"라고 답하거나 내용을 추측했다. v2: Bridge 100% 의존이 두 번째 공백이었다 — Bridge ",
"imports": [
"src/utils",
@@ -3994,9 +4025,9 @@
]
},
"tests/investigationPipeline.test.ts": {
"mtimeMs": 1784518245844.1465,
"size": 9847,
"lines": 193,
"mtimeMs": 1784521853054.2844,
"size": 11267,
"lines": 217,
"role": "Investigation Pipeline — 파일명만 보고 상상하는 헛조사 차단 3중 방어. (v2.2.309) ① 조사형 요청 감지 + 증거 게이트 ② 강제 정독 Map + 해시 캐시 ③ Hollow 감지",
"imports": [
"src/intelligence/investigationPipeline"
@@ -4104,6 +4135,15 @@
"src/lib/contextBuilders/multiAgentRouting"
]
},
"tests/lsepClosersAndLeaks.test.ts": {
"mtimeMs": 1784523140472.9927,
"size": 3378,
"lines": 63,
"role": "[v2.2.314] 두 실사례 가드: 1) LSEP 마커 뒤 \"마무리 인사\"만 남고 본문이 추론 구간에 갇혀 증발한 답변. 2) \"요청 요약/사용자 의도 추론/핵심 확인 질문\" 내부 스캐폴딩 섹션 유출.",
"imports": [
"src/lib/contextBuilders/outputSanitization"
]
},
"tests/meetPrompt.test.ts": {
"mtimeMs": 1782114707092.5818,
"size": 3643,
@@ -4338,6 +4378,16 @@
"src/features/secondBrainTrace"
]
},
"tests/sectionedCompletion.test.ts": {
"mtimeMs": 1784521835807.1162,
"size": 4361,
"lines": 97,
"role": "[v2.2.313] 파트별 완성 — 길이 한계에 닿은 보고서를 남은 섹션 단위로 나눠 생성해 한 문서로 통합. \"더 좁은 주제로 나눠 질문하세요\" 떠넘기기의 대체.",
"imports": [
"src/agent/handlePrompt/sectionedCompletion",
"src/agent"
]
},
"tests/selfAssessContext.test.ts": {
"mtimeMs": 1781232946761.048,
"size": 3413,
@@ -4435,6 +4485,15 @@
"src/agent/actions/stripForDisplay"
]
},
"tests/subQuestions.test.ts": {
"mtimeMs": 1784605807159.133,
"size": 2750,
"lines": 57,
"role": "[v2.2.318] 하위 질문 체크리스트 — \"물음 3개에 하나도 직접 답하지 않는\" 실사례 가드.",
"imports": [
"src/intelligence/subQuestions"
]
},
"tests/systemPrompt.test.ts": {
"mtimeMs": 1779764602687.5603,
"size": 1487,
@@ -4493,6 +4552,15 @@
"src/core/transaction"
]
},
"tests/turnIntentBrief.test.ts": {
"mtimeMs": 1784533325652.0085,
"size": 3596,
"lines": 73,
"role": "[v2.2.316] 턴 의도 브리핑 — \"질문 의도를 판단하지 못한다\" 문제의 구조적 해결. 게이팅(잡담 제외) / JSON 파싱 내성 / 주입 블록의 근거-경로 강제를 검증.",
"imports": [
"src/intelligence/turnIntentBrief"
]
},
"tests/urlContext.test.ts": {
"mtimeMs": 1781239218670.592,
"size": 2655,
@@ -4522,6 +4590,16 @@
"src/features/web/webFetch"
]
},
"tests/webFetchNotice.test.ts": {
"mtimeMs": 1784601240938.898,
"size": 4616,
"lines": 77,
"role": "[v2.2.315] 웹 실접속 결정론 표시 — \"사이트 분석 요청에 실접속 없이 일반론 답변\" (koritips.com 실사례) 재발 방지. 접속 실패는 답변 상단 경고, 성공은 하단 출처.",
"imports": [
"src/lib/contextBuilders/urlContext",
"src/lib/contextBuilders/multiAgentRouting"
]
},
"tests/wikiFormat.test.ts": {
"mtimeMs": 1783044027299.6238,
"size": 3405,
@@ -4845,7 +4923,7 @@
"imports": []
},
"docs/records/ConnectAI/chronicle.config.json": {
"mtimeMs": 1784521189700.969,
"mtimeMs": 1784607768925.8318,
"size": 371,
"lines": 11,
"role": "JSON configuration",
@@ -5243,6 +5321,34 @@
"role": "ADR: 일단 조건을 하나 더 추가할께. 계열사는 하고 싶어 하지 않아. 우리한테 업무를 주는게 추가 업무로 이어진다고 생각해. 해서 이걸 뒤집을 정도로...",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0057-e-wiki-connectai-프로젝트-분석해줘.md": {
"mtimeMs": 1784521304979.044,
"size": 1396,
"lines": 19,
"role": "ADR: E:\\Wiki\\connectai 프로젝트 분석해줘.",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0058-e-wiki-connectai-프로젝트-분석해-그리고-내용을-출력해줘.md": {
"mtimeMs": 1784522265657.1863,
"size": 1384,
"lines": 19,
"role": "ADR: E:\\Wiki\\connectai 프로젝트 분석해 그리고 내용을 출력해줘.",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0059-https-koritips-com-사이트에-대한-분석-및-평가해줘-예상되는-주요-구독자는-누구일-것인지-글의.md": {
"mtimeMs": 1784533698646.8413,
"size": 1628,
"lines": 19,
"role": "ADR: HTTPS://KORITIPS.COM 사이트에 대한 분석 및 평가해줘. 예상되는 주요 구독자는 누구일 것인지, 글의 퀄리티는 어떠한지,",
"imports": []
},
"docs/records/ConnectAI/decisions/ADR-0060-https-www-koritips-com-분석해줘-어떠한-주제로-블로그가-운영되고-있는지-글의-퀄리티는-어떠.md": {
"mtimeMs": 1784534124012.3115,
"size": 1686,
"lines": 19,
"role": "ADR: https://www.koritips.com 분석해줘. 어떠한 주제로 블로그가 운영되고 있는지, 글의 퀄리티는 어떠한지, 검색해서 들어온 사람이...",
"imports": []
},
"docs/records/ConnectAI/development/2026-05-02_answer-format-readability-tuning.md": {
"mtimeMs": 1778028987330.4185,
"size": 1564,
@@ -5621,6 +5727,27 @@
"role": "Development Log: 지금까지 너는 나에게 아이디어, 핵심 내용, 기대 효과 내용으로 써줬는데. 법정 의무 교육은 다른 포멧으로 줬어 기대 효과를 써줘. 법정 의무 ...",
"imports": []
},
"docs/records/ConnectAI/development/2026-07-21_https-caliverse-io-사이트에-대한-분석해줘_implementation.md": {
"mtimeMs": 1784602271893.2676,
"size": 1708,
"lines": 22,
"role": "Development Log: https://caliverse.io 사이트에 대한 분석해줘.",
"imports": []
},
"docs/records/ConnectAI/development/2026-07-21_https-koritips-com-사이트에-대한-분석하고-어떠한-주제로-구성되어-있는지-사이트의-목표는-무엇_implementation.md": {
"mtimeMs": 1784607768898.34,
"size": 1725,
"lines": 22,
"role": "Development Log: https://koritips.com 사이트에 대한 분석하고 어떠한 주제로 구성되어 있는지, 사이트의 목표는 무엇인지.",
"imports": []
},
"docs/records/ConnectAI/development/2026-07-21_https-www-koritips-com-분석해줘-어떠한-주제로-블로그가-운영되고-있는지-글의-퀄리티는-어떠_implementation.md": {
"mtimeMs": 1784601796252.6404,
"size": 1572,
"lines": 22,
"role": "Development Log: https://www.koritips.com 분석해줘. 어떠한 주제로 블로그가 운영되고 있는지, 글의 퀄리티는 어떠한지, 검색해서 들어온 사람이...",
"imports": []
},
"docs/records/ConnectAI/discussions/2026-05-13_volumes-data-project-antigravity-connectai-이-프로젝트-작업-할-거야.md": {
"mtimeMs": 1778720117404.2578,
"size": 668,
@@ -5698,6 +5825,13 @@
"role": "Discussion: 우리 개발실은 가우시안 스필리터, 그리고 월마트에서 이머시브 스토어, 그리고 ai로 영상, 사운드 제작팀이 있어. 인원은 30명정도야. 여기에는...",
"imports": []
},
"docs/records/ConnectAI/discussions/2026-07-20_e-wiki-connectai-프로젝트-분석해줘.md": {
"mtimeMs": 1784522127183.7183,
"size": 577,
"lines": 16,
"role": "Discussion: E:\\Wiki\\connectai 프로젝트 분석해줘.",
"imports": []
},
"docs/records/ConnectAI/discussions/2026-07-20_e-wiki-connectai-프로젝트를-분석하고-구조에-대해서-설명해줘-2.md": {
"mtimeMs": 1784509596722.4983,
"size": 514,
@@ -5783,9 +5917,9 @@
"imports": []
},
"docs/records/ConnectAI/timeline.md": {
"mtimeMs": 1784517524755.3872,
"size": 26819,
"lines": 431,
"mtimeMs": 1784607768902.889,
"size": 28140,
"lines": 455,
"role": "Project Timeline",
"imports": []
},