@davidorex/pi-workflows 0.14.6 → 0.28.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 +199 -0
- package/README.md +12 -9
- package/agents/handoff-writer.agent.yaml +1 -1
- package/agents/requirements-gatherer.agent.yaml +1 -1
- package/dist/agent-spec.d.ts.map +1 -1
- package/dist/agent-spec.js +4 -3
- package/dist/agent-spec.js.map +1 -1
- package/dist/auth-required.d.ts +10 -0
- package/dist/auth-required.d.ts.map +1 -0
- package/dist/auth-required.js +10 -0
- package/dist/auth-required.js.map +1 -0
- package/dist/bundled-dirs.d.ts +2 -0
- package/dist/bundled-dirs.d.ts.map +1 -0
- package/dist/bundled-dirs.js +26 -0
- package/dist/bundled-dirs.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +146 -14
- package/dist/index.js.map +1 -1
- package/dist/render-by-id.d.ts +62 -0
- package/dist/render-by-id.d.ts.map +1 -0
- package/dist/render-by-id.js +105 -0
- package/dist/render-by-id.js.map +1 -0
- package/dist/step-agent.js +1 -1
- package/dist/step-block.d.ts +5 -1
- package/dist/step-block.d.ts.map +1 -1
- package/dist/step-block.js +88 -40
- package/dist/step-block.js.map +1 -1
- package/dist/step-monitor.d.ts +1 -1
- package/dist/step-monitor.d.ts.map +1 -1
- package/dist/step-monitor.js +1 -1
- package/dist/step-monitor.js.map +1 -1
- package/dist/step-shared.d.ts +1 -1
- package/dist/step-shared.d.ts.map +1 -1
- package/dist/step-shared.js +16 -10
- package/dist/step-shared.js.map +1 -1
- package/dist/template-validation.d.ts.map +1 -1
- package/dist/template-validation.js +6 -6
- package/dist/template-validation.js.map +1 -1
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +2 -1
- package/dist/template.js.map +1 -1
- package/dist/test-helpers.d.ts +91 -0
- package/dist/test-helpers.d.ts.map +1 -1
- package/dist/test-helpers.js +185 -1
- package/dist/test-helpers.js.map +1 -1
- package/dist/tui.d.ts +3 -3
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +1 -1
- package/dist/types.d.ts +36 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/workflow-discovery.d.ts.map +1 -1
- package/dist/workflow-discovery.js +2 -1
- package/dist/workflow-discovery.js.map +1 -1
- package/dist/workflow-executor.d.ts.map +1 -1
- package/dist/workflow-executor.js +23 -9
- package/dist/workflow-executor.js.map +1 -1
- package/dist/workflow-sdk.d.ts.map +1 -1
- package/dist/workflow-sdk.js +18 -11
- package/dist/workflow-sdk.js.map +1 -1
- package/dist/workflow-spec.js +99 -2
- package/dist/workflow-spec.js.map +1 -1
- package/package.json +17 -7
- package/skill-narrative.md +5 -3
- package/skills/pi-workflows/SKILL.md +46 -9
- package/skills/pi-workflows/references/bundled-resources.md +0 -36
- package/workflows/analyze-existing-project.workflow.yaml +1 -1
- package/workflows/init-new-project.workflow.yaml +1 -1
- package/workflows/plan-from-requirements.workflow.yaml +2 -2
- package/templates/analyzers/base-analyzer.md +0 -9
- package/templates/analyzers/patterns-task.md +0 -11
- package/templates/analyzers/patterns.md +0 -15
- package/templates/analyzers/quality-task.md +0 -11
- package/templates/analyzers/quality.md +0 -15
- package/templates/analyzers/structure-task.md +0 -17
- package/templates/analyzers/structure.md +0 -15
- package/templates/architecture-designer/task.md +0 -117
- package/templates/architecture-inferrer/task.md +0 -61
- package/templates/audit-finding-verifier/task.md +0 -59
- package/templates/audit-fixer/task.md +0 -67
- package/templates/audit-results-router/task.md +0 -37
- package/templates/decomposer/task.md +0 -56
- package/templates/explorer/system.md +0 -3
- package/templates/explorer/task.md +0 -9
- package/templates/gap-identifier/task.md +0 -103
- package/templates/gap-resolution-assessor/task.md +0 -48
- package/templates/handoff-writer/task.md +0 -101
- package/templates/investigator/task.md +0 -30
- package/templates/phase-author/task.md +0 -82
- package/templates/plan-creator/task.md +0 -143
- package/templates/plan-decomposer/task.md +0 -46
- package/templates/project-definer/task.md +0 -67
- package/templates/project-inferrer/task.md +0 -56
- package/templates/requirements-gatherer/task.md +0 -90
- package/templates/researcher/task.md +0 -26
- package/templates/shared/macros.md +0 -152
- package/templates/spec-implementer/task.md +0 -53
- package/templates/synthesizer/system.md +0 -3
- package/templates/synthesizer/task.md +0 -38
- package/templates/task-verifier/task.md +0 -44
- package/templates/task-worker/task.md +0 -52
- package/templates/verifier/task.md +0 -57
package/dist/test-helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import nunjucks from "nunjucks";
|
|
1
2
|
import type { StepSpec, WorkflowSpec } from "./types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Create a mock extension context for testing.
|
|
@@ -7,6 +8,28 @@ export declare function mockCtx(cwd: string): any;
|
|
|
7
8
|
* Create a mock pi API for testing.
|
|
8
9
|
*/
|
|
9
10
|
export declare function mockPi(): any;
|
|
11
|
+
/**
|
|
12
|
+
* Register a pass-through `enforceBudget` Nunjucks global on the supplied env.
|
|
13
|
+
*
|
|
14
|
+
* Per-item macro tests construct their own minimal Nunjucks env (no project
|
|
15
|
+
* cwd, no schema lookup); the macros invoke `enforceBudget(text, block, path)`
|
|
16
|
+
* unconditionally. To keep the macros' rendering byte-identical to the
|
|
17
|
+
* pre-budget output, this helper registers a global that returns its first
|
|
18
|
+
* argument unchanged. Tests that exercise actual budget truncation register
|
|
19
|
+
* the real enforceBudget via `registerEnforceBudgetReal` instead.
|
|
20
|
+
*/
|
|
21
|
+
export declare function registerEnforceBudgetPassthrough(env: nunjucks.Environment): void;
|
|
22
|
+
/**
|
|
23
|
+
* Register the real `enforceBudget` Nunjucks global on the supplied env,
|
|
24
|
+
* routing every call through the actual budget-enforcer against schemas in
|
|
25
|
+
* the supplied `cwd/.project/schemas/` directory. Use in budget-overflow
|
|
26
|
+
* tests where the macro must produce the truncation marker.
|
|
27
|
+
*
|
|
28
|
+
* The shorthand-vs-pointer expansion mirrors the production helper inside
|
|
29
|
+
* `compileAgent` (pi-jit-agents/src/compile.ts) so test paths can use the
|
|
30
|
+
* readable shorthand form (`decisions.items.context`) the macros use.
|
|
31
|
+
*/
|
|
32
|
+
export declare function registerEnforceBudgetReal(env: nunjucks.Environment, cwd: string): void;
|
|
10
33
|
/**
|
|
11
34
|
* Create a minimal WorkflowSpec for testing.
|
|
12
35
|
* A fresh temp directory is created for filePath.
|
|
@@ -14,4 +37,72 @@ export declare function mockPi(): any;
|
|
|
14
37
|
export declare function makeSpec(overrides: Partial<WorkflowSpec> & {
|
|
15
38
|
steps: Record<string, StepSpec>;
|
|
16
39
|
}): WorkflowSpec;
|
|
40
|
+
/**
|
|
41
|
+
* Absolute path to this package's bundled `templates/` directory — the same
|
|
42
|
+
* Plan 6/7/8 per-item macros that the renderer registry's builtin tier
|
|
43
|
+
* resolves to. Re-exported as a constant so tests can drop the
|
|
44
|
+
* `path.resolve(import.meta.dirname, "..", "templates")` literal.
|
|
45
|
+
*/
|
|
46
|
+
export declare const TEMPLATES_DIR: string;
|
|
47
|
+
/**
|
|
48
|
+
* In-memory mirror of the `ItemLocation` shape `buildIdIndex` produces in
|
|
49
|
+
* pi-project. Repeated verbatim across every render-*.test.ts before the
|
|
50
|
+
* Item-4 harness landed; now imported.
|
|
51
|
+
*/
|
|
52
|
+
export interface FixtureItemLocation {
|
|
53
|
+
block: string;
|
|
54
|
+
arrayKey: string;
|
|
55
|
+
item: Record<string, unknown>;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Build an in-memory id index from a fixture map of block name → items array.
|
|
59
|
+
* Mirrors the buildIdIndex output shape used by pi-project (one entry per
|
|
60
|
+
* id-bearing item, keyed by `item.id`).
|
|
61
|
+
*/
|
|
62
|
+
export declare function buildFixtureIdIndex(blocks: Record<string, Array<Record<string, unknown>>>): Map<string, FixtureItemLocation>;
|
|
63
|
+
/**
|
|
64
|
+
* Construct a Nunjucks env mirroring `registerCompositionGlobals` from
|
|
65
|
+
* pi-jit-agents/compile.ts (the production globals contract).
|
|
66
|
+
*
|
|
67
|
+
* `availableMacros` maps a block kind to the absolute path of its per-item
|
|
68
|
+
* macro file. Kinds NOT in the map produce the `[unrendered: <kind>/<id>]`
|
|
69
|
+
* fallback marker — the same shape the production global emits when the
|
|
70
|
+
* renderer registry has no entry for a kind.
|
|
71
|
+
*
|
|
72
|
+
* Macro-name resolution uses `CANONICAL_MACRO_NAMES` (re-exported from the
|
|
73
|
+
* pi-jit-agents barrel), so kinds picked up by the registry's canonical
|
|
74
|
+
* lookup land on the same name in tests. Unknown kinds fall back to
|
|
75
|
+
* `render_<kind>` with hyphens→underscores, matching the registry default.
|
|
76
|
+
*/
|
|
77
|
+
export declare function makeRendererTestEnv(idIndex: Map<string, FixtureItemLocation>, availableMacros: Record<string, string>): nunjucks.Environment;
|
|
78
|
+
/**
|
|
79
|
+
* Render a per-item macro by importing it from `items/<templateBase>.md` and
|
|
80
|
+
* invoking it with `(item, depth)`.
|
|
81
|
+
*
|
|
82
|
+
* `kind` resolves the macro name through the registry's canonical map (with
|
|
83
|
+
* the `render_<kind>` fallback); `templateBase` defaults to `kind` and only
|
|
84
|
+
* needs to be supplied when the on-disk filename diverges from the kind name
|
|
85
|
+
* (e.g. kind `conformance-reference` lives in `templates/items/conformance.md`
|
|
86
|
+
* — its template basename is `conformance`, not `conformance-reference`).
|
|
87
|
+
*
|
|
88
|
+
* Most render-*.test.ts files used a near-identical thin wrapper; this is
|
|
89
|
+
* the canonical surface so per-test wrappers reduce to one call.
|
|
90
|
+
*/
|
|
91
|
+
export declare function renderItemMacro(env: nunjucks.Environment, kind: string, item: unknown, depth?: number, templateBase?: string): string;
|
|
92
|
+
/**
|
|
93
|
+
* Render a whole-block macro by importing it from `shared/macros.md`.
|
|
94
|
+
* `wholeName` is the macro name (e.g. `render_tasks`, `render_architecture`,
|
|
95
|
+
* `render_conformance`). The macros take a single `data` argument; this
|
|
96
|
+
* helper threads it through.
|
|
97
|
+
*/
|
|
98
|
+
export declare function renderWholeBlockMacro(env: nunjucks.Environment, wholeName: string, data: unknown): string;
|
|
99
|
+
/**
|
|
100
|
+
* Resolve an absolute path to a per-item macro file under
|
|
101
|
+
* `templates/items/<templateBase>.md`. Convenience wrapper so tests skip the
|
|
102
|
+
* `path.resolve(TEMPLATES_DIR, "items", "<base>.md")` literal. The
|
|
103
|
+
* `templateBase` is the on-disk filename basename (e.g. `conformance`,
|
|
104
|
+
* `tasks`) — distinct from the registry kind (`conformance-reference`,
|
|
105
|
+
* `tasks`) when the two names diverge.
|
|
106
|
+
*/
|
|
107
|
+
export declare function itemMacroPath(templateBase: string): string;
|
|
17
108
|
//# sourceMappingURL=test-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-helpers.d.ts","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAcA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEzD;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAS7B,GAAG,CACR;AAED;;GAEG;AACH,wBAAgB,MAAM,IAKhB,GAAG,CACR;AAED;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,GAAG,IAAI,CAIhF;AAED;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAoBtF;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;CAAE,GAAG,YAAY,CAU7G;AAcD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,QAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GACpD,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAWlC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,EACzC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACrC,QAAQ,CAAC,WAAW,CA4CtB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC9B,GAAG,EAAE,QAAQ,CAAC,WAAW,EACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,KAAK,GAAE,MAAU,EACjB,YAAY,CAAC,EAAE,MAAM,GACnB,MAAM,CAIR;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAGzG;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
package/dist/test-helpers.js
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Shared test helpers — mock factories for ctx, pi, and workflow specs
|
|
2
|
+
* Shared test helpers — mock factories for ctx, pi, and workflow specs,
|
|
3
|
+
* plus Nunjucks-environment helpers for the per-item-macro test suites.
|
|
3
4
|
*/
|
|
4
5
|
import fs from "node:fs";
|
|
5
6
|
import os from "node:os";
|
|
6
7
|
import path from "node:path";
|
|
8
|
+
import { schemaPath } from "@davidorex/pi-context/context-dir";
|
|
9
|
+
import { bundledTemplateDir, CANONICAL_MACRO_NAMES, expandFieldPathShorthand, enforceBudget as realEnforceBudget, } from "@davidorex/pi-jit-agents";
|
|
10
|
+
import nunjucks from "nunjucks";
|
|
7
11
|
/**
|
|
8
12
|
* Create a mock extension context for testing.
|
|
9
13
|
*/
|
|
@@ -28,6 +32,53 @@ export function mockPi() {
|
|
|
28
32
|
_messages: messages,
|
|
29
33
|
};
|
|
30
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Register a pass-through `enforceBudget` Nunjucks global on the supplied env.
|
|
37
|
+
*
|
|
38
|
+
* Per-item macro tests construct their own minimal Nunjucks env (no project
|
|
39
|
+
* cwd, no schema lookup); the macros invoke `enforceBudget(text, block, path)`
|
|
40
|
+
* unconditionally. To keep the macros' rendering byte-identical to the
|
|
41
|
+
* pre-budget output, this helper registers a global that returns its first
|
|
42
|
+
* argument unchanged. Tests that exercise actual budget truncation register
|
|
43
|
+
* the real enforceBudget via `registerEnforceBudgetReal` instead.
|
|
44
|
+
*/
|
|
45
|
+
export function registerEnforceBudgetPassthrough(env) {
|
|
46
|
+
env.addGlobal("enforceBudget", (rendered) => typeof rendered === "string" ? rendered : rendered === undefined || rendered === null ? "" : String(rendered));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Register the real `enforceBudget` Nunjucks global on the supplied env,
|
|
50
|
+
* routing every call through the actual budget-enforcer against schemas in
|
|
51
|
+
* the supplied `cwd/.project/schemas/` directory. Use in budget-overflow
|
|
52
|
+
* tests where the macro must produce the truncation marker.
|
|
53
|
+
*
|
|
54
|
+
* The shorthand-vs-pointer expansion mirrors the production helper inside
|
|
55
|
+
* `compileAgent` (pi-jit-agents/src/compile.ts) so test paths can use the
|
|
56
|
+
* readable shorthand form (`decisions.items.context`) the macros use.
|
|
57
|
+
*/
|
|
58
|
+
export function registerEnforceBudgetReal(env, cwd) {
|
|
59
|
+
env.addGlobal("enforceBudget", (rendered, blockName, fieldPathOrShorthand) => {
|
|
60
|
+
const text = typeof rendered === "string" ? rendered : rendered === undefined || rendered === null ? "" : String(rendered);
|
|
61
|
+
if (typeof blockName !== "string" || typeof fieldPathOrShorthand !== "string")
|
|
62
|
+
return text;
|
|
63
|
+
const schemaFile = schemaPath(cwd, blockName);
|
|
64
|
+
if (!fs.existsSync(schemaFile))
|
|
65
|
+
return text;
|
|
66
|
+
let schema;
|
|
67
|
+
try {
|
|
68
|
+
schema = JSON.parse(fs.readFileSync(schemaFile, "utf-8"));
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return text;
|
|
72
|
+
}
|
|
73
|
+
const fp = expandFieldPathShorthand(fieldPathOrShorthand);
|
|
74
|
+
try {
|
|
75
|
+
return realEnforceBudget(text, schema, fp).output;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return text;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
31
82
|
/**
|
|
32
83
|
* Create a minimal WorkflowSpec for testing.
|
|
33
84
|
* A fresh temp directory is created for filePath.
|
|
@@ -43,4 +94,137 @@ export function makeSpec(overrides) {
|
|
|
43
94
|
...overrides,
|
|
44
95
|
};
|
|
45
96
|
}
|
|
97
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
98
|
+
// Per-item-macro test harness (Item 4 of 2026-05-02 residual-debt patch).
|
|
99
|
+
//
|
|
100
|
+
// Every render-*.test.ts previously hand-rolled the same Nunjucks env wiring
|
|
101
|
+
// (ItemLocation type, buildFixtureIdIndex, makeEnv with resolve /
|
|
102
|
+
// render_recursive / enforceBudget globals, plus inline-by-source dispatch
|
|
103
|
+
// mirroring `registerCompositionGlobals` from pi-jit-agents). The harness
|
|
104
|
+
// below consolidates that scaffolding so each per-macro test file holds only
|
|
105
|
+
// the kind-specific assertions and (where relevant) a tiny per-kind
|
|
106
|
+
// renderItem/renderWhole closure.
|
|
107
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
108
|
+
/**
|
|
109
|
+
* Absolute path to this package's bundled `templates/` directory — the same
|
|
110
|
+
* Plan 6/7/8 per-item macros that the renderer registry's builtin tier
|
|
111
|
+
* resolves to. Re-exported as a constant so tests can drop the
|
|
112
|
+
* `path.resolve(import.meta.dirname, "..", "templates")` literal.
|
|
113
|
+
*/
|
|
114
|
+
export const TEMPLATES_DIR = bundledTemplateDir();
|
|
115
|
+
/**
|
|
116
|
+
* Build an in-memory id index from a fixture map of block name → items array.
|
|
117
|
+
* Mirrors the buildIdIndex output shape used by pi-project (one entry per
|
|
118
|
+
* id-bearing item, keyed by `item.id`).
|
|
119
|
+
*/
|
|
120
|
+
export function buildFixtureIdIndex(blocks) {
|
|
121
|
+
const index = new Map();
|
|
122
|
+
for (const [block, items] of Object.entries(blocks)) {
|
|
123
|
+
for (const item of items) {
|
|
124
|
+
const id = item.id;
|
|
125
|
+
if (typeof id === "string") {
|
|
126
|
+
index.set(id, { block, arrayKey: block, item });
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return index;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Construct a Nunjucks env mirroring `registerCompositionGlobals` from
|
|
134
|
+
* pi-jit-agents/compile.ts (the production globals contract).
|
|
135
|
+
*
|
|
136
|
+
* `availableMacros` maps a block kind to the absolute path of its per-item
|
|
137
|
+
* macro file. Kinds NOT in the map produce the `[unrendered: <kind>/<id>]`
|
|
138
|
+
* fallback marker — the same shape the production global emits when the
|
|
139
|
+
* renderer registry has no entry for a kind.
|
|
140
|
+
*
|
|
141
|
+
* Macro-name resolution uses `CANONICAL_MACRO_NAMES` (re-exported from the
|
|
142
|
+
* pi-jit-agents barrel), so kinds picked up by the registry's canonical
|
|
143
|
+
* lookup land on the same name in tests. Unknown kinds fall back to
|
|
144
|
+
* `render_<kind>` with hyphens→underscores, matching the registry default.
|
|
145
|
+
*/
|
|
146
|
+
export function makeRendererTestEnv(idIndex, availableMacros) {
|
|
147
|
+
const env = new nunjucks.Environment(new nunjucks.FileSystemLoader(TEMPLATES_DIR), {
|
|
148
|
+
autoescape: false,
|
|
149
|
+
throwOnUndefined: false,
|
|
150
|
+
});
|
|
151
|
+
env.addGlobal("resolve", (id) => {
|
|
152
|
+
if (typeof id !== "string" || id.length === 0)
|
|
153
|
+
return null;
|
|
154
|
+
return idIndex.get(id) ?? null;
|
|
155
|
+
});
|
|
156
|
+
const visited = new Set();
|
|
157
|
+
env.addGlobal("render_recursive", (loc, depth) => {
|
|
158
|
+
if (!loc || typeof loc !== "object")
|
|
159
|
+
return "";
|
|
160
|
+
const location = loc;
|
|
161
|
+
const itemId = location.item?.id;
|
|
162
|
+
const idStr = typeof itemId === "string" ? itemId : "";
|
|
163
|
+
const blockName = typeof location.block === "string" ? location.block : "?";
|
|
164
|
+
if (idStr.length > 0 && visited.has(idStr)) {
|
|
165
|
+
return `[cycle: ${idStr}]`;
|
|
166
|
+
}
|
|
167
|
+
const macroPath = availableMacros[blockName];
|
|
168
|
+
if (!macroPath) {
|
|
169
|
+
return `[unrendered: ${blockName}/${idStr}]`;
|
|
170
|
+
}
|
|
171
|
+
const macroName = CANONICAL_MACRO_NAMES[blockName]?.macro_name ?? `render_${blockName.replace(/-/g, "_")}`;
|
|
172
|
+
const depthNum = typeof depth === "number" && Number.isFinite(depth) ? depth : 0;
|
|
173
|
+
if (idStr.length > 0)
|
|
174
|
+
visited.add(idStr);
|
|
175
|
+
try {
|
|
176
|
+
const macroSource = fs.readFileSync(macroPath, "utf-8");
|
|
177
|
+
const inline = `${macroSource}\n{{ ${macroName}(item, depth) }}`;
|
|
178
|
+
return env.renderString(inline, { item: location.item, depth: depthNum });
|
|
179
|
+
}
|
|
180
|
+
catch (err) {
|
|
181
|
+
return `[render_error: ${blockName}/${idStr}: ${err instanceof Error ? err.message : String(err)}]`;
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
if (idStr.length > 0)
|
|
185
|
+
visited.delete(idStr);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
registerEnforceBudgetPassthrough(env);
|
|
189
|
+
return env;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Render a per-item macro by importing it from `items/<templateBase>.md` and
|
|
193
|
+
* invoking it with `(item, depth)`.
|
|
194
|
+
*
|
|
195
|
+
* `kind` resolves the macro name through the registry's canonical map (with
|
|
196
|
+
* the `render_<kind>` fallback); `templateBase` defaults to `kind` and only
|
|
197
|
+
* needs to be supplied when the on-disk filename diverges from the kind name
|
|
198
|
+
* (e.g. kind `conformance-reference` lives in `templates/items/conformance.md`
|
|
199
|
+
* — its template basename is `conformance`, not `conformance-reference`).
|
|
200
|
+
*
|
|
201
|
+
* Most render-*.test.ts files used a near-identical thin wrapper; this is
|
|
202
|
+
* the canonical surface so per-test wrappers reduce to one call.
|
|
203
|
+
*/
|
|
204
|
+
export function renderItemMacro(env, kind, item, depth = 0, templateBase) {
|
|
205
|
+
const macroName = CANONICAL_MACRO_NAMES[kind]?.macro_name ?? `render_${kind.replace(/-/g, "_")}`;
|
|
206
|
+
const tpl = `{% from "items/${templateBase ?? kind}.md" import ${macroName} %}{{ ${macroName}(item, depth) }}`;
|
|
207
|
+
return env.renderString(tpl, { item, depth });
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Render a whole-block macro by importing it from `shared/macros.md`.
|
|
211
|
+
* `wholeName` is the macro name (e.g. `render_tasks`, `render_architecture`,
|
|
212
|
+
* `render_conformance`). The macros take a single `data` argument; this
|
|
213
|
+
* helper threads it through.
|
|
214
|
+
*/
|
|
215
|
+
export function renderWholeBlockMacro(env, wholeName, data) {
|
|
216
|
+
const tpl = `{% from "shared/macros.md" import ${wholeName} %}{{ ${wholeName}(data) }}`;
|
|
217
|
+
return env.renderString(tpl, { data });
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Resolve an absolute path to a per-item macro file under
|
|
221
|
+
* `templates/items/<templateBase>.md`. Convenience wrapper so tests skip the
|
|
222
|
+
* `path.resolve(TEMPLATES_DIR, "items", "<base>.md")` literal. The
|
|
223
|
+
* `templateBase` is the on-disk filename basename (e.g. `conformance`,
|
|
224
|
+
* `tasks`) — distinct from the registry kind (`conformance-reference`,
|
|
225
|
+
* `tasks`) when the two names diverge.
|
|
226
|
+
*/
|
|
227
|
+
export function itemMacroPath(templateBase) {
|
|
228
|
+
return path.resolve(TEMPLATES_DIR, "items", `${templateBase}.md`);
|
|
229
|
+
}
|
|
46
230
|
//# sourceMappingURL=test-helpers.js.map
|
package/dist/test-helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"test-helpers.js","sourceRoot":"","sources":["../src/test-helpers.ts"],"names":[],"mappings":"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"}
|
package/dist/tui.d.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* TUI progress widget for workflow execution.
|
|
3
3
|
* Shows per-step colored bars with live activity, metrics, and a progress bar header.
|
|
4
4
|
*/
|
|
5
|
-
import type { Theme } from "@
|
|
6
|
-
import type { Component, TUI } from "@
|
|
5
|
+
import type { Theme } from "@earendil-works/pi-coding-agent";
|
|
6
|
+
import type { Component, TUI } from "@earendil-works/pi-tui";
|
|
7
7
|
import type { ExecutionState, WorkflowSpec } from "./types.js";
|
|
8
8
|
export interface StepActivity {
|
|
9
9
|
tool: string;
|
|
@@ -48,7 +48,7 @@ export interface ProgressWidgetState {
|
|
|
48
48
|
* ✓ load 2s
|
|
49
49
|
* ✓ investigate 42s $0.03 12k tok
|
|
50
50
|
* ▸ implement 3 turns 8k tok $0.02 50s
|
|
51
|
-
* edit packages/pi-
|
|
51
|
+
* edit packages/pi-context/src/block-api.ts
|
|
52
52
|
* · verify
|
|
53
53
|
* ─────────────────────────────────────────────
|
|
54
54
|
*/
|
package/dist/tui.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,KAAK,EAAc,MAAM,iCAAiC,CAAC;AACzE,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAc,YAAY,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAClE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IACnC,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,YAAY,EAAE,UAAU,CAAC,CAAC;IACnE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IACxC,eAAe,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACvC;AAuBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CACnC,WAAW,EAAE,mBAAmB,GAC9B,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,SAAS,GAAG;IAAE,OAAO,CAAC,IAAI,IAAI,CAAA;CAAE,CA8K9D"}
|
package/dist/tui.js
CHANGED
|
@@ -28,7 +28,7 @@ let _previousDispose;
|
|
|
28
28
|
* ✓ load 2s
|
|
29
29
|
* ✓ investigate 42s $0.03 12k tok
|
|
30
30
|
* ▸ implement 3 turns 8k tok $0.02 50s
|
|
31
|
-
* edit packages/pi-
|
|
31
|
+
* edit packages/pi-context/src/block-api.ts
|
|
32
32
|
* · verify
|
|
33
33
|
* ─────────────────────────────────────────────
|
|
34
34
|
*/
|
package/dist/types.d.ts
CHANGED
|
@@ -94,7 +94,42 @@ export interface BlockUpdateSpec {
|
|
|
94
94
|
set: Record<string, unknown>;
|
|
95
95
|
};
|
|
96
96
|
}
|
|
97
|
-
export
|
|
97
|
+
export interface BlockNestedAppendSpec {
|
|
98
|
+
nestedAppend: {
|
|
99
|
+
name: string;
|
|
100
|
+
key: string;
|
|
101
|
+
match: Record<string, unknown>;
|
|
102
|
+
nestedKey: string;
|
|
103
|
+
item: unknown;
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
export interface BlockUpdateNestedItemSpec {
|
|
107
|
+
updateNested: {
|
|
108
|
+
name: string;
|
|
109
|
+
key: string;
|
|
110
|
+
match: Record<string, unknown>;
|
|
111
|
+
nestedKey: string;
|
|
112
|
+
nestedMatch: Record<string, unknown>;
|
|
113
|
+
set: Record<string, unknown>;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export interface BlockRemoveSpec {
|
|
117
|
+
remove: {
|
|
118
|
+
name: string;
|
|
119
|
+
key: string;
|
|
120
|
+
match: Record<string, unknown>;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export interface BlockRemoveNestedSpec {
|
|
124
|
+
removeNested: {
|
|
125
|
+
name: string;
|
|
126
|
+
key: string;
|
|
127
|
+
match: Record<string, unknown>;
|
|
128
|
+
nestedKey: string;
|
|
129
|
+
nestedMatch: Record<string, unknown>;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
export type BlockSpec = BlockReadSpec | BlockReadDirSpec | BlockWriteSpec | BlockAppendSpec | BlockUpdateSpec | BlockNestedAppendSpec | BlockUpdateNestedItemSpec | BlockRemoveSpec | BlockRemoveNestedSpec;
|
|
98
133
|
export interface StepOutputSpec {
|
|
99
134
|
format?: "json" | "text";
|
|
100
135
|
schema?: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-discovery.d.ts","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-discovery.d.ts","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CA0BlF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAGrG"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import os from "node:os";
|
|
3
3
|
import path from "node:path";
|
|
4
|
+
import { bundledDir } from "./bundled-dirs.js";
|
|
4
5
|
import { parseWorkflowSpec } from "./workflow-spec.js";
|
|
5
6
|
import { WORKFLOWS_DIR } from "./workflows-dir.js";
|
|
6
7
|
/**
|
|
@@ -21,7 +22,7 @@ import { WORKFLOWS_DIR } from "./workflows-dir.js";
|
|
|
21
22
|
export function discoverWorkflows(cwd, builtinDir) {
|
|
22
23
|
const projectDir = path.join(cwd, WORKFLOWS_DIR);
|
|
23
24
|
const userDir = path.join(os.homedir(), ".pi", "agent", "workflows");
|
|
24
|
-
const demoDir = builtinDir ??
|
|
25
|
+
const demoDir = builtinDir ?? bundledDir("workflows");
|
|
25
26
|
const projectSpecs = scanDirectory(projectDir, "project");
|
|
26
27
|
const userSpecs = scanDirectory(userDir, "user");
|
|
27
28
|
const builtinSpecs = scanDirectory(demoDir, "user");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"workflow-discovery.js","sourceRoot":"","sources":["../src/workflow-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../src/workflow-executor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC,OAAO,EAAkC,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAK1G,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EAGd,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAK5B,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAOD,MAAM,WAAW,cAAc;IAC9B,gDAAgD;IAChD,GAAG,EAAE,eAAe,CAAC;IACrB,yCAAyC;IACzC,EAAE,EAAE,UAAU,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC7B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAClD,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,cAAc,CAAC;KACtB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAevE;AAsRD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;
|
|
1
|
+
{"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../src/workflow-executor.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAoBzC,OAAO,EAAkC,gBAAgB,EAAwB,MAAM,kBAAkB,CAAC;AAK1G,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EAGd,eAAe,EACf,UAAU,EACV,cAAc,EACd,YAAY,EACZ,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAK5B,iFAAiF;AACjF,wBAAgB,YAAY,IAAI,IAAI,CAEnC;AAOD,MAAM,WAAW,cAAc;IAC9B,gDAAgD;IAChD,GAAG,EAAE,eAAe,CAAC;IACrB,yCAAyC;IACzC,EAAE,EAAE,UAAU,CAAC;IACf,8DAA8D;IAC9D,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC;IACvC,2EAA2E;IAC3E,UAAU,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC7B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,OAAO,eAAe,EAAE,WAAW,CAAC;IAClD,+DAA+D;IAC/D,MAAM,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,cAAc,CAAC;KACtB,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAevE;AAsRD,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAmRD;;;;;;;;;;;GAWG;AACH,wBAAsB,eAAe,CACpC,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,cAAc,GACrB,OAAO,CAAC,cAAc,CAAC,CAqSzB"}
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
|
-
import { readBlock, writeBlock } from "@davidorex/pi-
|
|
8
|
-
import { rollbackBlockFiles, snapshotBlockFiles, validateChangedBlocks } from "@davidorex/pi-
|
|
9
|
-
import {
|
|
10
|
-
import { validate, validateFromFile } from "@davidorex/pi-
|
|
11
|
-
import { truncateTail } from "@
|
|
7
|
+
import { readBlock, writeBlock } from "@davidorex/pi-context/block-api";
|
|
8
|
+
import { rollbackBlockFiles, snapshotBlockFiles, validateChangedBlocks } from "@davidorex/pi-context/block-validation";
|
|
9
|
+
import { tryResolveContextDir } from "@davidorex/pi-context/context-dir";
|
|
10
|
+
import { validate, validateFromFile } from "@davidorex/pi-context/schema-validator";
|
|
11
|
+
import { truncateTail } from "@earendil-works/pi-coding-agent";
|
|
12
12
|
import { resolveCompletion } from "./completion.js";
|
|
13
13
|
import { buildPlanFromDeps, extractDependencies } from "./dag.js";
|
|
14
14
|
import { dispatch } from "./dispatch.js";
|
|
@@ -408,7 +408,15 @@ async function executeStepByType(stepName, stepSpec, state, scope, options, retr
|
|
|
408
408
|
? "write"
|
|
409
409
|
: "append" in stepSpec.block
|
|
410
410
|
? "append"
|
|
411
|
-
: "update"
|
|
411
|
+
: "update" in stepSpec.block
|
|
412
|
+
? "update"
|
|
413
|
+
: "nestedAppend" in stepSpec.block
|
|
414
|
+
? "nestedAppend"
|
|
415
|
+
: "updateNested" in stepSpec.block
|
|
416
|
+
? "updateNested"
|
|
417
|
+
: "remove" in stepSpec.block
|
|
418
|
+
? "remove"
|
|
419
|
+
: "removeNested";
|
|
412
420
|
widgetState.activities.set(stepName, [{ tool: "block", preview: blockOp, timestamp: Date.now() }]);
|
|
413
421
|
if (ctx.hasUI)
|
|
414
422
|
ctx.ui.setWidget(WIDGET_ID, createProgressWidget(widgetState));
|
|
@@ -690,6 +698,13 @@ export async function executeWorkflow(spec, input, options) {
|
|
|
690
698
|
runId,
|
|
691
699
|
runDir,
|
|
692
700
|
};
|
|
701
|
+
// Resolve the substrate-dir prefix once for artifact block-target classification.
|
|
702
|
+
// Graceful on a missing .pi-context.json pointer (DEC-0015): tryResolveContextDir
|
|
703
|
+
// returns null → no substrate → no artifact is a block target. Only the
|
|
704
|
+
// missing-pointer case degrades; a malformed pointer / read failure still throws
|
|
705
|
+
// from within the primitive. Mirrors the absent-substrate path in step-shared.ts.
|
|
706
|
+
const r = tryResolveContextDir(ctx.cwd);
|
|
707
|
+
const substratePrefix = r === null ? null : r + path.sep;
|
|
693
708
|
for (const [name, artifactSpec] of Object.entries(spec.artifacts)) {
|
|
694
709
|
try {
|
|
695
710
|
// Resolve the output path (may contain expressions)
|
|
@@ -710,8 +725,7 @@ export async function executeWorkflow(spec, input, options) {
|
|
|
710
725
|
validateFromFile(schemaPath, data, `artifact '${name}'`);
|
|
711
726
|
}
|
|
712
727
|
// Route project block JSON targets through block-api for block-schema validation
|
|
713
|
-
|
|
714
|
-
if (absolutePath.startsWith(workflowPrefix) && absolutePath.endsWith(".json")) {
|
|
728
|
+
if (substratePrefix !== null && absolutePath.startsWith(substratePrefix) && absolutePath.endsWith(".json")) {
|
|
715
729
|
const blockName = path.basename(absolutePath, ".json");
|
|
716
730
|
writeBlock(ctx.cwd, blockName, data);
|
|
717
731
|
writtenArtifacts[name] = absolutePath;
|
|
@@ -734,7 +748,7 @@ export async function executeWorkflow(spec, input, options) {
|
|
|
734
748
|
// Non-block artifact failures remain non-fatal.
|
|
735
749
|
const resolvedPath = String(resolveExpressions(artifactSpec.path, artifactScope));
|
|
736
750
|
const absolutePath = path.isAbsolute(resolvedPath) ? resolvedPath : path.resolve(workflowDir, resolvedPath);
|
|
737
|
-
const isBlockTarget = absolutePath.startsWith(
|
|
751
|
+
const isBlockTarget = substratePrefix !== null && absolutePath.startsWith(substratePrefix) && absolutePath.endsWith(".json");
|
|
738
752
|
if (isBlockTarget) {
|
|
739
753
|
state.status = "failed";
|
|
740
754
|
if (ctx.hasUI) {
|