@acpus/core 0.5.6 → 0.7.0-alpha.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.
- package/README.md +128 -4
- package/dist/.tsbuildinfo +1 -0
- package/dist/graph/builder.d.ts +103 -0
- package/dist/graph/builder.d.ts.map +1 -0
- package/dist/graph/builder.js +209 -0
- package/dist/graph/builder.js.map +1 -0
- package/dist/graph/lowering.d.ts +8 -0
- package/dist/graph/lowering.d.ts.map +1 -0
- package/dist/graph/lowering.js +45 -0
- package/dist/graph/lowering.js.map +1 -0
- package/dist/graph/refs.d.ts +11 -0
- package/dist/graph/refs.d.ts.map +1 -0
- package/dist/graph/refs.js +12 -0
- package/dist/graph/refs.js.map +1 -0
- package/dist/graph/scope.d.ts +21 -0
- package/dist/graph/scope.d.ts.map +1 -0
- package/dist/graph/scope.js +22 -0
- package/dist/graph/scope.js.map +1 -0
- package/dist/index.d.ts +11 -25
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -15
- package/dist/index.js.map +1 -1
- package/dist/internal/symbols.d.ts +9 -0
- package/dist/internal/symbols.d.ts.map +1 -0
- package/dist/internal/symbols.js +9 -0
- package/dist/internal/symbols.js.map +1 -0
- package/dist/internal/type-utils.d.ts +7 -0
- package/dist/internal/type-utils.d.ts.map +1 -0
- package/dist/internal/type-utils.js +8 -0
- package/dist/internal/type-utils.js.map +1 -0
- package/dist/ir/types.d.ts +218 -0
- package/dist/ir/types.d.ts.map +1 -0
- package/dist/ir/types.js.map +1 -0
- package/dist/ir/validator.d.ts +3 -0
- package/dist/ir/validator.d.ts.map +1 -0
- package/dist/ir/validator.js +671 -0
- package/dist/ir/validator.js.map +1 -0
- package/dist/ir.d.ts +3 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +2 -0
- package/dist/ir.js.map +1 -0
- package/dist/nodes/composite/fanout.d.ts +24 -0
- package/dist/nodes/composite/fanout.d.ts.map +1 -0
- package/dist/nodes/composite/fanout.js +24 -0
- package/dist/nodes/composite/fanout.js.map +1 -0
- package/dist/nodes/composite/if.d.ts +12 -0
- package/dist/nodes/composite/if.d.ts.map +1 -0
- package/dist/nodes/composite/if.js +13 -0
- package/dist/nodes/composite/if.js.map +1 -0
- package/dist/nodes/composite/loop.d.ts +17 -0
- package/dist/nodes/composite/loop.d.ts.map +1 -0
- package/dist/nodes/composite/loop.js +22 -0
- package/dist/nodes/composite/loop.js.map +1 -0
- package/dist/nodes/composite/parallel.d.ts +29 -0
- package/dist/nodes/composite/parallel.d.ts.map +1 -0
- package/dist/nodes/composite/parallel.js +18 -0
- package/dist/nodes/composite/parallel.js.map +1 -0
- package/dist/nodes/composite/shared.d.ts +38 -0
- package/dist/nodes/composite/shared.d.ts.map +1 -0
- package/dist/nodes/composite/shared.js +2 -0
- package/dist/nodes/composite/shared.js.map +1 -0
- package/dist/nodes/composite/switch.d.ts +22 -0
- package/dist/nodes/composite/switch.d.ts.map +1 -0
- package/dist/nodes/composite/switch.js +12 -0
- package/dist/nodes/composite/switch.js.map +1 -0
- package/dist/nodes/control/assert.d.ts +10 -0
- package/dist/nodes/control/assert.d.ts.map +1 -0
- package/dist/nodes/control/assert.js +14 -0
- package/dist/nodes/control/assert.js.map +1 -0
- package/dist/nodes/leaf/agent.d.ts +63 -0
- package/dist/nodes/leaf/agent.d.ts.map +1 -0
- package/dist/nodes/leaf/agent.js +56 -0
- package/dist/nodes/leaf/agent.js.map +1 -0
- package/dist/nodes/leaf/shared.d.ts +11 -0
- package/dist/nodes/leaf/shared.d.ts.map +1 -0
- package/dist/nodes/leaf/shared.js +2 -0
- package/dist/nodes/leaf/shared.js.map +1 -0
- package/dist/nodes/leaf/signal.d.ts +27 -0
- package/dist/nodes/leaf/signal.d.ts.map +1 -0
- package/dist/nodes/leaf/signal.js +18 -0
- package/dist/nodes/leaf/signal.js.map +1 -0
- package/dist/nodes/leaf/task.d.ts +71 -0
- package/dist/nodes/leaf/task.d.ts.map +1 -0
- package/dist/nodes/leaf/task.js +88 -0
- package/dist/nodes/leaf/task.js.map +1 -0
- package/dist/runtime/dollar.d.ts +42 -0
- package/dist/runtime/dollar.d.ts.map +1 -0
- package/dist/runtime/dollar.js +82 -0
- package/dist/runtime/dollar.js.map +1 -0
- package/dist/runtime/secret.d.ts +10 -0
- package/dist/runtime/secret.d.ts.map +1 -0
- package/dist/runtime/secret.js +12 -0
- package/dist/runtime/secret.js.map +1 -0
- package/dist/runtime/task-context.d.ts +28 -0
- package/dist/runtime/task-context.d.ts.map +1 -0
- package/dist/runtime/task-context.js +2 -0
- package/dist/runtime/task-context.js.map +1 -0
- package/dist/runtime.d.ts +5 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +3 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema/index.d.ts +6 -2
- package/dist/schema/index.d.ts.map +1 -1
- package/dist/schema/index.js +3 -2
- package/dist/schema/index.js.map +1 -1
- package/dist/schema/lower.d.ts +25 -0
- package/dist/schema/lower.d.ts.map +1 -0
- package/dist/schema/lower.js +198 -0
- package/dist/schema/lower.js.map +1 -0
- package/dist/schema/validate.d.ts +18 -0
- package/dist/schema/validate.d.ts.map +1 -0
- package/dist/schema/validate.js +22 -0
- package/dist/schema/validate.js.map +1 -0
- package/dist/schema/zod.d.ts +17 -0
- package/dist/schema/zod.d.ts.map +1 -0
- package/dist/schema/zod.js +15 -0
- package/dist/schema/zod.js.map +1 -0
- package/dist/schema.d.ts +3 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +2 -0
- package/dist/schema.js.map +1 -0
- package/dist/template/template.d.ts +5 -0
- package/dist/template/template.d.ts.map +1 -0
- package/dist/template/template.js +10 -0
- package/dist/template/template.js.map +1 -0
- package/dist/workflow.d.ts +3 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +2 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +35 -20
- package/dist/agent-overrides.d.ts +0 -33
- package/dist/agent-overrides.d.ts.map +0 -1
- package/dist/agent-overrides.js +0 -178
- package/dist/agent-overrides.js.map +0 -1
- package/dist/cel-ast.d.ts +0 -39
- package/dist/cel-ast.d.ts.map +0 -1
- package/dist/cel-ast.js +0 -157
- package/dist/cel-ast.js.map +0 -1
- package/dist/cel-environment.d.ts +0 -6
- package/dist/cel-environment.d.ts.map +0 -1
- package/dist/cel-environment.js +0 -44
- package/dist/cel-environment.js.map +0 -1
- package/dist/compiler.d.ts +0 -4
- package/dist/compiler.d.ts.map +0 -1
- package/dist/compiler.js +0 -651
- package/dist/compiler.js.map +0 -1
- package/dist/composite-contract.d.ts +0 -46
- package/dist/composite-contract.d.ts.map +0 -1
- package/dist/composite-contract.js +0 -89
- package/dist/composite-contract.js.map +0 -1
- package/dist/diagnostics.d.ts +0 -9
- package/dist/diagnostics.d.ts.map +0 -1
- package/dist/diagnostics.js +0 -16
- package/dist/diagnostics.js.map +0 -1
- package/dist/duration.d.ts +0 -13
- package/dist/duration.d.ts.map +0 -1
- package/dist/duration.js +0 -32
- package/dist/duration.js.map +0 -1
- package/dist/expression-scope.d.ts +0 -23
- package/dist/expression-scope.d.ts.map +0 -1
- package/dist/expression-scope.js +0 -545
- package/dist/expression-scope.js.map +0 -1
- package/dist/expressions-shared.d.ts +0 -19
- package/dist/expressions-shared.d.ts.map +0 -1
- package/dist/expressions-shared.js +0 -25
- package/dist/expressions-shared.js.map +0 -1
- package/dist/expressions.d.ts +0 -9
- package/dist/expressions.d.ts.map +0 -1
- package/dist/expressions.js +0 -95
- package/dist/expressions.js.map +0 -1
- package/dist/hash.d.ts +0 -19
- package/dist/hash.d.ts.map +0 -1
- package/dist/hash.js +0 -120
- package/dist/hash.js.map +0 -1
- package/dist/hook-validation.d.ts +0 -9
- package/dist/hook-validation.d.ts.map +0 -1
- package/dist/hook-validation.js +0 -73
- package/dist/hook-validation.js.map +0 -1
- package/dist/hooks.d.ts +0 -150
- package/dist/hooks.d.ts.map +0 -1
- package/dist/hooks.js +0 -18
- package/dist/hooks.js.map +0 -1
- package/dist/schedule.d.ts +0 -3
- package/dist/schedule.d.ts.map +0 -1
- package/dist/schedule.js +0 -21
- package/dist/schedule.js.map +0 -1
- package/dist/schema/dsl.d.ts +0 -34
- package/dist/schema/dsl.d.ts.map +0 -1
- package/dist/schema/dsl.js +0 -231
- package/dist/schema/dsl.js.map +0 -1
- package/dist/schema/helpers.d.ts +0 -24
- package/dist/schema/helpers.d.ts.map +0 -1
- package/dist/schema/helpers.js +0 -61
- package/dist/schema/helpers.js.map +0 -1
- package/dist/schema-validator.d.ts +0 -29
- package/dist/schema-validator.d.ts.map +0 -1
- package/dist/schema-validator.js +0 -622
- package/dist/schema-validator.js.map +0 -1
- package/dist/source-resolver.d.ts +0 -22
- package/dist/source-resolver.d.ts.map +0 -1
- package/dist/source-resolver.js +0 -43
- package/dist/source-resolver.js.map +0 -1
- package/dist/types.d.ts +0 -125
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/workflow-schema.d.ts +0 -10
- package/dist/workflow-schema.d.ts.map +0 -1
- package/dist/workflow-schema.js +0 -485
- package/dist/workflow-schema.js.map +0 -1
- /package/dist/{types.js → ir/types.js} +0 -0
package/dist/schema-validator.js
DELETED
|
@@ -1,622 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Schema-based structural validation for Acpus workflow specs.
|
|
3
|
-
*
|
|
4
|
-
* Compiles WORKFLOW_SCHEMA with Ajv and maps validation errors to
|
|
5
|
-
* diagnostic codes used by the compiler. This handles:
|
|
6
|
-
* - Unknown fields (additionalProperties: false)
|
|
7
|
-
* - Type / enum / required constraints
|
|
8
|
-
* - if/then cross-field dependencies
|
|
9
|
-
* - oneOf step-kind dispatch
|
|
10
|
-
*
|
|
11
|
-
* Duration format validation and semantic checks (cross-references,
|
|
12
|
-
* DSL compilation) remain in the hand-written compiler code.
|
|
13
|
-
*/
|
|
14
|
-
import { Ajv } from "ajv";
|
|
15
|
-
import { WORKFLOW_SCHEMA } from "./workflow-schema.js";
|
|
16
|
-
// ── Module-level Ajv singleton ──
|
|
17
|
-
const ajv = new Ajv({ allErrors: true, strict: false });
|
|
18
|
-
const validate = ajv.compile(WORKFLOW_SCHEMA);
|
|
19
|
-
// ── Error mapping ──
|
|
20
|
-
/**
|
|
21
|
-
* Map Ajv validation errors to compiler diagnostics.
|
|
22
|
-
*
|
|
23
|
-
* Strategy:
|
|
24
|
-
* - `additionalProperties` → SPEC_SHAPE / AGENT_SHAPE / STEP_SHAPE based on path
|
|
25
|
-
* - `required` → specific code based on missingProperty
|
|
26
|
-
* - `enum` / `const` → specific code based on allowedValues context
|
|
27
|
-
* - Step-level oneOf failures: suppress structural oneOf/const errors that are
|
|
28
|
-
* artifacts of branch-matching; only report STEP_KIND if no specific
|
|
29
|
-
* property-level error can be extracted.
|
|
30
|
-
* - Sub-oneOf errors (timeout, cmd, fanout.over) are classified individually.
|
|
31
|
-
* - Everything else → SPEC_SHAPE as fallback
|
|
32
|
-
*/
|
|
33
|
-
export function validateWithSchema(spec, diagnostics) {
|
|
34
|
-
if (!validate(spec)) {
|
|
35
|
-
const errors = validate.errors ?? [];
|
|
36
|
-
mapErrors(errors, diagnostics, spec);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function mapErrors(errors, diagnostics, spec) {
|
|
40
|
-
// Identify step-level oneOf failures — these produce many noisy sub-errors
|
|
41
|
-
// because Ajv tries each branch and reports all mismatches.
|
|
42
|
-
const stepOneOfPaths = new Set();
|
|
43
|
-
for (const err of errors) {
|
|
44
|
-
if (err.keyword === "oneOf" && isStepPath(err.instancePath)) {
|
|
45
|
-
stepOneOfPaths.add(err.instancePath);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// For each step-level oneOf failure, re-validate the step against only its
|
|
49
|
-
// intended branch (inferred from the data's discriminator). This avoids two
|
|
50
|
-
// classes of noise that arise once composite child lists recurse into the
|
|
51
|
-
// step union: (1) cross-branch artifacts (e.g. a `loop` step reported as
|
|
52
|
-
// "missing prompt" because the agent branch also failed), and (2) ancestor
|
|
53
|
-
// cascade (a parent step failing its oneOf only because a descendant step is
|
|
54
|
-
// invalid). Descendant step errors are reported by their own oneOf iteration.
|
|
55
|
-
const reportedStepSubErrors = new Set(); // instancePath of reported sub-errors
|
|
56
|
-
for (const stepPath of stepOneOfPaths) {
|
|
57
|
-
const stepData = navigate(spec, stepPath);
|
|
58
|
-
const branch = inferStepBranch(stepData);
|
|
59
|
-
if (branch) {
|
|
60
|
-
const branchErrors = validateAgainstBranch(branch, stepData);
|
|
61
|
-
// Keep only errors that belong to THIS step. Errors inside a nested child
|
|
62
|
-
// step (under a `do`/`parallel` list) are owned by that child's own oneOf
|
|
63
|
-
// iteration, so drop them here to avoid ancestor cascade.
|
|
64
|
-
const relevant = branchErrors.filter((err) => !isWithinNestedStep(err.instancePath));
|
|
65
|
-
let reportedAny = false;
|
|
66
|
-
for (const err of relevant) {
|
|
67
|
-
const absolutePath = prefixPath(stepPath, err.instancePath);
|
|
68
|
-
const path = toPath(absolutePath);
|
|
69
|
-
const code = classifyError(err, path);
|
|
70
|
-
if (code === "STEP_KIND")
|
|
71
|
-
continue;
|
|
72
|
-
if (err.keyword === "if")
|
|
73
|
-
continue;
|
|
74
|
-
if (code === "STEP_SHAPE" && isDirectParallelStepNoiseAtAbsolutePath(err, absolutePath, spec))
|
|
75
|
-
continue;
|
|
76
|
-
const dedupeKey = `${absolutePath}|${code}|${err.keyword}|${JSON.stringify(err.params)}`;
|
|
77
|
-
if (reportedStepSubErrors.has(dedupeKey))
|
|
78
|
-
continue;
|
|
79
|
-
reportedStepSubErrors.add(dedupeKey);
|
|
80
|
-
diagnostics.error(code, formatMessage(err, code, path), path);
|
|
81
|
-
reportedAny = true;
|
|
82
|
-
}
|
|
83
|
-
// The step itself is well-formed (its only failures were invalid
|
|
84
|
-
// descendants, which report their own diagnostics) → emit nothing.
|
|
85
|
-
if (reportedAny || !relevant.some((err) => err.keyword !== "if"))
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
// No intended branch could be inferred (or none of its errors classified) —
|
|
89
|
-
// the step truly has no matching kind.
|
|
90
|
-
diagnostics.error("STEP_KIND", "Step must define one of run: agent, run: program, run: signal, parallel, fanout, switch, loop, guard, subworkflow, or include.", toPath(stepPath));
|
|
91
|
-
}
|
|
92
|
-
// Now process all remaining errors (non-step-oneOf sub-errors, and errors
|
|
93
|
-
// not under a step-level oneOf)
|
|
94
|
-
for (const err of errors) {
|
|
95
|
-
// Skip errors that are part of a step-level oneOf group (already handled)
|
|
96
|
-
if (stepOneOfPaths.size > 0 && isSubErrorOf(err.instancePath, stepOneOfPaths)) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
// Skip step-level oneOf errors themselves (already handled above)
|
|
100
|
-
if (err.keyword === "oneOf" && isStepPath(err.instancePath)) {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
// Skip "if" keyword errors — these are artifacts of if/then evaluation
|
|
104
|
-
// and the "then" error is what's actually useful (or we handle required
|
|
105
|
-
// errors from the then clause directly).
|
|
106
|
-
if (err.keyword === "if")
|
|
107
|
-
continue;
|
|
108
|
-
const path = toPath(err.instancePath);
|
|
109
|
-
const code = classifyError(err, path);
|
|
110
|
-
if (code === "STEP_SHAPE" && isDirectParallelStepNoise(err, spec))
|
|
111
|
-
continue;
|
|
112
|
-
const message = formatMessage(err, code, path);
|
|
113
|
-
diagnostics.error(code, message, path);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
// ── Branch inference for step oneOf failures ──
|
|
117
|
-
/** Map a step's data discriminator to the `$defs` branch it intended to match. */
|
|
118
|
-
function inferStepBranch(stepData) {
|
|
119
|
-
if (typeof stepData !== "object" || stepData === null)
|
|
120
|
-
return undefined;
|
|
121
|
-
const data = stepData;
|
|
122
|
-
if (data.run === "agent")
|
|
123
|
-
return "agentStep";
|
|
124
|
-
if (data.run === "program")
|
|
125
|
-
return "programStep";
|
|
126
|
-
if (data.run === "signal")
|
|
127
|
-
return "signalStep";
|
|
128
|
-
if ("pipeline" in data)
|
|
129
|
-
return "pipelineStep";
|
|
130
|
-
if ("parallel" in data)
|
|
131
|
-
return "parallelStep";
|
|
132
|
-
if ("fanout" in data)
|
|
133
|
-
return "fanoutStep";
|
|
134
|
-
if ("switch" in data)
|
|
135
|
-
return "switchStep";
|
|
136
|
-
if ("loop" in data)
|
|
137
|
-
return "loopStep";
|
|
138
|
-
if ("guard" in data)
|
|
139
|
-
return "guardStep";
|
|
140
|
-
if ("subworkflow" in data)
|
|
141
|
-
return "subworkflowStep";
|
|
142
|
-
return undefined;
|
|
143
|
-
}
|
|
144
|
-
/** Cache of per-branch validators so repeated steps don't recompile. */
|
|
145
|
-
const branchValidators = new Map();
|
|
146
|
-
/** Validate `stepData` against a single step branch and return its errors. */
|
|
147
|
-
function validateAgainstBranch(branch, stepData) {
|
|
148
|
-
let v = branchValidators.get(branch);
|
|
149
|
-
if (!v) {
|
|
150
|
-
v = ajv.compile({ $ref: `#/$defs/${branch}`, $defs: WORKFLOW_SCHEMA.$defs });
|
|
151
|
-
branchValidators.set(branch, v);
|
|
152
|
-
}
|
|
153
|
-
v(stepData);
|
|
154
|
-
return v.errors ?? [];
|
|
155
|
-
}
|
|
156
|
-
/** Resolve the JSON value at an Ajv instancePath ("/workflow/steps/0"). */
|
|
157
|
-
function navigate(spec, instancePath) {
|
|
158
|
-
const parts = instancePath.split("/").filter(Boolean);
|
|
159
|
-
let cur = spec;
|
|
160
|
-
for (const part of parts) {
|
|
161
|
-
if (cur == null || typeof cur !== "object")
|
|
162
|
-
return undefined;
|
|
163
|
-
cur = cur[decodePointer(part)];
|
|
164
|
-
}
|
|
165
|
-
return cur;
|
|
166
|
-
}
|
|
167
|
-
function isDirectParallelStepNoise(err, spec) {
|
|
168
|
-
if (err.keyword !== "additionalProperties")
|
|
169
|
-
return false;
|
|
170
|
-
if (!/\/parallel\/\d+$/.test(err.instancePath))
|
|
171
|
-
return false;
|
|
172
|
-
const value = navigate(spec, err.instancePath);
|
|
173
|
-
return isParallelBranchMissingDo(value);
|
|
174
|
-
}
|
|
175
|
-
function isDirectParallelStepNoiseAtAbsolutePath(err, absolutePath, spec) {
|
|
176
|
-
if (err.keyword !== "additionalProperties")
|
|
177
|
-
return false;
|
|
178
|
-
if (!/\/parallel\/\d+$/.test(absolutePath))
|
|
179
|
-
return false;
|
|
180
|
-
return isParallelBranchMissingDo(navigate(spec, absolutePath));
|
|
181
|
-
}
|
|
182
|
-
function isParallelBranchMissingDo(value) {
|
|
183
|
-
return typeof value === "object" && value !== null && !Object.prototype.hasOwnProperty.call(value, "do");
|
|
184
|
-
}
|
|
185
|
-
/** Decode a JSON Pointer token (~1 → /, ~0 → ~). */
|
|
186
|
-
function decodePointer(token) {
|
|
187
|
-
return token.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
188
|
-
}
|
|
189
|
-
/** Join a step's absolute instancePath with a branch-local instancePath. */
|
|
190
|
-
function prefixPath(stepPath, localPath) {
|
|
191
|
-
return localPath ? stepPath + localPath : stepPath;
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* True when a branch-local instancePath points inside a nested child step (an
|
|
195
|
-
* entry in a `do` or `pipeline` list). Such errors belong to that child step's
|
|
196
|
-
* own oneOf iteration, not the enclosing step.
|
|
197
|
-
*/
|
|
198
|
-
function isWithinNestedStep(localPath) {
|
|
199
|
-
return /\/(do|pipeline)\/\d+(\/|$)/.test(localPath);
|
|
200
|
-
}
|
|
201
|
-
// ── Error classification ──
|
|
202
|
-
function classifyError(err, path) {
|
|
203
|
-
switch (err.keyword) {
|
|
204
|
-
case "additionalProperties":
|
|
205
|
-
return classifyAdditionalProperties(err, path);
|
|
206
|
-
case "required": {
|
|
207
|
-
const missing = err.params.missingProperty;
|
|
208
|
-
return classifyRequired(missing, path);
|
|
209
|
-
}
|
|
210
|
-
case "enum":
|
|
211
|
-
return classifyEnum(err, path);
|
|
212
|
-
case "const":
|
|
213
|
-
return classifyConst(err, path);
|
|
214
|
-
case "type":
|
|
215
|
-
return classifyType(err, path);
|
|
216
|
-
case "minimum":
|
|
217
|
-
case "exclusiveMinimum":
|
|
218
|
-
return classifyMinimum(err, path);
|
|
219
|
-
case "pattern":
|
|
220
|
-
return path.endsWith(".id") ? "STEP_ID_INVALID" : "SPEC_SHAPE";
|
|
221
|
-
default:
|
|
222
|
-
return "SPEC_SHAPE";
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
function classifyAdditionalProperties(err, path) {
|
|
226
|
-
const ctx = pathContext(path);
|
|
227
|
-
switch (ctx) {
|
|
228
|
-
case "agent":
|
|
229
|
-
return "AGENT_SHAPE";
|
|
230
|
-
case "step":
|
|
231
|
-
return "STEP_SHAPE";
|
|
232
|
-
case "fanout":
|
|
233
|
-
return "STEP_SHAPE";
|
|
234
|
-
case "switch-case":
|
|
235
|
-
return "STEP_SHAPE";
|
|
236
|
-
case "switch-spec":
|
|
237
|
-
return "STEP_SHAPE";
|
|
238
|
-
case "guard":
|
|
239
|
-
return "STEP_SHAPE";
|
|
240
|
-
case "capture":
|
|
241
|
-
return "CAPTURE_SHAPE";
|
|
242
|
-
case "retry":
|
|
243
|
-
return "RETRY_SHAPE";
|
|
244
|
-
case "success-criteria":
|
|
245
|
-
return "FANOUT_SUCCESS_CRITERIA";
|
|
246
|
-
case "loop":
|
|
247
|
-
return "STEP_SHAPE";
|
|
248
|
-
case "workflow":
|
|
249
|
-
return "SPEC_SHAPE";
|
|
250
|
-
default:
|
|
251
|
-
return "SPEC_SHAPE";
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
function classifyRequired(missing, path) {
|
|
255
|
-
const ctx = pathContext(path);
|
|
256
|
-
switch (missing) {
|
|
257
|
-
case "id":
|
|
258
|
-
return "STEP_ID";
|
|
259
|
-
case "use":
|
|
260
|
-
return "AGENT_SHAPE";
|
|
261
|
-
case "prompt":
|
|
262
|
-
return "AGENT_PROMPT";
|
|
263
|
-
case "over":
|
|
264
|
-
return "FANOUT_OVER";
|
|
265
|
-
case "do":
|
|
266
|
-
return path.includes(".parallel[") ? "PARALLEL_DO" : "FANOUT_DO";
|
|
267
|
-
case "pipeline":
|
|
268
|
-
return "STEP_KIND";
|
|
269
|
-
case "quorum":
|
|
270
|
-
return "FANOUT_QUORUM";
|
|
271
|
-
case "cmd":
|
|
272
|
-
return "PROGRAM_CMD";
|
|
273
|
-
case "from":
|
|
274
|
-
return "CAPTURE_FROM";
|
|
275
|
-
case "parse":
|
|
276
|
-
return "CAPTURE_PARSE";
|
|
277
|
-
case "path":
|
|
278
|
-
return "CAPTURE_PATH";
|
|
279
|
-
case "timeout":
|
|
280
|
-
return "STEP_TIMEOUT";
|
|
281
|
-
case "on_timeout":
|
|
282
|
-
return "SIGNAL_ON_TIMEOUT";
|
|
283
|
-
case "default":
|
|
284
|
-
return "SIGNAL_DEFAULT";
|
|
285
|
-
case "max_iterations":
|
|
286
|
-
return "LOOP_MAX_ITERATIONS";
|
|
287
|
-
case "when":
|
|
288
|
-
return ctx === "guard" ? "GUARD_WHEN" : "SPEC_SHAPE";
|
|
289
|
-
case "then":
|
|
290
|
-
case "else":
|
|
291
|
-
return ctx === "guard" ? "GUARD_ACTION" : "SPEC_SHAPE";
|
|
292
|
-
case "max":
|
|
293
|
-
return "RETRY_SHAPE";
|
|
294
|
-
case "steps":
|
|
295
|
-
return "SPEC_SHAPE";
|
|
296
|
-
case "version":
|
|
297
|
-
case "name":
|
|
298
|
-
case "workflow":
|
|
299
|
-
return "SPEC_SHAPE";
|
|
300
|
-
default:
|
|
301
|
-
return "SPEC_SHAPE";
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
function classifyEnum(err, path) {
|
|
305
|
-
const allowedValues = err.params.allowedValues;
|
|
306
|
-
// version enum
|
|
307
|
-
if (allowedValues.length === 1 && allowedValues[0] === 1) {
|
|
308
|
-
return "SPEC_VERSION";
|
|
309
|
-
}
|
|
310
|
-
// agent type enum
|
|
311
|
-
if (setsEqual(allowedValues, ["builtin", "command"])) {
|
|
312
|
-
return "AGENT_SHAPE";
|
|
313
|
-
}
|
|
314
|
-
// on_error enum
|
|
315
|
-
if (setsEqual(allowedValues, ["fail", "retry", "skip"])) {
|
|
316
|
-
return "STEP_ON_ERROR";
|
|
317
|
-
}
|
|
318
|
-
// on_timeout enum
|
|
319
|
-
if (setsEqual(allowedValues, ["fail", "default"])) {
|
|
320
|
-
return "SIGNAL_ON_TIMEOUT";
|
|
321
|
-
}
|
|
322
|
-
// join enum (parallel: all, race)
|
|
323
|
-
if (setsEqual(allowedValues, ["all", "race"])) {
|
|
324
|
-
return "JOIN_VALUE";
|
|
325
|
-
}
|
|
326
|
-
// join enum (fanout: all, race, quorum)
|
|
327
|
-
if (setsEqual(allowedValues, ["all", "race", "quorum"])) {
|
|
328
|
-
return "JOIN_VALUE";
|
|
329
|
-
}
|
|
330
|
-
// capture.from enum
|
|
331
|
-
if (setsEqual(allowedValues, ["stdout", "file"])) {
|
|
332
|
-
return "CAPTURE_FROM";
|
|
333
|
-
}
|
|
334
|
-
// capture.parse enum
|
|
335
|
-
if (setsEqual(allowedValues, ["json", "text"])) {
|
|
336
|
-
return "CAPTURE_PARSE";
|
|
337
|
-
}
|
|
338
|
-
// guard action enum
|
|
339
|
-
if (setsEqual(allowedValues, ["continue", "fail", "complete"])) {
|
|
340
|
-
return "GUARD_ACTION";
|
|
341
|
-
}
|
|
342
|
-
return "SPEC_SHAPE";
|
|
343
|
-
}
|
|
344
|
-
function classifyConst(err, _path) {
|
|
345
|
-
// run: "agent" or run: "program" const — these are artifacts of oneOf
|
|
346
|
-
// branch matching and don't represent real user errors by themselves.
|
|
347
|
-
return "STEP_KIND";
|
|
348
|
-
}
|
|
349
|
-
function classifyType(err, path) {
|
|
350
|
-
const ctx = pathContext(path);
|
|
351
|
-
// Step id type error
|
|
352
|
-
if (path.endsWith(".id")) {
|
|
353
|
-
return "STEP_ID";
|
|
354
|
-
}
|
|
355
|
-
// on_error type error (e.g. null instead of string)
|
|
356
|
-
if (/\.on_error$/.test(path)) {
|
|
357
|
-
return "STEP_ON_ERROR";
|
|
358
|
-
}
|
|
359
|
-
// timeout type error in step context
|
|
360
|
-
if (/\.timeout$/.test(path) && ctx === "step") {
|
|
361
|
-
return "STEP_TIMEOUT";
|
|
362
|
-
}
|
|
363
|
-
// capture type error (not an object)
|
|
364
|
-
if (/\.capture$/.test(path)) {
|
|
365
|
-
return "CAPTURE_SHAPE";
|
|
366
|
-
}
|
|
367
|
-
// fanout.over type error (not string, not array)
|
|
368
|
-
if (/\.fanout\.over$/.test(path)) {
|
|
369
|
-
return "FANOUT_OVER_TYPE";
|
|
370
|
-
}
|
|
371
|
-
if (/\.pipeline$/.test(path)) {
|
|
372
|
-
return "STEP_SHAPE";
|
|
373
|
-
}
|
|
374
|
-
if (/\.guard\.when$/.test(path)) {
|
|
375
|
-
return "GUARD_WHEN_TYPE";
|
|
376
|
-
}
|
|
377
|
-
if (/\.guard\.message$/.test(path)) {
|
|
378
|
-
return "GUARD_MESSAGE";
|
|
379
|
-
}
|
|
380
|
-
// Agent type errors
|
|
381
|
-
if (ctx === "agent") {
|
|
382
|
-
return "AGENT_SHAPE";
|
|
383
|
-
}
|
|
384
|
-
// Output type error
|
|
385
|
-
if (path.endsWith(".output")) {
|
|
386
|
-
return "OUTPUT_SHAPE";
|
|
387
|
-
}
|
|
388
|
-
return "SPEC_SHAPE";
|
|
389
|
-
}
|
|
390
|
-
function classifyMinimum(err, path) {
|
|
391
|
-
// retry.max minimum violation
|
|
392
|
-
if (/\.retry\.max$/.test(path)) {
|
|
393
|
-
return "RETRY_SHAPE";
|
|
394
|
-
}
|
|
395
|
-
// fanout success_criteria min_success minimum violation
|
|
396
|
-
if (/\.success_criteria\.min_success$/.test(path)) {
|
|
397
|
-
return "FANOUT_SUCCESS_CRITERIA";
|
|
398
|
-
}
|
|
399
|
-
// timeout exclusiveMinimum violation (negative number)
|
|
400
|
-
if (/\.timeout$/.test(path)) {
|
|
401
|
-
return "STEP_TIMEOUT";
|
|
402
|
-
}
|
|
403
|
-
return "SPEC_SHAPE";
|
|
404
|
-
}
|
|
405
|
-
function formatMessage(err, code, path) {
|
|
406
|
-
switch (err.keyword) {
|
|
407
|
-
case "additionalProperties": {
|
|
408
|
-
const additionalProp = err.params.additionalProperty;
|
|
409
|
-
const ctx = pathContext(path);
|
|
410
|
-
if (ctx === "agent") {
|
|
411
|
-
return `Unknown agent property '${additionalProp}'.`;
|
|
412
|
-
}
|
|
413
|
-
if (ctx === "step") {
|
|
414
|
-
return `Unknown step property '${additionalProp}'.`;
|
|
415
|
-
}
|
|
416
|
-
if (ctx === "capture") {
|
|
417
|
-
return `Unknown capture property '${additionalProp}'.`;
|
|
418
|
-
}
|
|
419
|
-
if (ctx === "retry") {
|
|
420
|
-
return `Unknown retry property '${additionalProp}'.`;
|
|
421
|
-
}
|
|
422
|
-
return `Unknown property '${additionalProp}'.`;
|
|
423
|
-
}
|
|
424
|
-
case "required": {
|
|
425
|
-
const missing = err.params.missingProperty;
|
|
426
|
-
return formatRequiredMessage(missing, code, path);
|
|
427
|
-
}
|
|
428
|
-
case "enum": {
|
|
429
|
-
const allowed = err.params.allowedValues;
|
|
430
|
-
return `Must be one of ${allowed.join(", ")}.`;
|
|
431
|
-
}
|
|
432
|
-
case "const": {
|
|
433
|
-
const value = err.params.allowedValue;
|
|
434
|
-
return `Must be ${JSON.stringify(value)}.`;
|
|
435
|
-
}
|
|
436
|
-
case "type": {
|
|
437
|
-
const expected = err.params ? err.params.type : "unknown";
|
|
438
|
-
return formatTypeMessage(code, path, expected);
|
|
439
|
-
}
|
|
440
|
-
case "minimum":
|
|
441
|
-
case "exclusiveMinimum": {
|
|
442
|
-
return formatMinimumMessage(code, path);
|
|
443
|
-
}
|
|
444
|
-
case "pattern": {
|
|
445
|
-
if (code === "STEP_ID_INVALID")
|
|
446
|
-
return "Author ids must match ^[A-Za-z_][A-Za-z0-9_-]*$ and must not start with '$'.";
|
|
447
|
-
return err.message ?? "Schema validation error.";
|
|
448
|
-
}
|
|
449
|
-
default:
|
|
450
|
-
return err.message ?? "Schema validation error.";
|
|
451
|
-
}
|
|
452
|
-
}
|
|
453
|
-
function formatRequiredMessage(missing, code, _path) {
|
|
454
|
-
switch (code) {
|
|
455
|
-
case "SPEC_VERSION":
|
|
456
|
-
return "Only DSL version 1 is supported.";
|
|
457
|
-
case "STEP_ID":
|
|
458
|
-
return "Every workflow step must define a non-empty string id.";
|
|
459
|
-
case "AGENT_SHAPE":
|
|
460
|
-
return "Agent definition (type builtin/command) must define a non-empty use.";
|
|
461
|
-
case "AGENT_PROMPT":
|
|
462
|
-
return "run: agent steps must define a prompt string.";
|
|
463
|
-
case "PROGRAM_CMD":
|
|
464
|
-
return "run: program steps must define cmd as a string or array.";
|
|
465
|
-
case "FANOUT_OVER":
|
|
466
|
-
return "fanout.over is required.";
|
|
467
|
-
case "FANOUT_DO":
|
|
468
|
-
return "fanout.do must be an array of steps.";
|
|
469
|
-
case "PARALLEL_DO":
|
|
470
|
-
return "parallel entries are branch descriptors { id, do }, not direct steps; wrap branch steps under do.";
|
|
471
|
-
case "FANOUT_QUORUM":
|
|
472
|
-
return "fanout.quorum must be a positive integer when join is quorum.";
|
|
473
|
-
case "CAPTURE_FROM":
|
|
474
|
-
return "run: program capture.from must be stdout or file.";
|
|
475
|
-
case "CAPTURE_PARSE":
|
|
476
|
-
return "run: program capture.parse must be json or text.";
|
|
477
|
-
case "CAPTURE_PATH":
|
|
478
|
-
return "run: program capture.path must be a string when capture.from is file.";
|
|
479
|
-
case "SIGNAL_PROMPT":
|
|
480
|
-
return "run: signal steps must define a prompt string.";
|
|
481
|
-
case "SIGNAL_TIMEOUT":
|
|
482
|
-
return "signal.timeout must be a duration string.";
|
|
483
|
-
case "SIGNAL_ON_TIMEOUT":
|
|
484
|
-
return "signal.on_timeout must be fail or default, and is required when timeout is set.";
|
|
485
|
-
case "SIGNAL_DEFAULT":
|
|
486
|
-
return "signal.default is required when on_timeout is default.";
|
|
487
|
-
case "LOOP_MAX_ITERATIONS":
|
|
488
|
-
return "loop.max_iterations must be a number.";
|
|
489
|
-
case "GUARD_WHEN":
|
|
490
|
-
return "guard.when is required.";
|
|
491
|
-
case "GUARD_ACTION":
|
|
492
|
-
return "guard.then and guard.else must be one of continue, fail, or complete.";
|
|
493
|
-
case "RETRY_SHAPE":
|
|
494
|
-
return "retry.max must be a non-negative integer.";
|
|
495
|
-
default:
|
|
496
|
-
return `Missing required property '${missing}'.`;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
function formatTypeMessage(code, path, expectedType) {
|
|
500
|
-
switch (code) {
|
|
501
|
-
case "STEP_ON_ERROR":
|
|
502
|
-
return `step.on_error must be a string, one of fail, retry, skip.`;
|
|
503
|
-
case "STEP_TIMEOUT":
|
|
504
|
-
return `step.timeout must be a duration string or number (ms).`;
|
|
505
|
-
case "CAPTURE_SHAPE":
|
|
506
|
-
return `run: program capture must be an object when present.`;
|
|
507
|
-
case "OUTPUT_SHAPE":
|
|
508
|
-
if (path.includes("agent")) {
|
|
509
|
-
return `run: agent output must be an object when present.`;
|
|
510
|
-
}
|
|
511
|
-
return `run: program output must be an object when present.`;
|
|
512
|
-
case "FANOUT_OVER_TYPE":
|
|
513
|
-
return `fanout.over must be an array or CEL expression string.`;
|
|
514
|
-
case "GUARD_WHEN_TYPE":
|
|
515
|
-
return `guard.when must be a boolean or CEL expression string.`;
|
|
516
|
-
case "GUARD_MESSAGE":
|
|
517
|
-
return `guard.message must be a string template.`;
|
|
518
|
-
default:
|
|
519
|
-
return `Must be of type ${expectedType}.`;
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
function formatMinimumMessage(code, _path) {
|
|
523
|
-
switch (code) {
|
|
524
|
-
case "RETRY_SHAPE":
|
|
525
|
-
return "retry.max must be a non-negative integer.";
|
|
526
|
-
case "FANOUT_SUCCESS_CRITERIA":
|
|
527
|
-
return "fanout.success_criteria.min_success must be a positive integer.";
|
|
528
|
-
case "STEP_TIMEOUT":
|
|
529
|
-
return "step.timeout number must be positive (milliseconds).";
|
|
530
|
-
default:
|
|
531
|
-
return "Value must be a positive integer.";
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
/** Convert Ajv instancePath ("/workflow/steps/0/run") to $-path ("$.workflow.steps[0].run") */
|
|
535
|
-
function toPath(instancePath) {
|
|
536
|
-
if (!instancePath)
|
|
537
|
-
return "$";
|
|
538
|
-
// Split on "/" and convert array indices
|
|
539
|
-
const parts = instancePath.split("/").filter(Boolean);
|
|
540
|
-
let result = "$";
|
|
541
|
-
for (const part of parts) {
|
|
542
|
-
if (/^\d+$/.test(part)) {
|
|
543
|
-
result += `[${part}]`;
|
|
544
|
-
}
|
|
545
|
-
else {
|
|
546
|
-
result += `.${part}`;
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
return result;
|
|
550
|
-
}
|
|
551
|
-
/** Determine the semantic context of a path for error classification. */
|
|
552
|
-
function pathContext(path) {
|
|
553
|
-
// Match patterns like $.agents.xxx or $.workflow.steps[n].fanout etc.
|
|
554
|
-
// Note: there is no "signal" context — a `run: signal` step shares the flat
|
|
555
|
-
// `$.workflow.steps[n]` path with agent/program steps, so it resolves to
|
|
556
|
-
// "step". Signal-specific diagnostics are owned by the compiler
|
|
557
|
-
// (validateSignalStep), not the schema-validator.
|
|
558
|
-
if (/\.agents\.[^.]+$/.test(path) || /\.agents\.[^.]+\./.test(path)) {
|
|
559
|
-
return "agent";
|
|
560
|
-
}
|
|
561
|
-
// A step entry itself — top-level `steps[n]` or a nested composite child
|
|
562
|
-
// (`do[n]` / `parallel[n]`). Checked before the composite-keyword cases so a
|
|
563
|
-
// nested step entry resolves to "step" rather than its enclosing composite.
|
|
564
|
-
if (/\.(steps|do|parallel)\[\d+\]$/.test(path)) {
|
|
565
|
-
return "step";
|
|
566
|
-
}
|
|
567
|
-
if (/\.fanout\b/.test(path)) {
|
|
568
|
-
if (/\.fanout\.success_criteria/.test(path))
|
|
569
|
-
return "success-criteria";
|
|
570
|
-
return "fanout";
|
|
571
|
-
}
|
|
572
|
-
if (/\.capture\b/.test(path)) {
|
|
573
|
-
return "capture";
|
|
574
|
-
}
|
|
575
|
-
if (/\.retry\b/.test(path)) {
|
|
576
|
-
return "retry";
|
|
577
|
-
}
|
|
578
|
-
if (/\.switch\b/.test(path) && /\.cases\[\d+\]$/.test(path)) {
|
|
579
|
-
return "switch-case";
|
|
580
|
-
}
|
|
581
|
-
if (/\.switch\b/.test(path)) {
|
|
582
|
-
return "switch-spec";
|
|
583
|
-
}
|
|
584
|
-
if (/\.guard\b/.test(path)) {
|
|
585
|
-
return "guard";
|
|
586
|
-
}
|
|
587
|
-
if (/\.loop\b/.test(path)) {
|
|
588
|
-
return "loop";
|
|
589
|
-
}
|
|
590
|
-
if (/\.workflow\b/.test(path)) {
|
|
591
|
-
return "workflow";
|
|
592
|
-
}
|
|
593
|
-
if (/\.steps\[\d+\]/.test(path)) {
|
|
594
|
-
return "step";
|
|
595
|
-
}
|
|
596
|
-
return "top";
|
|
597
|
-
}
|
|
598
|
-
/** Check if an instancePath looks like a step (an entry in a steps/do/parallel list). */
|
|
599
|
-
function isStepPath(instancePath) {
|
|
600
|
-
// Steps live directly in `workflow.steps`, composite `do` lists, or a
|
|
601
|
-
// `parallel` list. Each is an array whose entries are full Nodes, so a step
|
|
602
|
-
// entry path ends with one of those array names followed by a numeric index.
|
|
603
|
-
return /\/(steps|do|parallel)\/\d+$/.test(instancePath);
|
|
604
|
-
}
|
|
605
|
-
/** Check if errPath is a sub-path of any of the given parent paths. */
|
|
606
|
-
function isSubErrorOf(errPath, parentPaths) {
|
|
607
|
-
for (const parent of parentPaths) {
|
|
608
|
-
if (errPath === parent || errPath.startsWith(parent + "/")) {
|
|
609
|
-
return true;
|
|
610
|
-
}
|
|
611
|
-
}
|
|
612
|
-
return false;
|
|
613
|
-
}
|
|
614
|
-
/** Set equality check for enum classification. */
|
|
615
|
-
function setsEqual(a, b) {
|
|
616
|
-
if (a.length !== b.length)
|
|
617
|
-
return false;
|
|
618
|
-
const sortedA = [...a].sort();
|
|
619
|
-
const sortedB = [...b].sort();
|
|
620
|
-
return sortedA.every((v, i) => v === sortedB[i]);
|
|
621
|
-
}
|
|
622
|
-
//# sourceMappingURL=schema-validator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validator.js","sourceRoot":"","sources":["../src/schema-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core helper to resolve Workflow Spec source paths and read include content.
|
|
3
|
-
*
|
|
4
|
-
* Validates that source and include paths exist and are readable by resolving
|
|
5
|
-
* real filesystem paths (including symlink resolution). The resolved real paths
|
|
6
|
-
* are returned so callers can use them for subsequent operations (cycle guards,
|
|
7
|
-
* compilation, etc.).
|
|
8
|
-
*
|
|
9
|
-
* Unlike the previous `WorkflowSourcePolicy`, this resolver does not restrict
|
|
10
|
-
* paths to workspace or global catalog roots — any readable filesystem path is
|
|
11
|
-
* accepted. Catalog discovery scope remains constrained; file references from
|
|
12
|
-
* discovered specs are not constrained by those roots.
|
|
13
|
-
*/
|
|
14
|
-
export interface WorkflowSourceResolver {
|
|
15
|
-
createIncludeResolver: (defaultSourcePath?: string) => (path: string, fromPath?: string) => string;
|
|
16
|
-
validateSourcePath: (path: string) => string;
|
|
17
|
-
}
|
|
18
|
-
export declare function globalWorkflowRoot(): string;
|
|
19
|
-
export declare function createIncludeResolver(defaultSourcePath?: string): (path: string, fromPath?: string) => string;
|
|
20
|
-
export declare function workflowSourceResolver(workspace?: string): WorkflowSourceResolver;
|
|
21
|
-
export declare function realPathOrUndefined(path: string): string | undefined;
|
|
22
|
-
//# sourceMappingURL=source-resolver.d.ts.map
|