docs: devlog #006 + known-issues !stop stale primitive update #task-410
This commit is contained in:
@@ -40,12 +40,12 @@
|
||||
|
||||
## 미해결 이슈
|
||||
|
||||
### [2026-03-11] rejectAgentStep / !stop — AG 미등록 커맨드 + 렌더러 전용 함수
|
||||
- **증상**: `!stop` 명령이 AI를 멈추지 못함. 로그: "No active cascade to cancel"
|
||||
- **원인**: (1) `antigravity.agent.rejectAgentStep`은 AG 미등록 커맨드. (2) 대체한 `getActiveCascadeId()`는 **렌더러(DOM) 전용 함수** (`document.querySelector` 사용) — Extension host에서 항상 `undefined` 반환
|
||||
- **해결** (2026-03-18): `getActiveSessionId()` 콜백 추가 — step-probe가 `GetAllCascadeTrajectories` 폴링으로 추적하는 `activeSessionId` 사용. 이 ID는 이미 `GetCascadeTrajectorySteps` RPC의 `cascadeId` 파라미터로 사용되는 동일한 값 (`d55b6b9`)
|
||||
- **주의**: **SDK의 renderer-side 코드와 extension-host-side 코드 구분 필수**. `window.__agSDKTitles`는 DOM 전용, `TitleManager` 클래스는 extension host 전용.
|
||||
- **Vikunja**: #411
|
||||
### [2026-03-11] rejectAgentStep / !stop — AG 미등록 커맨드 + 렌더러 전용 함수 + 스테일 프리미티브
|
||||
- **증상**: `!stop` 명령이 AI를 멈추지 못함. 로그: "No active cascade" / "no session tracked yet"
|
||||
- **원인**: (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 v0.4.6): `step-probe.ts`에서 `getActiveSessionId()` getter 함수 export → extension.ts closures에서 `getStepProbeSessionId()` 호출. 이제 step-probe의 live `ctx.activeSessionId`를 직접 읽음 (`ab0c116`)
|
||||
- **주의**: JS에서 **string/number는 프리미티브라 참조 전달 불가** — 객체 속성을 공유하려면 getter 함수나 객체 래퍼 사용 필수
|
||||
- **Vikunja**: #411, #410
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -7,3 +7,4 @@
|
||||
| 003 | 06:50~07:05 | !stop 핸들러 SDK cancelCurrentTask() 교체 + VSIX 재빌드/설치 | `759dab5` | ✅ |
|
||||
| 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` | ✅ |
|
||||
| 006 | 08:25~09:15 | !stop 4차 수정 — activeSessionId 스테일 프리미티브 버그. extension.ts closure가 module-level string(불변) 참조 → step-probe getter export로 교체 + VSIX v0.4.6 | `ab0c116` | ✅ |
|
||||
|
||||
@@ -438,7 +438,7 @@ async function activate(context) {
|
||||
bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile,
|
||||
onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; },
|
||||
recentDiscordSentTexts,
|
||||
getActiveSessionId: () => activeSessionId,
|
||||
getActiveSessionId: () => (0, step_probe_1.getActiveSessionId)(),
|
||||
}, data);
|
||||
},
|
||||
onInstanceUpdate: (count, instances) => {
|
||||
@@ -562,7 +562,7 @@ async function activate(context) {
|
||||
bridgePath, projectName, sdk, ls: sdk?.ls, autoApproveEnabled, logToFile,
|
||||
onAutoApproveChanged: (enabled) => { autoApproveEnabled = enabled; },
|
||||
recentDiscordSentTexts,
|
||||
getActiveSessionId: () => activeSessionId,
|
||||
getActiveSessionId: () => (0, step_probe_1.getActiveSessionId)(),
|
||||
});
|
||||
// Response watcher is now initialized by initStepProbe() above
|
||||
// Register basic commands
|
||||
|
||||
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user