@miller-tech/uap 1.28.0 → 1.30.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/dist/.tsbuildinfo +1 -1
- package/dist/bin/cli.js +4 -0
- package/dist/bin/cli.js.map +1 -1
- package/dist/cli/deliver.d.ts +5 -0
- package/dist/cli/deliver.d.ts.map +1 -1
- package/dist/cli/deliver.js +83 -16
- package/dist/cli/deliver.js.map +1 -1
- package/dist/delivery/convergence-loop.d.ts +33 -3
- package/dist/delivery/convergence-loop.d.ts.map +1 -1
- package/dist/delivery/convergence-loop.js +64 -15
- package/dist/delivery/convergence-loop.js.map +1 -1
- package/dist/delivery/escalation.d.ts +66 -0
- package/dist/delivery/escalation.d.ts.map +1 -0
- package/dist/delivery/escalation.js +84 -0
- package/dist/delivery/escalation.js.map +1 -0
- package/dist/delivery/index.d.ts +3 -1
- package/dist/delivery/index.d.ts.map +1 -1
- package/dist/delivery/index.js +2 -0
- package/dist/delivery/index.js.map +1 -1
- package/dist/delivery/practice.d.ts +99 -0
- package/dist/delivery/practice.d.ts.map +1 -0
- package/dist/delivery/practice.js +252 -0
- package/dist/delivery/practice.js.map +1 -0
- package/package.json +1 -1
|
@@ -35,12 +35,28 @@ function truncateHead(text, maxChars) {
|
|
|
35
35
|
return text;
|
|
36
36
|
return `${text.slice(0, maxChars)}\n…(truncated)…`;
|
|
37
37
|
}
|
|
38
|
+
/** Coerce the onIteration return (void | 'stop' | directive) to a directive. */
|
|
39
|
+
function normalizeDirective(value) {
|
|
40
|
+
if (value === 'stop')
|
|
41
|
+
return { stop: true };
|
|
42
|
+
if (!value)
|
|
43
|
+
return {};
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
/** Render retrieved best-practice cards as a prompt section. */
|
|
47
|
+
function practiceSection(practices) {
|
|
48
|
+
if (!practices || practices.length === 0)
|
|
49
|
+
return [];
|
|
50
|
+
const lines = ['', 'PROVEN PRACTICES for tasks like this — follow them:'];
|
|
51
|
+
practices.forEach((p, i) => lines.push(`${i + 1}. ${p}`));
|
|
52
|
+
return lines;
|
|
53
|
+
}
|
|
38
54
|
/** Default prompt strategy: lean contract + structured retry context. */
|
|
39
55
|
export const defaultPromptBuilder = (ctx) => {
|
|
40
56
|
if (ctx.turn === 1) {
|
|
41
|
-
return [OUTPUT_CONTRACT, '', `TASK: ${ctx.instruction}`].join('\n');
|
|
57
|
+
return [OUTPUT_CONTRACT, ...practiceSection(ctx.practices), '', `TASK: ${ctx.instruction}`].join('\n');
|
|
42
58
|
}
|
|
43
|
-
const sections = [OUTPUT_CONTRACT, '', `TASK: ${ctx.instruction}`, ''];
|
|
59
|
+
const sections = [OUTPUT_CONTRACT, ...practiceSection(ctx.practices), '', `TASK: ${ctx.instruction}`, ''];
|
|
44
60
|
sections.push(`PREVIOUS ATTEMPT (turn ${ctx.turn - 1}):`);
|
|
45
61
|
if (ctx.previousFiles && ctx.previousFiles.length > 0) {
|
|
46
62
|
sections.push(`Files you emitted: ${ctx.previousFiles.join(', ')}`);
|
|
@@ -82,11 +98,11 @@ export class ConvergenceLoop {
|
|
|
82
98
|
this.promptBuilder = seams.promptBuilder ?? defaultPromptBuilder;
|
|
83
99
|
}
|
|
84
100
|
/** Single-candidate turn: execute → apply → verify. */
|
|
85
|
-
async runSingleTurn(prompt, rungs) {
|
|
101
|
+
async runSingleTurn(prompt, rungs, executor) {
|
|
86
102
|
let output = '';
|
|
87
103
|
let executorError;
|
|
88
104
|
try {
|
|
89
|
-
output = await
|
|
105
|
+
output = await executor(prompt);
|
|
90
106
|
}
|
|
91
107
|
catch (err) {
|
|
92
108
|
executorError = err instanceof Error ? err.message : String(err);
|
|
@@ -114,8 +130,8 @@ export class ConvergenceLoop {
|
|
|
114
130
|
return { output, filesApplied, ladder, executorError, applyError };
|
|
115
131
|
}
|
|
116
132
|
/** Explorer turn: best-of-N candidates, commit the winner (Phase 2). */
|
|
117
|
-
async runExplorerTurn(instruction, prompt, rungs, settings) {
|
|
118
|
-
const exploration = await exploreAndCommit(instruction, prompt,
|
|
133
|
+
async runExplorerTurn(instruction, prompt, rungs, settings, executor) {
|
|
134
|
+
const exploration = await exploreAndCommit(instruction, prompt, executor, {
|
|
119
135
|
candidates: settings.candidates,
|
|
120
136
|
seeds: settings.seeds,
|
|
121
137
|
judge: settings.judge,
|
|
@@ -182,16 +198,21 @@ export class ConvergenceLoop {
|
|
|
182
198
|
*/
|
|
183
199
|
async deliver(instruction) {
|
|
184
200
|
const start = Date.now();
|
|
185
|
-
const maxTurns = this.config.maxTurns ?? DEFAULT_MAX_TURNS;
|
|
186
201
|
const rungs = this.config.rungs && this.config.rungs.length > 0
|
|
187
202
|
? this.config.rungs
|
|
188
203
|
: detectRungs(this.config.projectRoot);
|
|
189
204
|
if (rungs.length === 0) {
|
|
190
205
|
throw new Error(`No verifiable gates for ${this.config.projectRoot} — pass explicit rungs or add package.json scripts.`);
|
|
191
206
|
}
|
|
207
|
+
// Mutable run-state — a Phase 5 escalation directive can raise the budget,
|
|
208
|
+
// switch the model, enable exploration, or turn on the critic mid-run.
|
|
209
|
+
let maxTurns = this.config.maxTurns ?? DEFAULT_MAX_TURNS;
|
|
192
210
|
if (!Number.isInteger(maxTurns) || maxTurns < 1) {
|
|
193
211
|
throw new Error(`maxTurns must be a positive integer, got ${String(this.config.maxTurns)}`);
|
|
194
212
|
}
|
|
213
|
+
let executor = this.executor;
|
|
214
|
+
let explorerSettings = this.config.explorer;
|
|
215
|
+
let critic = this.config.critic;
|
|
195
216
|
const history = [];
|
|
196
217
|
const previousOutputChars = this.config.previousOutputChars ?? DEFAULT_PREVIOUS_OUTPUT_CHARS;
|
|
197
218
|
// Baseline: a green tree means there is nothing for the loop to deliver.
|
|
@@ -211,16 +232,28 @@ export class ConvergenceLoop {
|
|
|
211
232
|
};
|
|
212
233
|
}
|
|
213
234
|
}
|
|
235
|
+
// Phase 4: retrieve best-practice cards once — they are task-level and
|
|
236
|
+
// stable across turns. Fail-soft so retrieval never blocks delivery.
|
|
237
|
+
let practices;
|
|
238
|
+
if (this.config.practiceProvider) {
|
|
239
|
+
try {
|
|
240
|
+
const fetched = await this.config.practiceProvider(instruction);
|
|
241
|
+
practices = fetched.length > 0 ? fetched : undefined;
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
practices = undefined;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
214
247
|
let success = false;
|
|
215
248
|
let finalOutput = '';
|
|
216
249
|
let finalFeedback = '';
|
|
217
|
-
let prevContext = {};
|
|
250
|
+
let prevContext = { practices };
|
|
218
251
|
for (let turn = 1; turn <= maxTurns; turn++) {
|
|
219
252
|
const turnStart = Date.now();
|
|
220
253
|
const prompt = this.promptBuilder({ instruction, turn, ...prevContext });
|
|
221
|
-
const outcome =
|
|
222
|
-
? await this.runExplorerTurn(instruction, prompt, rungs,
|
|
223
|
-
: await this.runSingleTurn(prompt, rungs);
|
|
254
|
+
const outcome = explorerSettings
|
|
255
|
+
? await this.runExplorerTurn(instruction, prompt, rungs, explorerSettings, executor)
|
|
256
|
+
: await this.runSingleTurn(prompt, rungs, executor);
|
|
224
257
|
finalOutput = outcome.output || finalOutput;
|
|
225
258
|
if (outcome.ladder) {
|
|
226
259
|
finalFeedback = outcome.ladder.feedback;
|
|
@@ -239,21 +272,36 @@ export class ConvergenceLoop {
|
|
|
239
272
|
durationMs: Date.now() - turnStart,
|
|
240
273
|
};
|
|
241
274
|
history.push(record);
|
|
242
|
-
const directive = this.config.onIteration?.(record);
|
|
243
275
|
if (outcome.ladder?.passed) {
|
|
244
276
|
success = true;
|
|
277
|
+
this.config.onIteration?.(record);
|
|
245
278
|
break;
|
|
246
279
|
}
|
|
247
|
-
|
|
280
|
+
const directive = normalizeDirective(this.config.onIteration?.(record));
|
|
281
|
+
if (directive.stop) {
|
|
248
282
|
break;
|
|
249
283
|
}
|
|
284
|
+
// Apply escalation directives to the run-state for subsequent turns
|
|
285
|
+
if (directive.switchExecutor) {
|
|
286
|
+
executor = directive.switchExecutor;
|
|
287
|
+
}
|
|
288
|
+
if (typeof directive.setCandidates === 'number') {
|
|
289
|
+
explorerSettings = { ...(explorerSettings ?? {}), candidates: directive.setCandidates };
|
|
290
|
+
}
|
|
291
|
+
if (directive.enableCritic && !critic && this.config.criticFactory) {
|
|
292
|
+
// Bind to the current (possibly just-switched) executor, not the base.
|
|
293
|
+
critic = this.config.criticFactory(executor);
|
|
294
|
+
}
|
|
295
|
+
if (typeof directive.raiseMaxTurns === 'number' && directive.raiseMaxTurns > maxTurns) {
|
|
296
|
+
maxTurns = directive.raiseMaxTurns;
|
|
297
|
+
}
|
|
250
298
|
// Phase 3: structured critique of the failed turn (fail-soft). Skipped
|
|
251
299
|
// on the last turn — prevContext is never consumed, so it would waste
|
|
252
300
|
// a model call.
|
|
253
301
|
let critique;
|
|
254
|
-
if (
|
|
302
|
+
if (critic && !outcome.executorError && turn < maxTurns) {
|
|
255
303
|
try {
|
|
256
|
-
const result = await
|
|
304
|
+
const result = await critic({
|
|
257
305
|
instruction,
|
|
258
306
|
record,
|
|
259
307
|
feedback: outcome.ladder?.feedback ?? outcome.applyError ?? '',
|
|
@@ -275,6 +323,7 @@ export class ConvergenceLoop {
|
|
|
275
323
|
applyError: outcome.applyError,
|
|
276
324
|
previousFiles: outcome.filesApplied.length > 0 ? outcome.filesApplied : undefined,
|
|
277
325
|
critique,
|
|
326
|
+
practices,
|
|
278
327
|
};
|
|
279
328
|
}
|
|
280
329
|
let bestScore = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convergence-loop.js","sourceRoot":"","sources":["../../src/delivery/convergence-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAkHjD,MAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAE5C,MAAM,eAAe,GAAG;IACtB,sGAAsG;IACtG,EAAE;IACF,yEAAyE;IACzE,yCAAyC;IACzC,uBAAuB;IACvB,KAAK;IACL,iFAAiF;IACjF,qFAAqF;IACrF,6CAA6C;CAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC;AACrD,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,MAAM,oBAAoB,GAAkB,CAAC,GAAG,EAAE,EAAE;IACzD,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,eAAe,EAAE,EAAE,EAAE,SAAS,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,CAAC,0BAA0B,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAE1D,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,qCAAqC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,2EAA2E;IAC3E,sDAAsD;IACtD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC1D,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,QAAQ,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;IAChE,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC;AAaF,MAAM,OAAO,eAAe;IACT,MAAM,CAAoB;IAC1B,QAAQ,CAAe;IACvB,YAAY,CAAe;IAC3B,OAAO,CAAU;IACjB,aAAa,CAAgB;IAE9C,YACE,MAAyB,EACzB,QAAsB,EACtB,QAII,EAAE;QAEN,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,SAAS,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC;QAChD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,oBAAoB,CAAC;IACnE,CAAC;IAED,uDAAuD;IAC/C,KAAK,CAAC,aAAa,CAAC,MAAc,EAAE,KAAiB;QAC3D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,aAAiC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,aAAa,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,WAAW,GAAuB,IAAI,CAAC;QAC3C,IAAI,UAA8B,CAAC;QACnC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAClE,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;gBACtB,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC;YACjC,CAAC;iBAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,UAAU,GAAG,oBAAoB,WAAW,CAAC,QAAQ;qBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;qBACrC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,oEAAoE;QACpE,MAAM,YAAY,GAAG,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;QACrD,IAAI,MAAM,GAAwB,IAAI,CAAC;QACvC,IAAI,CAAC,aAAa,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9F,CAAC;QAED,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC;IACrE,CAAC;IAED,wEAAwE;IAChE,KAAK,CAAC,eAAe,CAC3B,WAAmB,EACnB,MAAc,EACd,KAAiB,EACjB,QAA0B;QAE1B,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC7E,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YACpC,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;YACxC,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;QAEH,MAAM,SAAS,GAAuB,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,KAAK,EAAE,CAAC,CAAC,KAAK;SACf,CAAC,CAAC,CAAC;QAEJ,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,mEAAmE;YACnE,mEAAmE;YACnE,sEAAsE;YACtE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9E,IAAI,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjF,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,EAAE;oBAChB,MAAM,EAAE,IAAI;oBACZ,aAAa,EAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;oBACpC,UAAU,EAAE,SAAS;iBACtB,CAAC;YACJ,CAAC;YACD,MAAM,QAAQ,GACZ,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;gBACrE,+CAA+C,CAAC;YAClD,OAAO;gBACL,MAAM,EAAE,EAAE;gBACV,YAAY,EAAE,EAAE;gBAChB,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,QAAQ;gBACpB,UAAU,EAAE,SAAS;aACtB,CAAC;QACJ,CAAC;QAED,IAAI,UAA8B,CAAC;QACnC,IAAI,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC;YAC9B,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;QACxC,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,UAAU,GAAG,oBAAoB,MAAM,CAAC,WAAW,CAAC,QAAQ;iBACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;iBACrC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,CAAC;QAED,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,YAAY,IAAI,EAAE;YACpD,MAAM,EAAE,WAAW,CAAC,MAAM;YAC1B,UAAU;YACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,SAAS;YACrB,cAAc,EAAE,WAAW,CAAC,cAAc;SAC3C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,WAAmB;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,iBAAiB,CAAC;QAC3D,MAAM,KAAK,GACT,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;YACnB,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,CAAC,MAAM,CAAC,WAAW,qDAAqD,CACxG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;QAE7F,yEAAyE;QACzE,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACpG,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,gBAAgB,EAAE,IAAI;oBACtB,KAAK,EAAE,CAAC;oBACR,SAAS,EAAE,QAAQ,CAAC,KAAK;oBACzB,QAAQ,EAAE,CAAC;oBACX,OAAO;oBACP,aAAa,EAAE,QAAQ,CAAC,QAAQ;oBAChC,WAAW,EAAE,EAAE;oBACf,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;iBACpC,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,IAAI,WAAW,GAAgD,EAAE,CAAC;QAElE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,CAAC,CAAC;YAEzE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAClC,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9E,CAAC,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAE5C,WAAW,GAAG,OAAO,CAAC,MAAM,IAAI,WAAW,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC1C,CAAC;YAED,MAAM,MAAM,GAAoB;gBAC9B,IAAI;gBACJ,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK;gBACvC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC;gBACjC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;gBAC1C,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;gBACtC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aACnC,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC;YAEpD,IAAI,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC3B,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,CAAC;YACD,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;gBACzB,MAAM;YACR,CAAC;YAED,uEAAuE;YACvE,sEAAsE;YACtE,gBAAgB;YAChB,IAAI,QAA8B,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpE,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;wBACtC,WAAW;wBACX,MAAM;wBACN,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,OAAO,CAAC,UAAU,IAAI,EAAE;wBAC9D,aAAa,EAAE,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;qBACjE,CAAC,CAAC;oBACH,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpE,CAAC;gBAAC,MAAM,CAAC;oBACP,QAAQ,GAAG,SAAS,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,WAAW,GAAG;gBACZ,cAAc,EAAE,OAAO,CAAC,aAAa;oBACnC,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC;gBACrD,QAAQ,EAAE,OAAO,CAAC,aAAa;oBAC7B,CAAC,CAAC,sBAAsB,OAAO,CAAC,aAAa,EAAE;oBAC/C,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ;gBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;gBACjF,QAAQ;aACT,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC7B,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO;YACP,gBAAgB,EAAE,KAAK;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,SAAS;YACT,QAAQ;YACR,OAAO;YACP,aAAa;YACb,WAAW;YACX,eAAe,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SACpC,CAAC;IACJ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"convergence-loop.js","sourceRoot":"","sources":["../../src/delivery/convergence-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation Controller (Phase 5)
|
|
3
|
+
*
|
|
4
|
+
* An onIteration handler that watches for stagnation and climbs an escalation
|
|
5
|
+
* ladder: when the best gate score stops improving for N consecutive turns,
|
|
6
|
+
* advance to the next tier. Tiers escalate cost progressively — widen
|
|
7
|
+
* exploration, enable the critic, raise the turn budget, and finally switch to
|
|
8
|
+
* a stronger model — so cheap strategies are exhausted before expensive ones.
|
|
9
|
+
*
|
|
10
|
+
* The controller is pure policy: it inspects IterationRecords and returns
|
|
11
|
+
* directives. The loop owns all mutation. This keeps escalation testable in
|
|
12
|
+
* isolation and swappable without touching the loop.
|
|
13
|
+
*/
|
|
14
|
+
import type { IterationRecord, IterationDirective, LoopExecutor } from './convergence-loop.js';
|
|
15
|
+
export interface EscalationTier {
|
|
16
|
+
/** Label surfaced in directive notes and logs */
|
|
17
|
+
label: string;
|
|
18
|
+
/** Widen best-of-N exploration to this many candidates */
|
|
19
|
+
setCandidates?: number;
|
|
20
|
+
/** Turn the structured critic on */
|
|
21
|
+
enableCritic?: boolean;
|
|
22
|
+
/** Raise the absolute turn budget */
|
|
23
|
+
raiseMaxTurns?: number;
|
|
24
|
+
/** Escalate to a stronger model */
|
|
25
|
+
switchExecutor?: LoopExecutor;
|
|
26
|
+
}
|
|
27
|
+
export interface EscalationConfig {
|
|
28
|
+
tiers: EscalationTier[];
|
|
29
|
+
/**
|
|
30
|
+
* Consecutive non-improving turns that trigger advancing one tier
|
|
31
|
+
* (default 2). A turn "improves" if its score exceeds the best seen so far.
|
|
32
|
+
*/
|
|
33
|
+
stagnationTurns?: number;
|
|
34
|
+
/** Minimum score delta to count as improvement (default 0.01) */
|
|
35
|
+
improvementEpsilon?: number;
|
|
36
|
+
/** Called whenever a tier is applied (telemetry/logging) */
|
|
37
|
+
onEscalate?: (tier: EscalationTier, turn: number) => void;
|
|
38
|
+
}
|
|
39
|
+
export interface EscalationController {
|
|
40
|
+
onIteration: (record: IterationRecord) => IterationDirective;
|
|
41
|
+
/** Index of the next tier to apply (for inspection/tests) */
|
|
42
|
+
tierIndex(): number;
|
|
43
|
+
}
|
|
44
|
+
export interface DefaultLadderOptions {
|
|
45
|
+
/** Candidates to widen exploration to on the first escalation (default 3) */
|
|
46
|
+
candidates?: number;
|
|
47
|
+
/** Current turn budget; the model-switch tier raises it by +2 */
|
|
48
|
+
maxTurns?: number;
|
|
49
|
+
/** A stronger model executor; when present, adds a final model-switch tier */
|
|
50
|
+
escalateExecutor?: LoopExecutor;
|
|
51
|
+
/** Display name for the stronger model (for the tier label) */
|
|
52
|
+
escalateModelName?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* The canonical escalation ladder: exhaust cheap strategies before expensive
|
|
56
|
+
* ones — widen exploration, then enable the critic, then (if configured)
|
|
57
|
+
* switch to a stronger model with a couple extra turns. Library-owned so
|
|
58
|
+
* non-CLI callers get the same policy.
|
|
59
|
+
*/
|
|
60
|
+
export declare function defaultEscalationLadder(options?: DefaultLadderOptions): EscalationTier[];
|
|
61
|
+
/**
|
|
62
|
+
* Build a stagnation-driven escalation controller. Returns an `onIteration`
|
|
63
|
+
* suitable for ConvergenceConfig, plus a `tierIndex` accessor for tests.
|
|
64
|
+
*/
|
|
65
|
+
export declare function createEscalationController(config: EscalationConfig): EscalationController;
|
|
66
|
+
//# sourceMappingURL=escalation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../src/delivery/escalation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE/F,MAAM,WAAW,cAAc;IAC7B,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qCAAqC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,cAAc,CAAC,EAAE,YAAY,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4DAA4D;IAC5D,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,kBAAkB,CAAC;IAC7D,6DAA6D;IAC7D,SAAS,IAAI,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,oBAAoB;IACnC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,YAAY,CAAC;IAChC,+DAA+D;IAC/D,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,oBAAyB,GAAG,cAAc,EAAE,CAc5F;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,gBAAgB,GAAG,oBAAoB,CA8CzF"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Escalation Controller (Phase 5)
|
|
3
|
+
*
|
|
4
|
+
* An onIteration handler that watches for stagnation and climbs an escalation
|
|
5
|
+
* ladder: when the best gate score stops improving for N consecutive turns,
|
|
6
|
+
* advance to the next tier. Tiers escalate cost progressively — widen
|
|
7
|
+
* exploration, enable the critic, raise the turn budget, and finally switch to
|
|
8
|
+
* a stronger model — so cheap strategies are exhausted before expensive ones.
|
|
9
|
+
*
|
|
10
|
+
* The controller is pure policy: it inspects IterationRecords and returns
|
|
11
|
+
* directives. The loop owns all mutation. This keeps escalation testable in
|
|
12
|
+
* isolation and swappable without touching the loop.
|
|
13
|
+
*/
|
|
14
|
+
const DEFAULT_STAGNATION_TURNS = 2;
|
|
15
|
+
const DEFAULT_EPSILON = 0.01;
|
|
16
|
+
/**
|
|
17
|
+
* The canonical escalation ladder: exhaust cheap strategies before expensive
|
|
18
|
+
* ones — widen exploration, then enable the critic, then (if configured)
|
|
19
|
+
* switch to a stronger model with a couple extra turns. Library-owned so
|
|
20
|
+
* non-CLI callers get the same policy.
|
|
21
|
+
*/
|
|
22
|
+
export function defaultEscalationLadder(options = {}) {
|
|
23
|
+
const candidates = Math.max(3, options.candidates ?? 3);
|
|
24
|
+
const tiers = [
|
|
25
|
+
{ label: `widen exploration (${candidates} candidates)`, setCandidates: candidates },
|
|
26
|
+
{ label: 'enable critic', enableCritic: true },
|
|
27
|
+
];
|
|
28
|
+
if (options.escalateExecutor) {
|
|
29
|
+
tiers.push({
|
|
30
|
+
label: `escalate model → ${options.escalateModelName ?? 'stronger model'}`,
|
|
31
|
+
switchExecutor: options.escalateExecutor,
|
|
32
|
+
raiseMaxTurns: (options.maxTurns ?? 5) + 2,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return tiers;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Build a stagnation-driven escalation controller. Returns an `onIteration`
|
|
39
|
+
* suitable for ConvergenceConfig, plus a `tierIndex` accessor for tests.
|
|
40
|
+
*/
|
|
41
|
+
export function createEscalationController(config) {
|
|
42
|
+
const stagnationTurns = config.stagnationTurns ?? DEFAULT_STAGNATION_TURNS;
|
|
43
|
+
const epsilon = config.improvementEpsilon ?? DEFAULT_EPSILON;
|
|
44
|
+
let bestScore = -1;
|
|
45
|
+
let stagnant = 0;
|
|
46
|
+
let nextTier = 0;
|
|
47
|
+
return {
|
|
48
|
+
tierIndex: () => nextTier,
|
|
49
|
+
onIteration: (record) => {
|
|
50
|
+
// A passing turn ends the loop regardless; nothing to escalate.
|
|
51
|
+
if (record.passed)
|
|
52
|
+
return {};
|
|
53
|
+
if (record.score > bestScore + epsilon) {
|
|
54
|
+
bestScore = record.score;
|
|
55
|
+
stagnant = 0;
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
// No meaningful improvement this turn.
|
|
59
|
+
stagnant += 1;
|
|
60
|
+
// Record the high-water mark even without clearing epsilon, so later
|
|
61
|
+
// tiers measure improvement against the true best.
|
|
62
|
+
if (record.score > bestScore)
|
|
63
|
+
bestScore = record.score;
|
|
64
|
+
if (stagnant < stagnationTurns)
|
|
65
|
+
return {};
|
|
66
|
+
// Stagnated — advance a tier if any remain.
|
|
67
|
+
if (nextTier >= config.tiers.length) {
|
|
68
|
+
return {}; // ladder exhausted; let the loop run out its budget
|
|
69
|
+
}
|
|
70
|
+
const tier = config.tiers[nextTier];
|
|
71
|
+
nextTier += 1;
|
|
72
|
+
stagnant = 0; // give the new tier a fresh window to prove itself
|
|
73
|
+
config.onEscalate?.(tier, record.turn);
|
|
74
|
+
return {
|
|
75
|
+
setCandidates: tier.setCandidates,
|
|
76
|
+
enableCritic: tier.enableCritic,
|
|
77
|
+
raiseMaxTurns: tier.raiseMaxTurns,
|
|
78
|
+
switchExecutor: tier.switchExecutor,
|
|
79
|
+
note: `escalate → ${tier.label}`,
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=escalation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation.js","sourceRoot":"","sources":["../../src/delivery/escalation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAoCH,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,eAAe,GAAG,IAAI,CAAC;AAa7B;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,UAAgC,EAAE;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IACxD,MAAM,KAAK,GAAqB;QAC9B,EAAE,KAAK,EAAE,sBAAsB,UAAU,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE;QACpF,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE;KAC/C,CAAC;IACF,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,oBAAoB,OAAO,CAAC,iBAAiB,IAAI,gBAAgB,EAAE;YAC1E,cAAc,EAAE,OAAO,CAAC,gBAAgB;YACxC,aAAa,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAwB;IACjE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,wBAAwB,CAAC;IAC3E,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,IAAI,eAAe,CAAC;IAE7D,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;IAEjB,OAAO;QACL,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ;QACzB,WAAW,EAAE,CAAC,MAAuB,EAAsB,EAAE;YAC3D,gEAAgE;YAChE,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC;YAE7B,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,OAAO,EAAE,CAAC;gBACvC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;gBACzB,QAAQ,GAAG,CAAC,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC;YAED,uCAAuC;YACvC,QAAQ,IAAI,CAAC,CAAC;YACd,qEAAqE;YACrE,mDAAmD;YACnD,IAAI,MAAM,CAAC,KAAK,GAAG,SAAS;gBAAE,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC;YAEvD,IAAI,QAAQ,GAAG,eAAe;gBAAE,OAAO,EAAE,CAAC;YAE1C,4CAA4C;YAC5C,IAAI,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACpC,OAAO,EAAE,CAAC,CAAC,oDAAoD;YACjE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACpC,QAAQ,IAAI,CAAC,CAAC;YACd,QAAQ,GAAG,CAAC,CAAC,CAAC,mDAAmD;YACjE,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAEvC,OAAO;gBACL,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,IAAI,EAAE,cAAc,IAAI,CAAC,KAAK,EAAE;aACjC,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/delivery/index.d.ts
CHANGED
|
@@ -5,7 +5,9 @@
|
|
|
5
5
|
* iterations against the project's real completion gates until delivery
|
|
6
6
|
* is achieved.
|
|
7
7
|
*/
|
|
8
|
-
export { ConvergenceLoop, defaultPromptBuilder, type CandidateSummary, type ConvergenceConfig, type DeliveryResult, type ExplorerSettings, type IterationRecord, type LoopExecutor, type LadderRunner, type PromptBuilder, type PromptContext, } from './convergence-loop.js';
|
|
8
|
+
export { ConvergenceLoop, defaultPromptBuilder, type CandidateSummary, type ConvergenceConfig, type DeliveryResult, type ExplorerSettings, type IterationDirective, type IterationRecord, type LoopExecutor, type LadderRunner, type OnIteration, type PracticeProvider, type PromptBuilder, type PromptContext, } from './convergence-loop.js';
|
|
9
|
+
export { createEscalationController, defaultEscalationLadder, type DefaultLadderOptions, type EscalationConfig, type EscalationController, type EscalationTier, } from './escalation.js';
|
|
10
|
+
export { InMemoryPracticeStore, FilePracticeStore, extractKeywords, distillPractice, defaultPracticePath, retrievePracticesSemantic, type PracticeCard, type PracticeInput, type PracticeStore, type SemanticRetriever, type SemanticRetrieveOptions, } from './practice.js';
|
|
9
11
|
export { exploreAndCommit, DEFAULT_STRATEGY_SEEDS, MAX_CANDIDATES, type CandidateResult, type ExplorationResult, type ExplorerConfig, type StrategySeed, } from './explorer.js';
|
|
10
12
|
export { createModelJudge, extractJson, type Judge, type JudgeCandidate, type JudgeVerdict, } from './judge.js';
|
|
11
13
|
export { createModelCritic, parseFixList, type Critic, type Critique, type CritiqueInput, } from './critic.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,GACnB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,cAAc,EACd,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,KAAK,KAAK,EACV,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,SAAS,EACT,OAAO,EACP,cAAc,EACd,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,eAAe,EACf,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,KAAK,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/delivery/index.js
CHANGED
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* is achieved.
|
|
7
7
|
*/
|
|
8
8
|
export { ConvergenceLoop, defaultPromptBuilder, } from './convergence-loop.js';
|
|
9
|
+
export { createEscalationController, defaultEscalationLadder, } from './escalation.js';
|
|
10
|
+
export { InMemoryPracticeStore, FilePracticeStore, extractKeywords, distillPractice, defaultPracticePath, retrievePracticesSemantic, } from './practice.js';
|
|
9
11
|
export { exploreAndCommit, DEFAULT_STRATEGY_SEEDS, MAX_CANDIDATES, } from './explorer.js';
|
|
10
12
|
export { createModelJudge, extractJson, } from './judge.js';
|
|
11
13
|
export { createModelCritic, parseFixList, } from './critic.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/delivery/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,eAAe,EACf,oBAAoB,GAarB,MAAM,uBAAuB,CAAC;AAE/B,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,GAKhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Practice Store (Phase 4)
|
|
3
|
+
*
|
|
4
|
+
* Best-practice "cards" learned from past deliveries and injected into future
|
|
5
|
+
* prompts for similar tasks. A card records guidance distilled from a
|
|
6
|
+
* *successful* run — the winning strategy seed and how many turns it took —
|
|
7
|
+
* keyed by task keywords.
|
|
8
|
+
*
|
|
9
|
+
* Provenance matters: cards are derived from the harness's own strategy seeds
|
|
10
|
+
* and gate outcomes, never from raw model output. This keeps the long-term
|
|
11
|
+
* store free of model-authored text (a stored-prompt-injection vector).
|
|
12
|
+
*/
|
|
13
|
+
export interface PracticeCard {
|
|
14
|
+
id: string;
|
|
15
|
+
/** Winning strategy seed id (provenance anchor — never model text) */
|
|
16
|
+
strategy: string;
|
|
17
|
+
/** Lowercased keywords that gate retrieval relevance */
|
|
18
|
+
keywords: string[];
|
|
19
|
+
/** Guidance injected into prompts — always regenerated from strategy+bestTurns */
|
|
20
|
+
guidance: string;
|
|
21
|
+
/** Times this practice has been reinforced by a successful delivery */
|
|
22
|
+
successCount: number;
|
|
23
|
+
/** Fewest turns a delivery using this practice took (lower = stronger) */
|
|
24
|
+
bestTurns: number;
|
|
25
|
+
}
|
|
26
|
+
/** Input to record a successful delivery as a practice. */
|
|
27
|
+
export interface PracticeInput {
|
|
28
|
+
strategy: string;
|
|
29
|
+
keywords: string[];
|
|
30
|
+
turns: number;
|
|
31
|
+
}
|
|
32
|
+
export interface PracticeStore {
|
|
33
|
+
/** Retrieve the most relevant cards for a task instruction (keyword overlap) */
|
|
34
|
+
retrieve(instruction: string, limit?: number): PracticeCard[];
|
|
35
|
+
/** All stored cards (used by semantic retrieval to rank the full set) */
|
|
36
|
+
all(): PracticeCard[];
|
|
37
|
+
/** Reinforce or create a card from a successful delivery */
|
|
38
|
+
record(input: PracticeInput): void;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Minimal embedding interface — satisfied by the project's EmbeddingService
|
|
42
|
+
* (nomic-768 via llama.cpp, with its own provider fallback chain down to
|
|
43
|
+
* TF-IDF). Injected rather than imported so the practice module stays
|
|
44
|
+
* dependency-light and unit-testable without the memory subsystem.
|
|
45
|
+
*/
|
|
46
|
+
export interface SemanticRetriever {
|
|
47
|
+
embed(text: string): Promise<number[]>;
|
|
48
|
+
cosineSimilarity(a: number[], b: number[]): number;
|
|
49
|
+
}
|
|
50
|
+
/** Extract lowercased keyword tokens from a task instruction. */
|
|
51
|
+
export declare function extractKeywords(text: string, max?: number): string[];
|
|
52
|
+
export interface SemanticRetrieveOptions {
|
|
53
|
+
limit?: number;
|
|
54
|
+
minSimilarity?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Retrieve practices by semantic similarity to the instruction, ranked by
|
|
58
|
+
* cosine distance then reinforcement (success count, fewest turns). This
|
|
59
|
+
* catches near-misses that keyword overlap drops — "parse a duration" vs
|
|
60
|
+
* "parse durations into seconds".
|
|
61
|
+
*
|
|
62
|
+
* Fail-soft and degenerate-safe: if the embedding provider is unavailable,
|
|
63
|
+
* throws, or yields no match above the similarity floor, it falls back to the
|
|
64
|
+
* synchronous keyword retrieval so practices are never silently disabled.
|
|
65
|
+
*/
|
|
66
|
+
export declare function retrievePracticesSemantic(store: PracticeStore, instruction: string, retriever: SemanticRetriever, options?: SemanticRetrieveOptions): Promise<PracticeCard[]>;
|
|
67
|
+
/** In-memory store — the base implementation; the file store persists it. */
|
|
68
|
+
export declare class InMemoryPracticeStore implements PracticeStore {
|
|
69
|
+
protected cards: PracticeCard[];
|
|
70
|
+
constructor(cards?: PracticeCard[]);
|
|
71
|
+
retrieve(instruction: string, limit?: number): PracticeCard[];
|
|
72
|
+
record(input: PracticeInput): void;
|
|
73
|
+
/** Smallest unused pN id — robust to merges and dropped (corrupt) cards. */
|
|
74
|
+
private nextId;
|
|
75
|
+
all(): PracticeCard[];
|
|
76
|
+
}
|
|
77
|
+
/** File-backed practice store (JSON). Self-heals on missing/corrupt files. */
|
|
78
|
+
export declare class FilePracticeStore extends InMemoryPracticeStore {
|
|
79
|
+
private readonly path;
|
|
80
|
+
constructor(path: string);
|
|
81
|
+
/**
|
|
82
|
+
* Load cards from disk, validating every field. The on-disk file is NOT
|
|
83
|
+
* trusted to supply guidance text — guidance is regenerated from the
|
|
84
|
+
* validated strategy + bestTurns via distillPractice, so a tampered file
|
|
85
|
+
* cannot inject prompt text (the read path enforces the same provenance
|
|
86
|
+
* the write path guarantees). Structurally-invalid cards are dropped.
|
|
87
|
+
*/
|
|
88
|
+
private static load;
|
|
89
|
+
record(input: PracticeInput): void;
|
|
90
|
+
private persist;
|
|
91
|
+
}
|
|
92
|
+
/** Default on-disk location for a project's learned practices. */
|
|
93
|
+
export declare function defaultPracticePath(projectRoot: string): string;
|
|
94
|
+
/**
|
|
95
|
+
* Distill a one-line practice from a successful delivery. Provenance-safe:
|
|
96
|
+
* built only from the winning strategy and turn count, not model output.
|
|
97
|
+
*/
|
|
98
|
+
export declare function distillPractice(winningStrategy: string | undefined, turns: number): string;
|
|
99
|
+
//# sourceMappingURL=practice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"practice.d.ts","sourceRoot":"","sources":["../../src/delivery/practice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,sEAAsE;IACtE,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,gFAAgF;IAChF,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9D,yEAAyE;IACzE,GAAG,IAAI,YAAY,EAAE,CAAC;IACtB,4DAA4D;IAC5D,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACpC;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;CACpD;AAYD,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAK,GAAG,MAAM,EAAE,CAUhE;AAyBD,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,iBAAiB,EAC5B,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,YAAY,EAAE,CAAC,CA4CzB;AAED,6EAA6E;AAC7E,qBAAa,qBAAsB,YAAW,aAAa;IACzD,SAAS,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC;gBAEpB,KAAK,GAAE,YAAY,EAAO;IAItC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,YAAY,EAAE;IAcxD,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAqBlC,4EAA4E;IAC5E,OAAO,CAAC,MAAM;IAQd,GAAG,IAAI,YAAY,EAAE;CAKtB;AAED,8EAA8E;AAC9E,qBAAa,iBAAkB,SAAQ,qBAAqB;IAC1D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;gBAElB,IAAI,EAAE,MAAM;IAKxB;;;;;;OAMG;IACH,OAAO,CAAC,MAAM,CAAC,IAAI;IAgCnB,MAAM,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;IAKlC,OAAO,CAAC,OAAO;CAYhB;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAM1F"}
|