diff --git a/cypher-executor/src/lib/component-loader.ts b/cypher-executor/src/lib/component-loader.ts index 3ad8595..960e8e8 100644 --- a/cypher-executor/src/lib/component-loader.ts +++ b/cypher-executor/src/lib/component-loader.ts @@ -211,7 +211,15 @@ function makeTriggerWorkflowRunner(env: Bindings): ComponentRunner { if (wait) { const r = await executeWebhookGraph(env, record.graph, triggerContext, workflowName, apiKey); - return { success: r.success, triggered_workflow: workflowName, sub_result: r }; + // paused 是預期狀態(claude_api 等待外部 callback resume),不算失敗 + // executeWebhookGraph 內部把 ExecutionError + "paused at node X" 包成 success:false + 含 error 字串 + const isPaused = !r.success && typeof r.error === 'string' && /workflow paused/i.test(r.error); + return { + success: r.success || isPaused, + triggered_workflow: workflowName, + status: r.success ? 'completed' : (isPaused ? 'paused_awaiting_resume' : 'failed'), + sub_result: r, + }; } else { // fire-and-forget — 不 await,但因為沒拿到 ctx.waitUntil,這裡 promise 可能被 cancel // 目前不啟用,留 wait=true 為預設。未來想要 fire-and-forget 需 plumb ExecutionContext