taskflow-core 0.2.6 → 0.2.7

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 (42) hide show
  1. package/README.md +33 -5
  2. package/dist/analytics.d.ts +30 -0
  3. package/dist/analytics.d.ts.map +1 -0
  4. package/dist/analytics.js +127 -0
  5. package/dist/analytics.js.map +1 -0
  6. package/dist/build-info.json +2 -2
  7. package/dist/exec/step-kinds.d.ts +1 -1
  8. package/dist/exec/step-kinds.d.ts.map +1 -1
  9. package/dist/exec/step-kinds.js +26 -14
  10. package/dist/exec/step-kinds.js.map +1 -1
  11. package/dist/hooks.d.ts +73 -0
  12. package/dist/hooks.d.ts.map +1 -0
  13. package/dist/hooks.js +296 -0
  14. package/dist/hooks.js.map +1 -0
  15. package/dist/index.d.ts +4 -0
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +4 -0
  18. package/dist/index.js.map +1 -1
  19. package/dist/preflight.d.ts +69 -0
  20. package/dist/preflight.d.ts.map +1 -0
  21. package/dist/preflight.js +389 -0
  22. package/dist/preflight.js.map +1 -0
  23. package/dist/runtime/phases/approval-wait.d.ts +33 -0
  24. package/dist/runtime/phases/approval-wait.d.ts.map +1 -0
  25. package/dist/runtime/phases/approval-wait.js +95 -0
  26. package/dist/runtime/phases/approval-wait.js.map +1 -0
  27. package/dist/runtime/phases/approval.d.ts +1 -1
  28. package/dist/runtime/phases/approval.d.ts.map +1 -1
  29. package/dist/runtime/phases/approval.js +10 -6
  30. package/dist/runtime/phases/approval.js.map +1 -1
  31. package/dist/runtime.d.ts.map +1 -1
  32. package/dist/runtime.js +40 -11
  33. package/dist/runtime.js.map +1 -1
  34. package/dist/savings.d.ts +36 -0
  35. package/dist/savings.d.ts.map +1 -0
  36. package/dist/savings.js +76 -0
  37. package/dist/savings.js.map +1 -0
  38. package/dist/schema.d.ts +31 -0
  39. package/dist/schema.d.ts.map +1 -1
  40. package/dist/schema.js +123 -0
  41. package/dist/schema.js.map +1 -1
  42. package/package.json +1 -1
