v2.2.18: Dynamic Office Auto-Layout & Legacy Cleanup

This commit is contained in:
g1nation
2026-05-16 23:13:40 +09:00
parent 84b2b0670d
commit c7b596f17a
11 changed files with 138 additions and 116 deletions
+12 -12
View File
@@ -3,15 +3,15 @@
<!-- ASTRA:AUTO-START -->
## Snapshot
- **Workspace**: `ConnectAI` `v2.2.16` _(absolute path varies by environment; resolved from the active VS Code workspace)_
- **Workspace**: `ConnectAI` `v2.2.17` _(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**: 250 source files, ~50,659 lines across 5 top-level modules.
- **Stats**: 250 source files, ~51,189 lines across 5 top-level modules.
## Last Refresh
- **Time**: 2026-05-16T13:21:15.124Z
- **Files newly analysed**: 5
- **Files reused from cache**: 245
- **Time**: 2026-05-16T13:51:21.324Z
- **Files newly analysed**: 8
- **Files reused from cache**: 242
## Directory Map
```mermaid
@@ -64,7 +64,7 @@ flowchart LR
## Modules
### `src/` — 127 files, ~34,442 lines
### `src/` — 127 files, ~34,824 lines
**Sub-directories**
- `src/features/` (54) — Astra Office — public API. 다음 세션에서 추가될 OfficeSnapshot presenter / schema 도 같은 entry 로 노출 예정. 현재 노출: full webview panel H
@@ -97,25 +97,25 @@ flowchart LR
- `src/features/company/dispatcher.ts` (1435 lines) — 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
- `src/features/approval/approvalQueue.ts` (129 lines)
- `src/integrations/telegram/telegramClient.ts` (154 lines)
- `src/features/astraOffice/view/runtime.ts` (1350 lines) — 자동 분리: src/sidebarProvider.ts 4002-5116 (IIFE 본문) 에서 추출. 동작 동등. ${assets.derivedBase} placeholder 는 panelHtml 에서 .replace() 로 실제 값 주입. 다음 세션에서 OfficeSnapshot 기반으로 단계적으로 잘라낼 예정.
- `src/features/astraOffice/view/runtime.ts` (1564 lines) — 자동 분리: src/sidebarProvider.ts 4002-5116 (IIFE 본문) 에서 추출. 동작 동등. ${assets.derivedBase} placeholder 는 panelHtml 에서 .replace() 로 실제 값 주입. 다음 세션에서 OfficeSnapshot 기반으로 단계적으로 잘라낼 예정.
- `src/features/company/agents.ts` (211 lines) — 기본 에이전트 로스터 — 1인 기업 모드의 출고 디폴트. 설계 의도: 소프트웨어/게임 개발 IT 회사의 1인 기업 운영을 가정. 한 사람이 기획 → 디자인 → 개발 → QA → 출시 → 운영/마케팅을 모두 책임질 때 필요한 직군을 빠짐없이 커버하되 역할이 겹치지 않게 분리한다. 직군 구분 (혼동 방지): - 기획자(business) : 무엇을 만들지 정의
- `src/features/company/pixelOfficeState.ts` (286 lines) — Pixel Office — Agent Work Pipeline 상태를 시각화하는 UI Layer 전용 모듈. ─────────────────── 설계 원칙 ─────────────────── 1. Agent 핵심 판단 로직을 절대 바꾸지 않는다. Pipeline 진행, contract 합의, 검수 cycle, 승인 게이트 — 모두 기존 dispatcher
- `src/features/company/sessionStore.ts` (231 lines) — Disk persistence for company-mode session artefacts. Each company turn produces a timestamped directory: <workspaceRoot>/.astra/company/sessions/2026-05-13T21-29/ ├─ brief.md ← CEO's task decompositio
- `src/features/projectArchitecture/scanner.ts` (644 lines) — 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
- `src/lib/contextManager.ts` (275 lines) — Context Manager (컨텍스트 한계 관리) "context length = 132k" 는 "답변을 132k 토큰까지 생성해도 된다" 가 아닙니다. 시스템 프롬프트 + 대화 기록 + 입력 문서 + 생성될 답변 + 여유분 ≤ context length 이 모듈은 요청을 보내기 전에 입력 토큰을 추정하고, - 동적으로 출력 상한(maxTokens)을 계
- `src/extension.ts` (1201 lines)
- `src/extension.ts` (1202 lines)
- `src/features/company/resumeStore.ts` (134 lines) — Disk persistence for company-turn resume state. 각 turn의 sessionDir 안에 resume.json을 두고, dispatcher가 매 의미 있는 시점(plan 확정 / 각 stage 직후 / abort 시점)에 현재 상태를 덮어쓴다. 재개 시점에는 이 파일을 읽어 nextIndex 부터 dispatch 재개.
- `src/core/astraPath.ts` (50 lines) — Astra Path Resolver (경로 해결기) Astra의 모든 데이터 파일(.astra 디렉토리)의 경로를 중앙에서 관리합니다. 확장 프로그램의 설치 경로(extensionUri) 기반으로 .astra 디렉토리를 해결하여, 사용자 프로젝트 루트가 아닌 ConnectAI 패키지 내부에 데이터를 저장합니다. 이 모듈은 AAL(Astra Autonomou
### `media/` — 6 files, ~6,863 lines
### `media/` — 6 files, ~7,011 lines
**Key files**
- `media/sidebar.css` (2016 lines) — Stylesheet
- `media/sidebar.js` (3657 lines)
- `media/sidebar.html` (546 lines) — Astra
- `media/settings-panel.css` (210 lines) — Stylesheet
- `media/settings-panel.html` (164 lines) — Astra Settings
- `media/settings-panel.js` (270 lines)
- `media/settings-panel.html` (244 lines) — Astra Settings
- `media/settings-panel.js` (338 lines)
### `tests/` — 33 files, ~5,811 lines
*Depends on*: `src/`
@@ -328,7 +328,7 @@ Astra는 대표님의 명시적인 승인 하에 로컬 시스템의 강력한
**Designed for High-Performance Decision Making.**
Copyright (C) **g1nation**. All rights reserved.
_Last auto-scan: 2026-05-16T13:21:15.124Z · signature `f2379ce`_
_Last auto-scan: 2026-05-16T13:51:21.324Z · signature `ebf5ecaf`_
<!-- ASTRA:AUTO-END -->
## Purpose
+25 -24
View File
@@ -1,6 +1,6 @@
{
"version": 1,
"generatedAt": "2026-05-16T13:21:15.133Z",
"generatedAt": "2026-05-16T13:51:21.336Z",
"files": {
"src/agent.ts": {
"mtimeMs": 1778936503000,
@@ -259,9 +259,9 @@
"imports": []
},
"src/extension.ts": {
"mtimeMs": 1778937452000,
"size": 62380,
"lines": 1201,
"mtimeMs": 1778938013000,
"size": 62397,
"lines": 1202,
"role": "",
"imports": [
"src/utils",
@@ -362,16 +362,16 @@
"imports": []
},
"src/features/astraOffice/view/officeBody.ts": {
"mtimeMs": 1778937436000,
"size": 3986,
"lines": 102,
"mtimeMs": 1778938908000,
"size": 4112,
"lines": 103,
"role": "",
"imports": []
},
"src/features/astraOffice/view/officeStyles.ts": {
"mtimeMs": 1778937430000,
"size": 20956,
"lines": 342,
"mtimeMs": 1778938908000,
"size": 23999,
"lines": 401,
"role": "",
"imports": []
},
@@ -387,9 +387,9 @@
]
},
"src/features/astraOffice/view/runtime.ts": {
"mtimeMs": 1778937401000,
"size": 62934,
"lines": 1350,
"mtimeMs": 1778939265000,
"size": 73382,
"lines": 1564,
"role": "자동 분리: src/sidebarProvider.ts 4002-5116 (IIFE 본문) 에서 추출. 동작 동등. ${assets.derivedBase} placeholder 는 panelHtml 에서 .replace() 로 실제 값 주입. 다음 세션에서 OfficeSnapshot 기반으로 단계적으로 잘라낼 예정.",
"imports": []
},
@@ -775,16 +775,17 @@
]
},
"src/features/settings/settingsPanelProvider.ts": {
"mtimeMs": 1778674336000,
"size": 21422,
"lines": 489,
"mtimeMs": 1778937992000,
"size": 26837,
"lines": 596,
"role": "",
"imports": [
"src/integrations/telegram/telegramClient",
"src/integrations/telegram/telegramBot",
"src/utils",
"src/lib/discoverModels",
"src/lib/paths"
"src/lib/paths",
"src/features/calendar"
]
},
"src/features/sheets/index.ts": {
@@ -1284,16 +1285,16 @@
"imports": []
},
"media/settings-panel.html": {
"mtimeMs": 1778763966000,
"size": 7678,
"lines": 164,
"mtimeMs": 1778937850000,
"size": 12095,
"lines": 244,
"role": "Astra Settings",
"imports": []
},
"media/settings-panel.js": {
"mtimeMs": 1778256014000,
"size": 11176,
"lines": 270,
"mtimeMs": 1778938082000,
"size": 15189,
"lines": 338,
"role": "",
"imports": []
},
@@ -1860,7 +1861,7 @@
"imports": []
},
"docs/records/ConnectAI/chronicle.config.json": {
"mtimeMs": 1778937290000,
"mtimeMs": 1778937757000,
"size": 416,
"lines": 11,
"role": "JSON configuration",
@@ -1,5 +1,5 @@
{
"result": "Final report with inconsistencies. This should be long enough to pass validation.",
"createdAt": 1778938100767,
"createdAt": 1778939488449,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
"createdAt": 1778938100758,
"createdAt": 1778939488449,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
"createdAt": 1778938100756,
"createdAt": 1778939488444,
"modelVersion": "unknown"
}
@@ -1,5 +1,5 @@
{
"result": "---\nid: stress_conflict_1778938100739\ndate: 2026-05-16T13:28:20.772Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\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- **[PLANNER]** 전략 수립 중... (11ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (6ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (6ms)\n",
"createdAt": 1778938100772,
"result": "---\nid: stress_conflict_1778939488432\ndate: 2026-05-16T13:51:28.450Z\ntype: knowledge_artifact\nstandard: P-Reinforce v3.0\ntags: [automated, connect_ai, brain_sync]\n---\n\n## 📌 Brief Summary\nFinal report with inconsistencies. This should be long enough to pass validation.\n\nFinal report with inconsistencies. This should be long enough to pass validation.\n\n---\n## 💡 Astra의 선제적 제안 (Proactive Next Actions)\nFinal report with inconsistencies. This should be long enough to pass validation.\n---\n## 🛡️ Reliability & Audit Summary\n> [!NOTE]\n> 이 문서는 ConnectAI의 **Intelligent Resilience** 엔진에 의해 검증 및 정제되었습니다.\n\n| Metric | Value | Status |\n| :--- | :--- | :--- |\n| **Conflict Risk** | `60/100` | ⚠️ Medium |\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- **[PLANNER]** 전략 수립 중... (12ms)\n- **[RESEARCHER]** 핵심 정보 수집 및 분석 중... (1ms)\n- **[WRITER]** 최종 리포트 작성 및 편집 중... (4ms)\n",
"createdAt": 1778939488450,
"modelVersion": "unknown"
}
@@ -1,8 +1,8 @@
{
"missionId": "stress_conflict_1778938100739",
"missionId": "stress_conflict_1778939488432",
"status": "completed",
"startTime": "2026-05-16T13:28:20.739Z",
"totalElapsedMs": 33,
"startTime": "2026-05-16T13:51:28.432Z",
"totalElapsedMs": 18,
"results": {
"planner": "Detailed Execution Plan: 1. Research 2. Analyze 3. Write report with high quality.",
"researcher": "[CONFLICT WARNING] 성능이 200% 증가했습니다. vs 그러나 동시에 50% 감소했습니다. 최적화와 성능 저하가 동시에 발견됨.",
@@ -16,30 +16,30 @@
{
"from": "idle",
"to": "planner",
"durationMs": 11,
"durationMs": 12,
"message": "전략 수립 중...",
"ts": "2026-05-16T13:28:20.750Z"
"ts": "2026-05-16T13:51:28.444Z"
},
{
"from": "planner",
"to": "researcher",
"durationMs": 6,
"durationMs": 1,
"message": "핵심 정보 수집 및 분석 중...",
"ts": "2026-05-16T13:28:20.756Z"
"ts": "2026-05-16T13:51:28.445Z"
},
{
"from": "researcher",
"to": "writer",
"durationMs": 6,
"durationMs": 4,
"message": "최종 리포트 작성 및 편집 중...",
"ts": "2026-05-16T13:28:20.762Z"
"ts": "2026-05-16T13:51:28.449Z"
},
{
"from": "writer",
"to": "completed",
"durationMs": 10,
"durationMs": 1,
"message": "미션 완료",
"ts": "2026-05-16T13:28:20.772Z"
"ts": "2026-05-16T13:51:28.450Z"
}
],
"resilienceMetrics": {