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 行
具體改動:
- 新增常數
PLUGIN_TIMEOUT_MS = 5000(line 11) - 將原本的
await plugin.handler(pluginContext, args)改為Promise.race,與 5 秒 timeout 競賽(lines 50-58) - 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