@llm-dev-ops/agentics-cli 2.7.0 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/index.js +30 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/pipeline/auto-chain.d.ts +168 -0
- package/dist/pipeline/auto-chain.d.ts.map +1 -1
- package/dist/pipeline/auto-chain.js +1854 -880
- package/dist/pipeline/auto-chain.js.map +1 -1
- package/dist/pipeline/enterprise/artifact-renderers.d.ts +30 -0
- package/dist/pipeline/enterprise/artifact-renderers.d.ts.map +1 -1
- package/dist/pipeline/enterprise/artifact-renderers.js +129 -1
- package/dist/pipeline/enterprise/artifact-renderers.js.map +1 -1
- package/dist/pipeline/gate/phase-dependency-gate.d.ts +93 -0
- package/dist/pipeline/gate/phase-dependency-gate.d.ts.map +1 -0
- package/dist/pipeline/gate/phase-dependency-gate.js +349 -0
- package/dist/pipeline/gate/phase-dependency-gate.js.map +1 -0
- package/dist/pipeline/phase3-sparc/phase3-sparc-coordinator.d.ts.map +1 -1
- package/dist/pipeline/phase3-sparc/phase3-sparc-coordinator.js +280 -40
- package/dist/pipeline/phase3-sparc/phase3-sparc-coordinator.js.map +1 -1
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.d.ts.map +1 -1
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.js +363 -87
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.js.map +1 -1
- package/dist/pipeline/phases/prompt-generator.d.ts.map +1 -1
- package/dist/pipeline/phases/prompt-generator.js +95 -6
- package/dist/pipeline/phases/prompt-generator.js.map +1 -1
- package/dist/pipeline/ruflo-phase-executor.d.ts +124 -1
- package/dist/pipeline/ruflo-phase-executor.d.ts.map +1 -1
- package/dist/pipeline/ruflo-phase-executor.js +319 -4
- package/dist/pipeline/ruflo-phase-executor.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADR-PIPELINE-093 — Phase Dependency Gate.
|
|
3
|
+
*
|
|
4
|
+
* Shared helper that verifies a phase's required inputs exist, are non-stub,
|
|
5
|
+
* and meet a minimum size before the phase coordinator runs. On a miss the
|
|
6
|
+
* gate invokes the ADR-091 primary executor (`runPrimaryPhaseExecution`)
|
|
7
|
+
* once per missing upstream phase (capped by `maxRetriesPerInput`, default 1)
|
|
8
|
+
* and re-checks.
|
|
9
|
+
*
|
|
10
|
+
* The gate is side-effect-minimal: it only reads `runDir`, logs to stderr
|
|
11
|
+
* with the `[GATE]` prefix, and forwards Ruflo invocations to the injected
|
|
12
|
+
* executor. Mapping of required-input → owning upstream phase is static
|
|
13
|
+
* (`INPUT_OWNER_MAP`) and colocated with the dependency table
|
|
14
|
+
* (`PHASE_DEPENDENCIES`).
|
|
15
|
+
*/
|
|
16
|
+
import * as fs from 'node:fs';
|
|
17
|
+
import * as path from 'node:path';
|
|
18
|
+
import { runPrimaryPhaseExecution as runPrimaryPhaseExecutionImpl, } from '../ruflo-phase-executor.js';
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// Static dependency table (ADR-PIPELINE-093 Decision Rule 1)
|
|
21
|
+
// ============================================================================
|
|
22
|
+
const MIN_BYTES_DEFAULT = 100;
|
|
23
|
+
/** Per-phase required/optional inputs, hard-coded from the ADR DAG table. */
|
|
24
|
+
export const PHASE_DEPENDENCIES = {
|
|
25
|
+
phase2: {
|
|
26
|
+
phaseId: 'phase2',
|
|
27
|
+
required: [
|
|
28
|
+
{ kind: 'file', paths: ['phase1/manifest.json'] },
|
|
29
|
+
{ kind: 'file', paths: ['phase1/executive-summary.md'] },
|
|
30
|
+
],
|
|
31
|
+
optional: [
|
|
32
|
+
'phase1/scenario.json',
|
|
33
|
+
'phase1/decision-memo.md',
|
|
34
|
+
'phase1/risk-assessment.json',
|
|
35
|
+
],
|
|
36
|
+
},
|
|
37
|
+
'phase3-sparc': {
|
|
38
|
+
phaseId: 'phase3-sparc',
|
|
39
|
+
required: [
|
|
40
|
+
{ kind: 'file', paths: ['phase1/manifest.json'] },
|
|
41
|
+
{ kind: 'file', paths: ['phase2/research-dossier.json'] },
|
|
42
|
+
],
|
|
43
|
+
optional: [
|
|
44
|
+
'phase1/roadmap.json',
|
|
45
|
+
'phase2/hypotheses.json',
|
|
46
|
+
'diligence-artifacts/sparc-*',
|
|
47
|
+
],
|
|
48
|
+
},
|
|
49
|
+
'phase4-adrs-ddd': {
|
|
50
|
+
phaseId: 'phase4-adrs-ddd',
|
|
51
|
+
required: [
|
|
52
|
+
{ kind: 'file', paths: ['phase1/manifest.json'] },
|
|
53
|
+
{
|
|
54
|
+
kind: 'any-of',
|
|
55
|
+
paths: [
|
|
56
|
+
'phase3/sparc/specification.md',
|
|
57
|
+
'engineering/sparc-specification.md',
|
|
58
|
+
],
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
optional: [
|
|
62
|
+
'phase2/research-dossier.json',
|
|
63
|
+
'diligence-artifacts/adr-generation',
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
'phase5a-prompts': {
|
|
67
|
+
phaseId: 'phase5a-prompts',
|
|
68
|
+
required: [
|
|
69
|
+
{
|
|
70
|
+
kind: 'any-of',
|
|
71
|
+
paths: [
|
|
72
|
+
'phase3/sparc/specification.md',
|
|
73
|
+
'engineering/sparc-specification.md',
|
|
74
|
+
],
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
kind: 'any-of',
|
|
78
|
+
paths: [
|
|
79
|
+
'phase4/adrs/*.md',
|
|
80
|
+
'phase4/ddd/bounded-contexts.json',
|
|
81
|
+
'engineering/architecture-decisions.md',
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
optional: [],
|
|
86
|
+
},
|
|
87
|
+
'phase5b-scaffold': {
|
|
88
|
+
phaseId: 'phase5b-scaffold',
|
|
89
|
+
required: [{ kind: 'file', paths: ['phase1/manifest.json'] }],
|
|
90
|
+
optional: ['phase4/adrs/*.md', 'phase5a/execution-plan.json'],
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
// ============================================================================
|
|
94
|
+
// Input → owning-upstream-phase map (ADR-PIPELINE-093)
|
|
95
|
+
// ============================================================================
|
|
96
|
+
/**
|
|
97
|
+
* Maps a required-input path (relative to runDir) onto the upstream phase
|
|
98
|
+
* that produces it. Used by the gate to decide which phase's Ruflo primary
|
|
99
|
+
* executor to invoke when an input is missing. Keyed by path prefix; the
|
|
100
|
+
* longest matching prefix wins.
|
|
101
|
+
*/
|
|
102
|
+
export const INPUT_OWNER_MAP = {
|
|
103
|
+
'phase1/': 'phase2', // phase1 is the entry; phase2 is the earliest "producable" upstream we can invoke
|
|
104
|
+
'phase2/': 'phase2',
|
|
105
|
+
'phase3/sparc/': 'phase3-sparc',
|
|
106
|
+
'engineering/sparc-specification.md': 'phase3-sparc',
|
|
107
|
+
'phase4/adrs/': 'phase4-adrs-ddd',
|
|
108
|
+
'phase4/ddd/': 'phase4-adrs-ddd',
|
|
109
|
+
'phase4/': 'phase4-adrs-ddd',
|
|
110
|
+
'engineering/architecture-decisions.md': 'phase4-adrs-ddd',
|
|
111
|
+
'engineering/domain-model.md': 'phase4-adrs-ddd',
|
|
112
|
+
'phase4/prompts/': 'phase5a-prompts',
|
|
113
|
+
'phase5a/': 'phase5a-prompts',
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Upstream phases supported by `runPrimaryPhaseExecution`. Phase 1 is the
|
|
117
|
+
* pipeline entry and is never re-invoked by the gate — a missing phase1 file
|
|
118
|
+
* is surfaced as a hard block. Phase 2 maps to the phase2 coordinator, which
|
|
119
|
+
* is wired separately by auto-chain; the gate passes the string through.
|
|
120
|
+
*/
|
|
121
|
+
const INVOKABLE_UPSTREAM = new Set([
|
|
122
|
+
'phase2',
|
|
123
|
+
'phase3-sparc',
|
|
124
|
+
'phase4-adrs-ddd',
|
|
125
|
+
'phase5a-prompts',
|
|
126
|
+
]);
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Public helpers
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Returns `false` iff the content is a JSON error-stub sentinel — a JSON
|
|
132
|
+
* object whose only top-level keys are `error` and/or `message`. Non-JSON
|
|
133
|
+
* content always returns `true`. Empty strings also return `true`
|
|
134
|
+
* (size-gating is the caller's job; the stub check is purely about shape).
|
|
135
|
+
*/
|
|
136
|
+
export function isNotErrorStub(content) {
|
|
137
|
+
const trimmed = content.trim();
|
|
138
|
+
if (trimmed.length === 0)
|
|
139
|
+
return true;
|
|
140
|
+
if (!trimmed.startsWith('{'))
|
|
141
|
+
return true;
|
|
142
|
+
let parsed;
|
|
143
|
+
try {
|
|
144
|
+
parsed = JSON.parse(trimmed);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
const keys = Object.keys(parsed);
|
|
153
|
+
if (keys.length === 0)
|
|
154
|
+
return true;
|
|
155
|
+
const onlyErrorOrMessage = keys.every((k) => k === 'error' || k === 'message');
|
|
156
|
+
return !onlyErrorOrMessage;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Inspects per-phase gate results and returns a BlockedPhase entry for
|
|
160
|
+
* every phase whose gate failed and still has missing inputs after retry.
|
|
161
|
+
* Used by auto-chain to populate `status.json.blocked_phases`.
|
|
162
|
+
*/
|
|
163
|
+
export function determineBlockedPhases(results) {
|
|
164
|
+
const blocked = [];
|
|
165
|
+
for (const r of results) {
|
|
166
|
+
if (!r.gateResult.ok && r.gateResult.stillMissing.length > 0) {
|
|
167
|
+
blocked.push({ phase: r.phaseId, missing: r.gateResult.stillMissing });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return blocked;
|
|
171
|
+
}
|
|
172
|
+
// ============================================================================
|
|
173
|
+
// Core gate algorithm
|
|
174
|
+
// ============================================================================
|
|
175
|
+
/**
|
|
176
|
+
* Verifies `phaseId`'s declared required inputs on disk. On a miss, invokes
|
|
177
|
+
* the ADR-091 primary executor for each owning upstream phase (capped at
|
|
178
|
+
* `maxRetriesPerInput`) and re-checks. Returns a `GateResult` describing the
|
|
179
|
+
* outcome. Never throws.
|
|
180
|
+
*/
|
|
181
|
+
export async function gatePhaseInputs(phaseId, opts) {
|
|
182
|
+
const dep = PHASE_DEPENDENCIES[phaseId];
|
|
183
|
+
const maxRetries = opts.maxRetriesPerInput ?? 1;
|
|
184
|
+
const runPrimary = opts.runPrimaryPhaseExecution ?? runPrimaryPhaseExecutionImpl;
|
|
185
|
+
// First pass — collect failures.
|
|
186
|
+
const initialFailures = collectMissingPaths(opts.runDir, dep.required);
|
|
187
|
+
if (initialFailures.length === 0) {
|
|
188
|
+
return { ok: true, missing: [], ruflo_invoked: [], stillMissing: [] };
|
|
189
|
+
}
|
|
190
|
+
// Determine which upstream phases own the failed inputs.
|
|
191
|
+
const upstreamPhases = new Set();
|
|
192
|
+
for (const failedPath of initialFailures) {
|
|
193
|
+
const owner = resolveOwner(failedPath);
|
|
194
|
+
if (owner !== null && INVOKABLE_UPSTREAM.has(owner) && owner !== phaseId) {
|
|
195
|
+
upstreamPhases.add(owner);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
const invoked = [];
|
|
199
|
+
const invocationCounts = new Map();
|
|
200
|
+
// Invoke the primary executor for each upstream phase (capped).
|
|
201
|
+
for (const upstream of upstreamPhases) {
|
|
202
|
+
const count = invocationCounts.get(upstream) ?? 0;
|
|
203
|
+
if (count >= maxRetries)
|
|
204
|
+
continue;
|
|
205
|
+
invocationCounts.set(upstream, count + 1);
|
|
206
|
+
invoked.push(upstream);
|
|
207
|
+
const missingForOwner = initialFailures.filter((p) => resolveOwner(p) === upstream);
|
|
208
|
+
for (const p of missingForOwner) {
|
|
209
|
+
process.stderr.write(`[GATE] ${phaseId}: missing ${p} — invoking Ruflo (${upstream})\n`);
|
|
210
|
+
}
|
|
211
|
+
try {
|
|
212
|
+
// `runPrimaryPhaseExecution` accepts `PrimaryPhaseId` which differs
|
|
213
|
+
// from `PhaseId` (no phase2, no phase5b). Tests inject their own
|
|
214
|
+
// executor; the production call will be a no-op for phase2 because
|
|
215
|
+
// auto-chain wires phase2 through its own path — the gate preserves
|
|
216
|
+
// the call for parity.
|
|
217
|
+
const result = await runPrimary(upstream, opts.dossier, opts.context);
|
|
218
|
+
if (result.executionTier === 'unavailable') {
|
|
219
|
+
process.stderr.write(`[GATE] ${phaseId}: Ruflo unavailable (${upstream}) — reason=${result.reason ?? 'unknown'}\n`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
process.stderr.write(`[GATE] ${phaseId}: Ruflo threw for ${upstream} — ${err.message}\n`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Re-check after all Ruflo invocations have (had a chance to) run.
|
|
227
|
+
const stillMissing = collectMissingPaths(opts.runDir, dep.required);
|
|
228
|
+
if (stillMissing.length === 0) {
|
|
229
|
+
process.stderr.write(`[GATE] ${phaseId}: recovered via Ruflo\n`);
|
|
230
|
+
return {
|
|
231
|
+
ok: true,
|
|
232
|
+
missing: initialFailures,
|
|
233
|
+
ruflo_invoked: invoked,
|
|
234
|
+
stillMissing: [],
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
process.stderr.write(`[GATE] ${phaseId}: still blocked — ${stillMissing.join(', ')}\n`);
|
|
238
|
+
return {
|
|
239
|
+
ok: false,
|
|
240
|
+
missing: initialFailures,
|
|
241
|
+
ruflo_invoked: invoked,
|
|
242
|
+
stillMissing,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
// ============================================================================
|
|
246
|
+
// Internal helpers
|
|
247
|
+
// ============================================================================
|
|
248
|
+
/** First 512 bytes is enough to spot JSON error-stub shape. */
|
|
249
|
+
const STUB_SCAN_BYTES = 512;
|
|
250
|
+
/** Returns the list of required-input paths that FAIL the existence/size/stub check. */
|
|
251
|
+
function collectMissingPaths(runDir, required) {
|
|
252
|
+
const missing = [];
|
|
253
|
+
for (const req of required) {
|
|
254
|
+
const minBytes = req.minBytes ?? MIN_BYTES_DEFAULT;
|
|
255
|
+
if (req.kind === 'file') {
|
|
256
|
+
// ALL paths must satisfy the criteria.
|
|
257
|
+
for (const p of req.paths) {
|
|
258
|
+
if (!pathSatisfies(runDir, p, minBytes))
|
|
259
|
+
missing.push(p);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
// any-of: at least ONE path must satisfy.
|
|
264
|
+
const anyOk = req.paths.some((p) => pathSatisfies(runDir, p, minBytes));
|
|
265
|
+
if (!anyOk) {
|
|
266
|
+
// Report the full any-of set (first path is the "preferred" one,
|
|
267
|
+
// but the caller needs to see every candidate for the owner map).
|
|
268
|
+
for (const p of req.paths)
|
|
269
|
+
missing.push(p);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return missing;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Returns true when the given relative path (under runDir) exists, is non-empty
|
|
277
|
+
* by the size threshold, and is not a JSON error-stub. Supports trailing `/*`
|
|
278
|
+
* glob (e.g. `phase4/adrs/*.md`) — the directory must exist and contain at
|
|
279
|
+
* least one matching file that passes the criteria.
|
|
280
|
+
*/
|
|
281
|
+
function pathSatisfies(runDir, relPath, minBytes) {
|
|
282
|
+
if (relPath.endsWith('/*.md') || relPath.endsWith('/*')) {
|
|
283
|
+
return dirGlobSatisfies(runDir, relPath, minBytes);
|
|
284
|
+
}
|
|
285
|
+
const abs = path.join(runDir, relPath);
|
|
286
|
+
return fileSatisfies(abs, minBytes);
|
|
287
|
+
}
|
|
288
|
+
function fileSatisfies(abs, minBytes) {
|
|
289
|
+
let stat;
|
|
290
|
+
try {
|
|
291
|
+
stat = fs.statSync(abs);
|
|
292
|
+
}
|
|
293
|
+
catch {
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
if (!stat.isFile())
|
|
297
|
+
return false;
|
|
298
|
+
if (stat.size < minBytes)
|
|
299
|
+
return false;
|
|
300
|
+
// Read up to the stub-scan window for the error-stub shape check.
|
|
301
|
+
let contentSlice = '';
|
|
302
|
+
try {
|
|
303
|
+
const fd = fs.openSync(abs, 'r');
|
|
304
|
+
try {
|
|
305
|
+
const buf = Buffer.alloc(Math.min(STUB_SCAN_BYTES, stat.size));
|
|
306
|
+
fs.readSync(fd, buf, 0, buf.length, 0);
|
|
307
|
+
contentSlice = buf.toString('utf8');
|
|
308
|
+
}
|
|
309
|
+
finally {
|
|
310
|
+
fs.closeSync(fd);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
catch {
|
|
314
|
+
return false;
|
|
315
|
+
}
|
|
316
|
+
return isNotErrorStub(contentSlice);
|
|
317
|
+
}
|
|
318
|
+
function dirGlobSatisfies(runDir, relPath, minBytes) {
|
|
319
|
+
// Support `<dir>/*.ext` and `<dir>/*`. Anything more exotic is rejected.
|
|
320
|
+
const dirRel = relPath.replace(/\/\*(\.[a-zA-Z0-9]+)?$/, '');
|
|
321
|
+
const extMatch = relPath.match(/\/\*(\.[a-zA-Z0-9]+)$/);
|
|
322
|
+
const ext = extMatch?.[1];
|
|
323
|
+
const dirAbs = path.join(runDir, dirRel);
|
|
324
|
+
let entries;
|
|
325
|
+
try {
|
|
326
|
+
entries = fs.readdirSync(dirAbs);
|
|
327
|
+
}
|
|
328
|
+
catch {
|
|
329
|
+
return false;
|
|
330
|
+
}
|
|
331
|
+
const candidates = ext ? entries.filter((e) => e.endsWith(ext)) : entries;
|
|
332
|
+
return candidates.some((e) => fileSatisfies(path.join(dirAbs, e), minBytes));
|
|
333
|
+
}
|
|
334
|
+
/** Returns the owning PhaseId for the given relative path, or null. */
|
|
335
|
+
function resolveOwner(relPath) {
|
|
336
|
+
// Longest matching prefix wins.
|
|
337
|
+
let bestKey = '';
|
|
338
|
+
let bestOwner = null;
|
|
339
|
+
for (const [key, owner] of Object.entries(INPUT_OWNER_MAP)) {
|
|
340
|
+
if (relPath === key || relPath.startsWith(key)) {
|
|
341
|
+
if (key.length > bestKey.length) {
|
|
342
|
+
bestKey = key;
|
|
343
|
+
bestOwner = owner;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
return bestOwner;
|
|
348
|
+
}
|
|
349
|
+
//# sourceMappingURL=phase-dependency-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phase-dependency-gate.js","sourceRoot":"","sources":["../../../src/pipeline/gate/phase-dependency-gate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase3-sparc-coordinator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phase3-sparc/phase3-sparc-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAoB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"phase3-sparc-coordinator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phase3-sparc/phase3-sparc-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,yBAAyB,EAAoB,MAAM,YAAY,CAAC;AAsgBlG,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,yBAAyB,CAAC,CA2RpC"}
|