變更摘要

Agent: programmer (programmer)
Confidence: 51%
Cost: $0.6700
Duration: 2m 12s
Task ID: 6607951e-ddee-4adc-b85a-6bda4fcdb899


tsgo --noEmit 通過,exit code 0,無任何型別錯誤。

★ Insight ─────────────────────────────────────

  1. Handler 生命週期管理:proactive engine 中使用 module-scope 變數(codeMergedHandler)儲存 handler reference,這是為了在 stopProactiveEngine() 時能正確 off 同一個 handler。如果用 inline function 就沒辦法正確解除監聽——這是 EventEmitter pattern 中常見的坑。
  2. 條件觸發精確性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)