taskflow-core 0.1.8 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +248 -808
  2. package/dist/agents.d.ts +12 -0
  3. package/dist/agents.d.ts.map +1 -1
  4. package/dist/agents.js +29 -1
  5. package/dist/agents.js.map +1 -1
  6. package/dist/cwd-bridge.d.ts +61 -0
  7. package/dist/cwd-bridge.d.ts.map +1 -0
  8. package/dist/cwd-bridge.js +136 -0
  9. package/dist/cwd-bridge.js.map +1 -0
  10. package/dist/detached-runner.js +31 -5
  11. package/dist/detached-runner.js.map +1 -1
  12. package/dist/deterministic.d.ts +8 -0
  13. package/dist/deterministic.d.ts.map +1 -1
  14. package/dist/deterministic.js +23 -1
  15. package/dist/deterministic.js.map +1 -1
  16. package/dist/exec/driver.d.ts +48 -0
  17. package/dist/exec/driver.d.ts.map +1 -0
  18. package/dist/exec/driver.js +410 -0
  19. package/dist/exec/driver.js.map +1 -0
  20. package/dist/exec/events.d.ts +76 -0
  21. package/dist/exec/events.d.ts.map +1 -0
  22. package/dist/exec/events.js +108 -0
  23. package/dist/exec/events.js.map +1 -0
  24. package/dist/exec/fold.d.ts +45 -0
  25. package/dist/exec/fold.d.ts.map +1 -0
  26. package/dist/exec/fold.js +122 -0
  27. package/dist/exec/fold.js.map +1 -0
  28. package/dist/exec/index.d.ts +17 -0
  29. package/dist/exec/index.d.ts.map +1 -0
  30. package/dist/exec/index.js +17 -0
  31. package/dist/exec/index.js.map +1 -0
  32. package/dist/exec/kernel-policy.d.ts +35 -0
  33. package/dist/exec/kernel-policy.d.ts.map +1 -0
  34. package/dist/exec/kernel-policy.js +184 -0
  35. package/dist/exec/kernel-policy.js.map +1 -0
  36. package/dist/exec/step-kinds.d.ts +41 -0
  37. package/dist/exec/step-kinds.d.ts.map +1 -0
  38. package/dist/exec/step-kinds.js +599 -0
  39. package/dist/exec/step-kinds.js.map +1 -0
  40. package/dist/exec/step.d.ts +94 -0
  41. package/dist/exec/step.d.ts.map +1 -0
  42. package/dist/exec/step.js +454 -0
  43. package/dist/exec/step.js.map +1 -0
  44. package/dist/flowir/canonical-hash.d.ts +101 -0
  45. package/dist/flowir/canonical-hash.d.ts.map +1 -0
  46. package/dist/flowir/canonical-hash.js +219 -0
  47. package/dist/flowir/canonical-hash.js.map +1 -0
  48. package/dist/flowir/compile.d.ts +49 -0
  49. package/dist/flowir/compile.d.ts.map +1 -0
  50. package/dist/flowir/compile.js +232 -0
  51. package/dist/flowir/compile.js.map +1 -0
  52. package/dist/flowir/cond.d.ts +76 -0
  53. package/dist/flowir/cond.d.ts.map +1 -0
  54. package/dist/flowir/cond.js +214 -0
  55. package/dist/flowir/cond.js.map +1 -0
  56. package/dist/flowir/index.d.ts +20 -23
  57. package/dist/flowir/index.d.ts.map +1 -1
  58. package/dist/flowir/index.js +47 -35
  59. package/dist/flowir/index.js.map +1 -1
  60. package/dist/flowir/meta.d.ts +4 -4
  61. package/dist/flowir/meta.d.ts.map +1 -1
  62. package/dist/flowir/phasefp.d.ts.map +1 -1
  63. package/dist/flowir/phasefp.js +13 -1
  64. package/dist/flowir/phasefp.js.map +1 -1
  65. package/dist/flowir/schema.d.ts +260 -0
  66. package/dist/flowir/schema.d.ts.map +1 -0
  67. package/dist/flowir/schema.js +234 -0
  68. package/dist/flowir/schema.js.map +1 -0
  69. package/dist/flowir/translate.d.ts.map +1 -1
  70. package/dist/flowir/translate.js +3 -0
  71. package/dist/flowir/translate.js.map +1 -1
  72. package/dist/host/runner-types.d.ts +19 -0
  73. package/dist/host/runner-types.d.ts.map +1 -1
  74. package/dist/index.d.ts +4 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +8 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/interpolate.d.ts +4 -0
  79. package/dist/interpolate.d.ts.map +1 -1
  80. package/dist/interpolate.js +14 -0
  81. package/dist/interpolate.js.map +1 -1
  82. package/dist/rates.d.ts +121 -0
  83. package/dist/rates.d.ts.map +1 -0
  84. package/dist/rates.js +187 -0
  85. package/dist/rates.js.map +1 -0
  86. package/dist/replay.d.ts +43 -50
  87. package/dist/replay.d.ts.map +1 -1
  88. package/dist/replay.js +629 -19
  89. package/dist/replay.js.map +1 -1
  90. package/dist/resources/authority.d.ts +35 -0
  91. package/dist/resources/authority.d.ts.map +1 -0
  92. package/dist/resources/authority.js +67 -0
  93. package/dist/resources/authority.js.map +1 -0
  94. package/dist/resources/backend.d.ts +302 -0
  95. package/dist/resources/backend.d.ts.map +1 -0
  96. package/dist/resources/backend.js +16 -0
  97. package/dist/resources/backend.js.map +1 -0
  98. package/dist/resources/baseline.d.ts +116 -0
  99. package/dist/resources/baseline.d.ts.map +1 -0
  100. package/dist/resources/baseline.js +447 -0
  101. package/dist/resources/baseline.js.map +1 -0
  102. package/dist/resources/canonical-json.d.ts +7 -0
  103. package/dist/resources/canonical-json.d.ts.map +1 -0
  104. package/dist/resources/canonical-json.js +75 -0
  105. package/dist/resources/canonical-json.js.map +1 -0
  106. package/dist/resources/errors.d.ts +23 -0
  107. package/dist/resources/errors.d.ts.map +1 -0
  108. package/dist/resources/errors.js +89 -0
  109. package/dist/resources/errors.js.map +1 -0
  110. package/dist/resources/execution.d.ts +90 -0
  111. package/dist/resources/execution.d.ts.map +1 -0
  112. package/dist/resources/execution.js +581 -0
  113. package/dist/resources/execution.js.map +1 -0
  114. package/dist/resources/index.d.ts +15 -0
  115. package/dist/resources/index.d.ts.map +1 -0
  116. package/dist/resources/index.js +15 -0
  117. package/dist/resources/index.js.map +1 -0
  118. package/dist/resources/journal.d.ts +138 -0
  119. package/dist/resources/journal.d.ts.map +1 -0
  120. package/dist/resources/journal.js +438 -0
  121. package/dist/resources/journal.js.map +1 -0
  122. package/dist/resources/leases.d.ts +51 -0
  123. package/dist/resources/leases.d.ts.map +1 -0
  124. package/dist/resources/leases.js +354 -0
  125. package/dist/resources/leases.js.map +1 -0
  126. package/dist/resources/permits.d.ts +52 -0
  127. package/dist/resources/permits.d.ts.map +1 -0
  128. package/dist/resources/permits.js +240 -0
  129. package/dist/resources/permits.js.map +1 -0
  130. package/dist/resources/persistence.d.ts +63 -0
  131. package/dist/resources/persistence.d.ts.map +1 -0
  132. package/dist/resources/persistence.js +522 -0
  133. package/dist/resources/persistence.js.map +1 -0
  134. package/dist/resources/registry.d.ts +56 -0
  135. package/dist/resources/registry.d.ts.map +1 -0
  136. package/dist/resources/registry.js +139 -0
  137. package/dist/resources/registry.js.map +1 -0
  138. package/dist/resources/resolve.d.ts +49 -0
  139. package/dist/resources/resolve.d.ts.map +1 -0
  140. package/dist/resources/resolve.js +309 -0
  141. package/dist/resources/resolve.js.map +1 -0
  142. package/dist/resources/sandbox.d.ts +72 -0
  143. package/dist/resources/sandbox.d.ts.map +1 -0
  144. package/dist/resources/sandbox.js +952 -0
  145. package/dist/resources/sandbox.js.map +1 -0
  146. package/dist/resources/schema.d.ts +195 -0
  147. package/dist/resources/schema.d.ts.map +1 -0
  148. package/dist/resources/schema.js +231 -0
  149. package/dist/resources/schema.js.map +1 -0
  150. package/dist/resources/types.d.ts +36 -0
  151. package/dist/resources/types.d.ts.map +1 -0
  152. package/dist/resources/types.js +75 -0
  153. package/dist/resources/types.js.map +1 -0
  154. package/dist/runner-core.d.ts +53 -0
  155. package/dist/runner-core.d.ts.map +1 -1
  156. package/dist/runner-core.js +521 -53
  157. package/dist/runner-core.js.map +1 -1
  158. package/dist/runtime/phases/approval.d.ts +23 -0
  159. package/dist/runtime/phases/approval.d.ts.map +1 -0
  160. package/dist/runtime/phases/approval.js +38 -0
  161. package/dist/runtime/phases/approval.js.map +1 -0
  162. package/dist/runtime/phases/expand.d.ts +29 -0
  163. package/dist/runtime/phases/expand.d.ts.map +1 -0
  164. package/dist/runtime/phases/expand.js +126 -0
  165. package/dist/runtime/phases/expand.js.map +1 -0
  166. package/dist/runtime/phases/parallel.d.ts +26 -0
  167. package/dist/runtime/phases/parallel.d.ts.map +1 -0
  168. package/dist/runtime/phases/parallel.js +15 -0
  169. package/dist/runtime/phases/parallel.js.map +1 -0
  170. package/dist/runtime/phases/race.d.ts +31 -0
  171. package/dist/runtime/phases/race.d.ts.map +1 -0
  172. package/dist/runtime/phases/race.js +220 -0
  173. package/dist/runtime/phases/race.js.map +1 -0
  174. package/dist/runtime/phases/script.d.ts +38 -0
  175. package/dist/runtime/phases/script.d.ts.map +1 -0
  176. package/dist/runtime/phases/script.js +177 -0
  177. package/dist/runtime/phases/script.js.map +1 -0
  178. package/dist/runtime.d.ts +68 -16
  179. package/dist/runtime.d.ts.map +1 -1
  180. package/dist/runtime.js +1091 -337
  181. package/dist/runtime.js.map +1 -1
  182. package/dist/schema.d.ts +104 -9
  183. package/dist/schema.d.ts.map +1 -1
  184. package/dist/schema.js +249 -32
  185. package/dist/schema.js.map +1 -1
  186. package/dist/store.d.ts +13 -0
  187. package/dist/store.d.ts.map +1 -1
  188. package/dist/store.js.map +1 -1
  189. package/dist/trace.d.ts +7 -1
  190. package/dist/trace.d.ts.map +1 -1
  191. package/dist/trace.js +33 -26
  192. package/dist/trace.js.map +1 -1
  193. package/package.json +7 -5
