@miller-tech/uap 1.148.25 → 1.149.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/README.md +9 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +6 -3
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver.js +8 -2
- package/dist/cli/deliver.js.map +1 -1
- package/dist/cli/plan.d.ts +21 -1
- package/dist/cli/plan.d.ts.map +1 -1
- package/dist/cli/plan.js +205 -14
- package/dist/cli/plan.js.map +1 -1
- package/dist/delivery/decompose.d.ts +12 -3
- package/dist/delivery/decompose.d.ts.map +1 -1
- package/dist/delivery/decompose.js +57 -4
- package/dist/delivery/decompose.js.map +1 -1
- package/dist/delivery/index.d.ts +1 -0
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +1 -0
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/plan-check.d.ts +54 -0
- package/dist/delivery/plan-check.d.ts.map +1 -0
- package/dist/delivery/plan-check.js +165 -0
- package/dist/delivery/plan-check.js.map +1 -0
- package/dist/delivery/task-orchestrator.d.ts +47 -5
- package/dist/delivery/task-orchestrator.d.ts.map +1 -1
- package/dist/delivery/task-orchestrator.js +207 -42
- package/dist/delivery/task-orchestrator.js.map +1 -1
- package/docs/ATTRIBUTION.md +40 -0
- package/docs/INDEX.md +4 -0
- package/package.json +1 -1
- package/src/policies/enforcers/__pycache__/_common.cpython-312.pyc +0 -0
- package/tools/agents/scripts/__pycache__/toolcall_path_normalizer.cpython-312.pyc +0 -0
package/dist/cli/plan.js
CHANGED
|
@@ -1,14 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `uap plan` — record
|
|
3
|
-
* gate.
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* `uap plan` — validate + record plan validation for the validate-plan-on-change
|
|
3
|
+
* gate. `uap plan validate` is the recorded counterpart of the `validate the
|
|
4
|
+
* plan` prompt: it now performs a REAL pre-execution review (the ATG
|
|
5
|
+
* thought-experiment applied to a plan artifact) before stamping
|
|
6
|
+
* `.uap/plan_state.json`, instead of stamping unconditionally:
|
|
6
7
|
*
|
|
7
|
-
* uap plan validate
|
|
8
|
-
* uap plan status
|
|
8
|
+
* uap plan validate [file] # review the plan artifact, then record validation
|
|
9
|
+
* uap plan status # show last validation + whether it's still fresh
|
|
10
|
+
*
|
|
11
|
+
* Review flow: resolve the plan artifact (explicit file, else the most
|
|
12
|
+
* recently modified plan-like .md), run an evaluator-model review over its
|
|
13
|
+
* text (`reviewPlanText`), and REFUSE the stamp on a FAIL verdict (exit 1)
|
|
14
|
+
* with the concrete findings — so "validate the plan" means an independent
|
|
15
|
+
* judge actually validated it, not that a timestamp was written.
|
|
16
|
+
*
|
|
17
|
+
* Knobs (CLI: `--no-review`, `--force`; env equivalents for hook/CI use):
|
|
18
|
+
* UAP_PLAN_REVIEW=0 skip the model review (stamp-only legacy behavior)
|
|
19
|
+
* UAP_PLAN_REVIEW_FORCE=1 stamp even on a failed verdict (justify in the PR)
|
|
20
|
+
* UAP_PLAN_REVIEW_MODEL reviewer model preset (default: $UAP_DELIVER_MODEL
|
|
21
|
+
* or qwen35-a3b)
|
|
22
|
+
*
|
|
23
|
+
* Availability is FAIL-OPEN: no plan artifact, unknown preset, or unreachable
|
|
24
|
+
* endpoint stamps with a note — the plan gate must never deadlock offline.
|
|
25
|
+
* A completed review that returns "fail" is the only thing that blocks.
|
|
9
26
|
*/
|
|
10
|
-
import { mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
11
|
-
import { join } from 'path';
|
|
27
|
+
import { mkdirSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs';
|
|
28
|
+
import { join, resolve, sep } from 'path';
|
|
29
|
+
import { reviewPlanText } from '../delivery/plan-check.js';
|
|
12
30
|
function stateDir(cwd) {
|
|
13
31
|
return join(cwd, process.env.UAP_STATE_DIR || '.uap');
|
|
14
32
|
}
|
|
@@ -27,20 +45,190 @@ function readState(cwd) {
|
|
|
27
45
|
return {};
|
|
28
46
|
}
|
|
29
47
|
}
|
|
30
|
-
|
|
48
|
+
/** Mirror of the enforcer's plan-artifact test (validate_plan_on_change.py). */
|
|
49
|
+
const PLAN_STEM_RE = /(^|[-_. ])plans?([-_. ]|$)/i;
|
|
50
|
+
function isPlanFile(name) {
|
|
51
|
+
if (!name.toLowerCase().endsWith('.md'))
|
|
52
|
+
return false;
|
|
53
|
+
return PLAN_STEM_RE.test(name.slice(0, -3));
|
|
54
|
+
}
|
|
55
|
+
/** Most recently modified plan-like artifact: plans/ dirs first, then cwd. */
|
|
56
|
+
export function findPlanArtifact(cwd) {
|
|
57
|
+
const candidates = [];
|
|
58
|
+
const scan = (dir, requirePlanName) => {
|
|
59
|
+
let entries = [];
|
|
60
|
+
try {
|
|
61
|
+
entries = readdirSync(dir);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for (const name of entries) {
|
|
67
|
+
const p = join(dir, name);
|
|
68
|
+
try {
|
|
69
|
+
const st = statSync(p);
|
|
70
|
+
if (!st.isFile())
|
|
71
|
+
continue;
|
|
72
|
+
if (requirePlanName ? isPlanFile(name) : name.toLowerCase().endsWith('.md')) {
|
|
73
|
+
candidates.push({ path: p, mtime: st.mtimeMs });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
// unreadable entry — skip
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
scan(join(cwd, 'plans'), false);
|
|
82
|
+
scan(join(cwd, 'docs', 'plans'), false);
|
|
83
|
+
scan(cwd, true);
|
|
84
|
+
if (candidates.length === 0)
|
|
85
|
+
return null;
|
|
86
|
+
candidates.sort((a, b) => b.mtime - a.mtime);
|
|
87
|
+
return candidates[0].path;
|
|
88
|
+
}
|
|
89
|
+
/** Test seam only: pull the positional file from an injected argv (the real
|
|
90
|
+
* CLI registration passes the `[file]` argument through options.file). */
|
|
91
|
+
function argvPlanFile(argv) {
|
|
92
|
+
const at = argv.indexOf('validate');
|
|
93
|
+
if (at === -1)
|
|
94
|
+
return undefined;
|
|
95
|
+
for (const tok of argv.slice(at + 1)) {
|
|
96
|
+
if (!tok.startsWith('-'))
|
|
97
|
+
return tok;
|
|
98
|
+
}
|
|
99
|
+
return undefined;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* An EXPLICIT file must still look like a plan artifact and live under the
|
|
103
|
+
* project: the review ships file content to a model endpoint, so `uap plan
|
|
104
|
+
* validate <arbitrary path>` must not become a quiet read-anything channel.
|
|
105
|
+
*/
|
|
106
|
+
function explicitFileProblem(file, cwd) {
|
|
107
|
+
if (!file.toLowerCase().endsWith('.md'))
|
|
108
|
+
return 'explicit plan file must be a .md artifact';
|
|
109
|
+
const abs = resolve(cwd, file);
|
|
110
|
+
if (abs !== resolve(cwd) && !abs.startsWith(resolve(cwd) + sep)) {
|
|
111
|
+
return 'explicit plan file must live under the project directory';
|
|
112
|
+
}
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
/** Build the reviewer executor the way `uap verify --acceptance` does. */
|
|
116
|
+
async function buildReviewExecutor() {
|
|
117
|
+
const { OpenAICompatClient } = await import('../models/openai-compat-client.js');
|
|
118
|
+
const { ModelPresets } = await import('../models/types.js');
|
|
119
|
+
const presetId = process.env.UAP_PLAN_REVIEW_MODEL ?? process.env.UAP_DELIVER_MODEL ?? 'qwen35-a3b';
|
|
120
|
+
const model = ModelPresets[presetId];
|
|
121
|
+
if (!model) {
|
|
122
|
+
throw new Error(`unknown model preset '${presetId}'`);
|
|
123
|
+
}
|
|
124
|
+
// Privacy signal (same as verify.ts): the review ships plan text to the
|
|
125
|
+
// model endpoint — a NON-LOCAL target must be a conscious choice.
|
|
126
|
+
const ep = model.endpoint ?? process.env.UAP_INFERENCE_ENDPOINT ?? '';
|
|
127
|
+
if (ep && !/^https?:\/\/(localhost|127\.|0\.0\.0\.0|\[?::1\]?|192\.168\.|10\.|172\.(1[6-9]|2\d|3[01])\.)/i.test(ep)) {
|
|
128
|
+
process.stderr.write(`uap plan: review will send the plan text to a NON-LOCAL endpoint (${ep}).\n`);
|
|
129
|
+
}
|
|
130
|
+
const client = new OpenAICompatClient();
|
|
131
|
+
return async (prompt) => {
|
|
132
|
+
const r = await client.complete(model, prompt, { temperature: 0, jsonResponse: true });
|
|
133
|
+
return r.content;
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
async function runPlanReview(cwd, explicitFile, deps) {
|
|
137
|
+
if (explicitFile) {
|
|
138
|
+
const problem = explicitFileProblem(explicitFile, cwd);
|
|
139
|
+
if (problem)
|
|
140
|
+
return { status: 'skipped', file: explicitFile, findings: [], reason: problem };
|
|
141
|
+
}
|
|
142
|
+
const file = explicitFile ?? findPlanArtifact(cwd) ?? undefined;
|
|
143
|
+
if (!file) {
|
|
144
|
+
return { status: 'skipped', findings: [], reason: 'no plan artifact found' };
|
|
145
|
+
}
|
|
146
|
+
let text = '';
|
|
147
|
+
try {
|
|
148
|
+
text = readFileSync(file, 'utf-8');
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return { status: 'skipped', file, findings: [], reason: `could not read ${file}` };
|
|
152
|
+
}
|
|
153
|
+
if (!text.trim()) {
|
|
154
|
+
return { status: 'skipped', file, findings: [], reason: 'plan artifact is empty' };
|
|
155
|
+
}
|
|
156
|
+
let executor;
|
|
157
|
+
try {
|
|
158
|
+
executor = deps.reviewExecutor ?? (await buildReviewExecutor());
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
return {
|
|
162
|
+
status: 'skipped',
|
|
163
|
+
file,
|
|
164
|
+
findings: [],
|
|
165
|
+
reason: `reviewer unavailable (${err instanceof Error ? err.message : String(err)})`,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
// reviewPlanText fail-softs model errors to PASS (right for the advisory
|
|
169
|
+
// decompose path, wrong here: a stamp claiming "an independent judge
|
|
170
|
+
// validated this" must not be fabricated by an unreachable endpoint or an
|
|
171
|
+
// empty completion). Detect those and record SKIPPED instead.
|
|
172
|
+
let unavailable = null;
|
|
173
|
+
const observed = async (prompt) => {
|
|
174
|
+
let out;
|
|
175
|
+
try {
|
|
176
|
+
out = await executor(prompt);
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
unavailable = err instanceof Error ? err.message : String(err);
|
|
180
|
+
throw err;
|
|
181
|
+
}
|
|
182
|
+
if (!out || !out.trim())
|
|
183
|
+
unavailable = 'reviewer returned an empty completion';
|
|
184
|
+
return out;
|
|
185
|
+
};
|
|
186
|
+
const verdict = await reviewPlanText(text, observed);
|
|
187
|
+
if (unavailable) {
|
|
188
|
+
return { status: 'skipped', file, findings: [], reason: `reviewer unavailable (${unavailable})` };
|
|
189
|
+
}
|
|
190
|
+
return { status: verdict.verdict, file, findings: verdict.findings };
|
|
191
|
+
}
|
|
192
|
+
export async function planCommand(action, options = {}, cwd = process.cwd(), deps = {}) {
|
|
31
193
|
if (action === 'validate') {
|
|
194
|
+
const reviewWanted = (options.review ?? true) && process.env.UAP_PLAN_REVIEW !== '0';
|
|
195
|
+
const force = options.force === true || process.env.UAP_PLAN_REVIEW_FORCE === '1';
|
|
196
|
+
const explicitFile = options.file ?? (deps.argv ? argvPlanFile(deps.argv) : undefined);
|
|
197
|
+
const review = reviewWanted
|
|
198
|
+
? await runPlanReview(cwd, explicitFile, deps)
|
|
199
|
+
: { status: 'skipped', findings: [], reason: 'review disabled' };
|
|
200
|
+
if (review.status === 'fail' && !force) {
|
|
201
|
+
if (options.json) {
|
|
202
|
+
console.log(JSON.stringify({ ok: false, review }));
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.log(`✗ Plan review FAILED — validation NOT recorded (${review.file}).`);
|
|
206
|
+
review.findings.forEach((f, i) => console.log(` ${i + 1}. ${f}`));
|
|
207
|
+
console.log(' Fix the plan and re-run `uap plan validate` (or UAP_PLAN_REVIEW_FORCE=1 with justification).');
|
|
208
|
+
}
|
|
209
|
+
process.exitCode = 1;
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
32
212
|
const dir = stateDir(cwd);
|
|
33
213
|
mkdirSync(dir, { recursive: true });
|
|
34
214
|
const prev = readState(cwd);
|
|
35
215
|
const now = Math.floor(Date.now() / 1000);
|
|
36
|
-
writeFileSync(statePath(cwd), JSON.stringify({ ...prev, validated_at: now }, null, 2));
|
|
216
|
+
writeFileSync(statePath(cwd), JSON.stringify({ ...prev, validated_at: now, review }, null, 2));
|
|
37
217
|
if (options.json) {
|
|
38
|
-
console.log(JSON.stringify({ ok: true, validated_at: now }));
|
|
218
|
+
console.log(JSON.stringify({ ok: true, validated_at: now, review }));
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (review.status === 'pass') {
|
|
222
|
+
console.log(`✓ Plan review PASSED (${review.file}) — validation recorded.`);
|
|
223
|
+
}
|
|
224
|
+
else if (review.status === 'fail') {
|
|
225
|
+
console.log(`⚠ Plan review FAILED but stamped under force (${review.file}):`);
|
|
226
|
+
review.findings.forEach((f, i) => console.log(` ${i + 1}. ${f}`));
|
|
39
227
|
}
|
|
40
228
|
else {
|
|
41
|
-
console.log(
|
|
42
|
-
console.log(` (window: ${windowSec()}s — re-run \`uap plan validate\` after that or after a substantive plan change.)`);
|
|
229
|
+
console.log(`✓ Plan validation recorded (review skipped: ${review.reason}).`);
|
|
43
230
|
}
|
|
231
|
+
console.log(` Plan-file writes are unblocked for ${windowSec()}s — re-run \`uap plan validate\` after that or after a substantive plan change.`);
|
|
44
232
|
return;
|
|
45
233
|
}
|
|
46
234
|
// status (default)
|
|
@@ -49,7 +237,7 @@ export async function planCommand(action, options = {}, cwd = process.cwd()) {
|
|
|
49
237
|
const ageSec = validatedAt ? Math.floor(Date.now() / 1000) - validatedAt : null;
|
|
50
238
|
const fresh = ageSec !== null && ageSec <= windowSec();
|
|
51
239
|
if (options.json) {
|
|
52
|
-
console.log(JSON.stringify({ validated_at: validatedAt || null, ageSec, fresh, window: windowSec() }));
|
|
240
|
+
console.log(JSON.stringify({ validated_at: validatedAt || null, ageSec, fresh, window: windowSec(), review: st.review ?? null }));
|
|
53
241
|
return;
|
|
54
242
|
}
|
|
55
243
|
if (!validatedAt) {
|
|
@@ -57,6 +245,9 @@ export async function planCommand(action, options = {}, cwd = process.cwd()) {
|
|
|
57
245
|
return;
|
|
58
246
|
}
|
|
59
247
|
console.log(`Plan validation: ${fresh ? 'FRESH' : 'STALE'} — last validated ${ageSec}s ago (window ${windowSec()}s).`);
|
|
248
|
+
if (st.review?.status) {
|
|
249
|
+
console.log(` Last review: ${st.review.status}${st.review.file ? ` (${st.review.file})` : ''}`);
|
|
250
|
+
}
|
|
60
251
|
if (!fresh)
|
|
61
252
|
console.log(' Re-run the `validate the plan` prompt, then `uap plan validate`, before editing a plan.');
|
|
62
253
|
}
|
package/dist/cli/plan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/cli/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -74,11 +74,20 @@ export interface PlanPhasesOptions {
|
|
|
74
74
|
* (compiling skeletons, todo!() bodies) followed by FILL phases.
|
|
75
75
|
*/
|
|
76
76
|
scaffoldFirst?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Pre-execution plan validation (ATG thought experiment): after planning,
|
|
79
|
+
* one evaluator call mentally executes the phase plan and a failed verdict
|
|
80
|
+
* triggers ONE re-plan with the findings appended. Defaults to ON;
|
|
81
|
+
* disable per-run with `false` or globally with UAP_DELIVER_PLAN_CHECK=0.
|
|
82
|
+
*/
|
|
83
|
+
thoughtExperiment?: boolean;
|
|
77
84
|
}
|
|
78
85
|
/**
|
|
79
|
-
* Plan sequential delivery phases via one evaluator-model call
|
|
80
|
-
*
|
|
81
|
-
*
|
|
86
|
+
* Plan sequential delivery phases via one evaluator-model call, then VALIDATE
|
|
87
|
+
* the plan before anything executes (structural DAG check + ATG thought
|
|
88
|
+
* experiment, with one re-plan on a failed verdict — see plan-check.ts).
|
|
89
|
+
* Returns [] on any failure or a degenerate (<2 phase) plan, so callers fall
|
|
90
|
+
* back to the classic single-loop delivery.
|
|
82
91
|
*/
|
|
83
92
|
export declare function planDeliveryPhases(instruction: string, executor: LoopExecutor, hintProvider?: LifecycleHintProvider, opts?: PlanPhasesOptions): Promise<DeliveryPhase[]>;
|
|
84
93
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../../src/delivery/decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"decompose.d.ts","sourceRoot":"","sources":["../../src/delivery/decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,WAAW,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAC;IACb;kFAC8E;IAC9E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAqBD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjF;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,EAAE,CAyC7D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAiBlE;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAyED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,EACtB,YAAY,CAAC,EAAE,qBAAqB,EACpC,IAAI,CAAC,EAAE,iBAAiB,GACvB,OAAO,CAAC,aAAa,EAAE,CAAC,CAS1B;AAwDD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EAAE,EACvB,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,MAAM,EAAE,GACvB,MAAM,CAcR"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* an arbitrary chunking. Fail-soft everywhere: any planning failure returns a
|
|
9
9
|
* single-phase plan, i.e. the classic undecomposed loop.
|
|
10
10
|
*/
|
|
11
|
+
import { validatePhaseGraph, runPlanThoughtExperiment } from './plan-check.js';
|
|
11
12
|
const MIN_PHASES = 2;
|
|
12
13
|
/**
|
|
13
14
|
* Phase-count ceiling. Raised from the original 5 and made operator-tunable via
|
|
@@ -173,20 +174,72 @@ function buildDecomposePrompt(instruction, hintProvider, opts) {
|
|
|
173
174
|
].join('\n');
|
|
174
175
|
}
|
|
175
176
|
/**
|
|
176
|
-
* Plan sequential delivery phases via one evaluator-model call
|
|
177
|
-
*
|
|
178
|
-
*
|
|
177
|
+
* Plan sequential delivery phases via one evaluator-model call, then VALIDATE
|
|
178
|
+
* the plan before anything executes (structural DAG check + ATG thought
|
|
179
|
+
* experiment, with one re-plan on a failed verdict — see plan-check.ts).
|
|
180
|
+
* Returns [] on any failure or a degenerate (<2 phase) plan, so callers fall
|
|
181
|
+
* back to the classic single-loop delivery.
|
|
179
182
|
*/
|
|
180
183
|
export async function planDeliveryPhases(instruction, executor, hintProvider, opts) {
|
|
181
184
|
try {
|
|
182
185
|
const raw = await executor(buildDecomposePrompt(instruction, hintProvider, opts));
|
|
183
186
|
const phases = parsePhaseArray(raw);
|
|
184
|
-
|
|
187
|
+
if (phases.length < MIN_PHASES)
|
|
188
|
+
return [];
|
|
189
|
+
return await validateAndRepairPlan(instruction, phases, executor, hintProvider, opts);
|
|
185
190
|
}
|
|
186
191
|
catch {
|
|
187
192
|
return [];
|
|
188
193
|
}
|
|
189
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Pre-execution plan validation: structural issues are logged (never fatal —
|
|
197
|
+
* decomposition must not wedge), then the evaluator dry-runs the plan; a
|
|
198
|
+
* failed verdict triggers ONE re-plan with the findings appended to the
|
|
199
|
+
* planning prompt. Never returns a worse plan than it was given: on any
|
|
200
|
+
* validator/model trouble, or an unusable re-plan, the original plan stands.
|
|
201
|
+
*/
|
|
202
|
+
async function validateAndRepairPlan(instruction, phases, executor, hintProvider, opts) {
|
|
203
|
+
const structural = validatePhaseGraph(phases);
|
|
204
|
+
for (const msg of structural.warnings)
|
|
205
|
+
console.log(` plan-check: ${msg}`);
|
|
206
|
+
// What (if anything) demands a re-plan: structural errors always do (they
|
|
207
|
+
// are deterministic and free to detect — a cycle under the orchestrator
|
|
208
|
+
// means its whole subtree gets skipped); otherwise the evaluator's thought
|
|
209
|
+
// experiment decides, unless disabled.
|
|
210
|
+
let findings;
|
|
211
|
+
if (!structural.ok) {
|
|
212
|
+
for (const msg of structural.errors)
|
|
213
|
+
console.log(` plan-check: ${msg}`);
|
|
214
|
+
findings = structural.errors;
|
|
215
|
+
console.log(' plan-check: structural validation FAILED — re-planning once');
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
const teWanted = opts?.thoughtExperiment ?? process.env.UAP_DELIVER_PLAN_CHECK !== '0';
|
|
219
|
+
if (!teWanted)
|
|
220
|
+
return phases;
|
|
221
|
+
const verdict = await runPlanThoughtExperiment(instruction, phases, executor);
|
|
222
|
+
if (verdict.verdict === 'pass')
|
|
223
|
+
return phases;
|
|
224
|
+
findings = verdict.findings;
|
|
225
|
+
console.log(` plan-check: thought experiment FAILED — re-planning once (${findings.slice(0, 3).join('; ') || 'no findings given'})`);
|
|
226
|
+
}
|
|
227
|
+
const revised = `${instruction}\n\nPLAN REVIEW FINDINGS (a prior phase plan was rejected for these; the new plan MUST address them):\n` +
|
|
228
|
+
findings.map((f, i) => `${i + 1}. ${f}`).join('\n');
|
|
229
|
+
try {
|
|
230
|
+
const raw = await executor(buildDecomposePrompt(revised, hintProvider, opts));
|
|
231
|
+
const replanned = parsePhaseArray(raw);
|
|
232
|
+
if (replanned.length >= MIN_PHASES && validatePhaseGraph(replanned).ok) {
|
|
233
|
+
console.log(` plan-check: re-planned into ${replanned.length} phases addressing the findings`);
|
|
234
|
+
return replanned;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
// fall through to the original plan
|
|
239
|
+
}
|
|
240
|
+
console.log(' plan-check: re-plan unusable — keeping the original plan');
|
|
241
|
+
return phases;
|
|
242
|
+
}
|
|
190
243
|
/**
|
|
191
244
|
* Compose the instruction a phase's convergence loop receives: full mission
|
|
192
245
|
* for context, this phase's goal as the actual task, and one-line summaries
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/delivery/decompose.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"decompose.js","sourceRoot":"","sources":["../../src/delivery/decompose.ts"],"names":[],"mappings":"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"}
|
package/dist/delivery/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export { saveRunState, loadRunState, newRunId, isValidRunId, deliverRunsDir, typ
|
|
|
10
10
|
export { extractContract, type ContractResult, } from './contract-extractor.js';
|
|
11
11
|
export { orchestrate, assembleTaskContext, governContext, type OrchestratorTask, type TaskOutcome, type AssembledContext, type OrchestratorConfig, type OrchestratorResult, } from './task-orchestrator.js';
|
|
12
12
|
export { planDeliveryPhases, parsePhaseArray, phaseInstruction, shouldDecompose, type DeliveryPhase, } from './decompose.js';
|
|
13
|
+
export { validatePhaseGraph, parsePlanVerdict, runPlanThoughtExperiment, reviewPlanText, type PhaseGraphValidation, type PlanReviewVerdict, } from './plan-check.js';
|
|
13
14
|
export { autoMineHaloTraces, summarizeWeaknesses, isAutoMineEnabled, weaknessGuidance, loadPersistedWeaknesses, type AutoMineResult, } from './auto-mine.js';
|
|
14
15
|
export { judgeScreenshots, parseVisionVerdict, visionSummary, visionJudgeConfigured, type VisionVerdict, } from './vision-judge.js';
|
|
15
16
|
export { runVisualGate, discoverEntryPages, judgePage, motionBetween, visualRuntimeNote, readVisualTargets, type VisualVerdict, type PageVisualReport, type VisualGateOptions, type VisualBrowserDriver, } from './visual-gate.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"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"}
|
package/dist/delivery/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export { saveRunState, loadRunState, newRunId, isValidRunId, deliverRunsDir, } f
|
|
|
10
10
|
export { extractContract, } from './contract-extractor.js';
|
|
11
11
|
export { orchestrate, assembleTaskContext, governContext, } from './task-orchestrator.js';
|
|
12
12
|
export { planDeliveryPhases, parsePhaseArray, phaseInstruction, shouldDecompose, } from './decompose.js';
|
|
13
|
+
export { validatePhaseGraph, parsePlanVerdict, runPlanThoughtExperiment, reviewPlanText, } from './plan-check.js';
|
|
13
14
|
export { autoMineHaloTraces, summarizeWeaknesses, isAutoMineEnabled, weaknessGuidance, loadPersistedWeaknesses, } from './auto-mine.js';
|
|
14
15
|
export { judgeScreenshots, parseVisionVerdict, visionSummary, visionJudgeConfigured, } from './vision-judge.js';
|
|
15
16
|
export { runVisualGate, discoverEntryPages, judgePage, motionBetween, visualRuntimeNote, readVisualTargets, } from './visual-gate.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GAcrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,cAAc,GAGf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,GAEhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,GAMd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAGzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GAEV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GAMf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAG/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,oBAAoB,GAcrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,cAAc,GAGf,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,GAEhB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,GAMd,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,wBAAwB,EACxB,cAAc,GAGf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GAExB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,qBAAqB,GAEtB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,iBAAiB,GAKlB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAGzB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,GAEV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,GAKxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,GAM1B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,GAKf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,GAIZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,GAIb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,GAMf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GAMf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,GAG/B,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,0BAA0B,GAG3B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GAGb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,cAAc,GAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,wBAAwB,GAGzB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GAGpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pre-execution plan validation (the ATG-style "thought experiment").
|
|
3
|
+
*
|
|
4
|
+
* Two layers, both run BEFORE any phase executes:
|
|
5
|
+
*
|
|
6
|
+
* 1. `validatePhaseGraph` — structural: duplicate ids, unknown/self deps,
|
|
7
|
+
* dependency cycles, empty goals. Pure, no model.
|
|
8
|
+
* 2. `runPlanThoughtExperiment` — one evaluator call that mentally executes
|
|
9
|
+
* the decomposition ("will these phases, in this dependency order, deliver
|
|
10
|
+
* the mission?") and returns a pass/fail verdict with findings. The judge
|
|
11
|
+
* did not author the plan — the same generator≠evaluator separation the
|
|
12
|
+
* acceptance gate uses.
|
|
13
|
+
*
|
|
14
|
+
* `reviewPlanText` is the free-text sibling used by `uap plan validate` on
|
|
15
|
+
* markdown plan artifacts (the validate-plan-on-change gate's `validate the
|
|
16
|
+
* plan` step becomes a real review, not just a stamp).
|
|
17
|
+
*
|
|
18
|
+
* Everything is fail-soft: a validator or model error forfeits the check, it
|
|
19
|
+
* never blocks delivery — decomposition and the plan gate must never wedge.
|
|
20
|
+
*
|
|
21
|
+
* SECURITY NOTE: because of that fail-soft design (and because the judged text
|
|
22
|
+
* is authored by the same party the gate constrains), a PASS verdict is an
|
|
23
|
+
* anti-sloppiness signal, NOT an adversarial guarantee — never build
|
|
24
|
+
* enforcement that treats a PASS as proof of review.
|
|
25
|
+
*/
|
|
26
|
+
import type { LoopExecutor } from './convergence-loop.js';
|
|
27
|
+
import type { DeliveryPhase } from './decompose.js';
|
|
28
|
+
export interface PhaseGraphValidation {
|
|
29
|
+
ok: boolean;
|
|
30
|
+
errors: string[];
|
|
31
|
+
warnings: string[];
|
|
32
|
+
}
|
|
33
|
+
/** Structural validation of a phase/epic DAG. Pure — safe to call anywhere. */
|
|
34
|
+
export declare function validatePhaseGraph(phases: DeliveryPhase[]): PhaseGraphValidation;
|
|
35
|
+
export interface PlanReviewVerdict {
|
|
36
|
+
verdict: 'pass' | 'fail';
|
|
37
|
+
findings: string[];
|
|
38
|
+
}
|
|
39
|
+
/** Extract a {verdict,findings} JSON verdict from model output. Anything
|
|
40
|
+
* unparseable is a PASS — a garbled judge must not block delivery. */
|
|
41
|
+
export declare function parsePlanVerdict(text: string): PlanReviewVerdict;
|
|
42
|
+
/**
|
|
43
|
+
* ATG thought experiment: ask the evaluator to mentally execute the phase plan
|
|
44
|
+
* before anything real runs, hunting for the defects that sink multi-phase
|
|
45
|
+
* missions (missing prerequisites, wrong dependency order, phases consuming
|
|
46
|
+
* artifacts no earlier phase produces, invented scope). One call; fail-soft.
|
|
47
|
+
*/
|
|
48
|
+
export declare function runPlanThoughtExperiment(mission: string, phases: DeliveryPhase[], executor: LoopExecutor): Promise<PlanReviewVerdict>;
|
|
49
|
+
/**
|
|
50
|
+
* Free-text plan review for `uap plan validate` over a markdown plan artifact.
|
|
51
|
+
* Same verdict contract and fail-soft rules as the phase thought experiment.
|
|
52
|
+
*/
|
|
53
|
+
export declare function reviewPlanText(planText: string, executor: LoopExecutor): Promise<PlanReviewVerdict>;
|
|
54
|
+
//# sourceMappingURL=plan-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan-check.d.ts","sourceRoot":"","sources":["../../src/delivery/plan-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAKH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,oBAAoB,CAsChF;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;sEACsE;AACtE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAiBhE;AAWD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EAAE,EACvB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA0B5B;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAyBzG"}
|