Summary
This issue tracks the follow-up activation work deferred from #1496.
PR #1496 extracted safeSendMessage, SendMessageContext, and UnknownErrorTracker into executor-shared.ts (deduplication only). As of that PR, UnknownErrorTracker remains dormant/never instantiated on both sides — executor.ts and dag-executor.ts — meaning the consecutive-UNKNOWN abort guard is available as infrastructure but not active in production.
Work required
- Wire
UnknownErrorTracker into the safeSendMessage call sites in packages/workflows/src/executor.ts
- Wire
UnknownErrorTracker into the safeSendMessage call sites in packages/workflows/src/dag-executor.ts
Open design questions to resolve before implementing
- Tracker lifetime: should the tracker be scoped per-conversation or per-DAG-run?
- Ownership location: where should the tracker be instantiated and held — at the top-level executor, per-node, or passed in via
WorkflowDeps?
- Behavior on abort: what should happen when the threshold is hit in DAG execution — fail the current node, fail the entire DAG run, or surface to the user for a retry decision?
References
Summary
This issue tracks the follow-up activation work deferred from #1496.
PR #1496 extracted
safeSendMessage,SendMessageContext, andUnknownErrorTrackerintoexecutor-shared.ts(deduplication only). As of that PR,UnknownErrorTrackerremains dormant/never instantiated on both sides —executor.tsanddag-executor.ts— meaning the consecutive-UNKNOWN abort guard is available as infrastructure but not active in production.Work required
UnknownErrorTrackerinto thesafeSendMessagecall sites inpackages/workflows/src/executor.tsUnknownErrorTrackerinto thesafeSendMessagecall sites inpackages/workflows/src/dag-executor.tsOpen design questions to resolve before implementing
WorkflowDeps?References