@llm-dev-ops/agentics-cli 2.7.26 → 2.7.28
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/ui/heartbeat.d.ts +88 -0
- package/dist/cli/ui/heartbeat.d.ts.map +1 -0
- package/dist/cli/ui/heartbeat.js +158 -0
- package/dist/cli/ui/heartbeat.js.map +1 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +65 -24
- package/dist/commands/agents.js.map +1 -1
- package/dist/pipeline/auto-chain.d.ts.map +1 -1
- package/dist/pipeline/auto-chain.js +86 -2
- package/dist/pipeline/auto-chain.js.map +1 -1
- package/dist/pipeline/local-fallback/phase5a-local-fallback.d.ts +18 -21
- package/dist/pipeline/local-fallback/phase5a-local-fallback.d.ts.map +1 -1
- package/dist/pipeline/local-fallback/phase5a-local-fallback.js +287 -94
- package/dist/pipeline/local-fallback/phase5a-local-fallback.js.map +1 -1
- package/dist/pipeline/phases/prompt-generator.js +65 -136
- package/dist/pipeline/phases/prompt-generator.js.map +1 -1
- package/dist/pipeline/ruflo-phase-executor.d.ts.map +1 -1
- package/dist/pipeline/ruflo-phase-executor.js +12 -1
- package/dist/pipeline/ruflo-phase-executor.js.map +1 -1
- package/dist/synthesis/agent-fleet-decomposer.d.ts +100 -0
- package/dist/synthesis/agent-fleet-decomposer.d.ts.map +1 -0
- package/dist/synthesis/agent-fleet-decomposer.js +550 -0
- package/dist/synthesis/agent-fleet-decomposer.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ADR-PIPELINE-094 Decision 8 — Phase 5a
|
|
2
|
+
* ADR-PIPELINE-094 Decision 8 + ADR-PIPELINE-099 D1+D2 — Phase 5a fallback.
|
|
3
3
|
*
|
|
4
|
-
* Produces
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Produces N coherent implementation prompts (≥4 in every code path; ≥6 when
|
|
5
|
+
* the fleet decomposer + planner outputs are present) plus a valid
|
|
6
|
+
* `prompts/execution-plan.json`. Replaces the pre-099 single-prompt
|
|
7
|
+
* `impl-001-phase1-consensus.md` dump that the user reported as
|
|
8
|
+
* "thumbs up thumbs down garbage".
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Precedence inside this module (mirrors ADR-099 §D1):
|
|
11
|
+
* tier-3: agent-fleet decomposition (decomposer.sub_objectives +
|
|
12
|
+
* planner.steps + clarifier.assumptions). Emits ≥6 prompts when
|
|
13
|
+
* the fleet returned ≥6 sub-objectives.
|
|
14
|
+
* tier-4: success-criterion fan-out — one prompt per
|
|
15
|
+
* `scenario.success_criteria[]` entry, with manifest brief +
|
|
16
|
+
* decision-memo + scenario inlined as guardrails. Emits ≥4
|
|
17
|
+
* prompts when at least 4 success criteria are present.
|
|
13
18
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
19
|
+
* The two earlier tiers (Ruflo writer-agent and ADR/DDD/SPARC chain) live
|
|
20
|
+
* in the prompt-generator and the auto-chain phase 4.5 block; this fallback
|
|
21
|
+
* only runs when both of them produced nothing.
|
|
16
22
|
*/
|
|
17
23
|
import type { LocalFallbackResult } from './phase3-local-fallback.js';
|
|
18
|
-
|
|
19
|
-
* Run the Phase-5a fallback. Writes:
|
|
20
|
-
* - phase5a/execution-plan.json
|
|
21
|
-
* - prompts/impl-001-phase1-consensus.md
|
|
22
|
-
*
|
|
23
|
-
* If `phase5a/execution-plan.json` already exists (e.g. from the
|
|
24
|
-
* prompt-generator's D2 path), this is a no-op success — we never overwrite
|
|
25
|
-
* a richer execution plan with a fallback one.
|
|
26
|
-
*/
|
|
27
|
-
export declare function runPhase5aLocalFallback(runDir: string): LocalFallbackResult;
|
|
24
|
+
export declare function runPhase5aLocalFallback(runDir: string, queryOverride?: string): LocalFallbackResult;
|
|
28
25
|
//# sourceMappingURL=phase5a-local-fallback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase5a-local-fallback.d.ts","sourceRoot":"","sources":["../../../src/pipeline/local-fallback/phase5a-local-fallback.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"phase5a-local-fallback.d.ts","sourceRoot":"","sources":["../../../src/pipeline/local-fallback/phase5a-local-fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAatE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAwKnG"}
|
|
@@ -1,35 +1,33 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ADR-PIPELINE-094 Decision 8 — Phase 5a
|
|
2
|
+
* ADR-PIPELINE-094 Decision 8 + ADR-PIPELINE-099 D1+D2 — Phase 5a fallback.
|
|
3
3
|
*
|
|
4
|
-
* Produces
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Produces N coherent implementation prompts (≥4 in every code path; ≥6 when
|
|
5
|
+
* the fleet decomposer + planner outputs are present) plus a valid
|
|
6
|
+
* `prompts/execution-plan.json`. Replaces the pre-099 single-prompt
|
|
7
|
+
* `impl-001-phase1-consensus.md` dump that the user reported as
|
|
8
|
+
* "thumbs up thumbs down garbage".
|
|
8
9
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* Precedence inside this module (mirrors ADR-099 §D1):
|
|
11
|
+
* tier-3: agent-fleet decomposition (decomposer.sub_objectives +
|
|
12
|
+
* planner.steps + clarifier.assumptions). Emits ≥6 prompts when
|
|
13
|
+
* the fleet returned ≥6 sub-objectives.
|
|
14
|
+
* tier-4: success-criterion fan-out — one prompt per
|
|
15
|
+
* `scenario.success_criteria[]` entry, with manifest brief +
|
|
16
|
+
* decision-memo + scenario inlined as guardrails. Emits ≥4
|
|
17
|
+
* prompts when at least 4 success criteria are present.
|
|
13
18
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
19
|
+
* The two earlier tiers (Ruflo writer-agent and ADR/DDD/SPARC chain) live
|
|
20
|
+
* in the prompt-generator and the auto-chain phase 4.5 block; this fallback
|
|
21
|
+
* only runs when both of them produced nothing.
|
|
16
22
|
*/
|
|
17
23
|
import * as fs from 'node:fs';
|
|
18
24
|
import * as path from 'node:path';
|
|
19
25
|
import { readPhase1Consensus, extractScenarioQuery } from './phase1-consensus-reader.js';
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* - phase5a/execution-plan.json
|
|
23
|
-
* - prompts/impl-001-phase1-consensus.md
|
|
24
|
-
*
|
|
25
|
-
* If `phase5a/execution-plan.json` already exists (e.g. from the
|
|
26
|
-
* prompt-generator's D2 path), this is a no-op success — we never overwrite
|
|
27
|
-
* a richer execution plan with a fallback one.
|
|
28
|
-
*/
|
|
29
|
-
export function runPhase5aLocalFallback(runDir) {
|
|
26
|
+
import { decomposeAgentFleet, renderUnitPromptMarkdown } from '../../synthesis/agent-fleet-decomposer.js';
|
|
27
|
+
export function runPhase5aLocalFallback(runDir, queryOverride) {
|
|
30
28
|
const filesWritten = [];
|
|
31
29
|
// Skip if the canonical artifacts already exist (the prompt-generator's
|
|
32
|
-
// D2
|
|
30
|
+
// ADR-094 D2 path may have produced them).
|
|
33
31
|
const existingPlan = path.join(runDir, 'phase5a', 'execution-plan.json');
|
|
34
32
|
if (fs.existsSync(existingPlan) && fs.statSync(existingPlan).size > 50) {
|
|
35
33
|
return {
|
|
@@ -47,37 +45,115 @@ export function runPhase5aLocalFallback(runDir) {
|
|
|
47
45
|
message: 'Phase-5a local fallback: no Phase-1 consensus on disk',
|
|
48
46
|
};
|
|
49
47
|
}
|
|
50
|
-
|
|
48
|
+
// Caller-supplied query (the user's original `agentics ask` brief) takes
|
|
49
|
+
// precedence over scenario.json, since the prompt-generator's D2 entry
|
|
50
|
+
// point carries the canonical PipelineContext.query and Phase-1 may not
|
|
51
|
+
// have written scenario.json with a `summary` field.
|
|
52
|
+
const query = queryOverride || extractScenarioQuery(consensus) || '';
|
|
53
|
+
const promptsDir = path.join(runDir, 'prompts');
|
|
54
|
+
const phase5aDir = path.join(runDir, 'phase5a');
|
|
51
55
|
try {
|
|
52
|
-
// ── Implementation prompt ─────────────────────────────────────────────
|
|
53
|
-
const promptsDir = path.join(runDir, 'prompts');
|
|
54
56
|
fs.mkdirSync(promptsDir, { recursive: true });
|
|
55
|
-
const promptId = 'impl-001-phase1-consensus';
|
|
56
|
-
const promptBody = buildPhase1FallbackPromptMarkdown(query, consensus.decisionMemo, consensus.scenario, consensus.executiveSummary);
|
|
57
|
-
fs.writeFileSync(path.join(promptsDir, `${promptId}.md`), promptBody, 'utf8');
|
|
58
|
-
filesWritten.push(`prompts/${promptId}.md`);
|
|
59
|
-
// ── Execution plan ────────────────────────────────────────────────────
|
|
60
|
-
const phase5aDir = path.join(runDir, 'phase5a');
|
|
61
57
|
fs.mkdirSync(phase5aDir, { recursive: true });
|
|
58
|
+
const promptEntries = [];
|
|
59
|
+
// ── Tier 3: agent-fleet decomposition ────────────────────────────────
|
|
60
|
+
const decomp = decomposeAgentFleet(runDir, query);
|
|
61
|
+
if (decomp.units.length > 0) {
|
|
62
|
+
decomp.units.forEach((unit, idx) => {
|
|
63
|
+
const order = idx + 1;
|
|
64
|
+
const filename = `impl-${pad3(order)}-${unit.slug}.md`;
|
|
65
|
+
const body = renderUnitPromptMarkdown(unit, order, decomp.units.length, decomp.context, [], []);
|
|
66
|
+
fs.writeFileSync(path.join(promptsDir, filename), body, 'utf-8');
|
|
67
|
+
filesWritten.push(`prompts/${filename}`);
|
|
68
|
+
promptEntries.push({
|
|
69
|
+
id: unit.id,
|
|
70
|
+
title: unit.title,
|
|
71
|
+
order,
|
|
72
|
+
path: `prompts/${filename}`,
|
|
73
|
+
source: unit.sourceAgent,
|
|
74
|
+
tier: unit.tier,
|
|
75
|
+
dependencies: unit.dependencies,
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
process.stderr.write(` [PROMPTS] Phase-5a tier-3 (agent-fleet): wrote ${decomp.units.length} prompts ` +
|
|
79
|
+
`(decomposer=${decomp.provenance.decomposerCount}, planner=${decomp.provenance.plannerCount}, ` +
|
|
80
|
+
`assumptions=${decomp.provenance.clarifierAssumptionsCount})\n`);
|
|
81
|
+
}
|
|
82
|
+
// ── Tier 4: success-criterion fan-out ────────────────────────────────
|
|
83
|
+
// If tier-3 didn't reach the ≥6 floor, supplement with one prompt per
|
|
84
|
+
// success-criterion. Even when tier-3 produced ≥6 we DON'T add tier-4
|
|
85
|
+
// — too many prompts dilutes the build plan.
|
|
86
|
+
if (promptEntries.length < 6) {
|
|
87
|
+
const successCriteria = extractSuccessCriteriaList(consensus);
|
|
88
|
+
const startingOrder = promptEntries.length + 1;
|
|
89
|
+
successCriteria.forEach((criterion, idx) => {
|
|
90
|
+
const order = startingOrder + idx;
|
|
91
|
+
const slug = slugify(`validate-${criterion}`) || `success-criterion-${idx + 1}`;
|
|
92
|
+
const filename = `impl-${pad3(order)}-${slug}.md`;
|
|
93
|
+
const body = renderSuccessCriterionPrompt(order, startingOrder + successCriteria.length - 1, criterion, query, consensus.executiveSummary, consensus.decisionMemo, promptEntries.map(p => p.id));
|
|
94
|
+
fs.writeFileSync(path.join(promptsDir, filename), body, 'utf-8');
|
|
95
|
+
filesWritten.push(`prompts/${filename}`);
|
|
96
|
+
promptEntries.push({
|
|
97
|
+
id: `unit-${pad3(order)}-${slug}`,
|
|
98
|
+
title: `Validate success criterion: ${truncate(criterion, 60)}`,
|
|
99
|
+
order,
|
|
100
|
+
path: `prompts/${filename}`,
|
|
101
|
+
source: 'phase1/scenario.success_criteria',
|
|
102
|
+
tier: 'validation',
|
|
103
|
+
dependencies: promptEntries.length > 0 ? [promptEntries[0].id] : [],
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
if (successCriteria.length > 0) {
|
|
107
|
+
process.stderr.write(` [PROMPTS] Phase-5a tier-4 (success-criteria): wrote ${successCriteria.length} validation prompts ` +
|
|
108
|
+
`(total now: ${promptEntries.length})\n`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
// ── Last-resort safety net ───────────────────────────────────────────
|
|
112
|
+
// If even tier-3 + tier-4 produced fewer than 4 prompts, synthesize
|
|
113
|
+
// from the executive summary + decision memo + scenario.json — but
|
|
114
|
+
// split into 4 distinct prompts (foundation, integration, domain,
|
|
115
|
+
// validation), NEVER one. The pre-ADR-099 single-prompt path is gone.
|
|
116
|
+
if (promptEntries.length < 4) {
|
|
117
|
+
const synth = synthesizeMinimumFourPrompts(query, consensus);
|
|
118
|
+
synth.forEach((p, idx) => {
|
|
119
|
+
const order = promptEntries.length + idx + 1;
|
|
120
|
+
const filename = `impl-${pad3(order)}-${p.slug}.md`;
|
|
121
|
+
fs.writeFileSync(path.join(promptsDir, filename), p.body, 'utf-8');
|
|
122
|
+
filesWritten.push(`prompts/${filename}`);
|
|
123
|
+
promptEntries.push({
|
|
124
|
+
id: `unit-${pad3(order)}-${p.slug}`,
|
|
125
|
+
title: p.title,
|
|
126
|
+
order,
|
|
127
|
+
path: `prompts/${filename}`,
|
|
128
|
+
source: 'phase1-fallback-synthesis',
|
|
129
|
+
tier: p.tier,
|
|
130
|
+
dependencies: p.dependsOnFirst && promptEntries.length > 0 ? [promptEntries[0].id] : [],
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
process.stderr.write(` [PROMPTS] Phase-5a tier-5 (minimum-4 synthesis): wrote ${synth.length} prompts ` +
|
|
134
|
+
`(total now: ${promptEntries.length})\n`);
|
|
135
|
+
}
|
|
136
|
+
// ── Execution plan (legacy + canonical paths) ────────────────────────
|
|
62
137
|
const executionPlan = {
|
|
63
|
-
generator: '
|
|
64
|
-
quality: 'degraded',
|
|
65
|
-
totalSteps:
|
|
66
|
-
estimatedDuration:
|
|
67
|
-
implementations:
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
138
|
+
generator: decomp.units.length > 0 ? 'agent-fleet' : 'phase1-fallback-multi',
|
|
139
|
+
quality: decomp.units.length > 0 ? 'directional' : 'degraded',
|
|
140
|
+
totalSteps: promptEntries.length,
|
|
141
|
+
estimatedDuration: `${promptEntries.length * 5}-${promptEntries.length * 15} minutes`,
|
|
142
|
+
implementations: promptEntries.map(e => ({
|
|
143
|
+
id: e.id,
|
|
144
|
+
title: e.title,
|
|
145
|
+
boundedContext: e.tier,
|
|
146
|
+
source: e.source,
|
|
147
|
+
order: e.order,
|
|
148
|
+
path: e.path,
|
|
149
|
+
dependencies: e.dependencies,
|
|
150
|
+
})),
|
|
151
|
+
provenance: decomp.provenance,
|
|
75
152
|
};
|
|
76
153
|
const planJson = JSON.stringify(executionPlan, null, 2);
|
|
77
|
-
fs.writeFileSync(path.join(phase5aDir, 'execution-plan.json'), planJson, '
|
|
154
|
+
fs.writeFileSync(path.join(phase5aDir, 'execution-plan.json'), planJson, 'utf-8');
|
|
78
155
|
filesWritten.push('phase5a/execution-plan.json');
|
|
79
|
-
|
|
80
|
-
fs.writeFileSync(path.join(promptsDir, 'execution-plan.json'), planJson, 'utf8');
|
|
156
|
+
fs.writeFileSync(path.join(promptsDir, 'execution-plan.json'), planJson, 'utf-8');
|
|
81
157
|
filesWritten.push('prompts/execution-plan.json');
|
|
82
158
|
}
|
|
83
159
|
catch (err) {
|
|
@@ -91,76 +167,193 @@ export function runPhase5aLocalFallback(runDir) {
|
|
|
91
167
|
return {
|
|
92
168
|
success: true,
|
|
93
169
|
filesWritten,
|
|
94
|
-
message: `Phase-5a local fallback: wrote ${filesWritten.length} prompt artifacts (
|
|
170
|
+
message: `Phase-5a local fallback: wrote ${filesWritten.length} prompt artifacts (${filesWritten.filter(f => f.startsWith('prompts/impl-')).length} build prompts)`,
|
|
95
171
|
};
|
|
96
172
|
}
|
|
97
|
-
|
|
173
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
174
|
+
function extractSuccessCriteriaList(consensus) {
|
|
175
|
+
if (!consensus || !consensus.scenario)
|
|
176
|
+
return [];
|
|
177
|
+
const sc = consensus.scenario['success_criteria'] ?? consensus.scenario['successCriteria'];
|
|
178
|
+
const out = [];
|
|
179
|
+
if (Array.isArray(sc)) {
|
|
180
|
+
for (const item of sc) {
|
|
181
|
+
if (typeof item === 'string')
|
|
182
|
+
out.push(item);
|
|
183
|
+
else if (item && typeof item === 'object') {
|
|
184
|
+
const o = item;
|
|
185
|
+
for (const key of ['description', 'criterion', 'name', 'title']) {
|
|
186
|
+
if (typeof o[key] === 'string') {
|
|
187
|
+
out.push(o[key]);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return out;
|
|
195
|
+
}
|
|
196
|
+
function renderSuccessCriterionPrompt(order, total, criterion, query, execSummary, decisionMemo, priorUnitIds) {
|
|
98
197
|
const lines = [];
|
|
99
198
|
lines.push('---');
|
|
100
|
-
lines.push(
|
|
101
|
-
lines.push(
|
|
102
|
-
lines.push(
|
|
103
|
-
lines.push('
|
|
104
|
-
lines.push(
|
|
105
|
-
decisionMemo ? 'phase1/decision-memo.md' : null,
|
|
106
|
-
scenario ? 'phase1/scenario.json' : null,
|
|
107
|
-
execSummary ? 'phase1/executive-summary.md' : null,
|
|
108
|
-
].filter(Boolean).join(', ') || 'phase1-consensus'}`);
|
|
199
|
+
lines.push(`id: unit-${pad3(order)}-${slugify(`validate-${criterion}`)}`);
|
|
200
|
+
lines.push(`title: ${escapeYamlString(`Validate success criterion: ${truncate(criterion, 60)}`)}`);
|
|
201
|
+
lines.push(`order: ${order}`);
|
|
202
|
+
lines.push('tier: validation');
|
|
203
|
+
lines.push('generator: phase1-fallback-multi');
|
|
109
204
|
lines.push('quality: degraded');
|
|
110
|
-
lines.push(
|
|
205
|
+
lines.push(`source: phase1/scenario.success_criteria`);
|
|
206
|
+
if (priorUnitIds.length > 0) {
|
|
207
|
+
lines.push('dependencies:');
|
|
208
|
+
for (const d of priorUnitIds)
|
|
209
|
+
lines.push(` - ${d}`);
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
lines.push('dependency_root: true');
|
|
213
|
+
}
|
|
111
214
|
lines.push('---');
|
|
112
215
|
lines.push('');
|
|
113
|
-
lines.push(
|
|
216
|
+
lines.push(`# Build Step ${order} of ${total}: Validate "${truncate(criterion, 80)}"`);
|
|
217
|
+
lines.push('');
|
|
218
|
+
lines.push('## Project Brief');
|
|
219
|
+
lines.push('');
|
|
220
|
+
lines.push(query || '(no brief recorded)');
|
|
221
|
+
lines.push('');
|
|
222
|
+
lines.push('## Success Criterion This Step Verifies');
|
|
114
223
|
lines.push('');
|
|
115
|
-
lines.push(
|
|
224
|
+
lines.push(`> ${criterion}`);
|
|
116
225
|
lines.push('');
|
|
117
|
-
if (
|
|
118
|
-
lines.push('##
|
|
226
|
+
if (execSummary) {
|
|
227
|
+
lines.push('## Executive Summary (context)');
|
|
119
228
|
lines.push('');
|
|
120
|
-
lines.push(
|
|
229
|
+
lines.push(truncate(execSummary.trim(), 1200));
|
|
121
230
|
lines.push('');
|
|
122
231
|
}
|
|
123
|
-
if (
|
|
124
|
-
lines.push('##
|
|
232
|
+
if (decisionMemo) {
|
|
233
|
+
lines.push('## Decision Memo (rationale)');
|
|
125
234
|
lines.push('');
|
|
126
|
-
lines.push(
|
|
235
|
+
lines.push(truncate(decisionMemo.trim(), 1200));
|
|
127
236
|
lines.push('');
|
|
128
237
|
}
|
|
129
|
-
|
|
130
|
-
|
|
238
|
+
lines.push('## Implementation Expectations');
|
|
239
|
+
lines.push('');
|
|
240
|
+
lines.push('1. Build the smallest deployable slice that proves the success criterion above.');
|
|
241
|
+
lines.push('2. Write tests first that exercise the criterion end-to-end.');
|
|
242
|
+
lines.push('3. Real domain logic — no stubs.');
|
|
243
|
+
lines.push('4. Export public APIs that downstream prompts can import.');
|
|
244
|
+
lines.push('5. Zero compilation errors. No `any` for domain values.');
|
|
245
|
+
lines.push('');
|
|
246
|
+
return lines.join('\n');
|
|
247
|
+
}
|
|
248
|
+
function synthesizeMinimumFourPrompts(query, consensus) {
|
|
249
|
+
const lang = consensus.projectLanguage ?? 'typescript';
|
|
250
|
+
const slices = [
|
|
251
|
+
{
|
|
252
|
+
slug: 'foundation-types-and-config',
|
|
253
|
+
title: 'Foundation: Domain Types + AppConfig + Logger',
|
|
254
|
+
tier: 'foundation',
|
|
255
|
+
description: 'Build the core domain types, the typed AppConfig (env-driven, Zod-validated), the structured logger, and the typed AppError hierarchy. Every later step imports from this slice.',
|
|
256
|
+
dependsOnFirst: false,
|
|
257
|
+
},
|
|
258
|
+
{
|
|
259
|
+
slug: 'analysis-layer',
|
|
260
|
+
title: 'Domain: Analysis Layer (pure functions)',
|
|
261
|
+
tier: 'domain',
|
|
262
|
+
description: 'Implement the analysis layer as pure functions over the domain types. No I/O, no side-effects. Unit-tested against fixtures.',
|
|
263
|
+
dependsOnFirst: true,
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
slug: 'integration-and-decisions',
|
|
267
|
+
title: 'Integration: External Surface + Decision Layer',
|
|
268
|
+
tier: 'integration',
|
|
269
|
+
description: 'Wire the analysis layer to the inbound API and outbound integration (HTTP/ERP/webhook as the brief requires). Idempotency keys on writes, retry with backoff, circuit breaker.',
|
|
270
|
+
dependsOnFirst: true,
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
slug: 'smoke-and-validation',
|
|
274
|
+
title: 'Validation: End-to-end Smoke + Health Check',
|
|
275
|
+
tier: 'validation',
|
|
276
|
+
description: 'Smoke test that walks the full request → analysis → decision → integration path. Health-check endpoint. Verify the executive-summary success metrics are observable.',
|
|
277
|
+
dependsOnFirst: true,
|
|
278
|
+
},
|
|
279
|
+
];
|
|
280
|
+
return slices.map((slice, idx) => ({
|
|
281
|
+
slug: slice.slug,
|
|
282
|
+
title: slice.title,
|
|
283
|
+
tier: slice.tier,
|
|
284
|
+
dependsOnFirst: slice.dependsOnFirst,
|
|
285
|
+
body: renderSynthesizedPromptBody(idx + 1, slices.length, slice, query, lang, consensus),
|
|
286
|
+
}));
|
|
287
|
+
}
|
|
288
|
+
function renderSynthesizedPromptBody(order, total, slice, query, lang, consensus) {
|
|
289
|
+
const lines = [];
|
|
290
|
+
lines.push('---');
|
|
291
|
+
lines.push(`id: unit-${pad3(order)}-${slice.slug}`);
|
|
292
|
+
lines.push(`title: ${escapeYamlString(slice.title)}`);
|
|
293
|
+
lines.push(`order: ${order}`);
|
|
294
|
+
lines.push(`tier: ${slice.tier}`);
|
|
295
|
+
lines.push('generator: phase1-fallback-multi');
|
|
296
|
+
lines.push('quality: degraded');
|
|
297
|
+
lines.push('source: phase1-fallback-synthesis');
|
|
298
|
+
if (slice.dependsOnFirst) {
|
|
299
|
+
lines.push('dependencies:');
|
|
300
|
+
lines.push(' - unit-001-foundation-types-and-config');
|
|
301
|
+
}
|
|
302
|
+
else {
|
|
303
|
+
lines.push('dependency_root: true');
|
|
304
|
+
}
|
|
305
|
+
lines.push('---');
|
|
306
|
+
lines.push('');
|
|
307
|
+
lines.push(`# Build Step ${order} of ${total}: ${slice.title}`);
|
|
308
|
+
lines.push('');
|
|
309
|
+
lines.push(`**Tier:** ${slice.tier} · **Language:** ${lang}`);
|
|
310
|
+
lines.push('');
|
|
311
|
+
lines.push('## Project Brief');
|
|
312
|
+
lines.push('');
|
|
313
|
+
lines.push(query || '(no brief recorded)');
|
|
314
|
+
lines.push('');
|
|
315
|
+
lines.push('## What This Step Builds');
|
|
316
|
+
lines.push('');
|
|
317
|
+
lines.push(slice.description);
|
|
318
|
+
lines.push('');
|
|
319
|
+
if (consensus.executiveSummary) {
|
|
320
|
+
lines.push('## Executive Summary (context)');
|
|
131
321
|
lines.push('');
|
|
132
|
-
lines.push(
|
|
322
|
+
lines.push(truncate(consensus.executiveSummary.trim(), 1500));
|
|
133
323
|
lines.push('');
|
|
134
324
|
}
|
|
135
|
-
if (
|
|
136
|
-
lines.push('##
|
|
325
|
+
if (consensus.decisionMemo) {
|
|
326
|
+
lines.push('## Decision Memo (rationale)');
|
|
137
327
|
lines.push('');
|
|
138
|
-
lines.push(
|
|
139
|
-
lines.push(JSON.stringify(scenario, null, 2));
|
|
140
|
-
lines.push('```');
|
|
328
|
+
lines.push(truncate(consensus.decisionMemo.trim(), 1500));
|
|
141
329
|
lines.push('');
|
|
142
330
|
}
|
|
143
|
-
lines.push('## Implementation
|
|
144
|
-
lines.push('');
|
|
145
|
-
lines.push('Implement
|
|
146
|
-
lines.push('
|
|
147
|
-
lines.push('
|
|
148
|
-
lines.push('');
|
|
149
|
-
lines.push('
|
|
150
|
-
lines.push('');
|
|
151
|
-
lines.push('```');
|
|
152
|
-
lines.push('src/');
|
|
153
|
-
lines.push(' index.ts # entry point');
|
|
154
|
-
lines.push(' config.ts # AppConfig + environment loading');
|
|
155
|
-
lines.push(' errors.ts # typed AppError classes');
|
|
156
|
-
lines.push(' analysis.ts # analysis layer (pure functions)');
|
|
157
|
-
lines.push(' decisions.ts # decision layer (pure functions)');
|
|
158
|
-
lines.push(' integration.ts # outbound integration (HTTP/ERP)');
|
|
159
|
-
lines.push('tests/');
|
|
160
|
-
lines.push(' analysis.test.ts');
|
|
161
|
-
lines.push(' decisions.test.ts');
|
|
162
|
-
lines.push('```');
|
|
331
|
+
lines.push('## Implementation Expectations');
|
|
332
|
+
lines.push('');
|
|
333
|
+
lines.push('1. Implement only this slice — no premature work on later steps.');
|
|
334
|
+
lines.push('2. Tests first (London-school TDD). Mock dependencies from prior steps.');
|
|
335
|
+
lines.push('3. Real domain logic. No stubs, no TODO scaffolds, no placeholder bodies.');
|
|
336
|
+
lines.push('4. Export public APIs at module boundaries so downstream slices can import.');
|
|
337
|
+
lines.push('5. Zero compilation errors. Validate ALL external input with Zod.');
|
|
338
|
+
lines.push('6. Structured logging via createLogger() — never console.log in production code.');
|
|
163
339
|
lines.push('');
|
|
164
340
|
return lines.join('\n');
|
|
165
341
|
}
|
|
342
|
+
function pad3(n) {
|
|
343
|
+
return String(n).padStart(3, '0');
|
|
344
|
+
}
|
|
345
|
+
function slugify(text) {
|
|
346
|
+
return text.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/(^-|-$)/g, '').slice(0, 60);
|
|
347
|
+
}
|
|
348
|
+
function truncate(text, max) {
|
|
349
|
+
if (!text)
|
|
350
|
+
return '';
|
|
351
|
+
return text.length > max ? text.slice(0, max - 1) + '…' : text;
|
|
352
|
+
}
|
|
353
|
+
function escapeYamlString(s) {
|
|
354
|
+
if (/[:#&*!|>'"%@`?[\]{},]/.test(s)) {
|
|
355
|
+
return `"${s.replace(/"/g, '\\"').replace(/\\/g, '\\\\')}"`;
|
|
356
|
+
}
|
|
357
|
+
return s;
|
|
358
|
+
}
|
|
166
359
|
//# sourceMappingURL=phase5a-local-fallback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"phase5a-local-fallback.js","sourceRoot":"","sources":["../../../src/pipeline/local-fallback/phase5a-local-fallback.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"phase5a-local-fallback.js","sourceRoot":"","sources":["../../../src/pipeline/local-fallback/phase5a-local-fallback.ts"],"names":[],"mappings":"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"}
|