@@ -0,0 +1,94 @@
1
+ /**
2
+ * exec/step — per-node handlers for the event-sourced kernel (RFC §6.3, S2).
3
+ *
4
+ * Kernel covers `EVENT_KERNEL_PHASE_TYPES` (PHASE_TYPES minus `race`/`expand` —
5
+ * currently 10 kinds). Complex paths live in `./step-kinds.ts`. Does **not**
6
+ * import `runtime.ts` (avoids circular deps with the strangler).
7
+ */
8
+ import type { Phase, Taskflow } from "../schema.ts";
9
+ import { PHASE_TYPES } from "../schema.ts";
10
+ import type { RunState } from "../store.ts";
11
+ import type { AgentConfig } from "../agents.ts";
12
+ import type { RunOptions, RunResult } from "../host/runner-types.ts";
13
+ import type { Event } from "./events.ts";
14
+ import { type UsageStats } from "../usage.ts";
15
+ import { type InterpolationContext } from "../interpolate.ts";
16
+ /** All DSL phase types — S2 kernel is complete. */
17
+ /** Kernel kinds: original 10. Horizon B `race`/`expand` run on the imperative
18
+ * path until dedicated step handlers land (canUseEventKernel excludes them). */
19
+ export declare const EVENT_KERNEL_PHASE_TYPES: readonly (typeof PHASE_TYPES)[number][];
20
+ export type EventKernelPhaseType = (typeof EVENT_KERNEL_PHASE_TYPES)[number];
21
+ export type RunTaskFn = (cwd: string, agents: AgentConfig[], agentName: string, task: string, opts: RunOptions, globalThinking?: string) => Promise<RunResult>;
22
+ /** Mirrors runtime ApprovalRequest — kept local to avoid step↔runtime cycles. */
23
+ export interface KernelApprovalRequest {
24
+ phaseId: string;
25
+ message: string;
26
+ upstream?: string;
27
+ }
28
+ export interface KernelApprovalDecision {
29
+ decision: "approve" | "reject" | "edit";
30
+ note?: string;
31
+ }
32
+ export interface NestedFlowResult {
33
+ finalOutput: string;
34
+ ok: boolean;
35
+ usage: UsageStats;
36
+ events: Event[];
37
+ blocked?: boolean;
38
+ }
39
+ export interface StepDeps {
40
+ cwd: string;
41
+ agents: AgentConfig[];
42
+ runTask: RunTaskFn;
43
+ signal?: AbortSignal;
44
+ globalThinking?: string;
45
+ requestApproval?: (req: KernelApprovalRequest) => Promise<KernelApprovalDecision>;
46
+ loadFlow?: (name: string) => Taskflow | undefined;
47
+ /** Sub-flow call stack (recursion guard). */
48
+ stack?: string[];
49
+ /** Nested flow runner (driver injects runEventKernel). */
50
+ runNested?: (opts: {
51
+ def: Taskflow;
52
+ args: Record<string, unknown>;
53
+ stack: string[];
54
+ dynamic?: boolean;
55
+ }) => Promise<NestedFlowResult>;
56
+ }
57
+ export interface StepContext {
58
+ state: RunState;
59
+ deps: StepDeps;
60
+ steps: InterpolationContext["steps"];
61
+ args: Record<string, unknown>;
62
+ }
63
+ export interface StepResult {
64
+ events: Event[];
65
+ output?: string;
66
+ status: "done" | "failed" | "skipped" | "timedOut";
67
+ error?: string;
68
+ /** Token/cost usage for this phase (empty for script / skipped). */
69
+ usage: UsageStats;
70
+ /** Total runner attempts, including automatic transient retries. */
71
+ attempts?: number;
72
+ gate?: {
73
+ verdict: "pass" | "block";
74
+ reason?: string;
75
+ };
76
+ approval?: {
77
+ decision: "approve" | "reject" | "edit";
78
+ note?: string;
79
+ auto?: boolean;
80
+ };
81
+ warnings?: string[];
82
+ }
83
+ /** Accumulate usage from subagent-call events in a result. */
84
+ export declare function usageFromEvents(events: readonly Event[]): UsageStats;
85
+ /** Run a shell script phase (no LLM). Captures stdout. */
86
+ export declare function stepScript(phase: Phase, ctx: StepContext): Promise<StepResult>;
87
+ /** Run a single agent phase via the injected runner. */
88
+ export declare function stepAgent(phase: Phase, ctx: StepContext): Promise<StepResult>;
89
+ /**
90
+ * Dispatch one phase kind. Returns null if kind is not handled by this slice.
91
+ * Emits phase-start → optional when-guard decision → work → phase-end.
92
+ */
93
+ export declare function stepPhase(phase: Phase, ctx: StepContext): Promise<StepResult | null>;
94
+ //# sourceMappingURL=step.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../src/exec/step.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,454 @@
1
+ /**
2
+ * exec/step — per-node handlers for the event-sourced kernel (RFC §6.3, S2).
3
+ *
4
+ * Kernel covers `EVENT_KERNEL_PHASE_TYPES` (PHASE_TYPES minus `race`/`expand` —
5
+ * currently 10 kinds). Complex paths live in `./step-kinds.ts`. Does **not**
6
+ * import `runtime.ts` (avoids circular deps with the strangler).
7
+ */
8
+ import { dependenciesOf, MAX_DYNAMIC_MAP_ITEMS, PHASE_TYPES } from "../schema.js";
9
+ import { EVENT_SCHEMA_VERSION } from "./events.js";
10
+ import { aggregateUsage, emptyUsage } from "../usage.js";
11
+ import { coerceArray, evaluateCondition, interpolate, safeParse, } from "../interpolate.js";
12
+ import { abortableDelay, isFailed as isFailedResult, isTransientError, mapWithConcurrencyLimit, PHASE_TIMEOUT_ABORT_GRACE_MS } from "../runner-core.js";
13
+ import { runScriptCommand, scriptResultToPhaseState, scriptSpawnErrorToPhaseState, } from "../runtime/phases/script.js";
14
+ import { executeApprovalBody, executeFlowBody, executeGateBody, executeLoopBody, executeReduceBody, executeTournamentBody, } from "./step-kinds.js";
15
+ import { kernelAttemptsOverBudget } from "./kernel-policy.js";
16
+ /** All DSL phase types — S2 kernel is complete. */
17
+ /** Kernel kinds: original 10. Horizon B `race`/`expand` run on the imperative
18
+ * path until dedicated step handlers land (canUseEventKernel excludes them). */
19
+ export const EVENT_KERNEL_PHASE_TYPES = PHASE_TYPES.filter((t) => t !== "race" && t !== "expand");
20
+ function baseEvent(ctx, phaseId, kind, extra = {}) {
21
+ return {
22
+ v: EVENT_SCHEMA_VERSION,
23
+ ts: Date.now(),
24
+ runId: ctx.state.runId,
25
+ phaseId,
26
+ kind,
27
+ ...extra,
28
+ };
29
+ }
30
+ /** Accumulate usage from subagent-call events in a result. */
31
+ export function usageFromEvents(events) {
32
+ const u = emptyUsage();
33
+ for (const e of events) {
34
+ const usage = e.output?.usage;
35
+ if (!usage)
36
+ continue;
37
+ u.input += usage.input ?? 0;
38
+ u.output += usage.output ?? 0;
39
+ u.cacheRead += usage.cacheRead ?? 0;
40
+ u.cacheWrite += usage.cacheWrite ?? 0;
41
+ u.cost += usage.cost ?? 0;
42
+ u.turns += usage.turns ?? 0;
43
+ if (typeof usage.contextTokens === "number")
44
+ u.contextTokens = usage.contextTokens;
45
+ }
46
+ return u;
47
+ }
48
+ /** Format fan-out results like the imperative runtime's mergePhaseState text. */
49
+ function combineFanoutText(results) {
50
+ return results
51
+ .map((r, i) => {
52
+ const label = `### [${i + 1}/${results.length}] ${r.agent}${isFailedResult(r) ? " (failed)" : ""}`;
53
+ const content = isFailedResult(r) ? r.errorMessage || r.stderr || r.output : r.output;
54
+ return `${label}\n\n${content}`;
55
+ })
56
+ .join("\n\n---\n\n");
57
+ }
58
+ /** Run a shell script phase (no LLM). Captures stdout. */
59
+ export async function stepScript(phase, ctx) {
60
+ return stepPhase({ ...phase, type: "script" }, ctx);
61
+ }
62
+ /** Run a single agent phase via the injected runner. */
63
+ export async function stepAgent(phase, ctx) {
64
+ return stepPhase({ ...phase, type: "agent" }, ctx);
65
+ }
66
+ async function executeScriptBody(phase, ctx) {
67
+ const run = phase.run;
68
+ if (!run || (Array.isArray(run) && run.length === 0)) {
69
+ const err = "script phase missing `run`";
70
+ return { midEvents: [], status: "failed", error: err, usage: emptyUsage() };
71
+ }
72
+ const argv = Array.isArray(run) ? run.map(String) : [String(run)];
73
+ const timeoutMs = phase.timeout ?? 60_000;
74
+ let phaseState;
75
+ try {
76
+ const result = await runScriptCommand({
77
+ interpRunText: argv,
78
+ arrayForm: Array.isArray(run),
79
+ cwd: ctx.deps.cwd,
80
+ signal: ctx.deps.signal,
81
+ timeoutMs,
82
+ });
83
+ phaseState = scriptResultToPhaseState(phase, result, { inputHash: "", timeoutMs });
84
+ }
85
+ catch (err) {
86
+ phaseState = scriptSpawnErrorToPhaseState(phase.id, err, { inputHash: "" });
87
+ }
88
+ const status = phaseState.timedOut
89
+ ? "timedOut"
90
+ : phaseState.status === "done"
91
+ ? "done"
92
+ : "failed";
93
+ const text = phaseState.output ?? "";
94
+ const usage = emptyUsage();
95
+ const midEvents = [
96
+ baseEvent(ctx, phase.id, "subagent-call", {
97
+ input: {
98
+ agent: "script",
99
+ task: Array.isArray(run) ? argv.join(" ") : String(run),
100
+ nodePath: phase.id,
101
+ },
102
+ output: {
103
+ text,
104
+ usage,
105
+ stopReason: phaseState.timedOut ? "timeout" : phaseState.status === "done" ? "end" : "error",
106
+ },
107
+ }),
108
+ ];
109
+ return {
110
+ midEvents,
111
+ output: text,
112
+ status,
113
+ error: status === "done" ? undefined : phaseState.error,
114
+ usage,
115
+ };
116
+ }
117
+ async function runOneAgent(ctx, phase, agentName, task, nodePath, mapIndex) {
118
+ // Per-phase timeout: AbortController chained to run signal (matches runtime).
119
+ const phaseTimeoutMs = typeof phase.timeout === "number" && Number.isFinite(phase.timeout) && phase.timeout >= 1000
120
+ ? phase.timeout
121
+ : undefined;
122
+ const attempts = [];
123
+ let r;
124
+ for (let attempt = 0; attempt < 4; attempt++) {
125
+ if (ctx.deps.signal?.aborted)
126
+ break;
127
+ let timedOut = false;
128
+ let terminalCommitted = false;
129
+ let timer;
130
+ let forceReturnTimer;
131
+ let onParentAbort;
132
+ let callSignal = ctx.deps.signal;
133
+ let timeoutController;
134
+ if (phaseTimeoutMs) {
135
+ const ac = new AbortController();
136
+ timeoutController = ac;
137
+ callSignal = ac.signal;
138
+ if (ctx.deps.signal?.aborted)
139
+ ac.abort();
140
+ else if (ctx.deps.signal) {
141
+ onParentAbort = () => ac.abort();
142
+ ctx.deps.signal.addEventListener("abort", onParentAbort, { once: true });
143
+ }
144
+ }
145
+ try {
146
+ const onTerminalCommit = () => {
147
+ if (timedOut)
148
+ return;
149
+ terminalCommitted = true;
150
+ if (timer) {
151
+ clearTimeout(timer);
152
+ timer = undefined;
153
+ }
154
+ };
155
+ const invocation = ctx.deps.runTask(ctx.deps.cwd, ctx.deps.agents, agentName, task, {
156
+ model: phase.model,
157
+ thinking: phase.thinking,
158
+ tools: phase.tools,
159
+ cwd: ctx.deps.cwd,
160
+ signal: callSignal,
161
+ onTerminalCommit,
162
+ }, ctx.deps.globalThinking);
163
+ if (phaseTimeoutMs) {
164
+ const timeoutFallback = new Promise((resolve) => {
165
+ timer = setTimeout(() => {
166
+ if (terminalCommitted)
167
+ return;
168
+ timedOut = true;
169
+ timeoutController?.abort();
170
+ forceReturnTimer = setTimeout(() => resolve({
171
+ agent: agentName,
172
+ task,
173
+ exitCode: 1,
174
+ output: "",
175
+ stderr: "",
176
+ usage: emptyUsage(),
177
+ stopReason: "error",
178
+ errorMessage: `Phase runner did not stop within ${PHASE_TIMEOUT_ABORT_GRACE_MS}ms after abort`,
179
+ phaseTimeout: true,
180
+ completionSource: "phase-timeout",
181
+ }), PHASE_TIMEOUT_ABORT_GRACE_MS);
182
+ }, phaseTimeoutMs);
183
+ });
184
+ r = await Promise.race([invocation, timeoutFallback]);
185
+ }
186
+ else {
187
+ r = await invocation;
188
+ }
189
+ }
190
+ finally {
191
+ if (timer)
192
+ clearTimeout(timer);
193
+ if (forceReturnTimer)
194
+ clearTimeout(forceReturnTimer);
195
+ if (onParentAbort)
196
+ ctx.deps.signal?.removeEventListener("abort", onParentAbort);
197
+ }
198
+ if (timedOut) {
199
+ r = {
200
+ ...r,
201
+ exitCode: r.exitCode === 0 ? 1 : r.exitCode,
202
+ stopReason: "error",
203
+ errorMessage: `Phase timed out after ${phaseTimeoutMs}ms (subagent aborted)`,
204
+ phaseTimeout: true,
205
+ completionSource: "phase-timeout",
206
+ };
207
+ }
208
+ attempts.push(r.usage ? { ...emptyUsage(), ...r.usage } : emptyUsage());
209
+ if (!isFailedResult(r))
210
+ break;
211
+ // The current phase has not been committed to state yet. Include prior
212
+ // completed run usage plus every attempt made here before admitting a
213
+ // transient retry, matching the imperative runner's live usage guard.
214
+ if (kernelAttemptsOverBudget(ctx.state, phase.id, attempts))
215
+ break;
216
+ if (r.phaseTimeout || phase.idempotent === false || !isTransientError(r) || attempt >= 3)
217
+ break;
218
+ const wait = Math.min(60_000, (phase.retry?.backoffMs ?? 2_000) * 2 ** attempt);
219
+ await abortableDelay(wait, ctx.deps.signal);
220
+ }
221
+ if (!r) {
222
+ r = {
223
+ agent: agentName,
224
+ task,
225
+ exitCode: 1,
226
+ output: "",
227
+ stderr: "Aborted before execution",
228
+ usage: emptyUsage(),
229
+ stopReason: "aborted",
230
+ errorMessage: "Aborted before execution",
231
+ };
232
+ }
233
+ const usage = aggregateUsage(attempts);
234
+ r = { ...r, usage, attempts: attempts.length };
235
+ const event = baseEvent(ctx, phase.id, "subagent-call", {
236
+ input: {
237
+ agent: agentName,
238
+ model: phase.model,
239
+ task,
240
+ nodePath,
241
+ mapIndex,
242
+ },
243
+ output: {
244
+ text: r.output ?? "",
245
+ model: r.model,
246
+ usage,
247
+ stopReason: r.stopReason,
248
+ completionSource: r.completionSource,
249
+ reapedAfterTerminal: r.reapedAfterTerminal,
250
+ terminalGraceMs: r.terminalGraceMs,
251
+ },
252
+ });
253
+ return { result: r, event };
254
+ }
255
+ async function executeAgentBody(phase, ctx) {
256
+ const interpCtx = {
257
+ args: ctx.args,
258
+ steps: ctx.steps,
259
+ };
260
+ const task = interpolate(phase.task ?? "", interpCtx).text;
261
+ const agentName = phase.agent ?? "executor";
262
+ try {
263
+ const { result: r, event } = await runOneAgent(ctx, phase, agentName, task, phase.id);
264
+ const failed = isFailedResult(r);
265
+ const status = r.phaseTimeout ? "timedOut" : failed ? "failed" : "done";
266
+ const usage = r.usage ? { ...emptyUsage(), ...r.usage } : emptyUsage();
267
+ return {
268
+ midEvents: [event],
269
+ output: r.output,
270
+ status,
271
+ error: failed ? r.errorMessage ?? r.stderr : undefined,
272
+ usage,
273
+ attempts: r.attempts,
274
+ };
275
+ }
276
+ catch (e) {
277
+ const err = e instanceof Error ? e.message : String(e);
278
+ return { midEvents: [], status: "failed", error: err, usage: emptyUsage() };
279
+ }
280
+ }
281
+ /** Resolve map-item template; supports default `{item}` and custom `as` aliases via locals. */
282
+ function resolveMapTask(template, phase, ctx, item) {
283
+ const loopVar = phase.as ?? "item";
284
+ return interpolate(template, {
285
+ args: ctx.args,
286
+ steps: ctx.steps,
287
+ locals: { [loopVar]: item },
288
+ }).text;
289
+ }
290
+ async function executeMapBody(phase, ctx) {
291
+ const interpCtx = { args: ctx.args, steps: ctx.steps };
292
+ const overResolved = interpolate(phase.over ?? "", interpCtx).text;
293
+ const arr = coerceArray(safeParse(overResolved)) ?? coerceArray(overResolved);
294
+ if (!arr) {
295
+ const err = `map phase '${phase.id}': 'over' (${phase.over}) did not resolve to an array`;
296
+ return { midEvents: [], status: "failed", error: err, usage: emptyUsage() };
297
+ }
298
+ const concurrency = typeof phase.concurrency === "number" && phase.concurrency > 0 ? phase.concurrency : 8;
299
+ const agentName = phase.agent ?? "executor";
300
+ const dynamic = (ctx.deps.stack ?? []).some((frame) => frame.startsWith("def:"));
301
+ const truncated = dynamic && arr.length > MAX_DYNAMIC_MAP_ITEMS;
302
+ const admitted = truncated ? arr.slice(0, MAX_DYNAMIC_MAP_ITEMS) : arr;
303
+ const tasks = admitted.map((item) => ({
304
+ agent: agentName,
305
+ task: resolveMapTask(phase.task ?? "", phase, ctx, item),
306
+ }));
307
+ try {
308
+ const midEvents = [];
309
+ const results = await mapWithConcurrencyLimit(tasks, concurrency, async (it, idx) => {
310
+ const { result, event } = await runOneAgent(ctx, phase, it.agent, it.task, `${phase.id}#item-${idx}`, idx);
311
+ midEvents.push(event);
312
+ return result;
313
+ });
314
+ // Order events by mapIndex for stable fold/trace
315
+ midEvents.sort((a, b) => (a.input?.mapIndex ?? 0) - (b.input?.mapIndex ?? 0));
316
+ const anyFailed = results.some(isFailedResult);
317
+ const anyTimedOut = results.some((r) => r.phaseTimeout);
318
+ const usage = aggregateUsage(results.map((r) => r.usage ?? emptyUsage()));
319
+ const errors = results.filter(isFailedResult).map((r) => `${r.agent}: ${r.errorMessage ?? r.stderr}`);
320
+ return {
321
+ midEvents,
322
+ output: combineFanoutText(results),
323
+ status: anyTimedOut ? "timedOut" : anyFailed ? "failed" : "done",
324
+ error: errors.length ? errors.join("; ") : undefined,
325
+ usage,
326
+ warnings: truncated
327
+ ? [`map fan-out truncated to MAX_DYNAMIC_MAP_ITEMS (${MAX_DYNAMIC_MAP_ITEMS}) inside a dynamic sub-flow`]
328
+ : undefined,
329
+ };
330
+ }
331
+ catch (e) {
332
+ const err = e instanceof Error ? e.message : String(e);
333
+ return { midEvents: [], status: "failed", error: err, usage: emptyUsage() };
334
+ }
335
+ }
336
+ async function executeParallelBody(phase, ctx) {
337
+ const branches = phase.branches ?? [];
338
+ if (branches.length === 0) {
339
+ return {
340
+ midEvents: [],
341
+ status: "failed",
342
+ error: `parallel phase '${phase.id}': empty branches`,
343
+ usage: emptyUsage(),
344
+ };
345
+ }
346
+ const concurrency = typeof phase.concurrency === "number" && phase.concurrency > 0 ? phase.concurrency : 8;
347
+ const interpCtx = { args: ctx.args, steps: ctx.steps };
348
+ const tasks = branches.map((b) => ({
349
+ agent: b.agent ?? phase.agent ?? "executor",
350
+ task: interpolate(b.task, interpCtx).text,
351
+ }));
352
+ try {
353
+ const midEvents = [];
354
+ const results = await mapWithConcurrencyLimit(tasks, concurrency, async (it, idx) => {
355
+ const { result, event } = await runOneAgent(ctx, phase, it.agent, it.task, `${phase.id}#branch-${idx}`, idx);
356
+ midEvents.push(event);
357
+ return result;
358
+ });
359
+ midEvents.sort((a, b) => (a.input?.mapIndex ?? 0) - (b.input?.mapIndex ?? 0));
360
+ const anyFailed = results.some(isFailedResult);
361
+ const anyTimedOut = results.some((r) => r.phaseTimeout);
362
+ const usage = aggregateUsage(results.map((r) => r.usage ?? emptyUsage()));
363
+ const errors = results.filter(isFailedResult).map((r) => `${r.agent}: ${r.errorMessage ?? r.stderr}`);
364
+ return {
365
+ midEvents,
366
+ output: combineFanoutText(results),
367
+ status: anyTimedOut ? "timedOut" : anyFailed ? "failed" : "done",
368
+ error: errors.length ? errors.join("; ") : undefined,
369
+ usage,
370
+ };
371
+ }
372
+ catch (e) {
373
+ const err = e instanceof Error ? e.message : String(e);
374
+ return { midEvents: [], status: "failed", error: err, usage: emptyUsage() };
375
+ }
376
+ }
377
+ /**
378
+ * Dispatch one phase kind. Returns null if kind is not handled by this slice.
379
+ * Emits phase-start → optional when-guard decision → work → phase-end.
380
+ */
381
+ export async function stepPhase(phase, ctx) {
382
+ const type = (phase.type ?? "agent");
383
+ if (!EVENT_KERNEL_PHASE_TYPES.includes(type))
384
+ return null;
385
+ const events = [
386
+ baseEvent(ctx, phase.id, "phase-start", {
387
+ dependencies: dependenciesOf(phase),
388
+ optional: phase.optional === true,
389
+ }),
390
+ ];
391
+ if (type === "flow") {
392
+ events.push(baseEvent(ctx, phase.id, "decision", {
393
+ decision: { type: "unreplayable", reason: "inner-flow" },
394
+ }));
395
+ }
396
+ // when-guard (fail-open evaluateCondition matches imperative runtime)
397
+ if (phase.when !== undefined) {
398
+ const interpCtx = { args: ctx.args, steps: ctx.steps };
399
+ const whenResult = evaluateCondition(phase.when, interpCtx);
400
+ events.push(baseEvent(ctx, phase.id, "decision", {
401
+ decision: {
402
+ type: "when-guard",
403
+ expression: phase.when,
404
+ result: whenResult,
405
+ },
406
+ }));
407
+ if (!whenResult) {
408
+ const err = `Condition not met: ${phase.when}`;
409
+ events.push(baseEvent(ctx, phase.id, "phase-end", { status: "skipped", error: err }));
410
+ return { events, status: "skipped", error: err, usage: emptyUsage() };
411
+ }
412
+ }
413
+ let body;
414
+ if (type === "script")
415
+ body = await executeScriptBody(phase, ctx);
416
+ else if (type === "map")
417
+ body = await executeMapBody(phase, ctx);
418
+ else if (type === "parallel")
419
+ body = await executeParallelBody(phase, ctx);
420
+ else if (type === "reduce")
421
+ body = await executeReduceBody(phase, ctx);
422
+ else if (type === "gate")
423
+ body = await executeGateBody(phase, ctx);
424
+ else if (type === "approval")
425
+ body = await executeApprovalBody(phase, ctx);
426
+ else if (type === "loop")
427
+ body = await executeLoopBody(phase, ctx);
428
+ else if (type === "tournament")
429
+ body = await executeTournamentBody(phase, ctx);
430
+ else if (type === "flow")
431
+ body = await executeFlowBody(phase, ctx);
432
+ else
433
+ body = await executeAgentBody(phase, ctx);
434
+ events.push(...body.midEvents);
435
+ const endStatus = body.gate?.verdict === "block" && body.status === "done"
436
+ ? "done" // phase completes; run-level blocked handled by driver
437
+ : body.status;
438
+ events.push(baseEvent(ctx, phase.id, "phase-end", {
439
+ status: endStatus === "timedOut" ? "timedOut" : endStatus,
440
+ error: body.error,
441
+ }));
442
+ return {
443
+ events,
444
+ output: body.output,
445
+ status: body.status,
446
+ error: body.error,
447
+ usage: body.usage,
448
+ attempts: body.attempts,
449
+ gate: body.gate,
450
+ approval: body.approval,
451
+ warnings: body.warnings,
452
+ };
453
+ }
454
+ //# sourceMappingURL=step.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../src/exec/step.ts"],"names":[],"mappings":"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"}