@davidorex/pi-workflows 0.2.0 → 0.3.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/CHANGELOG.md +7 -4
- package/README.md +12 -2
- package/agents/architecture-designer.agent.yaml +58 -0
- package/agents/architecture-inferrer.agent.yaml +60 -0
- package/agents/gap-identifier.agent.yaml +66 -0
- package/agents/handoff-writer.agent.yaml +64 -0
- package/agents/plan-creator.agent.yaml +63 -0
- package/agents/project-definer.agent.yaml +53 -0
- package/agents/project-inferrer.agent.yaml +63 -0
- package/agents/requirements-gatherer.agent.yaml +58 -0
- package/dist/agent-spec.d.ts +27 -0
- package/dist/agent-spec.d.ts.map +1 -0
- package/dist/agent-spec.js +112 -0
- package/dist/agent-spec.js.map +1 -0
- package/dist/checkpoint.d.ts +50 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +109 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/completion.d.ts +18 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +58 -0
- package/dist/completion.js.map +1 -0
- package/dist/dag.d.ts +56 -0
- package/dist/dag.d.ts.map +1 -0
- package/dist/dag.js +172 -0
- package/dist/dag.js.map +1 -0
- package/dist/dispatch.d.ts +35 -0
- package/dist/dispatch.d.ts.map +1 -0
- package/dist/dispatch.js +311 -0
- package/dist/dispatch.js.map +1 -0
- package/dist/expression.d.ts +64 -0
- package/dist/expression.d.ts.map +1 -0
- package/dist/expression.js +294 -0
- package/dist/expression.js.map +1 -0
- package/dist/format.d.ts +19 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +42 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +675 -0
- package/dist/index.js.map +1 -0
- package/dist/output.d.ts +12 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +59 -0
- package/dist/output.js.map +1 -0
- package/dist/state.d.ts +66 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +227 -0
- package/dist/state.js.map +1 -0
- package/dist/step-agent.d.ts +35 -0
- package/dist/step-agent.d.ts.map +1 -0
- package/dist/step-agent.js +156 -0
- package/dist/step-agent.js.map +1 -0
- package/dist/step-command.d.ts +21 -0
- package/dist/step-command.d.ts.map +1 -0
- package/dist/step-command.js +150 -0
- package/dist/step-command.js.map +1 -0
- package/dist/step-foreach.d.ts +33 -0
- package/dist/step-foreach.d.ts.map +1 -0
- package/dist/step-foreach.js +112 -0
- package/dist/step-foreach.js.map +1 -0
- package/dist/step-gate.d.ts +18 -0
- package/dist/step-gate.d.ts.map +1 -0
- package/dist/step-gate.js +137 -0
- package/dist/step-gate.js.map +1 -0
- package/dist/step-loop.d.ts +32 -0
- package/dist/step-loop.d.ts.map +1 -0
- package/dist/step-loop.js +278 -0
- package/dist/step-loop.js.map +1 -0
- package/dist/step-monitor.d.ts +56 -0
- package/dist/step-monitor.d.ts.map +1 -0
- package/dist/step-monitor.js +317 -0
- package/dist/step-monitor.js.map +1 -0
- package/dist/step-parallel.d.ts +43 -0
- package/dist/step-parallel.d.ts.map +1 -0
- package/dist/step-parallel.js +122 -0
- package/dist/step-parallel.js.map +1 -0
- package/{src/step-pause.ts → dist/step-pause.d.ts} +3 -13
- package/dist/step-pause.d.ts.map +1 -0
- package/dist/step-pause.js +22 -0
- package/dist/step-pause.js.map +1 -0
- package/dist/step-shared.d.ts +57 -0
- package/dist/step-shared.d.ts.map +1 -0
- package/dist/step-shared.js +125 -0
- package/dist/step-shared.js.map +1 -0
- package/dist/step-transform.d.ts +11 -0
- package/dist/step-transform.d.ts.map +1 -0
- package/dist/step-transform.js +41 -0
- package/dist/step-transform.js.map +1 -0
- package/dist/template.d.ts +51 -0
- package/dist/template.d.ts.map +1 -0
- package/{src/template.ts → dist/template.js} +32 -38
- package/dist/template.js.map +1 -0
- package/dist/test-helpers.d.ts +17 -0
- package/dist/test-helpers.d.ts.map +1 -0
- package/dist/test-helpers.js +46 -0
- package/dist/test-helpers.js.map +1 -0
- package/dist/tui.d.ts +47 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +143 -0
- package/dist/tui.js.map +1 -0
- package/dist/types.d.ts +164 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/workflow-discovery.d.ts +23 -0
- package/dist/workflow-discovery.d.ts.map +1 -0
- package/dist/workflow-discovery.js +103 -0
- package/dist/workflow-discovery.js.map +1 -0
- package/dist/workflow-executor.d.ts +50 -0
- package/dist/workflow-executor.d.ts.map +1 -0
- package/dist/workflow-executor.js +726 -0
- package/dist/workflow-executor.js.map +1 -0
- package/dist/workflow-sdk.d.ts +44 -0
- package/dist/workflow-sdk.d.ts.map +1 -0
- package/dist/workflow-sdk.js +438 -0
- package/dist/workflow-sdk.js.map +1 -0
- package/dist/workflow-spec.d.ts +33 -0
- package/dist/workflow-spec.d.ts.map +1 -0
- package/dist/workflow-spec.js +464 -0
- package/dist/workflow-spec.js.map +1 -0
- package/dist/workflows-dir.d.ts +3 -0
- package/dist/workflows-dir.d.ts.map +1 -0
- package/{src/workflows-dir.ts → dist/workflows-dir.js} +1 -0
- package/dist/workflows-dir.js.map +1 -0
- package/package.json +53 -38
- package/schemas/decomposition-specs.schema.json +48 -48
- package/schemas/execution-results.schema.json +48 -48
- package/schemas/investigation-findings.schema.json +43 -43
- package/schemas/pattern-analysis.schema.json +41 -41
- package/schemas/phase.schema.json +48 -0
- package/schemas/plan-breakdown.schema.json +20 -20
- package/schemas/quality-analysis.schema.json +33 -33
- package/schemas/research-findings.schema.json +42 -42
- package/schemas/structure-analysis.schema.json +40 -40
- package/schemas/synthesis.schema.json +31 -31
- package/schemas/verifier-output.schema.json +94 -94
- package/skill-narrative.md +84 -0
- package/skills/pi-workflows/SKILL.md +247 -0
- package/templates/architecture-designer/task.md +117 -0
- package/templates/architecture-inferrer/task.md +61 -0
- package/templates/gap-identifier/task.md +103 -0
- package/templates/handoff-writer/task.md +91 -0
- package/templates/plan-creator/task.md +143 -0
- package/templates/project-definer/task.md +67 -0
- package/templates/project-inferrer/task.md +56 -0
- package/templates/requirements-gatherer/task.md +90 -0
- package/workflows/analyze-existing-project.workflow.yaml +74 -0
- package/workflows/create-handoff.workflow.yaml +58 -0
- package/workflows/create-phase.workflow.yaml +1 -1
- package/workflows/do-gap.workflow.yaml +4 -4
- package/workflows/fix-audit.workflow.yaml +1 -1
- package/workflows/gap-to-phase.workflow.yaml +1 -1
- package/workflows/init-new-project.workflow.yaml +55 -0
- package/workflows/plan-from-requirements.workflow.yaml +51 -0
- package/workflows/self-implement.workflow.yaml +3 -3
- package/workflows/typed-analysis.workflow.yaml +4 -4
- package/src/agent-spec.test.ts +0 -289
- package/src/agent-spec.ts +0 -122
- package/src/block-validation.test.ts +0 -350
- package/src/checkpoint.test.ts +0 -237
- package/src/checkpoint.ts +0 -140
- package/src/completion.test.ts +0 -143
- package/src/completion.ts +0 -68
- package/src/dag.test.ts +0 -350
- package/src/dag.ts +0 -219
- package/src/dispatch.test.ts +0 -475
- package/src/dispatch.ts +0 -353
- package/src/expression.test.ts +0 -353
- package/src/expression.ts +0 -332
- package/src/format.test.ts +0 -80
- package/src/format.ts +0 -41
- package/src/graduated-failure.test.ts +0 -556
- package/src/index.test.ts +0 -114
- package/src/index.ts +0 -516
- package/src/loop.test.ts +0 -551
- package/src/output.test.ts +0 -213
- package/src/output.ts +0 -70
- package/src/parallel-integration.test.ts +0 -175
- package/src/resume.test.ts +0 -192
- package/src/state.test.ts +0 -192
- package/src/state.ts +0 -254
- package/src/step-agent.test.ts +0 -327
- package/src/step-agent.ts +0 -178
- package/src/step-command.test.ts +0 -330
- package/src/step-command.ts +0 -132
- package/src/step-foreach.test.ts +0 -647
- package/src/step-foreach.ts +0 -148
- package/src/step-gate.test.ts +0 -185
- package/src/step-gate.ts +0 -116
- package/src/step-loop.test.ts +0 -626
- package/src/step-loop.ts +0 -323
- package/src/step-parallel.test.ts +0 -475
- package/src/step-parallel.ts +0 -168
- package/src/step-pause.test.ts +0 -30
- package/src/step-shared.test.ts +0 -355
- package/src/step-shared.ts +0 -157
- package/src/step-transform.test.ts +0 -155
- package/src/step-transform.ts +0 -47
- package/src/template-integration.test.ts +0 -72
- package/src/template.test.ts +0 -162
- package/src/test-helpers.ts +0 -51
- package/src/tui.test.ts +0 -355
- package/src/tui.ts +0 -182
- package/src/types.ts +0 -195
- package/src/verifier-schema.test.ts +0 -226
- package/src/workflow-discovery.test.ts +0 -105
- package/src/workflow-discovery.ts +0 -114
- package/src/workflow-executor.test.ts +0 -1532
- package/src/workflow-executor.ts +0 -810
- package/src/workflow-sdk.test.ts +0 -238
- package/src/workflow-sdk.ts +0 -262
- package/src/workflow-spec.test.ts +0 -576
- package/src/workflow-spec.ts +0 -471
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/output.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Persist a step's output as JSON to disk.
|
|
3
|
+
*
|
|
4
|
+
* @param runDir - workflow run directory (default location for outputs)
|
|
5
|
+
* @param stepName - step name (used for default filename)
|
|
6
|
+
* @param output - structured output (object/array) or string
|
|
7
|
+
* @param textOutput - fallback text output if output is undefined
|
|
8
|
+
* @param outputPath - author-declared output path (from step spec output.path, already resolved)
|
|
9
|
+
* @returns absolute path to the written JSON file, or undefined if nothing to write
|
|
10
|
+
*/
|
|
11
|
+
export declare function persistStepOutput(runDir: string, stepName: string, output: unknown, textOutput?: string, outputPath?: string): string | undefined;
|
|
12
|
+
//# sourceMappingURL=output.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAgBA;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,OAAO,EACf,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GACjB,MAAM,GAAG,SAAS,CAqCpB"}
|
package/dist/output.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Step output persistence.
|
|
3
|
+
*
|
|
4
|
+
* Every step that produces output writes it as JSON to disk.
|
|
5
|
+
* The workflow author controls the output path via the step spec's
|
|
6
|
+
* output.path field. When no path is declared, defaults to
|
|
7
|
+
* outputs/<stepName>.json in the run directory.
|
|
8
|
+
*
|
|
9
|
+
* JSON is the intermediate representation between steps — structured,
|
|
10
|
+
* validated, consumable by templates, filterable by transforms, mergeable
|
|
11
|
+
* across parallel runs. Text is rendered FROM JSON via templates. It's
|
|
12
|
+
* never the data format.
|
|
13
|
+
*/
|
|
14
|
+
import fs from "node:fs";
|
|
15
|
+
import path from "node:path";
|
|
16
|
+
/**
|
|
17
|
+
* Persist a step's output as JSON to disk.
|
|
18
|
+
*
|
|
19
|
+
* @param runDir - workflow run directory (default location for outputs)
|
|
20
|
+
* @param stepName - step name (used for default filename)
|
|
21
|
+
* @param output - structured output (object/array) or string
|
|
22
|
+
* @param textOutput - fallback text output if output is undefined
|
|
23
|
+
* @param outputPath - author-declared output path (from step spec output.path, already resolved)
|
|
24
|
+
* @returns absolute path to the written JSON file, or undefined if nothing to write
|
|
25
|
+
*/
|
|
26
|
+
export function persistStepOutput(runDir, stepName, output, textOutput, outputPath) {
|
|
27
|
+
// Author-declared path takes priority; default to run dir
|
|
28
|
+
const filePath = outputPath ?? path.join(runDir, "outputs", `${stepName}.json`);
|
|
29
|
+
const dir = path.dirname(filePath);
|
|
30
|
+
// Structured output — the primary case
|
|
31
|
+
if (output !== undefined && output !== null && typeof output === "object") {
|
|
32
|
+
try {
|
|
33
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
34
|
+
fs.writeFileSync(filePath, JSON.stringify(output, null, 2), "utf-8");
|
|
35
|
+
return filePath;
|
|
36
|
+
}
|
|
37
|
+
catch (err) {
|
|
38
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
39
|
+
process.stderr.write(`[pi-workflows] Warning: failed to persist output for step '${stepName}' to ${filePath}: ${msg}\n`);
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// String output — wrap in JSON to maintain uniform contract
|
|
44
|
+
const text = typeof output === "string" ? output : textOutput;
|
|
45
|
+
if (text) {
|
|
46
|
+
try {
|
|
47
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
48
|
+
fs.writeFileSync(filePath, JSON.stringify({ text }, null, 2), "utf-8");
|
|
49
|
+
return filePath;
|
|
50
|
+
}
|
|
51
|
+
catch (err) {
|
|
52
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
53
|
+
process.stderr.write(`[pi-workflows] Warning: failed to persist output for step '${stepName}' to ${filePath}: ${msg}\n`);
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB,CAChC,MAAc,EACd,QAAgB,EAChB,MAAe,EACf,UAAmB,EACnB,UAAmB;IAEnB,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,OAAO,CAAC,CAAC;IAChF,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEnC,uCAAuC;IACvC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC3E,IAAI,CAAC;YACJ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrE,OAAO,QAAQ,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,8DAA8D,QAAQ,QAAQ,QAAQ,KAAK,GAAG,IAAI,CAClG,CAAC;YACF,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED,4DAA4D;IAC5D,MAAM,IAAI,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9D,IAAI,IAAI,EAAE,CAAC;QACV,IAAI,CAAC;YACJ,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACvE,OAAO,QAAQ,CAAC;QACjB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,8DAA8D,QAAQ,QAAQ,QAAQ,KAAK,GAAG,IAAI,CAClG,CAAC;YACF,OAAO,SAAS,CAAC;QAClB,CAAC;IACF,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC"}
|
package/dist/state.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { ExecutionState, StepResult, StepUsage, WorkflowResult, WorkflowSpec } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Generate a unique run ID.
|
|
4
|
+
* Format: <workflow-name>-<yyyymmdd>-<hhmmss>-<4 hex chars>
|
|
5
|
+
* Example: "bugfix-20260312-214041-a3f2"
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateRunId(workflowName: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Initialize the run directory structure.
|
|
10
|
+
* Creates:
|
|
11
|
+
* .workflows/runs/<workflowName>/runs/<runId>/
|
|
12
|
+
* .workflows/runs/<workflowName>/runs/<runId>/sessions/
|
|
13
|
+
* .workflows/runs/<workflowName>/runs/<runId>/outputs/
|
|
14
|
+
*
|
|
15
|
+
* Each workflow owns a directory under .workflows/runs/<name>/.
|
|
16
|
+
* Run state goes in runs/<runId>/; artifacts live at the workflow level.
|
|
17
|
+
*
|
|
18
|
+
* @param cwd - project root
|
|
19
|
+
* @param workflowName - name of the workflow
|
|
20
|
+
* @param runId - unique run identifier
|
|
21
|
+
* @returns absolute path to the run directory
|
|
22
|
+
*/
|
|
23
|
+
export declare function initRunDir(cwd: string, workflowName: string, runId: string): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get the workflow output directory (parent of runs/).
|
|
26
|
+
* This is where artifacts are written.
|
|
27
|
+
*
|
|
28
|
+
* @param cwd - project root
|
|
29
|
+
* @param workflowName - name of the workflow
|
|
30
|
+
* @returns absolute path to .workflows/runs/<workflowName>/
|
|
31
|
+
*/
|
|
32
|
+
export declare function getWorkflowDir(cwd: string, workflowName: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Write execution state to state.json in the run directory.
|
|
35
|
+
* Overwrites on each call (not append).
|
|
36
|
+
* Uses atomic write: write to .state.json.tmp, then fs.renameSync to state.json.
|
|
37
|
+
*/
|
|
38
|
+
export declare function writeState(runDir: string, state: ExecutionState): void;
|
|
39
|
+
/**
|
|
40
|
+
* Read execution state from state.json.
|
|
41
|
+
* Returns null if file doesn't exist.
|
|
42
|
+
*/
|
|
43
|
+
export declare function readState(runDir: string): ExecutionState | null;
|
|
44
|
+
/**
|
|
45
|
+
* Write a step's structured output to outputs/<stepName>.json.
|
|
46
|
+
*/
|
|
47
|
+
export declare function writeStepOutput(runDir: string, stepName: string, output: unknown): void;
|
|
48
|
+
/**
|
|
49
|
+
* Write aggregated metrics to metrics.json.
|
|
50
|
+
*/
|
|
51
|
+
export declare function writeMetrics(runDir: string, steps: Record<string, StepResult>): void;
|
|
52
|
+
/**
|
|
53
|
+
* Aggregate usage across all steps.
|
|
54
|
+
*/
|
|
55
|
+
export declare function aggregateUsage(steps: Record<string, StepResult>): StepUsage;
|
|
56
|
+
/**
|
|
57
|
+
* Build a WorkflowResult from execution state.
|
|
58
|
+
* Aggregates usage across steps, computes total duration,
|
|
59
|
+
* sets output to the last completed step's output (or explicit workflow output if defined).
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildResult(spec: WorkflowSpec, runId: string, runDir: string, state: ExecutionState, status: "completed" | "failed" | "paused"): WorkflowResult;
|
|
62
|
+
/**
|
|
63
|
+
* Format a WorkflowResult as human-readable text for injection into the conversation.
|
|
64
|
+
*/
|
|
65
|
+
export declare function formatResult(result: WorkflowResult): string;
|
|
66
|
+
//# sourceMappingURL=state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGtG;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAU1D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAiBtE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAQ/D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAGvF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI,CAgBpF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,SAAS,CAoB3E;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GACvC,cAAc,CA0BhB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CA2D3D"}
|
package/dist/state.js
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { formatCost, formatDuration } from "./format.js";
|
|
5
|
+
import { WORKFLOWS_DIR } from "./workflows-dir.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generate a unique run ID.
|
|
8
|
+
* Format: <workflow-name>-<yyyymmdd>-<hhmmss>-<4 hex chars>
|
|
9
|
+
* Example: "bugfix-20260312-214041-a3f2"
|
|
10
|
+
*/
|
|
11
|
+
export function generateRunId(workflowName) {
|
|
12
|
+
const now = new Date();
|
|
13
|
+
const yyyy = now.getFullYear().toString();
|
|
14
|
+
const mm = (now.getMonth() + 1).toString().padStart(2, "0");
|
|
15
|
+
const dd = now.getDate().toString().padStart(2, "0");
|
|
16
|
+
const hh = now.getHours().toString().padStart(2, "0");
|
|
17
|
+
const min = now.getMinutes().toString().padStart(2, "0");
|
|
18
|
+
const ss = now.getSeconds().toString().padStart(2, "0");
|
|
19
|
+
const hex = crypto.randomBytes(2).toString("hex");
|
|
20
|
+
return `${workflowName}-${yyyy}${mm}${dd}-${hh}${min}${ss}-${hex}`;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Initialize the run directory structure.
|
|
24
|
+
* Creates:
|
|
25
|
+
* .workflows/runs/<workflowName>/runs/<runId>/
|
|
26
|
+
* .workflows/runs/<workflowName>/runs/<runId>/sessions/
|
|
27
|
+
* .workflows/runs/<workflowName>/runs/<runId>/outputs/
|
|
28
|
+
*
|
|
29
|
+
* Each workflow owns a directory under .workflows/runs/<name>/.
|
|
30
|
+
* Run state goes in runs/<runId>/; artifacts live at the workflow level.
|
|
31
|
+
*
|
|
32
|
+
* @param cwd - project root
|
|
33
|
+
* @param workflowName - name of the workflow
|
|
34
|
+
* @param runId - unique run identifier
|
|
35
|
+
* @returns absolute path to the run directory
|
|
36
|
+
*/
|
|
37
|
+
export function initRunDir(cwd, workflowName, runId) {
|
|
38
|
+
const runDir = path.join(cwd, WORKFLOWS_DIR, "runs", workflowName, "runs", runId);
|
|
39
|
+
fs.mkdirSync(path.join(runDir, "sessions"), { recursive: true });
|
|
40
|
+
fs.mkdirSync(path.join(runDir, "outputs"), { recursive: true });
|
|
41
|
+
return runDir;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the workflow output directory (parent of runs/).
|
|
45
|
+
* This is where artifacts are written.
|
|
46
|
+
*
|
|
47
|
+
* @param cwd - project root
|
|
48
|
+
* @param workflowName - name of the workflow
|
|
49
|
+
* @returns absolute path to .workflows/runs/<workflowName>/
|
|
50
|
+
*/
|
|
51
|
+
export function getWorkflowDir(cwd, workflowName) {
|
|
52
|
+
return path.join(cwd, WORKFLOWS_DIR, "runs", workflowName);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Write execution state to state.json in the run directory.
|
|
56
|
+
* Overwrites on each call (not append).
|
|
57
|
+
* Uses atomic write: write to .state.json.tmp, then fs.renameSync to state.json.
|
|
58
|
+
*/
|
|
59
|
+
export function writeState(runDir, state) {
|
|
60
|
+
state.updatedAt = new Date().toISOString();
|
|
61
|
+
const tmpPath = path.join(runDir, ".state.json.tmp");
|
|
62
|
+
const finalPath = path.join(runDir, "state.json");
|
|
63
|
+
try {
|
|
64
|
+
fs.writeFileSync(tmpPath, JSON.stringify(state, null, 2), "utf-8");
|
|
65
|
+
fs.renameSync(tmpPath, finalPath);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
// Best-effort cleanup of partial tmp file
|
|
69
|
+
try {
|
|
70
|
+
fs.unlinkSync(tmpPath);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
/* ignore cleanup failure */
|
|
74
|
+
}
|
|
75
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
76
|
+
throw new Error(`Failed to write workflow state to ${finalPath} (status: ${state.status}): ${msg}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Read execution state from state.json.
|
|
81
|
+
* Returns null if file doesn't exist.
|
|
82
|
+
*/
|
|
83
|
+
export function readState(runDir) {
|
|
84
|
+
const statePath = path.join(runDir, "state.json");
|
|
85
|
+
try {
|
|
86
|
+
const content = fs.readFileSync(statePath, "utf-8");
|
|
87
|
+
return JSON.parse(content);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Write a step's structured output to outputs/<stepName>.json.
|
|
95
|
+
*/
|
|
96
|
+
export function writeStepOutput(runDir, stepName, output) {
|
|
97
|
+
const outputPath = path.join(runDir, "outputs", `${stepName}.json`);
|
|
98
|
+
fs.writeFileSync(outputPath, JSON.stringify(output, null, 2), "utf-8");
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Write aggregated metrics to metrics.json.
|
|
102
|
+
*/
|
|
103
|
+
export function writeMetrics(runDir, steps) {
|
|
104
|
+
const total = aggregateUsage(steps);
|
|
105
|
+
const totalDurationMs = Object.values(steps).reduce((sum, s) => sum + s.durationMs, 0);
|
|
106
|
+
const metrics = {
|
|
107
|
+
totalUsage: total,
|
|
108
|
+
totalDurationMs,
|
|
109
|
+
steps: Object.fromEntries(Object.entries(steps).map(([name, s]) => [name, { usage: s.usage, durationMs: s.durationMs }])),
|
|
110
|
+
};
|
|
111
|
+
try {
|
|
112
|
+
fs.writeFileSync(path.join(runDir, "metrics.json"), JSON.stringify(metrics, null, 2), "utf-8");
|
|
113
|
+
}
|
|
114
|
+
catch (err) {
|
|
115
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
116
|
+
process.stderr.write(`[pi-workflows] Warning: failed to write metrics to ${runDir}/metrics.json: ${msg}\n`);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Aggregate usage across all steps.
|
|
121
|
+
*/
|
|
122
|
+
export function aggregateUsage(steps) {
|
|
123
|
+
const total = {
|
|
124
|
+
input: 0,
|
|
125
|
+
output: 0,
|
|
126
|
+
cacheRead: 0,
|
|
127
|
+
cacheWrite: 0,
|
|
128
|
+
cost: 0,
|
|
129
|
+
turns: 0,
|
|
130
|
+
};
|
|
131
|
+
for (const step of Object.values(steps)) {
|
|
132
|
+
if (step.usage) {
|
|
133
|
+
total.input += step.usage.input;
|
|
134
|
+
total.output += step.usage.output;
|
|
135
|
+
total.cacheRead += step.usage.cacheRead;
|
|
136
|
+
total.cacheWrite += step.usage.cacheWrite;
|
|
137
|
+
total.cost += step.usage.cost;
|
|
138
|
+
total.turns += step.usage.turns;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return total;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Build a WorkflowResult from execution state.
|
|
145
|
+
* Aggregates usage across steps, computes total duration,
|
|
146
|
+
* sets output to the last completed step's output (or explicit workflow output if defined).
|
|
147
|
+
*/
|
|
148
|
+
export function buildResult(spec, runId, runDir, state, status) {
|
|
149
|
+
const totalUsage = aggregateUsage(state.steps);
|
|
150
|
+
const totalDurationMs = Object.values(state.steps).reduce((sum, s) => sum + s.durationMs, 0);
|
|
151
|
+
// Determine output: last completed step's output
|
|
152
|
+
let output;
|
|
153
|
+
const stepNames = Object.keys(spec.steps);
|
|
154
|
+
for (let i = stepNames.length - 1; i >= 0; i--) {
|
|
155
|
+
const stepName = stepNames[i];
|
|
156
|
+
const stepResult = state.steps[stepName];
|
|
157
|
+
if (stepResult && stepResult.status === "completed") {
|
|
158
|
+
output = stepResult.output ?? stepResult.textOutput;
|
|
159
|
+
break;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
workflow: spec.name,
|
|
164
|
+
runId,
|
|
165
|
+
status,
|
|
166
|
+
steps: state.steps,
|
|
167
|
+
output,
|
|
168
|
+
totalUsage,
|
|
169
|
+
totalDurationMs,
|
|
170
|
+
runDir,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Format a WorkflowResult as human-readable text for injection into the conversation.
|
|
175
|
+
*/
|
|
176
|
+
export function formatResult(result) {
|
|
177
|
+
const stepEntries = Object.values(result.steps);
|
|
178
|
+
const totalSteps = stepEntries.length;
|
|
179
|
+
const completedSteps = stepEntries.filter((s) => s.status === "completed").length;
|
|
180
|
+
const duration = formatDuration(result.totalDurationMs);
|
|
181
|
+
const cost = formatCost(result.totalUsage.cost);
|
|
182
|
+
const lines = [];
|
|
183
|
+
if (result.status === "completed") {
|
|
184
|
+
lines.push(`Workflow '${result.workflow}' completed (${totalSteps} steps, ${duration}, ${cost})`);
|
|
185
|
+
}
|
|
186
|
+
else if (result.status === "paused") {
|
|
187
|
+
lines.push(`Workflow '${result.workflow}' paused (${completedSteps}/${totalSteps} steps completed, ${duration}, ${cost})`);
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
// Find the failed step name
|
|
191
|
+
const failedStep = stepEntries.find((s) => s.status === "failed");
|
|
192
|
+
const failedName = failedStep ? failedStep.step : "unknown";
|
|
193
|
+
lines.push(`Workflow '${result.workflow}' failed at step '${failedName}' (${completedSteps}/${totalSteps} steps, ${duration}, ${cost})`);
|
|
194
|
+
}
|
|
195
|
+
lines.push("");
|
|
196
|
+
lines.push("Steps:");
|
|
197
|
+
for (const step of stepEntries) {
|
|
198
|
+
const stepDuration = formatDuration(step.durationMs);
|
|
199
|
+
const stepCost = formatCost(step.usage.cost);
|
|
200
|
+
if (step.status === "completed") {
|
|
201
|
+
lines.push(` \u2713 ${step.step} ${stepDuration} ${stepCost} (${step.usage.turns} turns)`);
|
|
202
|
+
}
|
|
203
|
+
else if (step.status === "failed") {
|
|
204
|
+
const errorPreview = step.error || "Unknown error";
|
|
205
|
+
lines.push(` \u2717 ${step.step} ${stepDuration} ${stepCost} ${errorPreview}`);
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
// skipped
|
|
209
|
+
lines.push(` \u00b7 ${step.step}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (result.status === "completed") {
|
|
213
|
+
lines.push("");
|
|
214
|
+
lines.push(`Total: ${result.totalUsage.input} input + ${result.totalUsage.output} output tokens, ${cost}`);
|
|
215
|
+
}
|
|
216
|
+
if (result.artifacts && Object.keys(result.artifacts).length > 0) {
|
|
217
|
+
lines.push("");
|
|
218
|
+
lines.push("Artifacts:");
|
|
219
|
+
for (const [name, artifactPath] of Object.entries(result.artifacts)) {
|
|
220
|
+
lines.push(` ${name} \u2192 ${artifactPath}`);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
lines.push("");
|
|
224
|
+
lines.push(`Session logs: ${result.runDir}/sessions/`);
|
|
225
|
+
return lines.join("\n");
|
|
226
|
+
}
|
|
227
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../src/state.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type nunjucks from "nunjucks";
|
|
2
|
+
import { dispatch } from "./dispatch.js";
|
|
3
|
+
import type { ProgressWidgetState } from "./tui.js";
|
|
4
|
+
import type { AgentSpec, ExecutionState, StepResult, StepSpec } from "./types.js";
|
|
5
|
+
/** Retry context passed from the executor on retry attempts. */
|
|
6
|
+
export interface RetryContext {
|
|
7
|
+
attempt: number;
|
|
8
|
+
priorErrors: string[];
|
|
9
|
+
steeringMessage?: string;
|
|
10
|
+
}
|
|
11
|
+
export interface AgentStepOptions {
|
|
12
|
+
ctx: any;
|
|
13
|
+
signal?: AbortSignal;
|
|
14
|
+
loadAgent: (name: string) => AgentSpec;
|
|
15
|
+
runDir: string;
|
|
16
|
+
specFilePath: string;
|
|
17
|
+
widgetState: ProgressWidgetState;
|
|
18
|
+
templateEnv?: nunjucks.Environment;
|
|
19
|
+
dispatchFn?: typeof dispatch;
|
|
20
|
+
modelConfig?: import("./dispatch.js").ModelConfig;
|
|
21
|
+
retryContext?: RetryContext;
|
|
22
|
+
onStepActivity?: (activity: {
|
|
23
|
+
tool: string;
|
|
24
|
+
preview: string;
|
|
25
|
+
timestamp: number;
|
|
26
|
+
}) => void;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Execute an agent step: resolve input, render templates, dispatch subprocess,
|
|
30
|
+
* validate output, persist result.
|
|
31
|
+
*
|
|
32
|
+
* Returns the StepResult.
|
|
33
|
+
*/
|
|
34
|
+
export declare function executeAgentStep(stepName: string, stepSpec: StepSpec, state: ExecutionState, options: AgentStepOptions): Promise<StepResult>;
|
|
35
|
+
//# sourceMappingURL=step-agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"step-agent.d.ts","sourceRoot":"","sources":["../src/step-agent.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAmB,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEnG,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAChC,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,mBAAmB,CAAC;IACjC,WAAW,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC7B,WAAW,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAClD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,cAAc,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC1F;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACrC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,cAAc,EACrB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,CAAC,CA8IrB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent step executor — dispatches an LLM subprocess and validates output.
|
|
3
|
+
*/
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { validateFromFile } from "@davidorex/pi-project/src/schema-validator.js";
|
|
7
|
+
import { dispatch } from "./dispatch.js";
|
|
8
|
+
import { resolveExpressions } from "./expression.js";
|
|
9
|
+
import { persistStepOutput } from "./output.js";
|
|
10
|
+
import { buildPrompt, compileAgentSpec, resolveSchemaPath, zeroUsage } from "./step-shared.js";
|
|
11
|
+
/**
|
|
12
|
+
* Execute an agent step: resolve input, render templates, dispatch subprocess,
|
|
13
|
+
* validate output, persist result.
|
|
14
|
+
*
|
|
15
|
+
* Returns the StepResult.
|
|
16
|
+
*/
|
|
17
|
+
export async function executeAgentStep(stepName, stepSpec, state, options) {
|
|
18
|
+
const { ctx, signal, loadAgent, runDir, specFilePath, templateEnv } = options;
|
|
19
|
+
const agentName = stepSpec.agent;
|
|
20
|
+
const scope = { input: state.input, steps: state.steps };
|
|
21
|
+
// Expose forEach bindings (as name + forEach metadata) if present on the state
|
|
22
|
+
const stateAny = state;
|
|
23
|
+
if (stateAny.forEach !== undefined) {
|
|
24
|
+
scope.forEach = stateAny.forEach;
|
|
25
|
+
}
|
|
26
|
+
for (const key of Object.keys(stateAny)) {
|
|
27
|
+
if (key !== "input" &&
|
|
28
|
+
key !== "steps" &&
|
|
29
|
+
key !== "status" &&
|
|
30
|
+
key !== "loop" &&
|
|
31
|
+
key !== "workflowName" &&
|
|
32
|
+
key !== "specVersion" &&
|
|
33
|
+
key !== "startedAt" &&
|
|
34
|
+
key !== "updatedAt" &&
|
|
35
|
+
key !== "forEach") {
|
|
36
|
+
scope[key] = stateAny[key];
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// Resolve input expressions
|
|
40
|
+
let resolvedInput;
|
|
41
|
+
try {
|
|
42
|
+
resolvedInput = resolveExpressions(stepSpec.input ?? {}, scope);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
return {
|
|
46
|
+
step: stepName,
|
|
47
|
+
agent: agentName,
|
|
48
|
+
status: "failed",
|
|
49
|
+
usage: zeroUsage(),
|
|
50
|
+
durationMs: 0,
|
|
51
|
+
error: err instanceof Error ? err.message : String(err),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// Load and optionally render agent template
|
|
55
|
+
let agentSpec;
|
|
56
|
+
try {
|
|
57
|
+
agentSpec = loadAgent(agentName);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return {
|
|
61
|
+
step: stepName,
|
|
62
|
+
agent: agentName,
|
|
63
|
+
status: "failed",
|
|
64
|
+
usage: zeroUsage(),
|
|
65
|
+
durationMs: 0,
|
|
66
|
+
error: err instanceof Error ? err.message : String(err),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
// Inject output schema into template context if available
|
|
70
|
+
if (stepSpec.output?.schema && typeof resolvedInput === "object" && resolvedInput !== null) {
|
|
71
|
+
const schemaPath = resolveSchemaPath(stepSpec.output.schema, options.specFilePath);
|
|
72
|
+
try {
|
|
73
|
+
const schemaContent = fs.readFileSync(schemaPath, "utf8");
|
|
74
|
+
resolvedInput.output_schema = schemaContent;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
/* schema file not found — template can still render without it */
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
agentSpec = compileAgentSpec(agentSpec, resolvedInput, templateEnv);
|
|
81
|
+
let prompt = buildPrompt(stepSpec, agentSpec, resolvedInput, runDir, stepName);
|
|
82
|
+
// Inject retry context if this is a retry attempt
|
|
83
|
+
if (options.retryContext) {
|
|
84
|
+
const rc = options.retryContext;
|
|
85
|
+
const retryParts = [];
|
|
86
|
+
retryParts.push(`## Retry Context (attempt ${rc.attempt})\n`);
|
|
87
|
+
retryParts.push("Your previous attempt failed. The filesystem has been rolled back to its pre-attempt state.\n");
|
|
88
|
+
retryParts.push("### Prior Errors");
|
|
89
|
+
for (let i = 0; i < rc.priorErrors.length; i++) {
|
|
90
|
+
retryParts.push(`${i + 1}. ${rc.priorErrors[i]}`);
|
|
91
|
+
}
|
|
92
|
+
retryParts.push("");
|
|
93
|
+
if (rc.steeringMessage) {
|
|
94
|
+
retryParts.push("### Steering");
|
|
95
|
+
retryParts.push(rc.steeringMessage);
|
|
96
|
+
retryParts.push("");
|
|
97
|
+
}
|
|
98
|
+
retryParts.push("---\n");
|
|
99
|
+
prompt = retryParts.join("\n") + prompt;
|
|
100
|
+
}
|
|
101
|
+
const dispatchFn = options.dispatchFn ?? dispatch;
|
|
102
|
+
const result = await dispatchFn(stepSpec, agentSpec, prompt, {
|
|
103
|
+
cwd: ctx.cwd,
|
|
104
|
+
sessionLogDir: path.join(runDir, "sessions"),
|
|
105
|
+
stepName,
|
|
106
|
+
signal,
|
|
107
|
+
timeoutMs: stepSpec.timeout ? stepSpec.timeout.seconds * 1000 : undefined,
|
|
108
|
+
onEvent: (event) => {
|
|
109
|
+
if (event.type === "tool_execution_start" && event.toolName && options.onStepActivity) {
|
|
110
|
+
options.onStepActivity({
|
|
111
|
+
tool: event.toolName,
|
|
112
|
+
preview: event.toolArgs || "",
|
|
113
|
+
timestamp: Date.now(),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
modelConfig: options.modelConfig,
|
|
118
|
+
});
|
|
119
|
+
// Resolve output path from spec (may contain ${{ }} expressions)
|
|
120
|
+
const resolvedOutputPath = stepSpec.output?.path
|
|
121
|
+
? String(resolveExpressions(stepSpec.output.path, scope))
|
|
122
|
+
: undefined;
|
|
123
|
+
// Validate output against schema (if defined)
|
|
124
|
+
if (stepSpec.output?.schema && result.status === "completed") {
|
|
125
|
+
const schemaPath = resolveSchemaPath(stepSpec.output.schema, specFilePath);
|
|
126
|
+
try {
|
|
127
|
+
const outputFilePath = path.join(runDir, "outputs", `${stepName}.json`);
|
|
128
|
+
if (fs.existsSync(outputFilePath)) {
|
|
129
|
+
const rawOutput = JSON.parse(fs.readFileSync(outputFilePath, "utf-8"));
|
|
130
|
+
validateFromFile(schemaPath, rawOutput, `step output for '${stepName}'`);
|
|
131
|
+
result.output = rawOutput;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
try {
|
|
135
|
+
const parsed = JSON.parse(result.textOutput || "");
|
|
136
|
+
validateFromFile(schemaPath, parsed, `step output for '${stepName}'`);
|
|
137
|
+
result.output = parsed;
|
|
138
|
+
result.outputPath = persistStepOutput(runDir, stepName, parsed, undefined, resolvedOutputPath);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
result.status = "failed";
|
|
142
|
+
result.error = `Step '${stepName}' has output schema but no valid JSON output was produced`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch (err) {
|
|
147
|
+
result.status = "failed";
|
|
148
|
+
result.error = err instanceof Error ? err.message : String(err);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
result.outputPath = persistStepOutput(runDir, stepName, result.output, result.textOutput, resolvedOutputPath);
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=step-agent.js.map
|