You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An awaited init(agent, { id, uid: null }).dispatch(...) running inside a Cloudflare Workflow step did not promptly settle after the target agent Durable Object was reset by a deployment. The agent trace recorded Durable Object reset because its code was updated, but the caller remained pending until Cloudflare Workflows failed the step with WorkflowInternalError after about five minutes.
The Workflow retry then found the create-only agent instance already present and had to treat it as an existing in-flight conversation. There was no prompt terminal result from the original awaited dispatch.
Reproduction shape
From a Cloudflare Workflow step, await a dispatch to a create-only one-shot agent instance.
Let the agent begin a model turn.
Deploy updated agent code while the turn is active.
Observe the agent operation report a code-update Durable Object reset.
Observe the awaiting Workflow step remain pending, then fail with WorkflowInternalError several minutes later instead of receiving a prompt structured rejection or resumed result.
Expected behavior
After a deployment reset, Flue should either recover the durable submission or settle the awaited dispatch promptly with a structured interruption error. The caller should not remain pending until an outer Cloudflare Workflow platform failure.
Can code-update recovery ensure the original dispatch() promise observes the replacement attempt or terminal settlement?
Can the runtime expose a distinct code-update interruption/recovery outcome so an outer durable orchestrator can retry deterministically?
A regression test where a Cloudflare agent fiber is interrupted by a code update while dispatch() is awaited from a Workflow would cover this boundary.
Environment
@flue/runtime@0.4.0-nightly.202605101957
Cloudflare Workers Durable Objects
Cloudflare Workflows caller
Workers AI model call active at deployment time
The application also had ephemeral cross-turn state that needed to move to usePersistentState; that is being fixed application-side. This issue is specifically about the awaited dispatch remaining pending after the code-update reset.
Summary
An awaited
init(agent, { id, uid: null }).dispatch(...)running inside a Cloudflare Workflow step did not promptly settle after the target agent Durable Object was reset by a deployment. The agent trace recordedDurable Object reset because its code was updated, but the caller remained pending until Cloudflare Workflows failed the step withWorkflowInternalErrorafter about five minutes.The Workflow retry then found the create-only agent instance already present and had to treat it as an existing in-flight conversation. There was no prompt terminal result from the original awaited dispatch.
Reproduction shape
WorkflowInternalErrorseveral minutes later instead of receiving a prompt structured rejection or resumed result.Expected behavior
After a deployment reset, Flue should either recover the durable submission or settle the awaited dispatch promptly with a structured interruption error. The caller should not remain pending until an outer Cloudflare Workflow platform failure.
Questions / suggested checks
dispatch()promise observes the replacement attempt or terminal settlement?dispatch()is awaited from a Workflow would cover this boundary.Environment
@flue/runtime@0.4.0-nightly.202605101957The application also had ephemeral cross-turn state that needed to move to
usePersistentState; that is being fixed application-side. This issue is specifically about the awaited dispatch remaining pending after the code-update reset.