taskflow-core 0.2.3 → 0.2.4
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.
- package/dist/build-info.json +2 -2
- package/dist/compile.d.ts +8 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +75 -9
- package/dist/compile.js.map +1 -1
- package/dist/exec/driver.d.ts +5 -0
- package/dist/exec/driver.d.ts.map +1 -1
- package/dist/exec/driver.js +96 -52
- package/dist/exec/driver.js.map +1 -1
- package/dist/exec/kernel-policy.d.ts.map +1 -1
- package/dist/exec/kernel-policy.js +20 -20
- package/dist/exec/kernel-policy.js.map +1 -1
- package/dist/exec/step-kinds.d.ts.map +1 -1
- package/dist/exec/step-kinds.js +59 -22
- package/dist/exec/step-kinds.js.map +1 -1
- package/dist/exec/step.d.ts.map +1 -1
- package/dist/exec/step.js +44 -10
- package/dist/exec/step.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +13 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +60 -4
- package/dist/runtime.js.map +1 -1
- package/dist/verifiers/discover.d.ts +44 -0
- package/dist/verifiers/discover.d.ts.map +1 -0
- package/dist/verifiers/discover.js +152 -0
- package/dist/verifiers/discover.js.map +1 -0
- package/dist/verifiers/index.d.ts +12 -0
- package/dist/verifiers/index.d.ts.map +1 -0
- package/dist/verifiers/index.js +12 -0
- package/dist/verifiers/index.js.map +1 -0
- package/dist/verifiers/script-lint.d.ts +24 -0
- package/dist/verifiers/script-lint.d.ts.map +1 -0
- package/dist/verifiers/script-lint.js +311 -0
- package/dist/verifiers/script-lint.js.map +1 -0
- package/dist/verify.d.ts +55 -3
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +201 -2
- package/dist/verify.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,OAAO,EACN,6BAA6B,EAC7B,mCAAmC,EACnC,4BAA4B,EAC5B,gCAAgC,GAChC,MAAM,0BAA0B,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,iFAAiF;AACjF,+EAA+E;AAC/E,iFAAiF;AACjF,mCAAmC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,2EAA2E;AAC3E,6EAA6E;AAC7E,2EAA2E;AAC3E,6EAA6E;AAC7E,OAAO,EACN,6BAA6B,EAC7B,mCAAmC,EACnC,4BAA4B,EAC5B,gCAAgC,GAChC,MAAM,0BAA0B,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,iFAAiF;AACjF,+EAA+E;AAC/E,iFAAiF;AACjF,mCAAmC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ type RunTaskFn = SubagentRunner<any>["runTask"];
|
|
|
17
17
|
export { PHASE_TIMEOUT_ABORT_GRACE_MS } from "./runner-core.ts";
|
|
18
18
|
import { type UsageStats } from "./usage.ts";
|
|
19
19
|
import { type CacheScope, type Phase, type Taskflow } from "./schema.ts";
|
|
20
|
+
import { type TaskflowVerifier } from "./verify.ts";
|
|
20
21
|
import { parseGateVerdict } from "./deterministic.ts";
|
|
21
22
|
export { parseTournamentWinner } from "./deterministic.ts";
|
|
22
23
|
import { type TraceSink } from "./trace.ts";
|
|
@@ -72,6 +73,13 @@ export interface RuntimeDeps {
|
|
|
72
73
|
* fallback. Default false; also set `PI_TASKFLOW_EVENT_KERNEL=1`.
|
|
73
74
|
*/
|
|
74
75
|
eventKernel?: boolean;
|
|
76
|
+
/** Caller-supplied zero-token verifiers (see verify.ts). Threaded into every
|
|
77
|
+
* `verifyTaskflow` preflight the runtime performs — dynamic subflows (spawn +
|
|
78
|
+
* inline `flow{def}`), the event-kernel path, and the top-level pre-execution
|
|
79
|
+
* gate (which blocks only on error-severity plugin issues, leaving built-in
|
|
80
|
+
* detectors advisory at the top level as before). A host embedding the engine
|
|
81
|
+
* registers the verifiers it trusts here. Undefined ⇒ built-in detectors only. */
|
|
82
|
+
verifiers?: TaskflowVerifier[];
|
|
75
83
|
/** Internal: sub-flow call stack, for recursion detection. */
|
|
76
84
|
_stack?: string[];
|
|
77
85
|
/** Internal: pre-resolved Shared Context Tree dir for this run (sub-flows inherit the parent's). */
|
|
@@ -102,6 +110,11 @@ export interface RuntimeDeps {
|
|
|
102
110
|
/** Internal: one immutable loader view per top-level execution. Saved-flow
|
|
103
111
|
* definitions must not change between capability scan and execution. */
|
|
104
112
|
_flowLoaderSnapshot?: Map<string, FlowLoaderSnapshotEntry>;
|
|
113
|
+
/** Internal: a child-flow dispatch site has already run the plugin-verifier
|
|
114
|
+
* preflight on the child's declared def, so executeTaskflow's top-level
|
|
115
|
+
* preflight must NOT re-run it on re-entry (avoids verifying each child 2-3x
|
|
116
|
+
* across the imperative path). Root/ctx_spawn entries leave this unset. */
|
|
117
|
+
_verifierPreflightDone?: boolean;
|
|
105
118
|
/** Internal phase-scoped W1a execution binding inherited only by descendants
|
|
106
119
|
* that remain inside the selected cwd capability. */
|
|
107
120
|
_workspaceBinding?: ResolveOnlyPhaseBinding;
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,OAAO,KAAK,EAAyB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEpF;kEACkE;AAClE,KAAK,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;AAchD,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAA8B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,EAAe,KAAK,UAAU,EAA8J,KAAK,KAAK,EAAe,KAAK,QAAQ,EAAwI,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.js
CHANGED
|
@@ -29,7 +29,7 @@ const noRunnerInjected = async (_cwd, _agents, agentName, task) => ({
|
|
|
29
29
|
export { PHASE_TIMEOUT_ABORT_GRACE_MS } from "./runner-core.js";
|
|
30
30
|
import { aggregateUsage, emptyUsage } from "./usage.js";
|
|
31
31
|
import { asArray, dependenciesOf, LOOP_DEFAULT_MAX_ITERATIONS, LOOP_HARD_MAX_ITERATIONS, MAX_DYNAMIC_MAP_ITEMS, MAX_DYNAMIC_NESTING, MAX_DYNAMIC_PHASES, parseTtlMs, resolveArgs, topoLayers, TOURNAMENT_DEFAULT_VARIANTS, TOURNAMENT_HARD_MAX_VARIANTS, validateInvocationArgs, validateTaskflow } from "./schema.js";
|
|
32
|
-
import { verifyTaskflow } from "./verify.js";
|
|
32
|
+
import { verifyTaskflow, pluginVerifierErrors, formatPluginIssueMessages } from "./verify.js";
|
|
33
33
|
import { combineScores, combineWithJudge, evaluatePureScorer, formatScorerReport, parseJudgeOutput, SCORE_DEFAULT_THRESHOLD, scoreResultJSON, scorerShapeErrors } from "./scorers.js";
|
|
34
34
|
import { parseGateVerdict, overBudget as overBudgetCheck, parseTournamentWinner } from "./deterministic.js";
|
|
35
35
|
export { parseTournamentWinner } from "./deterministic.js";
|
|
@@ -653,7 +653,7 @@ async function runInlineSubflow(subflowSpec, defaultAgent, childNodeId, phase, d
|
|
|
653
653
|
const error = `spawned subflow failed validation: ${v.errors.join("; ")}`;
|
|
654
654
|
return { output: `(${error})`, usage: emptyUsage(), failed: true, error };
|
|
655
655
|
}
|
|
656
|
-
const ver = verifyTaskflow({ name: wrapped.name, phases: wrapped.phases, budget: wrapped.budget, concurrency: wrapped.concurrency });
|
|
656
|
+
const ver = verifyTaskflow({ name: wrapped.name, phases: wrapped.phases, budget: wrapped.budget, concurrency: wrapped.concurrency }, { verifiers: deps.verifiers });
|
|
657
657
|
if (!ver.ok) {
|
|
658
658
|
const errs = ver.issues.filter((i) => i.severity === "error").map((i) => i.message);
|
|
659
659
|
const error = `spawned subflow failed verification: ${errs.join("; ")}`;
|
|
@@ -686,6 +686,9 @@ async function runInlineSubflow(subflowSpec, defaultAgent, childNodeId, phase, d
|
|
|
686
686
|
cwd: dynCwd,
|
|
687
687
|
_cacheCwdIdentity: phase.cwd !== undefined || deps._cacheCwdIdentity !== undefined ? dynCwd : undefined,
|
|
688
688
|
_dynamic: true,
|
|
689
|
+
// runInlineSubflow already ran the plugin-verifier preflight on this
|
|
690
|
+
// spawned child (above); don't re-run it on executeTaskflow re-entry.
|
|
691
|
+
_verifierPreflightDone: true,
|
|
689
692
|
// The parent phase's isolated workspace (if any) applies only to the
|
|
690
693
|
// parent — each spawned sub-phase resolves its own cwd. Clear the
|
|
691
694
|
// override so the whole subflow doesn't inherit the parent's dir
|
|
@@ -2481,8 +2484,21 @@ async function executePhaseInner(phase, state, deps, prior, emitProgress, _retry
|
|
|
2481
2484
|
return defFailOpen(`inline def failed validation: ${v.errors.join("; ")}`);
|
|
2482
2485
|
}
|
|
2483
2486
|
// Static verification (dead-ends, unreachable, gate-exhaustion, budget,
|
|
2484
|
-
// concurrency)
|
|
2485
|
-
|
|
2487
|
+
// concurrency) + caller-supplied verifiers. Two contracts by issue origin:
|
|
2488
|
+
// - Built-in error-severity issues FAIL-OPEN: a malformed LLM-authored def
|
|
2489
|
+
// resolves as done/empty with a defError diagnostic and never aborts the
|
|
2490
|
+
// run (authors who want a hard failure can gate downstream). Warnings
|
|
2491
|
+
// are advisory.
|
|
2492
|
+
// - Plugin-verifier errors FAIL-CLOSE: a host's trusted policy must block
|
|
2493
|
+
// spend AND surface as a run failure — matching the saved-use path just
|
|
2494
|
+
// below, runInlineSubflow, the event kernel (runNested), and the top-level
|
|
2495
|
+
// preflight. Without this an inline-def child would silently bypass a
|
|
2496
|
+
// plugin block with res.ok=true (review of #84).
|
|
2497
|
+
const ver = verifyTaskflow({ name: wrapped.name, phases: wrapped.phases, budget: wrapped.budget, concurrency: wrapped.concurrency }, { verifiers: deps.verifiers });
|
|
2498
|
+
const inlinePluginErrors = ver.issues.filter((i) => i.category === "plugin" && i.severity === "error");
|
|
2499
|
+
if (inlinePluginErrors.length) {
|
|
2500
|
+
return failPhase(phase.id, `flow phase '${phase.id}': inline def '${wrapped.name}' failed verifier preflight: ${formatPluginIssueMessages(inlinePluginErrors).join("; ")}`);
|
|
2501
|
+
}
|
|
2486
2502
|
if (!ver.ok) {
|
|
2487
2503
|
const errs = ver.issues.filter((i) => i.severity === "error").map((i) => i.message);
|
|
2488
2504
|
return defFailOpen(`inline def failed verification: ${errs.join("; ")}`);
|
|
@@ -2527,6 +2543,22 @@ async function executePhaseInner(phase, state, deps, prior, emitProgress, _retry
|
|
|
2527
2543
|
const nestedBridgeTree = flowTreeUsesCwdBridge(subDef, deps.loadFlow);
|
|
2528
2544
|
if (nestedBridgeTree)
|
|
2529
2545
|
deps._disableCache = true;
|
|
2546
|
+
// Plugin-error verifier preflight (no-spend gate) BEFORE cache/resume reuse,
|
|
2547
|
+
// for SAVED-USE children only. Inline-def children are already gated by the
|
|
2548
|
+
// verifyTaskflow in the hasDef branch above (plugin errors fail-close,
|
|
2549
|
+
// built-in errors fail-open) — which also runs before this cache lookup — so
|
|
2550
|
+
// re-verifying them here would be redundant. A cached saved-use child is
|
|
2551
|
+
// returned just below WITHOUT re-entering executeTaskflow, and a saved-use
|
|
2552
|
+
// child has no earlier verify site, so this is its single plugin gate and
|
|
2553
|
+
// the cache-reuse guard (review
|
|
2554
|
+
// of #84, issue 1). Blocks only on plugin error-severity issues; built-in
|
|
2555
|
+
// detectors stay advisory.
|
|
2556
|
+
if (!hasDef) {
|
|
2557
|
+
const flowPluginErrors = pluginVerifierErrors({ name: subDef.name, phases: subDef.phases, budget: subDef.budget, concurrency: subDef.concurrency }, deps.verifiers);
|
|
2558
|
+
if (flowPluginErrors) {
|
|
2559
|
+
return failPhase(phase.id, `flow phase '${phase.id}': sub-flow '${subDef.name}' failed verifier preflight: ${flowPluginErrors.join("; ")}`);
|
|
2560
|
+
}
|
|
2561
|
+
}
|
|
2530
2562
|
const flowCc = nestedBridgeTree ? { ...cc, scope: "off" } : cc;
|
|
2531
2563
|
// Every sub-flow cache identity includes the resolved definition. A saved
|
|
2532
2564
|
// flow's name alone is insufficient: its contents can change without the
|
|
@@ -2578,6 +2610,10 @@ async function executePhaseInner(phase, state, deps, prior, emitProgress, _retry
|
|
|
2578
2610
|
cwd: effCwd,
|
|
2579
2611
|
_cacheCwdIdentity: phase.cwd !== undefined || deps._cacheCwdIdentity !== undefined ? effCwd : undefined,
|
|
2580
2612
|
_dynamic: hasDef || deps._dynamic === true ? true : undefined,
|
|
2613
|
+
// The flow-phase handler already ran the plugin-verifier preflight on
|
|
2614
|
+
// this child (inline-def via verifyTaskflow at the def branch, saved-use
|
|
2615
|
+
// via pluginVerifierErrors just above); don't re-run it on re-entry.
|
|
2616
|
+
_verifierPreflightDone: true,
|
|
2581
2617
|
// The workspace override applies only to THIS flow phase, not to the
|
|
2582
2618
|
// nested sub-phases (each resolves its own cwd). Clear it so the child
|
|
2583
2619
|
// phases don't all inherit this phase's isolated dir as an override.
|
|
@@ -3748,6 +3784,25 @@ export async function executeTaskflow(state, deps) {
|
|
|
3748
3784
|
throw new Error("This host reports tokens but not cost, so budget.maxUSD cannot be enforced. " +
|
|
3749
3785
|
"Use budget.maxTokens or a host with cost accounting.");
|
|
3750
3786
|
}
|
|
3787
|
+
// Top-level structural preflight (zero-token). Built-in detector findings
|
|
3788
|
+
// (any severity) stay advisory at the top level — a flow may still run even
|
|
3789
|
+
// with structural errors, exactly as before this seam existed. We block ONLY
|
|
3790
|
+
// on error-severity issues from caller-supplied verifiers (deps.verifiers):
|
|
3791
|
+
// category "plugin" is the canonical discriminator (a nameless verifier's
|
|
3792
|
+
// fail-closed issue still carries it, whereas `source` would be undefined).
|
|
3793
|
+
// Existing flows are unaffected and a host's trusted verifiers can gate spend
|
|
3794
|
+
// before any agent is spawned. Plugin warnings never block here. SKIPPED on
|
|
3795
|
+
// re-entry: a child-flow dispatch site (executePhaseInner / runInlineSubflow)
|
|
3796
|
+
// already ran this gate on the child's declared def and sets
|
|
3797
|
+
// _verifierPreflightDone, so we neither re-verify the same child nor re-run
|
|
3798
|
+
// it against the budget-clamped child def that differs from what the
|
|
3799
|
+
// dispatch site saw.
|
|
3800
|
+
if (deps.verifiers?.length && !deps._verifierPreflightDone) {
|
|
3801
|
+
const pluginErrors = pluginVerifierErrors({ name: def.name, phases: def.phases, budget: def.budget, concurrency: def.concurrency }, deps.verifiers);
|
|
3802
|
+
if (pluginErrors) {
|
|
3803
|
+
throw new Error(`Taskflow '${def.name}' failed verifier preflight: ${pluginErrors.join("; ")}`);
|
|
3804
|
+
}
|
|
3805
|
+
}
|
|
3751
3806
|
// S2 strangler (default OFF): all phase kinds may use the event kernel when enabled.
|
|
3752
3807
|
const { eventKernelEnabled, canUseEventKernel, runEventKernel } = await import("./exec/driver.js");
|
|
3753
3808
|
// Existing phase state requires the imperative cache/inputHash machinery to
|
|
@@ -3770,6 +3825,7 @@ export async function executeTaskflow(state, deps) {
|
|
|
3770
3825
|
persist: deps.persist,
|
|
3771
3826
|
onProgress: deps.onProgress,
|
|
3772
3827
|
eventKernel: deps.eventKernel,
|
|
3828
|
+
verifiers: deps.verifiers,
|
|
3773
3829
|
requestApproval: deps.requestApproval,
|
|
3774
3830
|
loadFlow: deps.loadFlow,
|
|
3775
3831
|
_stack: deps._stack,
|