docs: devlog #006 + known-issues !stop stale primitive update #task-410

This commit is contained in:
Variet Worker
2026-03-18 09:20:07 +09:00
parent ab0c116c9e
commit 4a5521dcc3
4 changed files with 10 additions and 9 deletions

View File

@@ -40,12 +40,12 @@
## 미해결 이슈 ## 미해결 이슈
### [2026-03-11] rejectAgentStep / !stop — AG 미등록 커맨드 + 렌더러 전용 함수 ### [2026-03-11] rejectAgentStep / !stop — AG 미등록 커맨드 + 렌더러 전용 함수 + 스테일 프리미티브
- **증상**: `!stop` 명령이 AI를 멈추지 못함. 로그: "No active cascade to cancel" - **증상**: `!stop` 명령이 AI를 멈추지 못함. 로그: "No active cascade" / "no session tracked yet"
- **원인**: (1) `antigravity.agent.rejectAgentStep`은 AG 미등록 커맨드. (2) 대체한 `getActiveCascadeId()`**렌더러(DOM) 전용 함수** (`document.querySelector` 사용) — Extension host에서 항상 `undefined` 반환 - **원인**: (1) `antigravity.agent.rejectAgentStep`은 AG 미등록 커맨드. (2) 대체한 `getActiveCascadeId()`**렌더러(DOM) 전용 함수** — Extension host에서 항상 `undefined` 반환. (3) **v0.4.5 수정도 실패**: `extension.ts``getActiveSessionId: () => activeSessionId`가 module-level 스트링 프리미티브를 참조 — step-probe가 `ctx.activeSessionId`를 업데이트해도 extension.ts의 변수는 불변 (프리미티브 복사)
- **해결** (2026-03-18): `getActiveSessionId()` 콜백 추가 — step-probe가 `GetAllCascadeTrajectories` 폴링으로 추적하는 `activeSessionId` 사용. 이 ID는 이미 `GetCascadeTrajectorySteps` RPC의 `cascadeId` 파라미터로 사용되는 동일한 값 (`d55b6b9`) - **해결** (2026-03-18 v0.4.6): `step-probe.ts`에서 `getActiveSessionId()` getter 함수 export → extension.ts closures에서 `getStepProbeSessionId()` 호출. 이제 step-probe의 live `ctx.activeSessionId`를 직접 읽음 (`ab0c116`)
- **주의**: **SDK의 renderer-side 코드와 extension-host-side 코드 구분 필수**. `window.__agSDKTitles`는 DOM 전용, `TitleManager` 클래스는 extension host 전용. - **주의**: JS에서 **string/number는 프리미티브라 참조 전달 불가** — 객체 속성을 공유하려면 getter 함수나 객체 래퍼 사용 필수
- **Vikunja**: #411 - **Vikunja**: #411, #410
--- ---

View File

@@ -7,3 +7,4 @@
| 003 | 06:50~07:05 | !stop 핸들러 SDK cancelCurrentTask() 교체 + VSIX 재빌드/설치 | `759dab5` | ✅ | | 003 | 06:50~07:05 | !stop 핸들러 SDK cancelCurrentTask() 교체 + VSIX 재빌드/설치 | `759dab5` | ✅ |
| 004 | 07:03~07:15 | !stop 재수정 — cancelCurrentTask→CancelCascadeInvocation RPC (AG 빨간■ 동일) + VSIX 설치 | `8d5940b` | ✅ | | 004 | 07:03~07:15 | !stop 재수정 — cancelCurrentTask→CancelCascadeInvocation RPC (AG 빨간■ 동일) + VSIX 설치 | `8d5940b` | ✅ |
| 005 | 07:50~08:20 | !stop 최종 수정 — getActiveCascadeId (렌더러 전용 DOM) → activeSessionId (step-probe 폴링) + 데이터 흐름 5경로 검증 | `d55b6b9` | ✅ | | 005 | 07:50~08:20 | !stop 최종 수정 — getActiveCascadeId (렌더러 전용 DOM) → activeSessionId (step-probe 폴링) + 데이터 흐름 5경로 검증 | `d55b6b9` | ✅ |
| 006 | 08:25~09:15 | !stop 4차 수정 — activeSessionId 스테일 프리미티브 버그. extension.ts closure가 module-level string(불변) 참조 → step-probe getter export로 교체 + VSIX v0.4.6 | `ab0c116` | ✅ |

View File

@@ -438,7 +438,7 @@ async function activate(context) {
bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile, bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile,
onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; }, onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; },
recentDiscordSentTexts, recentDiscordSentTexts,
getActiveSessionId: () => activeSessionId, getActiveSessionId: () => (0, step_probe_1.getActiveSessionId)(),
}, data); }, data);
}, },
onInstanceUpdate: (count, instances) => { onInstanceUpdate: (count, instances) => {
@@ -562,7 +562,7 @@ async function activate(context) {
bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile, bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile,
onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; }, onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; },
recentDiscordSentTexts, recentDiscordSentTexts,
getActiveSessionId: () => activeSessionId, getActiveSessionId: () => (0, step_probe_1.getActiveSessionId)(),
}); });
// Response watcher is now initialized by initStepProbe() above // Response watcher is now initialized by initStepProbe() above
// Register basic commands // Register basic commands

File diff suppressed because one or more lines are too long