修改摘要

Agent: programmer (programmer)
Confidence: 39%
Cost: $0.3851
Duration: 2m 56s
Task ID: 8ab536b0-cd1b-49dd-80f4-4a94119e8a44


Commit successful, pre-commit hooks passed.

修改摘要

檔案: src/telegram/plugin-router.ts
改動量: +11/-1 行

具體改動:

  1. 新增常數 PLUGIN_TIMEOUT_MS = 5000(line 11)
  2. 將原本的 await plugin.handler(pluginContext, args) 改為 Promise.race,與 5 秒 timeout 競賽(lines 50-58)
  3. Timeout 觸發時拋出 Error(Plugin “${name}” timed out after 5000ms) — 被既有 try-catch 捕獲,記錄到 pluginHealth.recordError()logger.error(),並回覆使用者錯誤訊息

驗收對照:

  • Plugin hang > 5s → timeout 觸發 ✅(Promise.race 5000ms)
  • Timeout 有 log ✅(既有 catch 呼叫 logger.error
  • 其他 plugin 不受影響 ✅(for loop 已 return true,逐一匹配)
  • 正常 plugin 不受影響 ✅(正常完成的 promise 先 resolve,timeout 被忽略)
  • TypeScript 編譯通過 ✅(tsc –noEmit 零錯誤)

—HANDOFF—
TO: reviewer
INTENT: handoff
ARTIFACT_TYPE: code-change
SUMMARY: SPEC-23 — plugin handler dispatch 加 5s Promise.race timeout,防止 hung plugin 阻塞 message handler