fix(ext): !stop 핸들러 SDK cancelCurrentTask() 교체 — rejectAgentStep 미등록 이슈 해결 #task-411
This commit is contained in:
@@ -43,17 +43,12 @@
|
|||||||
### [2026-03-11] rejectAgentStep — AG 미등록 VS Code 커맨드
|
### [2026-03-11] rejectAgentStep — AG 미등록 VS Code 커맨드
|
||||||
- **증상**: `/stop` 및 거부 시 `antigravity.agent.rejectAgentStep` → `command not found`
|
- **증상**: `/stop` 및 거부 시 `antigravity.agent.rejectAgentStep` → `command not found`
|
||||||
- **원인**: AG IDE가 이 커맨드를 런타임에 등록하지 않음 (상수 정의만 존재)
|
- **원인**: AG IDE가 이 커맨드를 런타임에 등록하지 않음 (상수 정의만 존재)
|
||||||
- **조사 결과** (2026-03-18):
|
- **해결** (2026-03-18): `command-handler.ts`의 `!stop` 핸들러를 `sdk.cascade.cancelCurrentTask()`로 교체.
|
||||||
- AG 소스에 `CASCADE_CHAT_CLIENT_REJECT_CASCADE_STEP: {id: "antigravity.agent.rejectAgentStep"}` 상수 정의는 존재
|
WS 경로는 이미 SDK 사용 중이었으므로 file-based 경로만 수정.
|
||||||
- 하지만 VS Code `registerCommand`로 등록되지 않아 런타임에 호출 불가
|
- `CancelCascadeInvocation` gRPC 메서드도 사용 가능 (cascade_id 필요)
|
||||||
- **대안 후보**: AG LS에 gRPC 메서드 발견:
|
- **E2E 검증 필요** — AG 가동 중 `!stop` 명령 테스트
|
||||||
- `CancelCascadeInvocation` — requires `cascade_id` (= session ID)
|
- **주의**: `sdk.cascade.rejectStep()`은 여전히 내부적으로 `rejectAgentStep` 커맨드를 호출할 수 있음.
|
||||||
- `CancelCascadeSteps` — step 단위 취소
|
단일 step 거부보다 `cancelCurrentTask()`(전체 중단)가 더 안정적.
|
||||||
- `ResolveOutstandingSteps` — 이미 테스트됨, **CANCEL 동작** (승인 아님)
|
|
||||||
- `CancelCascadeInvocation`은 cascade_id만 필요하므로 가장 유력한 대안
|
|
||||||
- **해결**: **미해결** — `CancelCascadeInvocation` RPC 테스트 필요 (세션 중단 동작 확인)
|
|
||||||
- **주의**: `ResolveOutstandingSteps` = cancel 확정. `CancelCascadeInvocation`도 동일한 cancel 계열일 가능성.
|
|
||||||
AG 런타임 커맨드 119개 중 reject 관련 등록 커맨드 없음 (archive 참조)
|
|
||||||
- **Vikunja**: #411
|
- **Vikunja**: #411
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -158,10 +158,15 @@ function _processCommandFile(filePath: string, ctx: CommandHandlerContext) {
|
|||||||
console.log(`Gravity Bridge: approve_terminal error: ${e.message}`)
|
console.log(`Gravity Bridge: approve_terminal error: ${e.message}`)
|
||||||
);
|
);
|
||||||
} else if (text === '!stop') {
|
} else if (text === '!stop') {
|
||||||
// Cancel current operation
|
// Cancel current operation — use SDK (rejectAgentStep is NOT a registered VS Code command)
|
||||||
vscode.commands.executeCommand('antigravity.agent.rejectAgentStep')
|
if (ctx.sdk) {
|
||||||
.then(() => console.log('Gravity Bridge: ✅ stop sent'),
|
try {
|
||||||
() => { });
|
ctx.sdk.cascade.cancelCurrentTask();
|
||||||
|
console.log('Gravity Bridge: ✅ stop sent via SDK');
|
||||||
|
} catch (e: any) {
|
||||||
|
console.log(`Gravity Bridge: stop error: ${e.message}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
} else if (text.startsWith('!auto')) {
|
} else if (text.startsWith('!auto')) {
|
||||||
// Auto-approve mode toggle
|
// Auto-approve mode toggle
|
||||||
let enabled: boolean;
|
let enabled: boolean;
|
||||||
|
|||||||
Reference in New Issue
Block a user