@@ -0,0 +1,389 @@
1
+ /**
2
+ * Preflight dry-run — zero-token plan before spend.
3
+ *
4
+ * Binds typed args, runs structural verify, projects a phase plan with
5
+ * static/dynamic binding status, and computes a worst-case agent-call bound.
6
+ */
7
+ import { asArray, collectRefs, desugar, isShorthand, LOOP_DEFAULT_MAX_ITERATIONS, LOOP_HARD_MAX_ITERATIONS, resolveArgs, topoLayers, validateInvocationArgs, validateTaskflow, } from "./schema.js";
8
+ import { verifyTaskflow, } from "./verify.js";
9
+ // ---------------------------------------------------------------------------
10
+ // when / binding helpers
11
+ // ---------------------------------------------------------------------------
12
+ const STEPS_PLACEHOLDER = /\{steps\.[a-zA-Z0-9_-]+/;
13
+ const PREVIOUS_PLACEHOLDER = /\{previous\.|\{item\b|\{reflexion\b/;
14
+ const ARGS_PLACEHOLDER = /\{args\.([a-zA-Z0-9_-]+)(?:\.[a-zA-Z0-9_-]+)*\}/g;
15
+ function templateIsDynamic(s) {
16
+ if (!s)
17
+ return false;
18
+ return STEPS_PLACEHOLDER.test(s) || PREVIOUS_PLACEHOLDER.test(s);
19
+ }
20
+ /** Classify a `when` guard for preflight (args-only static evaluation). */
21
+ export function classifyWhen(when, args) {
22
+ if (!when || !when.trim())
23
+ return "always";
24
+ if (templateIsDynamic(when))
25
+ return "dynamic";
26
+ // Only args — try a tiny static truthiness check for simple forms.
27
+ const onlyArgs = when.replace(ARGS_PLACEHOLDER, (_, name) => {
28
+ const v = args[name];
29
+ if (v === undefined)
30
+ return "{missing}";
31
+ return String(v);
32
+ });
33
+ if (onlyArgs.includes("{"))
34
+ return "dynamic";
35
+ // Simple literals after arg substitution
36
+ const t = onlyArgs.trim().toLowerCase();
37
+ if (t === "true" || t === "1" || t === "yes")
38
+ return "static-true";
39
+ if (t === "false" || t === "0" || t === "no" || t === "")
40
+ return "static-false";
41
+ // Equality on args: `{args.x}==foo` already substituted above if exact
42
+ if (/^(true|false)$/i.test(t))
43
+ return t.toLowerCase() === "true" ? "static-true" : "static-false";
44
+ // Conservative: treat non-trivial static expressions as dynamic (fail-open at plan)
45
+ if (!STEPS_PLACEHOLDER.test(when) && !PREVIOUS_PLACEHOLDER.test(when)) {
46
+ // If no missing args placeholders left, we still may not eval full condition language —
47
+ // mark dynamic so we never skip a phase that should run.
48
+ return "dynamic";
49
+ }
50
+ return "dynamic";
51
+ }
52
+ function collectTemplates(phase) {
53
+ const out = [];
54
+ const push = (s) => {
55
+ if (typeof s === "string" && s.includes("{"))
56
+ out.push(s);
57
+ };
58
+ push(phase.task);
59
+ push(phase.over);
60
+ push(phase.when);
61
+ push(phase.until);
62
+ push(phase.cwd);
63
+ if (Array.isArray(phase.run))
64
+ for (const r of phase.run)
65
+ push(r);
66
+ push(phase.input);
67
+ if (typeof phase.def === "string")
68
+ push(phase.def);
69
+ for (const e of asArray(phase.eval))
70
+ push(e);
71
+ const score = phase.score;
72
+ if (score && typeof score === "object") {
73
+ push(score.target);
74
+ if (score.judge && typeof score.judge === "object")
75
+ push(score.judge.task);
76
+ }
77
+ return out;
78
+ }
79
+ function bindingsForPhase(phase, args) {
80
+ const refs = collectRefs(phase);
81
+ const bindings = [];
82
+ for (const a of refs.args) {
83
+ if (a in args && args[a] !== undefined) {
84
+ bindings.push({ path: `args.${a}`, status: "bound", value: stringifyBound(args[a]) });
85
+ }
86
+ else {
87
+ bindings.push({ path: `args.${a}`, status: "unresolved" });
88
+ }
89
+ }
90
+ for (const s of refs.steps) {
91
+ bindings.push({ path: `steps.${s}`, status: "dynamic" });
92
+ }
93
+ // Also flag previous/item style dynamics from templates
94
+ for (const t of collectTemplates(phase)) {
95
+ if (PREVIOUS_PLACEHOLDER.test(t) && !bindings.some((b) => b.path.startsWith("previous") || b.path === "item")) {
96
+ if (/\{previous\./.test(t))
97
+ bindings.push({ path: "previous.output", status: "dynamic" });
98
+ if (/\{item\b/.test(t))
99
+ bindings.push({ path: "item", status: "dynamic" });
100
+ }
101
+ }
102
+ return bindings;
103
+ }
104
+ function stringifyBound(v) {
105
+ if (typeof v === "string")
106
+ return v.length > 80 ? `${v.slice(0, 77)}…` : v;
107
+ try {
108
+ const s = JSON.stringify(v);
109
+ return s.length > 80 ? `${s.slice(0, 77)}…` : s;
110
+ }
111
+ catch {
112
+ return String(v);
113
+ }
114
+ }
115
+ // ---------------------------------------------------------------------------
116
+ // Budget bound
117
+ // ---------------------------------------------------------------------------
118
+ const LLM_TYPES = new Set([
119
+ "agent",
120
+ "gate",
121
+ "reduce",
122
+ "map",
123
+ "parallel",
124
+ "loop",
125
+ "tournament",
126
+ "race",
127
+ ]);
128
+ export function computeBudgetBound(phases, args = {}) {
129
+ const assumptions = [];
130
+ let unbounded = false;
131
+ let maxMapFanout;
132
+ let total = 0;
133
+ const byId = new Map(phases.map((p) => [p.id, p]));
134
+ const boundPhase = (p, stack) => {
135
+ if (stack.has(p.id)) {
136
+ assumptions.push(`cycle involving '${p.id}' treated as unbounded`);
137
+ return "unbounded";
138
+ }
139
+ const when = classifyWhen(p.when, args);
140
+ if (when === "static-false")
141
+ return 0;
142
+ const type = p.type ?? "agent";
143
+ const next = new Set(stack);
144
+ next.add(p.id);
145
+ if (type === "script" || type === "approval")
146
+ return 0;
147
+ if (type === "agent" || type === "gate" || type === "reduce") {
148
+ if (type === "reduce" && p.reduceStrategy === "tree") {
149
+ assumptions.push(`phase '${p.id}': tree-reduce worst-case uses TREE cap (bounded as 256)`);
150
+ return 256;
151
+ }
152
+ return 1;
153
+ }
154
+ if (type === "parallel" || type === "race") {
155
+ const branches = asArray(p.branches);
156
+ // Each branch is one agent call in the common case
157
+ const n = Math.max(branches.length, 1);
158
+ return n;
159
+ }
160
+ if (type === "tournament") {
161
+ const variants = typeof p.variants === "number" && Number.isFinite(p.variants)
162
+ ? Math.max(1, Math.floor(p.variants))
163
+ : asArray(p.branches).length || 3;
164
+ return variants + 1; // variants + judge
165
+ }
166
+ if (type === "map") {
167
+ const over = p.over ?? "";
168
+ if (templateIsDynamic(over) || STEPS_PLACEHOLDER.test(over)) {
169
+ assumptions.push(`phase '${p.id}': map.over is dynamic → agent-call bound unbounded`);
170
+ maxMapFanout = "unbounded";
171
+ unbounded = true;
172
+ return "unbounded";
173
+ }
174
+ // args-only array refs are still dynamic without evaluating over JSON
175
+ if (/\{args\./.test(over)) {
176
+ assumptions.push(`phase '${p.id}': map.over depends on args (length unknown) → unbounded`);
177
+ maxMapFanout = "unbounded";
178
+ unbounded = true;
179
+ return "unbounded";
180
+ }
181
+ assumptions.push(`phase '${p.id}': map.over not a static array → treated as unbounded`);
182
+ maxMapFanout = "unbounded";
183
+ unbounded = true;
184
+ return "unbounded";
185
+ }
186
+ if (type === "loop") {
187
+ const maxIter = typeof p.maxIterations === "number" && Number.isFinite(p.maxIterations)
188
+ ? Math.min(Math.max(1, Math.floor(p.maxIterations)), LOOP_HARD_MAX_ITERATIONS)
189
+ : LOOP_DEFAULT_MAX_ITERATIONS;
190
+ // Body is one agent call per iteration (loop body is the phase task)
191
+ return maxIter;
192
+ }
193
+ if (type === "flow" || type === "expand") {
194
+ const def = p.def;
195
+ if (def && typeof def === "object" && def !== null) {
196
+ const child = def;
197
+ const childPhases = asArray(child.phases);
198
+ if (childPhases.length) {
199
+ let sum = 0;
200
+ for (const cp of childPhases) {
201
+ const b = boundPhase(cp, next);
202
+ if (b === "unbounded")
203
+ return "unbounded";
204
+ sum += b;
205
+ }
206
+ return sum;
207
+ }
208
+ }
209
+ assumptions.push(`phase '${p.id}': ${type} child def not statically available → unbounded`);
210
+ unbounded = true;
211
+ return "unbounded";
212
+ }
213
+ if (LLM_TYPES.has(type))
214
+ return 1;
215
+ return 0;
216
+ };
217
+ for (const p of phases) {
218
+ const b = boundPhase(p, new Set());
219
+ if (b === "unbounded") {
220
+ unbounded = true;
221
+ }
222
+ else {
223
+ total += b;
224
+ }
225
+ }
226
+ // Silence unused byId (reserved for future dep-aware pruning)
227
+ void byId;
228
+ return {
229
+ maxAgentCalls: unbounded ? "unbounded" : total,
230
+ maxMapFanout,
231
+ phasesCounted: phases.length,
232
+ assumptions,
233
+ };
234
+ }
235
+ // ---------------------------------------------------------------------------
236
+ // Main entry
237
+ // ---------------------------------------------------------------------------
238
+ /**
239
+ * Plan a flow without executing any agent. Pure w.r.t. model spend.
240
+ */
241
+ export function preflightTaskflow(raw, opts = {}) {
242
+ const strictArgs = opts.strictArgs !== false;
243
+ const issues = [];
244
+ let flow;
245
+ try {
246
+ if (isShorthand(raw)) {
247
+ flow = desugar(raw);
248
+ }
249
+ else if (raw && typeof raw === "object" && Array.isArray(raw.phases)) {
250
+ flow = raw;
251
+ }
252
+ else {
253
+ // Last chance: treat as shorthand or invalid
254
+ flow = desugar(raw);
255
+ }
256
+ }
257
+ catch (e) {
258
+ const msg = e instanceof Error ? e.message : String(e);
259
+ return {
260
+ ok: false,
261
+ issues: [{ message: `desugar failed: ${msg}`, severity: "error", category: "ref-integrity" }],
262
+ flowName: "(invalid)",
263
+ args: {},
264
+ phases: [],
265
+ budget: { maxAgentCalls: 0, phasesCounted: 0, assumptions: [] },
266
+ summary: `Preflight failed: ${msg}`,
267
+ };
268
+ }
269
+ const validation = validateTaskflow(flow, {
270
+ args: opts.args,
271
+ cwd: opts.cwd,
272
+ });
273
+ for (const e of validation.errors) {
274
+ issues.push({ message: e, severity: "error", category: "ref-integrity" });
275
+ }
276
+ for (const w of validation.warnings) {
277
+ issues.push({ message: w, severity: "warning", category: "ref-integrity" });
278
+ }
279
+ const args = resolveArgs(flow, opts.args);
280
+ const invErrs = validateInvocationArgs(flow, args);
281
+ for (const e of invErrs) {
282
+ issues.push({
283
+ message: e,
284
+ severity: strictArgs ? "error" : "warning",
285
+ category: "ref-integrity",
286
+ });
287
+ }
288
+ const verify = verifyTaskflow(flow, { verifiers: opts.verifiers });
289
+ issues.push(...verify.issues);
290
+ const phases = asArray(flow.phases).filter((p) => !!p && typeof p === "object" && typeof p.id === "string");
291
+ const layers = topoLayers(phases);
292
+ const orderMap = new Map();
293
+ let order = 0;
294
+ for (const layer of layers) {
295
+ for (const p of layer)
296
+ orderMap.set(p.id, order++);
297
+ }
298
+ const plan = phases.map((p) => {
299
+ const when = classifyWhen(p.when, args);
300
+ const bindings = bindingsForPhase(p, args);
301
+ const notes = [];
302
+ if (when === "static-false")
303
+ notes.push("statically skipped by when");
304
+ if (bindings.some((b) => b.status === "unresolved"))
305
+ notes.push("has unresolved args");
306
+ return {
307
+ id: p.id,
308
+ type: p.type ?? "agent",
309
+ order: orderMap.get(p.id) ?? 0,
310
+ when,
311
+ bindings,
312
+ agent: typeof p.agent === "string" ? p.agent : undefined,
313
+ modelHint: typeof p.model === "string" ? p.model : undefined,
314
+ notes: notes.length ? notes : undefined,
315
+ };
316
+ });
317
+ const budget = computeBudgetBound(phases, args);
318
+ if (budget.maxAgentCalls === "unbounded" && flow.budget) {
319
+ issues.push({
320
+ message: "Worst-case agent-call bound is unbounded (dynamic map/flow) while a flow budget is declared — cost ceiling still enforced at runtime but cannot be proven statically.",
321
+ severity: "warning",
322
+ category: "budget-overflow",
323
+ });
324
+ }
325
+ const ok = !issues.some((i) => i.severity === "error");
326
+ const summary = formatPreflightSummary({
327
+ ok,
328
+ flowName: flow.name,
329
+ phases: plan,
330
+ budget,
331
+ issueCount: issues.length,
332
+ errorCount: issues.filter((i) => i.severity === "error").length,
333
+ });
334
+ return {
335
+ ok,
336
+ issues,
337
+ flowName: flow.name,
338
+ args,
339
+ phases: plan,
340
+ budget,
341
+ summary,
342
+ verify,
343
+ };
344
+ }
345
+ export function formatPreflightSummary(p) {
346
+ const runnable = p.phases.filter((x) => x.when !== "static-false").length;
347
+ const dyn = p.phases.filter((x) => x.when === "dynamic" || x.bindings.some((b) => b.status === "dynamic")).length;
348
+ const calls = p.budget.maxAgentCalls;
349
+ const lines = [
350
+ `plan — flow "${p.flowName}" · ${p.ok ? "OK" : "BLOCKED"}`,
351
+ `phases: ${p.phases.length} total · ${runnable} may run · ${dyn} with dynamic refs`,
352
+ `budget bound: maxAgentCalls=${calls === "unbounded" ? "unbounded" : calls} · phasesCounted=${p.budget.phasesCounted}`,
353
+ `issues: ${p.errorCount} error(s), ${p.issueCount - p.errorCount} warning(s)`,
354
+ ];
355
+ if (p.budget.assumptions.length) {
356
+ lines.push(`assumptions: ${p.budget.assumptions.slice(0, 5).join("; ")}${p.budget.assumptions.length > 5 ? "…" : ""}`);
357
+ }
358
+ return lines.join("\n");
359
+ }
360
+ /** Full human report for MCP/CLI. */
361
+ export function formatPreflightReport(r, json = false) {
362
+ if (json)
363
+ return JSON.stringify(r, null, 2);
364
+ const lines = [r.summary, ""];
365
+ lines.push("Phase plan (topo order):");
366
+ const sorted = [...r.phases].sort((a, b) => a.order - b.order);
367
+ for (const p of sorted) {
368
+ const when = p.when === "always" ? "" : ` when=${p.when}`;
369
+ const agent = p.agent ? ` agent=${p.agent}` : "";
370
+ const notes = p.notes?.length ? ` (${p.notes.join("; ")})` : "";
371
+ lines.push(` ${p.order + 1}. ${p.id} [${p.type}]${when}${agent}${notes}`);
372
+ for (const b of p.bindings) {
373
+ const val = b.status === "bound" && b.value !== undefined ? `=${b.value}` : "";
374
+ lines.push(` · {${b.path}} → ${b.status}${val}`);
375
+ }
376
+ }
377
+ if (r.issues.length) {
378
+ lines.push("");
379
+ lines.push("Issues:");
380
+ for (const i of r.issues) {
381
+ const where = i.phaseId ? ` [${i.phaseId}]` : "";
382
+ lines.push(` ${i.severity === "error" ? "✗" : "!"} ${i.severity}${where}: ${i.message}`);
383
+ }
384
+ }
385
+ lines.push("");
386
+ lines.push("Zero tokens. Run with taskflow_run when ready.");
387
+ return lines.join("\n");
388
+ }
389
+ //# sourceMappingURL=preflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preflight.js","sourceRoot":"","sources":["../src/preflight.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Approval wait with optional timeoutMs / onExpire.
3
+ * Shared by imperative runtime and event-kernel step-kinds.
4
+ */
5
+ import type { Phase } from "../../schema.ts";
6
+ import type { ApprovalDecision } from "./approval.ts";
7
+ export type ApprovalExpireAction = "reject" | "fail" | "approve";
8
+ export type ResolvedApproval = {
9
+ kind: "decision";
10
+ decision: ApprovalDecision;
11
+ auto?: boolean;
12
+ } | {
13
+ kind: "fail";
14
+ error: string;
15
+ };
16
+ export interface ApprovalWaitDeps {
17
+ phase: Phase;
18
+ message: string;
19
+ upstream?: string;
20
+ requestApproval?: (req: {
21
+ phaseId: string;
22
+ message: string;
23
+ upstream?: string;
24
+ }) => Promise<ApprovalDecision>;
25
+ signal?: AbortSignal;
26
+ }
27
+ /**
28
+ * Resolve an approval decision, racing human input against timeoutMs when set.
29
+ * Non-interactive (no requestApproval): auto-reject unless we only had timeout path —
30
+ * still auto-reject for safety (detached/CI never bypasses).
31
+ */
32
+ export declare function resolveApprovalDecision(deps: ApprovalWaitDeps): Promise<ResolvedApproval>;
33
+ //# sourceMappingURL=approval-wait.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-wait.d.ts","sourceRoot":"","sources":["../../../src/runtime/phases/approval-wait.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GACzB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAChE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnC,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE;QACvB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;KAClB,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAcD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6E/F"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Approval wait with optional timeoutMs / onExpire.
3
+ * Shared by imperative runtime and event-kernel step-kinds.
4
+ */
5
+ function onExpireOf(phase) {
6
+ const o = phase.onExpire;
7
+ if (o === "approve" || o === "fail" || o === "reject")
8
+ return o;
9
+ return "reject";
10
+ }
11
+ function timeoutMsOf(phase) {
12
+ const t = phase.timeoutMs;
13
+ if (typeof t === "number" && Number.isFinite(t) && t >= 1000)
14
+ return t;
15
+ return undefined;
16
+ }
17
+ /**
18
+ * Resolve an approval decision, racing human input against timeoutMs when set.
19
+ * Non-interactive (no requestApproval): auto-reject unless we only had timeout path —
20
+ * still auto-reject for safety (detached/CI never bypasses).
21
+ */
22
+ export async function resolveApprovalDecision(deps) {
23
+ const { phase, message, upstream, requestApproval, signal } = deps;
24
+ const timeoutMs = timeoutMsOf(phase);
25
+ const onExpire = onExpireOf(phase);
26
+ // Headless: never auto-approve; timeout path still applies only when a human
27
+ // wait was possible. Without requestApproval, preserve fail-closed reject.
28
+ if (!requestApproval) {
29
+ return {
30
+ kind: "decision",
31
+ decision: { decision: "reject", note: "(auto-rejected: no interactive approver available)" },
32
+ auto: true,
33
+ };
34
+ }
35
+ const human = requestApproval({ phaseId: phase.id, message, upstream });
36
+ if (timeoutMs === undefined) {
37
+ if (signal?.aborted) {
38
+ return { kind: "decision", decision: { decision: "reject", note: "aborted" }, auto: true };
39
+ }
40
+ const decision = await human;
41
+ return { kind: "decision", decision };
42
+ }
43
+ let timer;
44
+ const expired = new Promise((resolve) => {
45
+ timer = setTimeout(() => {
46
+ if (onExpire === "fail") {
47
+ resolve({ kind: "fail", error: "approval-expired" });
48
+ }
49
+ else if (onExpire === "approve") {
50
+ resolve({
51
+ kind: "decision",
52
+ decision: { decision: "approve", note: "approval-expired (auto-approve)" },
53
+ auto: true,
54
+ });
55
+ }
56
+ else {
57
+ resolve({
58
+ kind: "decision",
59
+ decision: { decision: "reject", note: "approval-expired" },
60
+ auto: true,
61
+ });
62
+ }
63
+ }, timeoutMs);
64
+ });
65
+ let onAbort;
66
+ const abortPromise = signal
67
+ ? new Promise((resolve) => {
68
+ if (signal.aborted) {
69
+ resolve({ kind: "decision", decision: { decision: "reject", note: "aborted" }, auto: true });
70
+ return;
71
+ }
72
+ onAbort = () => resolve({ kind: "decision", decision: { decision: "reject", note: "aborted" }, auto: true });
73
+ signal.addEventListener("abort", onAbort, { once: true });
74
+ })
75
+ : undefined;
76
+ const humanResolved = human.then((decision) => ({ kind: "decision", decision }), (err) => ({
77
+ kind: "fail",
78
+ error: err instanceof Error ? err.message : String(err),
79
+ }));
80
+ // Swallow unhandled rejection if the human promise never settles (timeout wins).
81
+ humanResolved.catch(() => { });
82
+ const racers = [humanResolved, expired];
83
+ if (abortPromise)
84
+ racers.push(abortPromise);
85
+ try {
86
+ return await Promise.race(racers);
87
+ }
88
+ finally {
89
+ if (timer)
90
+ clearTimeout(timer);
91
+ if (signal && onAbort)
92
+ signal.removeEventListener("abort", onAbort);
93
+ }
94
+ }
95
+ //# sourceMappingURL=approval-wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval-wait.js","sourceRoot":"","sources":["../../../src/runtime/phases/approval-wait.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,7 @@ export interface ApprovalRequest {
17
17
  export declare function approvalDecisionToPhaseState(phaseId: string, decision: ApprovalDecision, opts: {
18
18
  inputHash: string;
19
19
  reads?: PhaseState["reads"];
20
- /** When true, mark auto-reject (no interactive approver). */
20
+ /** When true, mark approval as automatic (timeout / headless / abort). */
21
21
  auto?: boolean;
22
22
  }): PhaseState;
23
23
  //# sourceMappingURL=approval.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/runtime/phases/approval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,GACC,UAAU,CA8BZ"}
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../../../src/runtime/phases/approval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,gBAAgB,EAC1B,IAAI,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC5B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,OAAO,CAAC;CACf,GACC,UAAU,CAoCZ"}
@@ -6,25 +6,29 @@ import { emptyUsage } from "../../usage.js";
6
6
  * Build PhaseState for an approval outcome (interactive or auto-reject).
7
7
  */
8
8
  export function approvalDecisionToPhaseState(phaseId, decision, opts) {
9
- if (opts.auto) {
9
+ const note = decision.note?.trim();
10
+ // Headless default path: no note and reject → keep historical auto-reject wording.
11
+ if (opts.auto &&
12
+ decision.decision === "reject" &&
13
+ (!note || note === "(auto-rejected: no interactive approver available)")) {
14
+ const reason = note || "(auto-rejected: no interactive approver available)";
10
15
  return {
11
16
  id: phaseId,
12
17
  status: "done",
13
- output: "(auto-rejected: no interactive approver available)",
14
- approval: { decision: "reject", auto: true },
15
- gate: { verdict: "block", reason: "(auto-rejected: no interactive approver available)" },
18
+ output: reason,
19
+ approval: { decision: "reject", auto: true, note },
20
+ gate: { verdict: "block", reason },
16
21
  usage: emptyUsage(),
17
22
  inputHash: opts.inputHash,
18
23
  reads: opts.reads,
19
24
  endedAt: Date.now(),
20
25
  };
21
26
  }
22
- const note = decision.note?.trim();
23
27
  const ps = {
24
28
  id: phaseId,
25
29
  status: "done",
26
30
  output: note || `(${decision.decision})`,
27
- approval: { decision: decision.decision, note },
31
+ approval: { decision: decision.decision, note, ...(opts.auto ? { auto: true } : {}) },
28
32
  usage: emptyUsage(),
29
33
  inputHash: opts.inputHash,
30
34
  reads: opts.reads,
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/runtime/phases/approval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAa5C;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,OAAe,EACf,QAA0B,EAC1B,IAKC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO;YACN,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,oDAAoD;YAC5D,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;YAC5C,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,oDAAoD,EAAE;YACxF,KAAK,EAAE,UAAU,EAAE;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SACnB,CAAC;IACH,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,MAAM,EAAE,GAAe;QACtB,EAAE,EAAE,OAAO;QACX,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,GAAG;QACxC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC/C,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACnB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/runtime/phases/approval.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAa5C;;GAEG;AACH,MAAM,UAAU,4BAA4B,CAC3C,OAAe,EACf,QAA0B,EAC1B,IAKC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACnC,mFAAmF;IACnF,IACC,IAAI,CAAC,IAAI;QACT,QAAQ,CAAC,QAAQ,KAAK,QAAQ;QAC9B,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,oDAAoD,CAAC,EACvE,CAAC;QACF,MAAM,MAAM,GAAG,IAAI,IAAI,oDAAoD,CAAC;QAC5E,OAAO;YACN,EAAE,EAAE,OAAO;YACX,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;YAClD,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;YAClC,KAAK,EAAE,UAAU,EAAE;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;SACnB,CAAC;IACH,CAAC;IAED,MAAM,EAAE,GAAe;QACtB,EAAE,EAAE,OAAO;QACX,MAAM,EAAE,MAAM;QACd,MAAM,EAAE,IAAI,IAAI,IAAI,QAAQ,CAAC,QAAQ,GAAG;QACxC,QAAQ,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACrF,KAAK,EAAE,UAAU,EAAE;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;KACnB,CAAC;IACF,IAAI,QAAQ,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACpC,EAAE,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,IAAI,kBAAkB,EAAE,CAAC;IACpE,CAAC;IACD,OAAO,EAAE,CAAC;AACX,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}