@proofhound/optimization-strategy 0.1.6
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/LICENSE +190 -0
- package/dist/error-pattern-analysis/analysis-types.d.ts +45 -0
- package/dist/error-pattern-analysis/analysis-types.d.ts.map +1 -0
- package/dist/error-pattern-analysis/analysis-types.js +3 -0
- package/dist/error-pattern-analysis/analysis-types.js.map +1 -0
- package/dist/error-pattern-analysis/analyze.d.ts +81 -0
- package/dist/error-pattern-analysis/analyze.d.ts.map +1 -0
- package/dist/error-pattern-analysis/analyze.js +423 -0
- package/dist/error-pattern-analysis/analyze.js.map +1 -0
- package/dist/error-pattern-analysis/config.schema.d.ts +16 -0
- package/dist/error-pattern-analysis/config.schema.d.ts.map +1 -0
- package/dist/error-pattern-analysis/config.schema.js +26 -0
- package/dist/error-pattern-analysis/config.schema.js.map +1 -0
- package/dist/error-pattern-analysis/confusion-pairs.d.ts +37 -0
- package/dist/error-pattern-analysis/confusion-pairs.d.ts.map +1 -0
- package/dist/error-pattern-analysis/confusion-pairs.js +109 -0
- package/dist/error-pattern-analysis/confusion-pairs.js.map +1 -0
- package/dist/error-pattern-analysis/generate-initial.d.ts +36 -0
- package/dist/error-pattern-analysis/generate-initial.d.ts.map +1 -0
- package/dist/error-pattern-analysis/generate-initial.js +261 -0
- package/dist/error-pattern-analysis/generate-initial.js.map +1 -0
- package/dist/error-pattern-analysis/generate.d.ts +57 -0
- package/dist/error-pattern-analysis/generate.d.ts.map +1 -0
- package/dist/error-pattern-analysis/generate.js +369 -0
- package/dist/error-pattern-analysis/generate.js.map +1 -0
- package/dist/error-pattern-analysis/index.d.ts +8 -0
- package/dist/error-pattern-analysis/index.d.ts.map +1 -0
- package/dist/error-pattern-analysis/index.js +29 -0
- package/dist/error-pattern-analysis/index.js.map +1 -0
- package/dist/error-pattern-analysis/parse.d.ts +92 -0
- package/dist/error-pattern-analysis/parse.d.ts.map +1 -0
- package/dist/error-pattern-analysis/parse.js +456 -0
- package/dist/error-pattern-analysis/parse.js.map +1 -0
- package/dist/error-pattern-analysis/prompts/analyze-confusion.system.en-US.md +50 -0
- package/dist/error-pattern-analysis/prompts/analyze-confusion.system.md +61 -0
- package/dist/error-pattern-analysis/prompts/analyze-regression.system.en-US.md +50 -0
- package/dist/error-pattern-analysis/prompts/analyze-regression.system.md +61 -0
- package/dist/error-pattern-analysis/prompts/generate-initial.system.en-US.md +43 -0
- package/dist/error-pattern-analysis/prompts/generate-initial.system.md +49 -0
- package/dist/error-pattern-analysis/prompts/generate.system.en-US.md +53 -0
- package/dist/error-pattern-analysis/prompts/generate.system.md +68 -0
- package/dist/error-pattern-analysis/prompts/loader.d.ts +46 -0
- package/dist/error-pattern-analysis/prompts/loader.d.ts.map +1 -0
- package/dist/error-pattern-analysis/prompts/loader.js +109 -0
- package/dist/error-pattern-analysis/prompts/loader.js.map +1 -0
- package/dist/error-pattern-analysis/prompts/optimization-tips.en-US.md +25 -0
- package/dist/error-pattern-analysis/prompts/optimization-tips.md +38 -0
- package/dist/error-pattern-analysis/prompts/summarize.system.en-US.md +48 -0
- package/dist/error-pattern-analysis/prompts/summarize.system.md +69 -0
- package/dist/error-pattern-analysis/prompts.d.ts +79 -0
- package/dist/error-pattern-analysis/prompts.d.ts.map +1 -0
- package/dist/error-pattern-analysis/prompts.js +659 -0
- package/dist/error-pattern-analysis/prompts.js.map +1 -0
- package/dist/error-pattern-analysis/token-budget.d.ts +20 -0
- package/dist/error-pattern-analysis/token-budget.d.ts.map +1 -0
- package/dist/error-pattern-analysis/token-budget.js +88 -0
- package/dist/error-pattern-analysis/token-budget.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/loop/best.d.ts +3 -0
- package/dist/loop/best.d.ts.map +1 -0
- package/dist/loop/best.js +43 -0
- package/dist/loop/best.js.map +1 -0
- package/dist/loop/goals.d.ts +6 -0
- package/dist/loop/goals.d.ts.map +1 -0
- package/dist/loop/goals.js +38 -0
- package/dist/loop/goals.js.map +1 -0
- package/dist/loop/round-outcome.d.ts +14 -0
- package/dist/loop/round-outcome.d.ts.map +1 -0
- package/dist/loop/round-outcome.js +18 -0
- package/dist/loop/round-outcome.js.map +1 -0
- package/dist/loop/run-iteration-loop.d.ts +5 -0
- package/dist/loop/run-iteration-loop.d.ts.map +1 -0
- package/dist/loop/run-iteration-loop.js +247 -0
- package/dist/loop/run-iteration-loop.js.map +1 -0
- package/dist/loop/types.d.ts +190 -0
- package/dist/loop/types.d.ts.map +1 -0
- package/dist/loop/types.js +13 -0
- package/dist/loop/types.js.map +1 -0
- package/dist/registry.d.ts +5 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +19 -0
- package/dist/registry.js.map +1 -0
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/error-pattern-analysis/prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface BaselineEstimate {
|
|
2
|
+
inputTokens: number;
|
|
3
|
+
outputTokens: number;
|
|
4
|
+
totalTokens: number;
|
|
5
|
+
}
|
|
6
|
+
export declare function estimateMessagesTokens(system: string, user: string, maxOutputTokens: number): BaselineEstimate;
|
|
7
|
+
export declare function computeSampleBudget(maxInputTokensPerBatch: number, baselineInputTokens: number): number;
|
|
8
|
+
export interface FitSamplesResult<T> {
|
|
9
|
+
fitted: T[];
|
|
10
|
+
dropped: T[];
|
|
11
|
+
estimatedTokens: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function fitSamplesToBudget<T>(samples: T[], tokenBudget: number, minSamples?: number): FitSamplesResult<T>;
|
|
14
|
+
export declare const TRUNCATION_MARKER = "\u2026[truncated]";
|
|
15
|
+
export declare function truncateStringFields<T>(value: T, maxChars: number, marker?: string): T;
|
|
16
|
+
export declare function truncateLongText(text: string, maxChars: number, marker?: string): string;
|
|
17
|
+
export declare function truncateAllStringFieldsInObject<T>(obj: T, maxCharsPerField: number): T;
|
|
18
|
+
export declare function tokensToChars(tokens: number): number;
|
|
19
|
+
export declare function estimateTokens(value: unknown): number;
|
|
20
|
+
//# sourceMappingURL=token-budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget.d.ts","sourceRoot":"","sources":["../../src/error-pattern-analysis/token-budget.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,GACtB,gBAAgB,CASlB;AAGD,wBAAgB,mBAAmB,CACjC,sBAAsB,EAAE,MAAM,EAC9B,mBAAmB,EAAE,MAAM,GAC1B,MAAM,CAER;AAED,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,EAAE,CAAC;IACZ,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,wBAAgB,kBAAkB,CAAC,CAAC,EAClC,OAAO,EAAE,CAAC,EAAE,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,SAAI,GACb,gBAAgB,CAAC,CAAC,CAAC,CAerB;AAGD,eAAO,MAAM,iBAAiB,sBAAiB,CAAC;AAEhD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAoB,GAAG,CAAC,CAgBjG;AAGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAoB,GAAG,MAAM,CAMnG;AAGD,wBAAgB,+BAA+B,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC,CAEtF;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TRUNCATION_MARKER = void 0;
|
|
4
|
+
exports.estimateMessagesTokens = estimateMessagesTokens;
|
|
5
|
+
exports.computeSampleBudget = computeSampleBudget;
|
|
6
|
+
exports.fitSamplesToBudget = fitSamplesToBudget;
|
|
7
|
+
exports.truncateStringFields = truncateStringFields;
|
|
8
|
+
exports.truncateLongText = truncateLongText;
|
|
9
|
+
exports.truncateAllStringFieldsInObject = truncateAllStringFieldsInObject;
|
|
10
|
+
exports.tokensToChars = tokensToChars;
|
|
11
|
+
exports.estimateTokens = estimateTokens;
|
|
12
|
+
// Token-budget tools — prevent a single LLM call's input from overflowing
|
|
13
|
+
// The estimation calibration matches packages/llm-client/src/token-estimate.ts (rough 4 chars/token)
|
|
14
|
+
const llm_client_1 = require("@proofhound/llm-client");
|
|
15
|
+
// Estimate the per-call token footprint of "system + user + reserved output"
|
|
16
|
+
function estimateMessagesTokens(system, user, maxOutputTokens) {
|
|
17
|
+
const u = (0, llm_client_1.estimateLLMTokens)({
|
|
18
|
+
messages: [
|
|
19
|
+
{ role: 'system', content: system },
|
|
20
|
+
{ role: 'user', content: user },
|
|
21
|
+
],
|
|
22
|
+
maxTokens: maxOutputTokens,
|
|
23
|
+
});
|
|
24
|
+
return { inputTokens: u.inputTokens, outputTokens: u.outputTokens, totalTokens: u.totalTokens };
|
|
25
|
+
}
|
|
26
|
+
// Compute samples budget = total input budget - baseline; floor at 0
|
|
27
|
+
function computeSampleBudget(maxInputTokensPerBatch, baselineInputTokens) {
|
|
28
|
+
return Math.max(0, maxInputTokensPerBatch - baselineInputTokens);
|
|
29
|
+
}
|
|
30
|
+
// Fit samples one by one by estimated tokens; keep at least minSamples (even if over budget — let the upper layer decide whether to truncate fields further)
|
|
31
|
+
function fitSamplesToBudget(samples, tokenBudget, minSamples = 1) {
|
|
32
|
+
const fitted = [];
|
|
33
|
+
const dropped = [];
|
|
34
|
+
let used = 0;
|
|
35
|
+
for (const sample of samples) {
|
|
36
|
+
const tokens = (0, llm_client_1.estimateTextTokens)(sample);
|
|
37
|
+
const wouldExceed = used + tokens > tokenBudget;
|
|
38
|
+
if (fitted.length >= minSamples && wouldExceed) {
|
|
39
|
+
dropped.push(sample);
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
fitted.push(sample);
|
|
43
|
+
used += tokens;
|
|
44
|
+
}
|
|
45
|
+
return { fitted, dropped, estimatedTokens: used };
|
|
46
|
+
}
|
|
47
|
+
// Recursive string-field truncation — used in the extreme case where "a single sample exceeds the budget"
|
|
48
|
+
exports.TRUNCATION_MARKER = '…[truncated]';
|
|
49
|
+
function truncateStringFields(value, maxChars, marker = exports.TRUNCATION_MARKER) {
|
|
50
|
+
if (value === null || value === undefined)
|
|
51
|
+
return value;
|
|
52
|
+
if (typeof value === 'string') {
|
|
53
|
+
return (value.length > maxChars ? value.slice(0, maxChars) + marker : value);
|
|
54
|
+
}
|
|
55
|
+
if (Array.isArray(value)) {
|
|
56
|
+
return value.map((x) => truncateStringFields(x, maxChars, marker));
|
|
57
|
+
}
|
|
58
|
+
if (typeof value === 'object') {
|
|
59
|
+
const out = {};
|
|
60
|
+
for (const [k, v] of Object.entries(value)) {
|
|
61
|
+
out[k] = truncateStringFields(v, maxChars, marker);
|
|
62
|
+
}
|
|
63
|
+
return out;
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
// Truncate a single long text, keeping head + tail (middle marked with marker) — suited for long summaries like errorAnalysisText
|
|
68
|
+
function truncateLongText(text, maxChars, marker = exports.TRUNCATION_MARKER) {
|
|
69
|
+
if (!text || text.length <= maxChars)
|
|
70
|
+
return text;
|
|
71
|
+
// Head 70% + tail 30%; marker in the middle
|
|
72
|
+
const headLen = Math.floor((maxChars - marker.length) * 0.7);
|
|
73
|
+
const tailLen = maxChars - marker.length - headLen;
|
|
74
|
+
return text.slice(0, headLen) + marker + text.slice(text.length - tailLen);
|
|
75
|
+
}
|
|
76
|
+
// Limit all string fields in an object to maxCharsPerField — used for summarize batches degradation
|
|
77
|
+
function truncateAllStringFieldsInObject(obj, maxCharsPerField) {
|
|
78
|
+
return truncateStringFields(obj, maxCharsPerField);
|
|
79
|
+
}
|
|
80
|
+
// Convert numeric tokens to readable char counts (only for log-friendly display)
|
|
81
|
+
function tokensToChars(tokens) {
|
|
82
|
+
return tokens * 4;
|
|
83
|
+
}
|
|
84
|
+
// Utility: estimate sample/object tokens (wraps estimateTextTokens, exposing a unified entrypoint)
|
|
85
|
+
function estimateTokens(value) {
|
|
86
|
+
return (0, llm_client_1.estimateTextTokens)(value);
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=token-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-budget.js","sourceRoot":"","sources":["../../src/error-pattern-analysis/token-budget.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './types';
|
|
2
|
+
export * from './registry';
|
|
3
|
+
export * from './error-pattern-analysis';
|
|
4
|
+
export * from './loop/types';
|
|
5
|
+
export * from './loop/goals';
|
|
6
|
+
export * from './loop/best';
|
|
7
|
+
export * from './loop/round-outcome';
|
|
8
|
+
export * from './loop/run-iteration-loop';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
// Optimization strategy registry entrypoint
|
|
18
|
+
// See docs/specs/25-optimizations.md + docs/specs/07-code-structure.md §12.2
|
|
19
|
+
__exportStar(require("./types"), exports);
|
|
20
|
+
__exportStar(require("./registry"), exports);
|
|
21
|
+
__exportStar(require("./error-pattern-analysis"), exports);
|
|
22
|
+
__exportStar(require("./loop/types"), exports);
|
|
23
|
+
__exportStar(require("./loop/goals"), exports);
|
|
24
|
+
__exportStar(require("./loop/best"), exports);
|
|
25
|
+
__exportStar(require("./loop/round-outcome"), exports);
|
|
26
|
+
__exportStar(require("./loop/run-iteration-loop"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA4C;AAC5C,6EAA6E;AAC7E,0CAAwB;AACxB,6CAA2B;AAC3B,2DAAyC;AACzC,+CAA6B;AAC7B,+CAA6B;AAC7B,8CAA4B;AAC5B,uDAAqC;AACrC,4DAA0C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best.d.ts","sourceRoot":"","sources":["../../src/loop/best.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAgB,cAAc,EAAE,MAAM,SAAS,CAAC;AAuB9E,wBAAgB,YAAY,CAC1B,SAAS,EAAE,cAAc,EACzB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,gBAAgB,EAAE,GACxB,OAAO,CAaT"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isBetterThan = isBetterThan;
|
|
4
|
+
// best comparison — determine whether the candidate metric is better than the current best
|
|
5
|
+
// Rule: a strict reduction in the count of unmet goals = better; on ties, the sum of observed values in the direction is better (accumulate distance by op).
|
|
6
|
+
const goals_1 = require("./goals");
|
|
7
|
+
function unmetCount(goals, metrics) {
|
|
8
|
+
let n = 0;
|
|
9
|
+
for (const goal of goals) {
|
|
10
|
+
const observed = (0, goals_1.readMetric)(metrics, goal);
|
|
11
|
+
if (observed === null || !(0, goals_1.compare)(observed, goal.op, goal.value))
|
|
12
|
+
n++;
|
|
13
|
+
}
|
|
14
|
+
return n;
|
|
15
|
+
}
|
|
16
|
+
// A single goal's "direction score" under metrics — the more aligned with op, the higher the score; missing scored as -Infinity
|
|
17
|
+
function directionalScore(metrics, goal) {
|
|
18
|
+
const observed = (0, goals_1.readMetric)(metrics, goal);
|
|
19
|
+
if (observed === null)
|
|
20
|
+
return Number.NEGATIVE_INFINITY;
|
|
21
|
+
return signFor(goal.op) * observed;
|
|
22
|
+
}
|
|
23
|
+
function signFor(op) {
|
|
24
|
+
// >=, > want larger; <= want smaller (negate so "smaller" becomes "larger")
|
|
25
|
+
return op === '<=' ? -1 : 1;
|
|
26
|
+
}
|
|
27
|
+
function isBetterThan(candidate, current, goals) {
|
|
28
|
+
if (goals.length === 0)
|
|
29
|
+
return false;
|
|
30
|
+
const candidateUnmet = unmetCount(goals, candidate);
|
|
31
|
+
const currentUnmet = unmetCount(goals, current);
|
|
32
|
+
if (candidateUnmet !== currentUnmet)
|
|
33
|
+
return candidateUnmet < currentUnmet;
|
|
34
|
+
// On ties, compare the directional total
|
|
35
|
+
let candidateScore = 0;
|
|
36
|
+
let currentScore = 0;
|
|
37
|
+
for (const goal of goals) {
|
|
38
|
+
candidateScore += directionalScore(candidate, goal);
|
|
39
|
+
currentScore += directionalScore(current, goal);
|
|
40
|
+
}
|
|
41
|
+
return candidateScore > currentScore;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=best.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best.js","sourceRoot":"","sources":["../../src/loop/best.ts"],"names":[],"mappings":";;AA0BA,oCAiBC;AA3CD,2FAA2F;AAC3F,6JAA6J;AAC7J,mCAA8C;AAG9C,SAAS,UAAU,CAAC,KAAyB,EAAE,OAAuB;IACpE,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,CAAC,IAAA,eAAO,EAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC;YAAE,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gIAAgI;AAChI,SAAS,gBAAgB,CAAC,OAAuB,EAAE,IAAsB;IACvE,MAAM,QAAQ,GAAG,IAAA,kBAAU,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;AACrC,CAAC;AAED,SAAS,OAAO,CAAC,EAAgB;IAC/B,4EAA4E;IAC5E,OAAO,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,YAAY,CAC1B,SAAyB,EACzB,OAAuB,EACvB,KAAyB;IAEzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,cAAc,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,cAAc,KAAK,YAAY;QAAE,OAAO,cAAc,GAAG,YAAY,CAAC;IAC1E,yCAAyC;IACzC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,cAAc,IAAI,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACpD,YAAY,IAAI,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,cAAc,GAAG,YAAY,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OptimizationGoal, ComparisonOp, GoalProgressEntry, MetricSnapshot } from './types';
|
|
2
|
+
export declare function readMetric(metrics: MetricSnapshot, goal: OptimizationGoal): number | null;
|
|
3
|
+
export declare function compare(observed: number, op: ComparisonOp, target: number): boolean;
|
|
4
|
+
export declare function evaluateGoals(goals: OptimizationGoal[], metrics: MetricSnapshot): GoalProgressEntry[];
|
|
5
|
+
export declare function allGoalsMet(goals: OptimizationGoal[], metrics: MetricSnapshot): boolean;
|
|
6
|
+
//# sourceMappingURL=goals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goals.d.ts","sourceRoot":"","sources":["../../src/loop/goals.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEjG,wBAAgB,UAAU,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CAQzF;AAED,wBAAgB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CASnF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,iBAAiB,EAAE,CAMrG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAGvF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readMetric = readMetric;
|
|
4
|
+
exports.compare = compare;
|
|
5
|
+
exports.evaluateGoals = evaluateGoals;
|
|
6
|
+
exports.allGoalsMet = allGoalsMet;
|
|
7
|
+
function readMetric(metrics, goal) {
|
|
8
|
+
if (goal.scope.kind === 'overall') {
|
|
9
|
+
const value = metrics.overall[goal.metric];
|
|
10
|
+
return typeof value === 'number' ? value : null;
|
|
11
|
+
}
|
|
12
|
+
const slice = metrics.perClass?.[goal.scope.label];
|
|
13
|
+
const value = slice?.[goal.metric];
|
|
14
|
+
return typeof value === 'number' ? value : null;
|
|
15
|
+
}
|
|
16
|
+
function compare(observed, op, target) {
|
|
17
|
+
switch (op) {
|
|
18
|
+
case '>=':
|
|
19
|
+
return observed >= target;
|
|
20
|
+
case '<=':
|
|
21
|
+
return observed <= target;
|
|
22
|
+
case '>':
|
|
23
|
+
return observed > target;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function evaluateGoals(goals, metrics) {
|
|
27
|
+
return goals.map((goal) => {
|
|
28
|
+
const observed = readMetric(metrics, goal);
|
|
29
|
+
const achieved = observed === null ? false : compare(observed, goal.op, goal.value);
|
|
30
|
+
return { goal, observed, achieved };
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
function allGoalsMet(goals, metrics) {
|
|
34
|
+
if (goals.length === 0)
|
|
35
|
+
return false;
|
|
36
|
+
return evaluateGoals(goals, metrics).every((entry) => entry.achieved);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=goals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"goals.js","sourceRoot":"","sources":["../../src/loop/goals.ts"],"names":[],"mappings":";;AAGA,gCAQC;AAED,0BASC;AAED,sCAMC;AAED,kCAGC;AAhCD,SAAgB,UAAU,CAAC,OAAuB,EAAE,IAAsB;IACxE,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,EAAgB,EAAE,MAAc;IACxE,QAAQ,EAAE,EAAE,CAAC;QACX,KAAK,IAAI;YACP,OAAO,QAAQ,IAAI,MAAM,CAAC;QAC5B,KAAK,IAAI;YACP,OAAO,QAAQ,IAAI,MAAM,CAAC;QAC5B,KAAK,GAAG;YACN,OAAO,QAAQ,GAAG,MAAM,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAyB,EAAE,OAAuB;IAC9E,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,WAAW,CAAC,KAAyB,EAAE,OAAuB;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { OptimizationGoal, GoalProgressEntry, MetricSnapshot } from './types';
|
|
2
|
+
export interface RoundOutcomeDecisionInput {
|
|
3
|
+
roundMetrics: MetricSnapshot;
|
|
4
|
+
bestMetrics: MetricSnapshot;
|
|
5
|
+
goals: OptimizationGoal[];
|
|
6
|
+
}
|
|
7
|
+
export interface RoundOutcomeDecision {
|
|
8
|
+
isBest: boolean;
|
|
9
|
+
goalsMet: boolean;
|
|
10
|
+
newBestMetrics: MetricSnapshot;
|
|
11
|
+
goalProgress: GoalProgressEntry[];
|
|
12
|
+
}
|
|
13
|
+
export declare function decideRoundOutcome(input: RoundOutcomeDecisionInput): RoundOutcomeDecision;
|
|
14
|
+
//# sourceMappingURL=round-outcome.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-outcome.d.ts","sourceRoot":"","sources":["../../src/loop/round-outcome.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEnF,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,cAAc,CAAC;IAC7B,WAAW,EAAE,cAAc,CAAC;IAC5B,KAAK,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAElB,cAAc,EAAE,cAAc,CAAC;IAE/B,YAAY,EAAE,iBAAiB,EAAE,CAAC;CACnC;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,yBAAyB,GAAG,oBAAoB,CAMzF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decideRoundOutcome = decideRoundOutcome;
|
|
4
|
+
// Round decision — after workflow.finalizeRoundImpl calls the child experiment and gets this round's metrics,
|
|
5
|
+
// separate the "snapshot → isBest + goalsMet + new best metrics + goalProgress" pure computation out of
|
|
6
|
+
// the DBOS step boundary; the workflow only writes state based on the result.
|
|
7
|
+
//
|
|
8
|
+
// Does not include child experiment failure / parent stop / cancel orchestration branches — those are still handled by the workflow.
|
|
9
|
+
const best_1 = require("./best");
|
|
10
|
+
const goals_1 = require("./goals");
|
|
11
|
+
function decideRoundOutcome(input) {
|
|
12
|
+
const isBest = (0, best_1.isBetterThan)(input.roundMetrics, input.bestMetrics, input.goals);
|
|
13
|
+
const newBestMetrics = isBest ? input.roundMetrics : input.bestMetrics;
|
|
14
|
+
const goalProgress = (0, goals_1.evaluateGoals)(input.goals, newBestMetrics);
|
|
15
|
+
const goalsMet = goalProgress.length > 0 && goalProgress.every((p) => p.achieved);
|
|
16
|
+
return { isBest, goalsMet, newBestMetrics, goalProgress };
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=round-outcome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"round-outcome.js","sourceRoot":"","sources":["../../src/loop/round-outcome.ts"],"names":[],"mappings":";;AAwBA,gDAMC;AA9BD,8GAA8G;AAC9G,wGAAwG;AACxG,8EAA8E;AAC9E,EAAE;AACF,qIAAqI;AACrI,iCAAsC;AACtC,mCAAwC;AAkBxC,SAAgB,kBAAkB,CAAC,KAAgC;IACjE,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChF,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IACvE,MAAM,YAAY,GAAG,IAAA,qBAAa,EAAC,KAAK,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IAClF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ErrorPatternAnalysisConfig } from '../error-pattern-analysis/config.schema';
|
|
2
|
+
import { type OptimizationConfig, type OptimizationResult, type ExperimentSnapshot, type LoopDependencies, type LoopPorts, type RoundHistoryEntry } from './types';
|
|
3
|
+
export declare function computeNoBestStreak(history: RoundHistoryEntry[]): number;
|
|
4
|
+
export declare function runIterationLoop(config: OptimizationConfig<ErrorPatternAnalysisConfig>, snapshot: ExperimentSnapshot, ports: LoopPorts, deps: LoopDependencies): Promise<OptimizationResult>;
|
|
5
|
+
//# sourceMappingURL=run-iteration-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-iteration-loop.d.ts","sourceRoot":"","sources":["../../src/loop/run-iteration-loop.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAI1F,OAAO,EAEL,KAAK,kBAAkB,EAGvB,KAAK,kBAAkB,EAEvB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EAGd,KAAK,iBAAiB,EAGvB,MAAM,SAAS,CAAC;AAQjB,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAOxE;AAiED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,CAAC,0BAA0B,CAAC,EACtD,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,SAAS,EAChB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAmM7B"}
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.computeNoBestStreak = computeNoBestStreak;
|
|
4
|
+
exports.runIterationLoop = runIterationLoop;
|
|
5
|
+
// Optimization main loop — see docs/specs/25-optimizations.md
|
|
6
|
+
const analyze_1 = require("../error-pattern-analysis/analyze");
|
|
7
|
+
const generate_1 = require("../error-pattern-analysis/generate");
|
|
8
|
+
const prompts_1 = require("../error-pattern-analysis/prompts");
|
|
9
|
+
const best_1 = require("./best");
|
|
10
|
+
const goals_1 = require("./goals");
|
|
11
|
+
const types_1 = require("./types");
|
|
12
|
+
function nowIso(deps) {
|
|
13
|
+
return new Date(deps.now?.() ?? Date.now()).toISOString();
|
|
14
|
+
}
|
|
15
|
+
// Count consecutive !isBest from the end of roundHistory backwards — used by the "toolbox rotation hint" trigger
|
|
16
|
+
// (SPEC 25 §11.3 "toolbox rotation hint"). Empty history / last round already best → return 0.
|
|
17
|
+
function computeNoBestStreak(history) {
|
|
18
|
+
let streak = 0;
|
|
19
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
20
|
+
if (history[i].isBest)
|
|
21
|
+
break;
|
|
22
|
+
streak++;
|
|
23
|
+
}
|
|
24
|
+
return streak;
|
|
25
|
+
}
|
|
26
|
+
// Build the hint when streak >= 2: take the union (deduped) of entry.appliedTips from the last 2 entries + toolbox constants.
|
|
27
|
+
// streak < 2 / empty history → undefined (do not render the section).
|
|
28
|
+
function buildToolboxSwitchHint(history, promptLanguage) {
|
|
29
|
+
const streak = computeNoBestStreak(history);
|
|
30
|
+
if (streak < 2)
|
|
31
|
+
return undefined;
|
|
32
|
+
const recentEntries = history.slice(-2);
|
|
33
|
+
const usedSet = new Set();
|
|
34
|
+
for (const e of recentEntries) {
|
|
35
|
+
for (const t of e.appliedTips) {
|
|
36
|
+
const trimmed = t.trim();
|
|
37
|
+
if (trimmed.length > 0)
|
|
38
|
+
usedSet.add(trimmed);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return { recentlyUsedTips: Array.from(usedSet), allTipNames: (0, prompts_1.getOptimizationTipNames)(promptLanguage) };
|
|
42
|
+
}
|
|
43
|
+
function normalizeErrorClass(err) {
|
|
44
|
+
if (err instanceof Error) {
|
|
45
|
+
return { errorClass: err.name || 'Error', errorMessage: err.message };
|
|
46
|
+
}
|
|
47
|
+
return { errorClass: 'UnknownError', errorMessage: String(err) };
|
|
48
|
+
}
|
|
49
|
+
async function finalize(ctx, config, ports) {
|
|
50
|
+
const result = {
|
|
51
|
+
status: ctx.status,
|
|
52
|
+
reason: ctx.reason,
|
|
53
|
+
bestVersionId: ctx.bestVersion.id,
|
|
54
|
+
bestMetrics: ctx.bestMetrics,
|
|
55
|
+
rounds: ctx.rounds,
|
|
56
|
+
errorClass: ctx.errorClass,
|
|
57
|
+
errorMessage: ctx.errorMessage,
|
|
58
|
+
};
|
|
59
|
+
await ports.roundRecorder.recordFinal(result, { optimizationId: config.optimizationId });
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
async function runIterationLoop(config, snapshot, ports, deps) {
|
|
63
|
+
const invokeDeps = (0, types_1.toInvokeLLMDependencies)(deps);
|
|
64
|
+
let bestVersion = snapshot.basePromptVersion;
|
|
65
|
+
let bestMetrics = snapshot.lastMetrics;
|
|
66
|
+
let bestRunResults = snapshot.lastRunResults;
|
|
67
|
+
let pendingRegressionRetry = null;
|
|
68
|
+
const rounds = [];
|
|
69
|
+
// Cross-round history (SPEC 25 §11.3) — accumulate one entry after each round's finalize; passed to the next round's analyze / generate
|
|
70
|
+
const accumulatedHistory = [];
|
|
71
|
+
// Round 0: the source experiment is the baseline; finalize immediately if already at goal
|
|
72
|
+
if ((0, goals_1.allGoalsMet)(config.goals, bestMetrics)) {
|
|
73
|
+
return finalize({ status: 'success', reason: 'goals_met', bestVersion, bestMetrics, rounds }, config, ports);
|
|
74
|
+
}
|
|
75
|
+
for (let roundNumber = 1; roundNumber <= config.maxRounds; roundNumber++) {
|
|
76
|
+
// ① control check
|
|
77
|
+
const signal = await ports.controlSignals.read(config.optimizationId);
|
|
78
|
+
if (signal === 'cancel') {
|
|
79
|
+
return finalize({ status: 'cancelled', reason: 'control_cancel', bestVersion, bestMetrics, rounds }, config, ports);
|
|
80
|
+
}
|
|
81
|
+
if (signal === 'stop') {
|
|
82
|
+
return finalize({ status: 'stopped', reason: 'control_stop', bestVersion, bestMetrics, rounds }, config, ports);
|
|
83
|
+
}
|
|
84
|
+
const startedAt = nowIso(deps);
|
|
85
|
+
try {
|
|
86
|
+
const generationBaseVersion = pendingRegressionRetry?.baseVersion ?? bestVersion;
|
|
87
|
+
const generationBaseRunResults = pendingRegressionRetry?.baseRunResults ?? bestRunResults;
|
|
88
|
+
const generationBaseMetrics = pendingRegressionRetry?.baseMetrics ?? bestMetrics;
|
|
89
|
+
const analysisVersion = pendingRegressionRetry?.regressedVersion ?? generationBaseVersion;
|
|
90
|
+
const currentRunResults = pendingRegressionRetry?.regressedRunResults ?? generationBaseRunResults;
|
|
91
|
+
const currentMetrics = pendingRegressionRetry?.regressedMetrics ?? generationBaseMetrics;
|
|
92
|
+
// ② Pull previousRunResults from the DB — used for regression sample detection
|
|
93
|
+
const previousRunResults = pendingRegressionRetry?.baseRunResults ??
|
|
94
|
+
(await ports.previousRoundRunResultsReader.read({
|
|
95
|
+
optimizationId: config.optimizationId,
|
|
96
|
+
sourceExperimentId: snapshot.sourceExperimentId,
|
|
97
|
+
currentRoundNumber: roundNumber,
|
|
98
|
+
}));
|
|
99
|
+
// The base for this round's generate — snapshot before step ⑦ updates bestVersion, for history recording.
|
|
100
|
+
// If the previous round regressed against its parent version, this falls back to the parent prompt, but analyze still sees the regressed-round version and samples.
|
|
101
|
+
const baseVersionForThisRound = generationBaseVersion;
|
|
102
|
+
// ③ Error-sample analysis (confusion pairs + regression + multiple LLM calls + summary)
|
|
103
|
+
const analysis = await (0, analyze_1.analyzeFailures)({
|
|
104
|
+
optimizationId: config.optimizationId,
|
|
105
|
+
roundNumber,
|
|
106
|
+
analysisModel: config.analysisModel,
|
|
107
|
+
analysisLimiterKey: config.analysisLimiterKey,
|
|
108
|
+
currentVersion: analysisVersion,
|
|
109
|
+
previousVersion: pendingRegressionRetry?.baseVersion ?? null,
|
|
110
|
+
samples: snapshot.dataset.samples,
|
|
111
|
+
currentRunResults,
|
|
112
|
+
previousRunResults,
|
|
113
|
+
metrics: currentMetrics,
|
|
114
|
+
goals: config.goals,
|
|
115
|
+
fieldWhitelist: config.fieldWhitelist,
|
|
116
|
+
strategyConfig: config.strategyConfig,
|
|
117
|
+
roundHistory: accumulatedHistory,
|
|
118
|
+
promptLanguage: config.promptLanguage,
|
|
119
|
+
}, invokeDeps);
|
|
120
|
+
// ④ Generate new version (inject the "toolbox rotation hint" section when !isBest for ≥ 2 consecutive rounds — SPEC 25 §11.3)
|
|
121
|
+
const toolboxSwitchHint = buildToolboxSwitchHint(accumulatedHistory, config.promptLanguage);
|
|
122
|
+
const draft = await (0, generate_1.generateNextVersion)({
|
|
123
|
+
optimizationId: config.optimizationId,
|
|
124
|
+
roundNumber,
|
|
125
|
+
analysisModel: config.analysisModel,
|
|
126
|
+
analysisLimiterKey: config.analysisLimiterKey,
|
|
127
|
+
currentVersion: generationBaseVersion,
|
|
128
|
+
analysis,
|
|
129
|
+
metrics: currentMetrics,
|
|
130
|
+
goals: config.goals,
|
|
131
|
+
fieldWhitelist: config.fieldWhitelist,
|
|
132
|
+
optimizationHint: config.optimizationHint,
|
|
133
|
+
strategyConfig: config.strategyConfig,
|
|
134
|
+
roundHistory: accumulatedHistory,
|
|
135
|
+
toolboxSwitchHint,
|
|
136
|
+
promptLanguage: config.promptLanguage,
|
|
137
|
+
}, invokeDeps);
|
|
138
|
+
// ⑤ Persist the new version (outputSchema / judgmentRules preserved as-is — SPEC 23 frozen four)
|
|
139
|
+
const newVersion = await ports.promptVersionWriter.writePromptVersion({
|
|
140
|
+
promptId: generationBaseVersion.promptId,
|
|
141
|
+
parentVersionId: generationBaseVersion.id,
|
|
142
|
+
body: draft.newPromptBody,
|
|
143
|
+
outputSchema: generationBaseVersion.outputSchema,
|
|
144
|
+
judgmentRules: generationBaseVersion.judgmentRules,
|
|
145
|
+
optimizationId: config.optimizationId,
|
|
146
|
+
changeSummary: draft.changeSummary,
|
|
147
|
+
});
|
|
148
|
+
// ⑥ Run experiment
|
|
149
|
+
const run = await ports.experimentRunner.runExperiment({
|
|
150
|
+
optimizationId: config.optimizationId,
|
|
151
|
+
versionId: newVersion.id,
|
|
152
|
+
datasetId: snapshot.dataset.id,
|
|
153
|
+
taskModel: config.taskModel,
|
|
154
|
+
judgmentRules: snapshot.judgmentRules,
|
|
155
|
+
roundNumber,
|
|
156
|
+
});
|
|
157
|
+
// ⑦ Update best
|
|
158
|
+
const isBest = (0, best_1.isBetterThan)(run.metrics, bestMetrics, config.goals);
|
|
159
|
+
if (isBest) {
|
|
160
|
+
bestVersion = newVersion;
|
|
161
|
+
bestMetrics = run.metrics;
|
|
162
|
+
bestRunResults = run.runResults;
|
|
163
|
+
}
|
|
164
|
+
pendingRegressionRetry = (0, best_1.isBetterThan)(generationBaseMetrics, run.metrics, config.goals)
|
|
165
|
+
? {
|
|
166
|
+
baseVersion: generationBaseVersion,
|
|
167
|
+
baseRunResults: generationBaseRunResults,
|
|
168
|
+
baseMetrics: generationBaseMetrics,
|
|
169
|
+
regressedVersion: newVersion,
|
|
170
|
+
regressedRunResults: run.runResults,
|
|
171
|
+
regressedMetrics: run.metrics,
|
|
172
|
+
}
|
|
173
|
+
: null;
|
|
174
|
+
const goalProgress = (0, goals_1.evaluateGoals)(config.goals, bestMetrics);
|
|
175
|
+
const outcome = {
|
|
176
|
+
roundNumber,
|
|
177
|
+
generatedVersionId: newVersion.id,
|
|
178
|
+
errorAnalysis: analysis.errorAnalysisText,
|
|
179
|
+
changeSummary: draft.changeSummary,
|
|
180
|
+
experimentId: run.experimentId,
|
|
181
|
+
runResults: run.runResults,
|
|
182
|
+
metrics: run.metrics,
|
|
183
|
+
isBest,
|
|
184
|
+
goalProgress,
|
|
185
|
+
startedAt,
|
|
186
|
+
finishedAt: nowIso(deps),
|
|
187
|
+
};
|
|
188
|
+
rounds.push(outcome);
|
|
189
|
+
await ports.roundRecorder.recordRound(outcome, {
|
|
190
|
+
optimizationId: config.optimizationId,
|
|
191
|
+
});
|
|
192
|
+
// Accumulate history (SPEC 25 §11.3) — passed through to next round's analyze / generate,
|
|
193
|
+
// letting the LLM identify falsified directions / continue amplifying effective directions / switch toolbox techniques across rounds
|
|
194
|
+
accumulatedHistory.push(buildHistoryEntryFromRound({
|
|
195
|
+
roundNumber,
|
|
196
|
+
metrics: run.metrics,
|
|
197
|
+
changeSummary: draft.changeSummary,
|
|
198
|
+
appliedChanges: draft.appliedChanges,
|
|
199
|
+
appliedTips: draft.appliedTips,
|
|
200
|
+
isBest,
|
|
201
|
+
baseVersionId: baseVersionForThisRound.id,
|
|
202
|
+
goals: config.goals,
|
|
203
|
+
previousHistory: accumulatedHistory,
|
|
204
|
+
}));
|
|
205
|
+
// ⑧ goal check
|
|
206
|
+
if (goalProgress.every((p) => p.achieved)) {
|
|
207
|
+
return finalize({ status: 'success', reason: 'goals_met', bestVersion, bestMetrics, rounds }, config, ports);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
catch (err) {
|
|
211
|
+
const { errorClass, errorMessage } = normalizeErrorClass(err);
|
|
212
|
+
return finalize({
|
|
213
|
+
status: 'failed',
|
|
214
|
+
reason: 'fatal_error',
|
|
215
|
+
bestVersion,
|
|
216
|
+
bestMetrics,
|
|
217
|
+
rounds,
|
|
218
|
+
errorClass,
|
|
219
|
+
errorMessage,
|
|
220
|
+
}, config, ports);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return finalize({ status: 'failed', reason: 'max_rounds', bestVersion, bestMetrics, rounds }, config, ports);
|
|
224
|
+
}
|
|
225
|
+
// Build the RoundHistoryEntry from this round's outcome — passed to the next round's LLM calls (SPEC 25 §11.3)
|
|
226
|
+
function buildHistoryEntryFromRound(input) {
|
|
227
|
+
const primaryGoal = input.goals[0];
|
|
228
|
+
const currentPrimary = primaryGoal ? (0, goals_1.readMetric)(input.metrics, primaryGoal) : null;
|
|
229
|
+
const prevEntry = input.previousHistory[input.previousHistory.length - 1];
|
|
230
|
+
const prevPrimary = prevEntry && primaryGoal ? (0, goals_1.readMetric)(prevEntry.metrics, primaryGoal) : null;
|
|
231
|
+
const deltaFromPrev = currentPrimary !== null && prevPrimary !== null ? currentPrimary - prevPrimary : null;
|
|
232
|
+
return {
|
|
233
|
+
roundIndex: input.roundNumber,
|
|
234
|
+
metrics: input.metrics,
|
|
235
|
+
deltaFromPrev,
|
|
236
|
+
changeSummary: input.changeSummary,
|
|
237
|
+
appliedChanges: (input.appliedChanges ?? []).map((c) => ({
|
|
238
|
+
changeId: c.changeId,
|
|
239
|
+
patternIds: c.patternIds,
|
|
240
|
+
rationale: c.summary,
|
|
241
|
+
})),
|
|
242
|
+
appliedTips: input.appliedTips ?? [],
|
|
243
|
+
isBest: input.isBest,
|
|
244
|
+
generatedFromBaseVersionId: input.baseVersionId,
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
//# sourceMappingURL=run-iteration-loop.js.map
|