add the async twin of Ts

This commit is contained in:
lda
2026-05-23 23:52:51 +07:00 Verified
parent 998b1943ba
commit 2dc00518b9
6 changed files with 280 additions and 9 deletions
+5 -3
View File
@@ -136,9 +136,11 @@ limits and intended adapter seam.
includes node, condition, foreach, join, and interrupt steps; `Workflow` does
not contain nested workflow/subgraph steps.
- Nested subgraph interruption is not first-class yet. The current
`wf_authoring` subgraph helper wraps a child workflow as an ordinary node and
validates the child output; it does not preserve a child run state that can
interrupt, bubble to the parent, and later resume inside the child.
`wf_authoring` subgraph helpers wrap a child workflow as an ordinary sync or
async node and validate the child output; they do not preserve a child run
state that can interrupt, bubble to the parent, and later resume inside the
child. See `examples/authoring_workflow_as_node.py` for the current
wrapper-node shape.
- Saved workflow-as-node execution with interrupts requires a core runtime
upgrade: nested run state, child-frame trace preservation, interrupt bubbling
with path metadata, and resume back into the child workflow.
+8 -2
View File
@@ -637,11 +637,17 @@ diagnostics before attempting persistent nested resume.
Native subgraphs are not in `wf_core` yet. The current core `Step` model has
node, condition, foreach, join, and interrupt steps, but no subgraph step. The
current `wf_authoring.subgraph_node` helper executes a child workflow as a plain
node and validates the child output. Future saved-workflow-as-node execution
current `wf_authoring.subgraph_node` and `async_subgraph_node` helpers execute
a child workflow as a plain node and validate the child output. The async helper
is explicit because hiding `asyncio.run()` inside the sync wrapper would break
inside already-running event loops. Future saved-workflow-as-node execution
needs a real child run state if child interrupts should pause the parent and
later resume the child.
See `examples/authoring_workflow_as_node.py` for the current wrapper-node
approach. In that example the parent trace sees one node call; the child
workflow's internal trace is not embedded in the parent run state.
Until that core upgrade exists, artifact tooling must not assume that an
interrupting saved workflow can safely be used as a child node. Top-level saved
workflows with interrupt nodes are valid, but nested interrupting workflows