taskflow-core 0.1.7 → 0.2.0

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 (126) hide show
  1. package/README.md +80 -25
  2. package/dist/agents.js.map +1 -1
  3. package/dist/cache.d.ts.map +1 -1
  4. package/dist/compile.js.map +1 -1
  5. package/dist/context-store.js.map +1 -1
  6. package/dist/deterministic.d.ts +8 -0
  7. package/dist/deterministic.d.ts.map +1 -1
  8. package/dist/deterministic.js +23 -1
  9. package/dist/deterministic.js.map +1 -1
  10. package/dist/exec/driver.d.ts +47 -0
  11. package/dist/exec/driver.d.ts.map +1 -0
  12. package/dist/exec/driver.js +397 -0
  13. package/dist/exec/driver.js.map +1 -0
  14. package/dist/exec/events.d.ts +76 -0
  15. package/dist/exec/events.d.ts.map +1 -0
  16. package/dist/exec/events.js +108 -0
  17. package/dist/exec/events.js.map +1 -0
  18. package/dist/exec/fold.d.ts +45 -0
  19. package/dist/exec/fold.d.ts.map +1 -0
  20. package/dist/exec/fold.js +122 -0
  21. package/dist/exec/fold.js.map +1 -0
  22. package/dist/exec/index.d.ts +17 -0
  23. package/dist/exec/index.d.ts.map +1 -0
  24. package/dist/exec/index.js +17 -0
  25. package/dist/exec/index.js.map +1 -0
  26. package/dist/exec/kernel-policy.d.ts +35 -0
  27. package/dist/exec/kernel-policy.d.ts.map +1 -0
  28. package/dist/exec/kernel-policy.js +184 -0
  29. package/dist/exec/kernel-policy.js.map +1 -0
  30. package/dist/exec/step-kinds.d.ts +41 -0
  31. package/dist/exec/step-kinds.d.ts.map +1 -0
  32. package/dist/exec/step-kinds.js +574 -0
  33. package/dist/exec/step-kinds.js.map +1 -0
  34. package/dist/exec/step.d.ts +93 -0
  35. package/dist/exec/step.d.ts.map +1 -0
  36. package/dist/exec/step.js +436 -0
  37. package/dist/exec/step.js.map +1 -0
  38. package/dist/flowir/canonical-hash.d.ts +101 -0
  39. package/dist/flowir/canonical-hash.d.ts.map +1 -0
  40. package/dist/flowir/canonical-hash.js +219 -0
  41. package/dist/flowir/canonical-hash.js.map +1 -0
  42. package/dist/flowir/compile.d.ts +49 -0
  43. package/dist/flowir/compile.d.ts.map +1 -0
  44. package/dist/flowir/compile.js +219 -0
  45. package/dist/flowir/compile.js.map +1 -0
  46. package/dist/flowir/cond.d.ts +76 -0
  47. package/dist/flowir/cond.d.ts.map +1 -0
  48. package/dist/flowir/cond.js +214 -0
  49. package/dist/flowir/cond.js.map +1 -0
  50. package/dist/flowir/index.d.ts +20 -23
  51. package/dist/flowir/index.d.ts.map +1 -1
  52. package/dist/flowir/index.js +47 -35
  53. package/dist/flowir/index.js.map +1 -1
  54. package/dist/flowir/meta.d.ts +4 -4
  55. package/dist/flowir/meta.d.ts.map +1 -1
  56. package/dist/flowir/phasefp.d.ts.map +1 -1
  57. package/dist/flowir/phasefp.js +13 -1
  58. package/dist/flowir/phasefp.js.map +1 -1
  59. package/dist/flowir/schema.d.ts +260 -0
  60. package/dist/flowir/schema.d.ts.map +1 -0
  61. package/dist/flowir/schema.js +234 -0
  62. package/dist/flowir/schema.js.map +1 -0
  63. package/dist/flowir/translate.d.ts.map +1 -1
  64. package/dist/flowir/translate.js +3 -0
  65. package/dist/flowir/translate.js.map +1 -1
  66. package/dist/frontmatter.d.ts.map +1 -1
  67. package/dist/host/runner-types.d.ts +3 -0
  68. package/dist/host/runner-types.d.ts.map +1 -1
  69. package/dist/index.d.ts +2 -0
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +2 -0
  72. package/dist/index.js.map +1 -1
  73. package/dist/interpolate.js.map +1 -1
  74. package/dist/peek.js.map +1 -1
  75. package/dist/rates.d.ts +121 -0
  76. package/dist/rates.d.ts.map +1 -0
  77. package/dist/rates.js +187 -0
  78. package/dist/rates.js.map +1 -0
  79. package/dist/reflexion.js.map +1 -1
  80. package/dist/replay.d.ts +43 -50
  81. package/dist/replay.d.ts.map +1 -1
  82. package/dist/replay.js +629 -19
  83. package/dist/replay.js.map +1 -1
  84. package/dist/runner-core.d.ts +24 -0
  85. package/dist/runner-core.d.ts.map +1 -1
  86. package/dist/runner-core.js +225 -32
  87. package/dist/runner-core.js.map +1 -1
  88. package/dist/runtime/phases/approval.d.ts +23 -0
  89. package/dist/runtime/phases/approval.d.ts.map +1 -0
  90. package/dist/runtime/phases/approval.js +38 -0
  91. package/dist/runtime/phases/approval.js.map +1 -0
  92. package/dist/runtime/phases/expand.d.ts +29 -0
  93. package/dist/runtime/phases/expand.d.ts.map +1 -0
  94. package/dist/runtime/phases/expand.js +126 -0
  95. package/dist/runtime/phases/expand.js.map +1 -0
  96. package/dist/runtime/phases/parallel.d.ts +26 -0
  97. package/dist/runtime/phases/parallel.d.ts.map +1 -0
  98. package/dist/runtime/phases/parallel.js +15 -0
  99. package/dist/runtime/phases/parallel.js.map +1 -0
  100. package/dist/runtime/phases/race.d.ts +31 -0
  101. package/dist/runtime/phases/race.d.ts.map +1 -0
  102. package/dist/runtime/phases/race.js +220 -0
  103. package/dist/runtime/phases/race.js.map +1 -0
  104. package/dist/runtime/phases/script.d.ts +38 -0
  105. package/dist/runtime/phases/script.d.ts.map +1 -0
  106. package/dist/runtime/phases/script.js +139 -0
  107. package/dist/runtime/phases/script.js.map +1 -0
  108. package/dist/runtime.d.ts +29 -16
  109. package/dist/runtime.d.ts.map +1 -1
  110. package/dist/runtime.js +554 -292
  111. package/dist/runtime.js.map +1 -1
  112. package/dist/schema.d.ts +44 -12
  113. package/dist/schema.d.ts.map +1 -1
  114. package/dist/schema.js +91 -10
  115. package/dist/schema.js.map +1 -1
  116. package/dist/scorers.d.ts.map +1 -1
  117. package/dist/scorers.js.map +1 -1
  118. package/dist/store.d.ts +6 -0
  119. package/dist/store.d.ts.map +1 -1
  120. package/dist/store.js.map +1 -1
  121. package/dist/trace.d.ts +4 -1
  122. package/dist/trace.d.ts.map +1 -1
  123. package/dist/trace.js +33 -26
  124. package/dist/trace.js.map +1 -1
  125. package/dist/workspace.d.ts.map +1 -1
  126. package/package.json +5 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/exec/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,gFAAgF;AAChF,iBAAiB;AACjB,gFAAgF;AAEhF,yEAAyE;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AA4BtC,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAEhF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAA4B;IAC7D,OAAO;QACN,CAAC,EAAE,oBAAoB;QACvB,EAAE,EAAE,OAAO,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QACrD,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QAC3D,IAAI,EAAG,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,CAAW,CAAC,QAAQ,CAClF,GAAG,CAAC,IAAiB,CACrB;YACA,CAAC,CAAE,GAAG,CAAC,IAAkB;YACzB,CAAC,CAAC,aAAa;QAChB,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YAC5C,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACpE,CAAC,CAAC,SAAS;QACZ,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,IAAI;QAC/B,KAAK,EAAE,GAAG,CAAC,KAAuB;QAClC,MAAM,EAAE,GAAG,CAAC,MAAyB;QACrC,QAAQ,EAAE,GAAG,CAAC,QAAqC;QACnD,MAAM,EAAE,GAAG,CAAC,MAAyB;QACrC,KAAK,EAAE,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;KAC5D,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,6DAA6D;AAC7D,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACtC,MAAM,GAAG,GAAY,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;YAC9D,IAAI,OAAO,MAAM,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAClC,sEAAsE;gBACtE,+DAA+D;gBAC/D,GAAG,CAAC,IAAI,CAAC,MAA0B,CAAC,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACP,8CAA8C;gBAC9C,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;QAAC,MAAM,CAAC;YACR,6CAA6C;QAC9C,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * fold(event log) → RunState-shaped phase snapshot (RFC §6.4, S1).
