1e9900bed3
- Protocol: AgentFnResult = string | { output, childThread }, RoleOutput.childThread,
ThreadContext.bundleHash for parent state lookup
- Runtime: create-workflow normalizes AgentFnResult, propagates childThread in RoleOutput
- Engine: ExecuteThreadOptions.parentStateHash, appendStateForStep writes childThread,
putStartNode uses parentStateHash
- workflowAsAgent: reads parent head state from threads.json, passes parentStateHash
to child, returns { output, childThread: rootHash }
- Integration test: 4 cases verifying bidirectional Merkle links (306 lines)
Phase 2 of #194 (Merkle Call Stack). Closes #196.
小橘 <xiaoju@shazhou.work>
@uncaged/workflow-execute
Thread engine: execution, fork/GC, extract pipeline, supervisor/worker wiring, and workflow-as-agent.
What This Package Does
It runs WorkflowFn generators against disk-backed threads, integrates CAS and registry-backed extract (createExtract), coordinates LLM tool usage via @uncaged/workflow-reactor, handles fork plans and garbage collection, and exposes workflowAsAgent for nesting workflows.
Key Exports
From src/index.ts:
- Engine:
createWorkflow(engine-local re-export),executeThread,getWorkerHostScriptPath - Fork / parse:
buildForkPlan,parseThreadDataJsonl,selectForkHistoricalSteps,tryParseRoleStepRecord,tryParseWorkflowResultRecord - GC / pause:
garbageCollectCas,createThreadPauseGate - Engine types:
ExecuteThreadIo,ExecuteThreadOptions,ForkHistoricalStep,ForkPlan,GcResult,ParsedThreadStartRecord,PrefilledDiskStep,SupervisorDecision,ThreadPauseGate - Extract:
buildExtractUserContent,createExtract,extractFunctionToolFromZodSchema,llmErrorToCause,llmExtract, typesExtractFn,ExtractThreadContext,LlmError,LlmExtractArgs - Agent composition:
workflowAsAgent,WorkflowAsAgentOptions
Dependencies
- Workspace:
@uncaged/workflow-protocol,@uncaged/workflow-runtime,@uncaged/workflow-util,@uncaged/workflow-cas,@uncaged/workflow-reactor,@uncaged/workflow-register - npm:
yaml - Peer:
zod^4
@uncaged/workflow-reactor is used for LLM-backed extract and supervisor flows (extract-fn.ts, supervisor.ts).
Usage
import { executeThread } from "@uncaged/workflow-execute";
// Typical callers are CLI/tests that supply ExecuteThreadIo (paths, CAS, abort, logger, …).