fix(bridge): step structure discovery + approval watcher + AI text relay

- plannerResponse.response = user-facing text field (confirmed)
- step.runCommand.commandLine = command (not toolCall.argumentsJson)
- Add response watcher: bridge/response/ → ResolveOutstandingSteps RPC
- Fix AI text: use modifiedResponse/response, last-wins, dedup
- Fix flooding: slice(-delta) to skip old steps on reload
- Bot: 404 cache invalidation for deleted Discord channels
This commit is contained in:
2026-03-08 02:29:17 +09:00
parent 876143d397
commit 0c3d6cdb6d
6 changed files with 488 additions and 159 deletions

View File

@@ -3,3 +3,4 @@
| # | 시간 | 작업 | 커밋 | 상태 |
|---|------|------|------|------|
| 1 | 01:00 | Extension↔Bot 프로토콜 불일치 3건 수정 + sql-wasm 번들링 | `e4dc1b1` | 🔧 |
| 2 | 01:45~02:25 | Discord Bridge 디버깅: step 구조 파악, 승인 버튼, AI 텍스트 릴레이 | TBD | ✅ |

View File

@@ -0,0 +1,47 @@
# Discord Bridge — Step 구조 파악 및 3대 기능 수정
- **시간**: 2026-03-08 01:45~02:25
- **Commit**: TBD (이 파일과 함께 커밋)
## 결정 사항
### plannerResponse 구조 (확정)
`GetCascadeTrajectorySteps` RPC가 반환하는 `PLANNER_RESPONSE` step의 실제 구조:
```
plannerResponse: {
response: "사용자 대면 텍스트", ← 핵심 필드
modifiedResponse: "수정된 버전",
thinking: "내부 사고 (SKIP)",
thinkingSignature: "암호화 해시 (SKIP)",
messageId: "bot-xxx",
toolCalls: [{name, argumentsJson}],
thinkingDuration: "0.9s",
stopReason: "STOP_REASON_STOP_PATTERN"
}
```
### RUN_COMMAND 구조 (확정)
```
step.runCommand: {
commandLine: "echo ...", ← 핵심 필드
proposedCommandLine: "echo ...",
cwd: "c:\\Users\\...",
waitMsBeforeAsync: "10000",
blocking: true,
autoRunDecision: "AUTO_RUN_DECISION_DEFAULT_DENY"
}
```
- `step.toolCall`은 존재하지 않음 — `step.runCommand`에 직접 필드
### startStepIndex 무시 문제
`GetCascadeTrajectorySteps({ startStepIndex })` — API가 파라미터를 무시하고 전체 step 반환.
워크어라운드: `allSteps.slice(-e.delta)`로 마지막 N개만 처리.
### 승인 RPC
- `HandleCascadeUserInteraction``socket hang up` (실패)
- `ResolveOutstandingSteps` → 성공 (폴백으로 사용)
## 미완료
- 승인 버튼 Discord→Extension→LS 경로: `HandleCascadeUserInteraction` 파라미터 정확히 확인 필요
- AI 텍스트: 긴 응답(4000자+)의 Discord 분할 표시 테스트 안됨
- 대화형 짧은 응답이 정상 전달되는지 최종 확인 필요