3
+ *
4
+ * Pure reduce over {@link Event} / legacy TraceEvent-compatible records.
5
+ * Does **not** spawn processes or touch disk. Used by:
6
+ * - S1 differential: assert fold(log) matches phase statuses the imperative
7
+ * runtime would have left in RunState
8
+ * - S3 replay: re-fold under alternate knobs (thresholds/budget) without
9
+ * re-entering the driver
10
+ *
11
+ * Never throws.
12
+ */
13
+ import type { Event, EventDecision } from "./events.ts";
14
+ import type { UsageStats } from "../usage.ts";
15
+ /** Per-phase folded snapshot (subset of PhaseState the runtime persists). */
16
+ export interface FoldedPhase {
17
+ phaseId: string;
18
+ status: "pending" | "running" | "done" | "failed" | "blocked" | "skipped" | "timedOut";
19
+ /** Last recorded text output (subagent or decision summary). */
20
+ output?: string;
21
+ error?: string;
22
+ /** Accumulated usage from subagent-call events. */
23
+ usage: UsageStats;
24
+ /** Last decision event for this phase (gate / when / cache / …). */
25
+ decision?: EventDecision;
26
+ /** Number of subagent-call events seen. */
27
+ subagentCalls: number;
28
+ startedAt?: number;
29
+ endedAt?: number;
30
+ }
31
+ /** Whole-run fold result. */
32
+ export interface FoldedRun {
33
+ runId: string;
34
+ phases: Record<string, FoldedPhase>;
35
+ /** Events that could not be associated with a phaseId (malformed). */
36
+ orphans: number;
37
+ /** Total events folded. */
38
+ eventCount: number;
39
+ }
40
+ /**
41
+ * Reduce an ordered event list into a per-phase snapshot.
42
+ * Accepts {@link Event} (with `v`) or plain TraceEvent-shaped records.
43
+ */
44
+ export declare function foldEvents(events: readonly Event[]): FoldedRun;
45
+ //# sourceMappingURL=fold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../src/exec/fold.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IACvF,gEAAgE;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,KAAK,EAAE,UAAU,CAAC;IAClB,oEAAoE;IACpE,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6BAA6B;AAC7B,MAAM,WAAW,SAAS;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;CACnB;AA2BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,GAAG,SAAS,CAiE9D"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * fold(event log) → RunState-shaped phase snapshot (RFC §6.4, S1).
3
+ *
4
+ * Pure reduce over {@link Event} / legacy TraceEvent-compatible records.
5
+ * Does **not** spawn processes or touch disk. Used by:
6
+ * - S1 differential: assert fold(log) matches phase statuses the imperative
7
+ * runtime would have left in RunState
8
+ * - S3 replay: re-fold under alternate knobs (thresholds/budget) without
9
+ * re-entering the driver
10
+ *
11
+ * Never throws.
12
+ */
13
+ import { emptyUsage } from "../usage.js";
14
+ function emptyPhase(phaseId) {
15
+ return {
16
+ phaseId,
17
+ status: "pending",
18
+ usage: emptyUsage(),
19
+ subagentCalls: 0,
20
+ };
21
+ }
22
+ function ensurePhase(map, phaseId) {
23
+ if (!map[phaseId])
24
+ map[phaseId] = emptyPhase(phaseId);
25
+ return map[phaseId];
26
+ }
27
+ function addUsage(a, b) {
28
+ if (!b)
29
+ return;
30
+ a.input += b.input ?? 0;
31
+ a.output += b.output ?? 0;
32
+ a.cacheRead += b.cacheRead ?? 0;
33
+ a.cacheWrite += b.cacheWrite ?? 0;
34
+ a.cost += b.cost ?? 0;
35
+ a.turns += b.turns ?? 0;
36
+ if (typeof b.contextTokens === "number")
37
+ a.contextTokens = b.contextTokens;
38
+ }
39
+ /**
40
+ * Reduce an ordered event list into a per-phase snapshot.
41
+ * Accepts {@link Event} (with `v`) or plain TraceEvent-shaped records.
42
+ */
43
+ export function foldEvents(events) {
44
+ const phases = {};
45
+ let runId = "";
46
+ let orphans = 0;
47
+ for (const ev of events) {
48
+ if (!ev || typeof ev !== "object") {
49
+ orphans++;
50
+ continue;
51
+ }
52
+ if (typeof ev.runId === "string" && ev.runId)
53
+ runId = ev.runId;
54
+ const phaseId = typeof ev.phaseId === "string" ? ev.phaseId : "";
55
+ if (!phaseId) {
56
+ orphans++;
57
+ continue;
58
+ }
59
+ const p = ensurePhase(phases, phaseId);
60
+ const kind = ev.kind;
61
+ if (kind === "phase-start") {
62
+ p.status = "running";
63
+ if (typeof ev.ts === "number")
64
+ p.startedAt = ev.ts;
65
+ }
66
+ else if (kind === "phase-end") {
67
+ if (ev.status && ev.status !== "pending" && ev.status !== "running") {
68
+ p.status = ev.status;
69
+ }
70
+ else if (p.status === "running" || p.status === "pending") {
71
+ p.status = "done";
72
+ }
73
+ if (typeof ev.error === "string")
74
+ p.error = ev.error;
75
+ if (typeof ev.ts === "number")
76
+ p.endedAt = ev.ts;
77
+ // phase-end may carry decision / output on some hosts
78
+ if (ev.decision)
79
+ p.decision = ev.decision;
80
+ if (ev.output?.text)
81
+ p.output = ev.output.text;
82
+ if (ev.output?.usage)
83
+ addUsage(p.usage, ev.output.usage);
84
+ }
85
+ else if (kind === "subagent-call") {
86
+ p.subagentCalls++;
87
+ if (p.status === "pending")
88
+ p.status = "running";
89
+ if (ev.output?.text)
90
+ p.output = ev.output.text;
91
+ if (ev.output?.usage)
92
+ addUsage(p.usage, ev.output.usage);
93
+ if (typeof ev.ts === "number" && p.startedAt === undefined)
94
+ p.startedAt = ev.ts;
95
+ }
96
+ else if (kind === "decision") {
97
+ if (ev.decision) {
98
+ p.decision = ev.decision;
99
+ if (ev.decision.type === "gate-verdict" || ev.decision.type === "gate-score") {
100
+ const v = ev.decision.type === "gate-verdict"
101
+ ? ev.decision.value
102
+ : ev.decision.verdict;
103
+ if (v === "block")
104
+ p.status = "blocked";
105
+ }
106
+ if (ev.decision.type === "when-guard" && ev.decision.result === false) {
107
+ p.status = "skipped";
108
+ }
109
+ if (ev.decision.type === "budget-hit") {
110
+ // A budget decision can be emitted either on the phase whose
111
+ // completion crossed the cap (already terminal: keep it done) or
112
+ // on a later phase that was prevented from running.
113
+ if (p.status === "pending" || p.status === "running")
114
+ p.status = "skipped";
115
+ p.error = ev.decision.reason ?? ev.decision.value;
116
+ }
117
+ }
118
+ }
119
+ }
120
+ return { runId, phases, orphans, eventCount: events.length };
121
+ }
122
+ //# sourceMappingURL=fold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fold.js","sourceRoot":"","sources":["../../src/exec/fold.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Event-sourced execution log — barrel.
3
+ *
4
+ * Re-exports the event log schema + back-compat reader from `./events.ts`.
5
+ * This is the schema the batch-2 event-sourced kernel (Q8) will write to; it
6
+ * is a versioned superset of the current `TraceEvent` shape (see `../trace.ts`)
7
+ * with a `v` field for forward-compatible migrations.
8
+ *
9
+ * Pure types + parser module — zero runtime deps beyond stdlib. Surfaced
10
+ * through the main `taskflow-core` barrel so host adapters can read/upgrade
11
+ * event logs without a deep import.
12
+ */
13
+ export * from "./events.ts";
14
+ export * from "./fold.ts";
15
+ export * from "./step.ts";
16
+ export * from "./driver.ts";
17
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exec/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Event-sourced execution log — barrel.
3
+ *
4
+ * Re-exports the event log schema + back-compat reader from `./events.ts`.
5
+ * This is the schema the batch-2 event-sourced kernel (Q8) will write to; it
6
+ * is a versioned superset of the current `TraceEvent` shape (see `../trace.ts`)
7
+ * with a `v` field for forward-compatible migrations.
8
+ *
9
+ * Pure types + parser module — zero runtime deps beyond stdlib. Surfaced
10
+ * through the main `taskflow-core` barrel so host adapters can read/upgrade
11
+ * event logs without a deep import.
12
+ */
13
+ export * from "./events.js";
14
+ export * from "./fold.js";
15
+ export * from "./step.js";
16
+ export * from "./driver.js";
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/exec/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Feature gates and shared helpers for the S2 event kernel.
3
+ * Keeps the kernel from silently accepting DSL it cannot implement safely.
4
+ */
5
+ import type { Budget, Phase, Taskflow } from "../schema.ts";
6
+ import { type UsageStats } from "../usage.ts";
7
+ import type { RunState } from "../store.ts";
8
+ /** Linear-time placeholder detection for untrusted DSL strings.
9
+ *
10
+ * A placeholder body is a non-empty Taskflow-style path made only of the
11
+ * identifier/path characters accepted by interpolation. Resetting on a nested
12
+ * opening brace keeps the scan O(n), even for adversarial strings containing
13
+ * thousands of `{` characters. JSON object braces are ignored because their
14
+ * bodies contain quotes, colons, commas, or whitespace. */
15
+ export declare function containsInterpolationPlaceholder(value: string): boolean;
16
+ /**
17
+ * If the definition needs imperative-only features, return a short reason.
18
+ * When set, executeTaskflow must NOT enter the event kernel (even if enabled).
19
+ */
20
+ export declare function kernelUnsupportedReason(def: Taskflow): string | undefined;
21
+ /** Dependency satisfaction matching imperative runtime (join + optional). */
22
+ export declare function depsSatisfied(phase: Phase, phases: Record<string, {
23
+ status: string;
24
+ } | undefined>, byId: Map<string, Phase>): {
25
+ ok: boolean;
26
+ skipReason?: string;
27
+ };
28
+ /** Clamp child budget to the parent's remaining run-wide allowance. */
29
+ export declare function clampSubFlowBudget(sub: Taskflow, parentBudget: Budget | undefined, spent?: UsageStats): Taskflow;
30
+ /** Check a kernel phase's in-flight retry attempts against the run-wide cap.
31
+ * The driver has not folded the current phase into state yet, so callers must
32
+ * supply the cumulative usage of attempts made so far. Prior completed phase
33
+ * usage comes from state; the current running placeholder is excluded. */
34
+ export declare function kernelAttemptsOverBudget(state: RunState, phaseId: string, attemptUsage: readonly UsageStats[]): boolean;
35
+ //# sourceMappingURL=kernel-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-policy.d.ts","sourceRoot":"","sources":["../../src/exec/kernel-policy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE5D,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C;;;;;;2DAM2D;AAC3D,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA2BvE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAuEzE;AAED,6EAA6E;AAC7E,wBAAgB,aAAa,CAC5B,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,EACtD,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GACtB;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAgBtC;AAED,uEAAuE;AACvE,wBAAgB,kBAAkB,CACjC,GAAG,EAAE,QAAQ,EACb,YAAY,EAAE,MAAM,GAAG,SAAS,EAChC,KAAK,GAAE,UAAyB,GAC9B,QAAQ,CAmBV;AAED;;;0EAG0E;AAC1E,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,SAAS,UAAU,EAAE,GACjC,OAAO,CAaT"}
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Feature gates and shared helpers for the S2 event kernel.
3
+ * Keeps the kernel from silently accepting DSL it cannot implement safely.
4
+ */
5
+ import { dependenciesOf, topoLayers } from "../schema.js";
6
+ import { emptyUsage } from "../usage.js";
7
+ import { overBudget } from "../deterministic.js";
8
+ /** Linear-time placeholder detection for untrusted DSL strings.
9
+ *
10
+ * A placeholder body is a non-empty Taskflow-style path made only of the
11
+ * identifier/path characters accepted by interpolation. Resetting on a nested
12
+ * opening brace keeps the scan O(n), even for adversarial strings containing
13
+ * thousands of `{` characters. JSON object braces are ignored because their
14
+ * bodies contain quotes, colons, commas, or whitespace. */
15
+ export function containsInterpolationPlaceholder(value) {
16
+ let open = false;
17
+ let valid = false;
18
+ let length = 0;
19
+ for (let i = 0; i < value.length; i++) {
20
+ const code = value.charCodeAt(i);
21
+ if (code === 123) { // {
22
+ open = true;
23
+ valid = true;
24
+ length = 0;
25
+ continue;
26
+ }
27
+ if (!open)
28
+ continue;
29
+ if (code === 125) { // }
30
+ if (valid && length > 0)
31
+ return true;
32
+ open = false;
33
+ continue;
34
+ }
35
+ length++;
36
+ const allowed = (code >= 48 && code <= 57) || // 0-9
37
+ (code >= 65 && code <= 90) || // A-Z
38
+ (code >= 97 && code <= 122) || // a-z
39
+ code === 45 || code === 46 || code === 95; // - . _
40
+ if (!allowed)
41
+ valid = false;
42
+ }
43
+ return false;
44
+ }
45
+ /**
46
+ * If the definition needs imperative-only features, return a short reason.
47
+ * When set, executeTaskflow must NOT enter the event kernel (even if enabled).
48
+ */
49
+ export function kernelUnsupportedReason(def) {
50
+ // Flow-level: incremental default cross-run is not implemented on the kernel path.
51
+ if (def.incremental === true) {
52
+ return `flow incremental:true requires the imperative runtime`;
53
+ }
54
+ for (const p of def.phases ?? []) {
55
+ const id = p.id;
56
+ if (p.type === "gate" && p.score !== undefined) {
57
+ return `phase '${id}': score gates require the imperative runtime`;
58
+ }
59
+ if (p.onBlock === "retry") {
60
+ return `phase '${id}': onBlock:retry requires the imperative runtime`;
61
+ }
62
+ if (p.reflexion === true) {
63
+ return `phase '${id}': reflexion loops require the imperative runtime`;
64
+ }
65
+ // Explicit multi-attempt retry / expect contracts: kernel lacks full policy yet.
66
+ if (p.retry && typeof p.retry === "object" && (p.retry.max ?? 0) > 0) {
67
+ return `phase '${id}': retry requires the imperative runtime`;
68
+ }
69
+ if (p.expect !== undefined) {
70
+ return `phase '${id}': expect contracts require the imperative runtime`;
71
+ }
72
+ if (p.cache && typeof p.cache === "object") {
73
+ const scope = p.cache.scope;
74
+ if (scope === "cross-run") {
75
+ return `phase '${id}': cross-run cache requires the imperative runtime`;
76
+ }
77
+ }
78
+ if (p.shareContext === true || def.contextSharing === true) {
79
+ return `phase '${id}': Shared Context Tree requires the imperative runtime`;
80
+ }
81
+ if (p.context && p.context.length > 0) {
82
+ return `phase '${id}': context pre-read requires the imperative runtime`;
83
+ }
84
+ // Every phase-local cwd (literal or isolated keyword) is imperative-only.
85
+ // The kernel currently has only one flow-level cwd; accepting a literal
86
+ // override would silently run in the wrong workspace.
87
+ const cwd = p.cwd;
88
+ if (typeof cwd === "string") {
89
+ return `phase '${id}': workspace cwd '${cwd}' requires the imperative runtime`;
90
+ }
91
+ if ((p.type ?? "agent") === "script" && p.input !== undefined) {
92
+ return `phase '${id}': script stdin input requires the imperative runtime`;
93
+ }
94
+ if ((p.type ?? "agent") === "script" && Array.isArray(p.run) && p.run.some(containsInterpolationPlaceholder)) {
95
+ return `phase '${id}': interpolated script argv requires the imperative runtime`;
96
+ }
97
+ }
98
+ // The imperative scheduler runs independent phases concurrently. Until the
99
+ // event driver has an atomic layer commit, admit only linear layers; this
100
+ // prevents a completed gate/budget decision from incorrectly skipping an
101
+ // independent sibling that should already have been in flight.
102
+ const layers = topoLayers(def.phases ?? []);
103
+ if (layers.some((layer) => layer.length > 1)) {
104
+ return "concurrent DAG layers require the imperative runtime";
105
+ }
106
+ // A fan-out budget guard must stop spawning items as spend accumulates. The
107
+ // kernel aggregates only after the whole node today, so budgeted fan-out is
108
+ // deliberately routed to the imperative implementation.
109
+ if (def.budget && (def.phases ?? []).some((p) => p.type === "map" || p.type === "parallel")) {
110
+ return "budgeted fan-out requires the imperative runtime";
111
+ }
112
+ // Loop/tournament perform multiple logical calls inside one uncommitted phase.
113
+ // Until their handlers expose phase-local cumulative usage to every call,
114
+ // route budgeted variants to the imperative scheduler. Single-call advanced
115
+ // kinds (gate/reduce) use kernelAttemptsOverBudget between retries.
116
+ if (def.budget && (def.phases ?? []).some((p) => p.type === "loop" || p.type === "tournament")) {
117
+ return "budgeted multi-call advanced phases require the imperative runtime";
118
+ }
119
+ return undefined;
120
+ }
121
+ /** Dependency satisfaction matching imperative runtime (join + optional). */
122
+ export function depsSatisfied(phase, phases, byId) {
123
+ const deps = dependenciesOf(phase);
124
+ const join = phase.join ?? "all";
125
+ const depOk = (d) => {
126
+ const s = phases[d]?.status;
127
+ if (s === "done")
128
+ return true;
129
+ if (s === "failed" && byId.get(d)?.optional)
130
+ return true;
131
+ return false;
132
+ };
133
+ if (deps.length === 0)
134
+ return { ok: true };
135
+ const ok = join === "any" ? deps.some(depOk) : deps.every(depOk);
136
+ if (ok)
137
+ return { ok: true };
138
+ return {
139
+ ok: false,
140
+ skipReason: join === "any" ? "All dependencies failed or were skipped" : "Upstream dependency not satisfied",
141
+ };
142
+ }
143
+ /** Clamp child budget to the parent's remaining run-wide allowance. */
144
+ export function clampSubFlowBudget(sub, parentBudget, spent = emptyUsage()) {
145
+ if (!parentBudget)
146
+ return sub;
147
+ const child = sub.budget;
148
+ const remainingUSD = parentBudget.maxUSD === undefined ? Infinity : Math.max(0, parentBudget.maxUSD - spent.cost);
149
+ const spentTokens = spent.input + spent.output;
150
+ const remainingTokens = parentBudget.maxTokens === undefined ? Infinity : Math.max(0, parentBudget.maxTokens - spentTokens);
151
+ const clamped = {
152
+ maxUSD: Math.min(child?.maxUSD ?? Infinity, remainingUSD),
153
+ maxTokens: Math.min(child?.maxTokens ?? Infinity, remainingTokens),
154
+ };
155
+ const budget = {};
156
+ if (Number.isFinite(clamped.maxUSD))
157
+ budget.maxUSD = clamped.maxUSD;
158
+ if (Number.isFinite(clamped.maxTokens))
159
+ budget.maxTokens = clamped.maxTokens;
160
+ return {
161
+ ...sub,
162
+ budget: budget.maxUSD === undefined && budget.maxTokens === undefined ? undefined : budget,
163
+ };
164
+ }
165
+ /** Check a kernel phase's in-flight retry attempts against the run-wide cap.
166
+ * The driver has not folded the current phase into state yet, so callers must
167
+ * supply the cumulative usage of attempts made so far. Prior completed phase
168
+ * usage comes from state; the current running placeholder is excluded. */
169
+ export function kernelAttemptsOverBudget(state, phaseId, attemptUsage) {
170
+ const budget = state.def.budget;
171
+ if (!budget)
172
+ return false;
173
+ return overBudget({
174
+ maxUSD: budget.maxUSD,
175
+ maxTokens: budget.maxTokens,
176
+ usages: [
177
+ ...Object.entries(state.phases)
178
+ .filter(([id]) => id !== phaseId)
179
+ .map(([, phase]) => phase.usage ?? emptyUsage()),
180
+ ...attemptUsage,
181
+ ],
182
+ }).over;
183
+ }
184
+ //# sourceMappingURL=kernel-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernel-policy.js","sourceRoot":"","sources":["../../src/exec/kernel-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Event-kernel handlers for remaining phase kinds (S2 completion):
3
+ * reduce, gate, approval, loop, tournament, flow.
4
+ *
5
+ * Intentionally does not import runtime.ts. Nested flows go through
6
+ * `StepDeps.runNested` (injected by driver).
7
+ */
8
+ import type { Phase } from "../schema.ts";
9
+ import { type UsageStats } from "../usage.ts";
10
+ import type { Event } from "./events.ts";
11
+ import type { StepContext, StepResult } from "./step.ts";
12
+ type BodyResult = {
13
+ midEvents: Event[];
14
+ output?: string;
15
+ status: StepResult["status"];
16
+ error?: string;
17
+ usage: UsageStats;
18
+ gate?: {
19
+ verdict: "pass" | "block";
20
+ reason?: string;
21
+ };
22
+ approval?: {
23
+ decision: "approve" | "reject" | "edit";
24
+ note?: string;
25
+ auto?: boolean;
26
+ };
27
+ };
28
+ /** reduce / agent-style single call. */
29
+ export declare function executeReduceBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
30
+ /** Gate: LLM judge + parseGateVerdict (score/eval advanced paths stay on imperative). */
31
+ export declare function executeGateBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
32
+ /** Approval: interactive or auto-reject (fail-open, matches runtime). */
33
+ export declare function executeApprovalBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
34
+ /** Loop: until / convergence / maxIterations (no reflexion — imperative for that). */
35
+ export declare function executeLoopBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
36
+ /** Tournament: N variants + judge. */
37
+ export declare function executeTournamentBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
38
+ /** Nested flow: saved `use` or inline `def` via StepDeps.runNested. */
39
+ export declare function executeFlowBody(phase: Phase, ctx: StepContext): Promise<BodyResult>;
40
+ export {};
41
+ //# sourceMappingURL=step-kinds.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-kinds.d.ts","sourceRoot":"","sources":["../../src/exec/step-kinds.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAY,MAAM,cAAc,CAAC;AAWpD,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAI1E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGzD,KAAK,UAAU,GAAG;IACjB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,QAAQ,CAAC,EAAE;QAAE,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACtF,CAAC;AA4IF,wCAAwC;AACxC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAqB3F;AAED,yFAAyF;AACzF,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsFzF;AAED,yEAAyE;AACzE,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8C7F;AAED,sFAAsF;AACtF,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAkEzF;AAED,sCAAsC;AACtC,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA+F/F;AAED,uEAAuE;AACvE,wBAAsB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA6IzF"}