For AI agents: the complete documentation index is available at https://a3s-lab.github.io/Flow/v1.0.0/en/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/Flow/v1.0.0/en/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/Flow/v1.0.0/en/nodes/wait.md.

Wait until flow.wait

A wait suspends the run until a deterministic UTC instant. It fits cooling periods, scheduled execution, business deadlines, and delayed retries. Once the deadline is committed, the current worker is released. The scheduler delivers the run again when the time is due, and replay continues through resumed. No thread or process needs to remain occupied while the run waits.

Deadline expression

resume_at is a date-time expression that can read start input or a committed upstream result. It must resolve to an absolute timestamp with a timezone. Do not recalculate a relative duration during every replay because a restart could keep moving the deadline. For a seven-day wait, persist the base time and computed deadline in input or a task result, then have this node read the final instant.

If the deadline is already in the past when scheduled, the run continues as soon as the scheduler processes it. A wait is not a terminal timeout and does not fail a run by itself. When expiry should end the process, wake through this node and then enter flow.timeout with the same persisted deadline. Use a signal or hook for external messages instead of replacing an event boundary with frequent polling.

Scheduling and recovery checks

Incoming control uses in and execution resumes from resumed. Production needs due-time scanning or targeted wake-up, synchronized clocks, bounded scan batches, and duplicate-delivery handling. Test future and expired timestamps, timezone offsets, process and scheduler restarts, and duplicate wake-ups for one run. If history already contains the resume event, a worker must not create another wait decision.

Use it to suspend a run until an absolute UTC instant. It fits cooling periods, scheduled work, business deadlines, and deterministic retry windows.

Runtime behavior

After the deadline is committed, the worker is released. The scheduler redelivers the run when due and replay continues from the resumed port.

Node contract

Type
flow.wait
Role
Durable runtime command
Runtime binding
wait_until
Durable identity
Graph node ID

Configuration properties

PropertyType and controlDefaultRules
resume_atResume time (UTC)dictA3SFlowExpressionInput{"apiVersion":"a3s.dev/flow-expression/v1","expression":{"op":"field","path":"input.deadline"}}Enter a UTC timestamp ending in Z, or choose a workflow field that provides one.Required

Ports

DirectionPort IDKindValue types
InputinIncontrolFlowControl
Inputresume_atResume atdataDateTime
OutputresumedResumedcontrolFlowControl

Node JSON example

The CLI creates the same structure from manifest defaults. Canvas position, title, and selection are presentation data.

workflow.json
{
  "position": {
    "x": 320,
    "y": 160
  },
  "id": "example-flow-wait",
  "data": {
    "resume_at": {
      "apiVersion": "a3s.dev/flow-expression/v1",
      "expression": {
        "op": "field",
        "path": "input.deadline"
      }
    },
    "type": "flow.wait"
  }
}

CLI usage

Inspect the installed manifest first, then create the node and validate the complete workflow. Every command emits JSON.

Terminal
a3s-flow node flow.wait --pretty
a3s-flow new flow.wait --id example-flow-wait --pretty
a3s-flow validate workflow.json --pretty
a3s-flow compile workflow.json --pretty
a3s-flow digest workflow.json --pretty

Skill usage

The package includes the a3s-flow Skill. It queries the CLI catalog before creating, validating, compiling, and digesting a workflow.

Prompt
Use $a3s-flow to add the "flow.wait" node to workflow.json, connect valid ports, and validate the result.

CLI usage · Skill usage

Operational notes

  • Use an absolute timestamp with a timezone.
  • Process recovery must not recalculate the deadline.
  • Production needs scheduled scanning or targeted wake-up delivery.