Agent: programmer (
programmer)
Confidence: 51%
Cost: $0.6700
Duration: 2m 12s
Task ID:6607951e-ddee-4adc-b85a-6bda4fcdb899
tsgo --noEmit 通過,exit code 0,無任何型別錯誤。
★ Insight ─────────────────────────────────────
- Handler 生命週期管理:proactive engine 中使用 module-scope 變數(
codeMergedHandler)儲存 handler reference,這是為了在stopProactiveEngine()時能正確off同一個 handler。如果用 inline function 就沒辦法正確解除監聽——這是 EventEmitter pattern 中常見的坑。 - 條件觸發精確性:
task.branchName && task.worktreePath雙重條件確保只有走 PR 流程的 secretary task 才觸發通知。舊流程的 secretary task(例如單純的 commit+push 到 main)不會有 worktree,因此不會誤觸。─────────────────────────────────────────────────
變更摘要
| 檔案 | 改動內容 |
|---|---|
src/core/event-bus.ts |
新增 code:merged event 型別(taskId, prUrl, branchName, agentName) |
src/agents/worker-scheduler.ts |
executeTask() 中 task 完成後,若為 secretary + worktree task,emit code:merged,並從 result 中 regex 提取 PR URL |
src/proactive/engine.ts |
新增 handleCodeMerged() handler 發送通知給 CEO;在 startProactiveEngine() 註冊 code:merged 監聽;在 stopProactiveEngine() 清理 |
驗收對照
| # | 標準 | 狀態 |
|---|---|---|
| 1 | BotEvents 中有 code:merged event 型別定義 |
✅ |
| 2 | Secretary 在 worktree 中完成任務後會 emit code:merged |
✅ |
| 3 | 主意識收到通知訊息,包含 branch name、task ID、PR URL | ✅ |
| 4 | 非 worktree 的 secretary task(舊流程)不觸發通知 | ✅(條件:task.branchName && task.worktreePath) |
| 5 | tsgo --noEmit 通過 |
✅(exit code 0) |