@tangle-network/agent-eval 0.115.3 → 0.116.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.
Files changed (68) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/analyst/index.d.ts +8 -10
  3. package/dist/analyst/index.js +27 -22
  4. package/dist/analyst/index.js.map +1 -1
  5. package/dist/{analyst-C8HHvfJp.d.ts → analyst-CFBc14Wc.d.ts} +1 -1
  6. package/dist/{analyze-runs-BYHg6Irm.d.ts → analyze-runs-0rz_m29H.d.ts} +3 -3
  7. package/dist/belief-state/index.d.ts +3 -3
  8. package/dist/benchmarks/index.d.ts +7 -3
  9. package/dist/benchmarks/index.js +4 -4
  10. package/dist/campaign/index.d.ts +212 -23
  11. package/dist/campaign/index.js +19 -4
  12. package/dist/{chunk-ADYLPOSX.js → chunk-3274WNK7.js} +427 -93
  13. package/dist/chunk-3274WNK7.js.map +1 -0
  14. package/dist/{chunk-I6LVHOV3.js → chunk-7GKEAIAD.js} +2 -2
  15. package/dist/{chunk-5S5NJ63F.js → chunk-CIUOICJT.js} +747 -2
  16. package/dist/chunk-CIUOICJT.js.map +1 -0
  17. package/dist/{chunk-KG4TD7EQ.js → chunk-GSW3OBHK.js} +1283 -181
  18. package/dist/chunk-GSW3OBHK.js.map +1 -0
  19. package/dist/chunk-MPHTT5HE.js +74 -0
  20. package/dist/chunk-MPHTT5HE.js.map +1 -0
  21. package/dist/{chunk-WSBUZMBU.js → chunk-NBSS5NDZ.js} +3 -3
  22. package/dist/{code-agent-session-D-g04tcy.d.ts → code-agent-session-CdxteG0y.d.ts} +1 -1
  23. package/dist/contract/index.d.ts +19 -19
  24. package/dist/contract/index.js +5 -3
  25. package/dist/contract/index.js.map +1 -1
  26. package/dist/{control-CcBiAEnn.d.ts → control-DbcDxouY.d.ts} +1 -1
  27. package/dist/control.d.ts +2 -2
  28. package/dist/{default-registry-DltpYR5u.d.ts → default-registry-DDfv22MQ.d.ts} +2 -1
  29. package/dist/{gepa-dne9JDPL.d.ts → gepa-CQelRtuC.d.ts} +10 -8
  30. package/dist/hosted/index.d.ts +8 -4
  31. package/dist/{index-BTEpx9He.d.ts → index-DbCXJfZ1.d.ts} +2 -2
  32. package/dist/index.d.ts +27 -30
  33. package/dist/index.js +26 -20
  34. package/dist/index.js.map +1 -1
  35. package/dist/{insight-report-IwwvqZZv.d.ts → insight-report-oMVxDTxl.d.ts} +1 -1
  36. package/dist/{integrity-qemeBAyx.d.ts → integrity-C6PZ73iC.d.ts} +1 -1
  37. package/dist/kind-factory-DWOvXjR_.d.ts +171 -0
  38. package/dist/meta-eval/index.d.ts +2 -2
  39. package/dist/multishot/index.d.ts +6 -2
  40. package/dist/openapi.json +1 -1
  41. package/dist/policy-edit-Clb2v6Oa.d.ts +708 -0
  42. package/dist/{pre-registration-D8h7ZxNL.d.ts → pre-registration--vU0mMtD.d.ts} +4 -4
  43. package/dist/{provenance-Bibyg1U9.d.ts → provenance-BbVagC68.d.ts} +26 -14
  44. package/dist/{release-report-CCtzajxP.d.ts → release-report-CamNDe90.d.ts} +2 -2
  45. package/dist/reporting.d.ts +4 -4
  46. package/dist/{researcher-Dq-EtpbE.d.ts → researcher-Dwbo_Fxx.d.ts} +5 -5
  47. package/dist/rl.d.ts +11 -9
  48. package/dist/{rubric-predictive-validity-DYTLjGWu.d.ts → rubric-predictive-validity-BIdf9h4R.d.ts} +1 -1
  49. package/dist/{run-record-B7RTi_ix.d.ts → run-record-CZmcpWPo.d.ts} +1 -1
  50. package/dist/{runtime-trajectory-Dws7Kpgi.d.ts → runtime-trajectory-CC0jx9ql.d.ts} +1 -1
  51. package/dist/{semantic-concept-judge-DxJmRkyJ.d.ts → semantic-concept-judge-CKjePUMh.d.ts} +3 -3
  52. package/dist/{store-C1YxJDEK.d.ts → store-9cAScOcb.d.ts} +132 -1
  53. package/dist/{summary-report-BJ5aNwZ1.d.ts → summary-report-DTNgQycC.d.ts} +1 -1
  54. package/dist/traces.d.ts +6 -8
  55. package/dist/{types-C5gJrOVT.d.ts → types-Ca_63YSD.d.ts} +59 -2
  56. package/docs/design/loop-taxonomy.md +1 -2
  57. package/package.json +1 -1
  58. package/dist/chunk-5S5NJ63F.js.map +0 -1
  59. package/dist/chunk-ADYLPOSX.js.map +0 -1
  60. package/dist/chunk-KG4TD7EQ.js.map +0 -1
  61. package/dist/chunk-QMXXSNC4.js +0 -761
  62. package/dist/chunk-QMXXSNC4.js.map +0 -1
  63. package/dist/kind-factory-DcNg13sZ.d.ts +0 -508
  64. package/dist/llm-client-DyqEH4jH.d.ts +0 -265
  65. package/dist/policy-edit-RLn8GWof.d.ts +0 -103
  66. package/dist/raw-provider-sink-C46HDghv.d.ts +0 -132
  67. /package/dist/{chunk-I6LVHOV3.js.map → chunk-7GKEAIAD.js.map} +0 -0
  68. /package/dist/{chunk-WSBUZMBU.js.map → chunk-NBSS5NDZ.js.map} +0 -0
@@ -0,0 +1,74 @@
1
+ // src/concurrency.ts
2
+ var Mutex = class {
3
+ locked = false;
4
+ waiters = [];
5
+ async acquire() {
6
+ if (!this.locked) {
7
+ this.locked = true;
8
+ return () => this.release();
9
+ }
10
+ return new Promise((resolve) => {
11
+ this.waiters.push(() => {
12
+ resolve(() => this.release());
13
+ });
14
+ });
15
+ }
16
+ release() {
17
+ const next = this.waiters.shift();
18
+ if (next) {
19
+ next();
20
+ } else {
21
+ this.locked = false;
22
+ }
23
+ }
24
+ async runExclusive(fn) {
25
+ const release = await this.acquire();
26
+ try {
27
+ return await fn();
28
+ } finally {
29
+ release();
30
+ }
31
+ }
32
+ /** True iff someone holds the lock right now. Diagnostics only. */
33
+ get isLocked() {
34
+ return this.locked;
35
+ }
36
+ /** Pending waiter count. Diagnostics only. */
37
+ get pending() {
38
+ return this.waiters.length;
39
+ }
40
+ };
41
+
42
+ // src/run-score.ts
43
+ var DEFAULT_RUN_SCORE_WEIGHTS = {
44
+ success: 4,
45
+ goalProgress: 2,
46
+ repoGroundedness: 1.5,
47
+ driftPenalty: -1.5,
48
+ toolUseQuality: 1,
49
+ patchQuality: 1.25,
50
+ testReality: 1.5,
51
+ finalGate: 3,
52
+ reviewerBlockers: -2,
53
+ costUsd: -0.2,
54
+ wallSeconds: -0.1
55
+ };
56
+ function aggregateRunScore(score, weights = {}) {
57
+ const w = { ...DEFAULT_RUN_SCORE_WEIGHTS, ...weights };
58
+ return w.success * clamp01(score.success) + w.goalProgress * clamp01(score.goalProgress) + w.repoGroundedness * clamp01(score.repoGroundedness) + w.driftPenalty * clamp01(score.driftPenalty) + w.toolUseQuality * clamp01(score.toolUseQuality) + w.patchQuality * clamp01(score.patchQuality) + w.testReality * clamp01(score.testReality) + w.finalGate * clamp01(score.finalGate) + w.reviewerBlockers * clamp01(score.reviewerBlockers) + w.costUsd * Math.max(0, finiteOrZero(score.costUsd)) + w.wallSeconds * Math.max(0, finiteOrZero(score.wallSeconds) / 60);
59
+ }
60
+ function clamp01(value) {
61
+ if (!Number.isFinite(value)) return 0;
62
+ return Math.max(0, Math.min(1, value));
63
+ }
64
+ function finiteOrZero(value) {
65
+ return Number.isFinite(value) ? value : 0;
66
+ }
67
+
68
+ export {
69
+ Mutex,
70
+ DEFAULT_RUN_SCORE_WEIGHTS,
71
+ aggregateRunScore,
72
+ clamp01
73
+ };
74
+ //# sourceMappingURL=chunk-MPHTT5HE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/concurrency.ts","../src/run-score.ts"],"sourcesContent":["/**\n * concurrency — small primitives the evolution loop needs.\n *\n * `Mutex` is a zero-dep async lock with FIFO fairness. The evolution loop\n * uses it to serialise checkout/build/commit sequences inside a single\n * pool slot, and to gate concurrent JSONL writers (see\n * `lockedJsonlReferenceReplayStore`).\n *\n * Deliberately minimal — no priority queue, no timeouts. If you need\n * those, swap to `async-mutex` at the call site.\n */\n\nexport class Mutex {\n private locked = false\n private readonly waiters: Array<() => void> = []\n\n async acquire(): Promise<() => void> {\n if (!this.locked) {\n this.locked = true\n return () => this.release()\n }\n return new Promise<() => void>((resolve) => {\n this.waiters.push(() => {\n resolve(() => this.release())\n })\n })\n }\n\n private release(): void {\n const next = this.waiters.shift()\n if (next) {\n next()\n } else {\n this.locked = false\n }\n }\n\n async runExclusive<T>(fn: () => Promise<T> | T): Promise<T> {\n const release = await this.acquire()\n try {\n return await fn()\n } finally {\n release()\n }\n }\n\n /** True iff someone holds the lock right now. Diagnostics only. */\n get isLocked(): boolean {\n return this.locked\n }\n\n /** Pending waiter count. Diagnostics only. */\n get pending(): number {\n return this.waiters.length\n }\n}\n","export interface RunScore {\n success: number\n goalProgress: number\n repoGroundedness: number\n driftPenalty: number\n toolUseQuality: number\n patchQuality: number\n testReality: number\n finalGate: number\n reviewerBlockers: number\n costUsd: number\n wallSeconds: number\n notes?: string[]\n}\n\nexport interface RunScoreWeights {\n success: number\n goalProgress: number\n repoGroundedness: number\n driftPenalty: number\n toolUseQuality: number\n patchQuality: number\n testReality: number\n finalGate: number\n reviewerBlockers: number\n costUsd: number\n wallSeconds: number\n}\n\nexport const DEFAULT_RUN_SCORE_WEIGHTS: RunScoreWeights = {\n success: 4,\n goalProgress: 2,\n repoGroundedness: 1.5,\n driftPenalty: -1.5,\n toolUseQuality: 1,\n patchQuality: 1.25,\n testReality: 1.5,\n finalGate: 3,\n reviewerBlockers: -2,\n costUsd: -0.2,\n wallSeconds: -0.1,\n}\n\nexport function aggregateRunScore(score: RunScore, weights: Partial<RunScoreWeights> = {}): number {\n const w = { ...DEFAULT_RUN_SCORE_WEIGHTS, ...weights }\n return (\n w.success * clamp01(score.success) +\n w.goalProgress * clamp01(score.goalProgress) +\n w.repoGroundedness * clamp01(score.repoGroundedness) +\n w.driftPenalty * clamp01(score.driftPenalty) +\n w.toolUseQuality * clamp01(score.toolUseQuality) +\n w.patchQuality * clamp01(score.patchQuality) +\n w.testReality * clamp01(score.testReality) +\n w.finalGate * clamp01(score.finalGate) +\n w.reviewerBlockers * clamp01(score.reviewerBlockers) +\n w.costUsd * Math.max(0, finiteOrZero(score.costUsd)) +\n w.wallSeconds * Math.max(0, finiteOrZero(score.wallSeconds) / 60)\n )\n}\n\nexport function clamp01(value: number): number {\n if (!Number.isFinite(value)) return 0\n return Math.max(0, Math.min(1, value))\n}\n\nfunction finiteOrZero(value: number): number {\n return Number.isFinite(value) ? value : 0\n}\n"],"mappings":";AAYO,IAAM,QAAN,MAAY;AAAA,EACT,SAAS;AAAA,EACA,UAA6B,CAAC;AAAA,EAE/C,MAAM,UAA+B;AACnC,QAAI,CAAC,KAAK,QAAQ;AAChB,WAAK,SAAS;AACd,aAAO,MAAM,KAAK,QAAQ;AAAA,IAC5B;AACA,WAAO,IAAI,QAAoB,CAAC,YAAY;AAC1C,WAAK,QAAQ,KAAK,MAAM;AACtB,gBAAQ,MAAM,KAAK,QAAQ,CAAC;AAAA,MAC9B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEQ,UAAgB;AACtB,UAAM,OAAO,KAAK,QAAQ,MAAM;AAChC,QAAI,MAAM;AACR,WAAK;AAAA,IACP,OAAO;AACL,WAAK,SAAS;AAAA,IAChB;AAAA,EACF;AAAA,EAEA,MAAM,aAAgB,IAAsC;AAC1D,UAAM,UAAU,MAAM,KAAK,QAAQ;AACnC,QAAI;AACF,aAAO,MAAM,GAAG;AAAA,IAClB,UAAE;AACA,cAAQ;AAAA,IACV;AAAA,EACF;AAAA;AAAA,EAGA,IAAI,WAAoB;AACtB,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,IAAI,UAAkB;AACpB,WAAO,KAAK,QAAQ;AAAA,EACtB;AACF;;;AC1BO,IAAM,4BAA6C;AAAA,EACxD,SAAS;AAAA,EACT,cAAc;AAAA,EACd,kBAAkB;AAAA,EAClB,cAAc;AAAA,EACd,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,aAAa;AAAA,EACb,WAAW;AAAA,EACX,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,aAAa;AACf;AAEO,SAAS,kBAAkB,OAAiB,UAAoC,CAAC,GAAW;AACjG,QAAM,IAAI,EAAE,GAAG,2BAA2B,GAAG,QAAQ;AACrD,SACE,EAAE,UAAU,QAAQ,MAAM,OAAO,IACjC,EAAE,eAAe,QAAQ,MAAM,YAAY,IAC3C,EAAE,mBAAmB,QAAQ,MAAM,gBAAgB,IACnD,EAAE,eAAe,QAAQ,MAAM,YAAY,IAC3C,EAAE,iBAAiB,QAAQ,MAAM,cAAc,IAC/C,EAAE,eAAe,QAAQ,MAAM,YAAY,IAC3C,EAAE,cAAc,QAAQ,MAAM,WAAW,IACzC,EAAE,YAAY,QAAQ,MAAM,SAAS,IACrC,EAAE,mBAAmB,QAAQ,MAAM,gBAAgB,IACnD,EAAE,UAAU,KAAK,IAAI,GAAG,aAAa,MAAM,OAAO,CAAC,IACnD,EAAE,cAAc,KAAK,IAAI,GAAG,aAAa,MAAM,WAAW,IAAI,EAAE;AAEpE;AAEO,SAAS,QAAQ,OAAuB;AAC7C,MAAI,CAAC,OAAO,SAAS,KAAK,EAAG,QAAO;AACpC,SAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,KAAK,CAAC;AACvC;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,OAAO,SAAS,KAAK,IAAI,QAAQ;AAC1C;","names":[]}
@@ -2,10 +2,10 @@ import {
2
2
  Mutex,
3
3
  aggregateRunScore,
4
4
  clamp01
5
- } from "./chunk-QMXXSNC4.js";
5
+ } from "./chunk-MPHTT5HE.js";
6
6
  import {
7
7
  computeFindingId
8
- } from "./chunk-5S5NJ63F.js";
8
+ } from "./chunk-CIUOICJT.js";
9
9
  import {
10
10
  LlmClient,
11
11
  callLlmJson
@@ -820,4 +820,4 @@ export {
820
820
  runSemanticConceptJudge,
821
821
  createSemanticConceptJudge
822
822
  };
823
- //# sourceMappingURL=chunk-WSBUZMBU.js.map
823
+ //# sourceMappingURL=chunk-NBSS5NDZ.js.map
@@ -1,4 +1,4 @@
1
- import { b as RunSplitTag, c as RunCostProvenance, R as RunRecord } from './run-record-B7RTi_ix.js';
1
+ import { a as RunSplitTag, b as RunCostProvenance, R as RunRecord } from './run-record-CZmcpWPo.js';
2
2
 
3
3
  type CodeAgentSessionSource = 'codex' | 'claude-code' | 'opencode' | 'kimi-code' | 'pi';
4
4
  interface ParsedCodeAgentJsonl {
@@ -1,21 +1,21 @@
1
- import { S as Scenario, M as MutableSurface, D as DispatchContext, b as JudgeConfig, f as SurfaceProposer, g as Gate, L as LabeledScenarioStore, C as CampaignResult, h as GateDecision } from '../types-C5gJrOVT.js';
2
- export { i as CampaignAggregates, j as CampaignArtifactWriter, k as CampaignCellResult, l as CampaignCostMeter, d as CampaignTraceWriter, m as CodeSurface, c as Dispatch, n as GateContext, G as GateResult, o as GenerationCandidate, e as GenerationRecord, a as JudgeDimension, J as JudgeScore, p as Mutator, O as OptimizationProposer, q as OptimizerConfig, r as SessionScript } from '../types-C5gJrOVT.js';
3
- import { L as LoopProvenanceRecord, P as PowerPreflight, R as RunEvalOptions } from '../provenance-Bibyg1U9.js';
4
- export { A as AxisEvidence, a as AxisVerdict, B as BuildEvidenceVectorOptions, D as DefaultProductionGateOptions, E as EvidenceVector, b as EvolutionaryProposerOptions, H as HeldOutGateOptions, O as ObjectiveSource, c as ParetoSignificanceGateOptions, d as PromotionObjective, e as PromotionPolicy, f as buildEvidenceVector, g as composeGate, h as defaultProductionGate, i as evolutionaryProposer, j as heldOutGate, p as paretoPolicy, k as paretoSignificanceGate, r as runEval } from '../provenance-Bibyg1U9.js';
5
- import { R as RunOptimizationOptions, a as RunImprovementLoopResult } from '../gepa-dne9JDPL.js';
6
- export { G as GepaProposerOptions, b as RunCampaignOptions, c as RunImprovementLoopOptions, g as gepaProposer, r as runCampaign, d as runImprovementLoop } from '../gepa-dne9JDPL.js';
1
+ import { S as Scenario, M as MutableSurface, D as DispatchContext, b as JudgeConfig, f as SurfaceProposer, g as Gate, L as LabeledScenarioStore, C as CampaignResult, h as GateDecision } from '../types-Ca_63YSD.js';
2
+ export { i as CampaignAggregates, j as CampaignArtifactWriter, k as CampaignCellResult, l as CampaignCostMeter, d as CampaignTraceWriter, m as CodeSurface, c as Dispatch, n as GateContext, G as GateResult, o as GenerationCandidate, e as GenerationRecord, a as JudgeDimension, J as JudgeScore, p as Mutator, O as OptimizationProposer, q as OptimizerConfig, r as SessionScript } from '../types-Ca_63YSD.js';
3
+ import { L as LoopProvenanceRecord, P as PowerPreflight, R as RunEvalOptions } from '../provenance-BbVagC68.js';
4
+ export { A as AxisEvidence, a as AxisVerdict, B as BuildEvidenceVectorOptions, D as DefaultProductionGateOptions, E as EvidenceVector, b as EvolutionaryProposerOptions, H as HeldOutGateOptions, O as ObjectiveSource, c as ParetoSignificanceGateOptions, d as PromotionObjective, e as PromotionPolicy, f as buildEvidenceVector, g as composeGate, h as defaultProductionGate, i as evolutionaryProposer, j as heldOutGate, p as paretoPolicy, k as paretoSignificanceGate, r as runEval } from '../provenance-BbVagC68.js';
5
+ import { R as RunOptimizationOptions, a as RunImprovementLoopResult } from '../gepa-CQelRtuC.js';
6
+ export { G as GepaProposerOptions, b as RunCampaignOptions, c as RunImprovementLoopOptions, g as gepaProposer, r as runCampaign, d as runImprovementLoop } from '../gepa-CQelRtuC.js';
7
7
  import { C as CampaignStorage } from '../storage-Dw_f7WMt.js';
8
8
  export { f as fsCampaignStorage, i as inMemoryCampaignStorage } from '../storage-Dw_f7WMt.js';
9
9
  export { D as DeploymentOutcome, F as FileSystemOutcomeStore, a as FileSystemOutcomeStoreOptions, I as InMemoryOutcomeStore, b as OutcomeStore } from '../outcome-store-rnXLEqSn.js';
10
10
  import { HostedTenant, EvalRunCellScore, EvalRunGenerationSnapshot, EvalRunEvent, TraceSpanEvent } from '../hosted/index.js';
11
- import { R as RunRecord, b as RunSplitTag } from '../run-record-B7RTi_ix.js';
12
- import { I as InsightReport } from '../insight-report-IwwvqZZv.js';
13
- export { C as CostProvenanceSummary, F as FailureClusterInsight, a as InterRaterInsight, J as JudgeInsight, L as LiftInsight, O as OutcomeCorrelationInsight, R as Recommendation, b as ReleaseSummary, S as ScalarDistribution } from '../insight-report-IwwvqZZv.js';
14
- export { D as DefaultAnalystRegistryOptions, c as buildDefaultAnalystRegistry } from '../default-registry-DltpYR5u.js';
15
- export { A as AnalystFinding } from '../kind-factory-DcNg13sZ.js';
16
- import { A as AnalyzeRunsOptions } from '../analyze-runs-BYHg6Irm.js';
17
- export { a as analyzeRuns } from '../analyze-runs-BYHg6Irm.js';
18
- export { C as CodeAgentSessionDiagnostic, a as CodeAgentSessionIntakeOptions, b as CodeAgentSessionIntakeResult, c as CodeAgentSessionMetrics, d as CodeAgentSessionSource, P as ParsedCodeAgentJsonl, f as fromClaudeCodeSession, e as fromCodexSession, g as fromKimiCodeSession, h as fromOpenCodeSession, i as fromPiSession, j as fromPigraphSession, p as parseCodeAgentJsonl } from '../code-agent-session-D-g04tcy.js';
11
+ import { R as RunRecord, a as RunSplitTag } from '../run-record-CZmcpWPo.js';
12
+ import { I as InsightReport } from '../insight-report-oMVxDTxl.js';
13
+ export { C as CostProvenanceSummary, F as FailureClusterInsight, a as InterRaterInsight, J as JudgeInsight, L as LiftInsight, O as OutcomeCorrelationInsight, R as Recommendation, b as ReleaseSummary, S as ScalarDistribution } from '../insight-report-oMVxDTxl.js';
14
+ export { D as DefaultAnalystRegistryOptions, c as buildDefaultAnalystRegistry } from '../default-registry-DDfv22MQ.js';
15
+ export { d as AnalystFinding } from '../policy-edit-Clb2v6Oa.js';
16
+ import { A as AnalyzeRunsOptions } from '../analyze-runs-0rz_m29H.js';
17
+ export { a as analyzeRuns } from '../analyze-runs-0rz_m29H.js';
18
+ export { C as CodeAgentSessionDiagnostic, a as CodeAgentSessionIntakeOptions, b as CodeAgentSessionIntakeResult, c as CodeAgentSessionMetrics, d as CodeAgentSessionSource, P as ParsedCodeAgentJsonl, f as fromClaudeCodeSession, e as fromCodexSession, g as fromKimiCodeSession, h as fromOpenCodeSession, i as fromPiSession, j as fromPigraphSession, p as parseCodeAgentJsonl } from '../code-agent-session-CdxteG0y.js';
19
19
  import '../statistics-oUbOJe-S.js';
20
20
  import '../judge-calibration-7C-IDmKr.js';
21
21
  import '../types-C7DGg5ex.js';
@@ -24,13 +24,12 @@ import '../dataset-NENEzRgk.js';
24
24
  import '../errors-oeQrLqXC.js';
25
25
  import '../store-BsVi7ncX.js';
26
26
  import '../schema-SGWcK9wa.js';
27
- import '../llm-client-DyqEH4jH.js';
28
- import '../raw-provider-sink-C46HDghv.js';
29
27
  import '@tangle-network/agent-interface';
30
- import '../summary-report-BJ5aNwZ1.js';
28
+ import '../summary-report-DTNgQycC.js';
31
29
  import '../failure-cluster-C48PiReX.js';
32
30
  import '@ax-llm/ax';
33
- import '../store-C1YxJDEK.js';
31
+ import '../kind-factory-DWOvXjR_.js';
32
+ import '../store-9cAScOcb.js';
34
33
  import 'zod';
35
34
 
36
35
  /**
@@ -75,7 +74,8 @@ interface SelfImproveBudget {
75
74
  holdoutScenarios?: Scenario[];
76
75
  /** Per-scenario replicates per cell — raises bootstrap-CI tightness. Default 1. */
77
76
  reps?: number;
78
- /** Top-scoring candidates carried into the next generation. Default 2. */
77
+ /** @deprecated Must be 1 when supplied. The loop promotes only a candidate
78
+ * that replaces its single global incumbent. */
79
79
  promoteTopK?: number;
80
80
  }
81
81
  interface SelfImproveLlm {
@@ -15,6 +15,7 @@ import {
15
15
  } from "../chunk-J6P6PK2R.js";
16
16
  import {
17
17
  buildEvidenceVector,
18
+ campaignMeanComposite,
18
19
  composeGate,
19
20
  defaultProductionGate,
20
21
  emitLoopProvenance,
@@ -28,7 +29,7 @@ import {
28
29
  runImprovementLoop,
29
30
  surfaceContentHash,
30
31
  surfaceHash
31
- } from "../chunk-ADYLPOSX.js";
32
+ } from "../chunk-3274WNK7.js";
32
33
  import "../chunk-VI2UW6B6.js";
33
34
  import {
34
35
  fsCampaignStorage,
@@ -37,8 +38,8 @@ import {
37
38
  } from "../chunk-FAOEFFRT.js";
38
39
  import {
39
40
  buildDefaultAnalystRegistry
40
- } from "../chunk-I6LVHOV3.js";
41
- import "../chunk-5S5NJ63F.js";
41
+ } from "../chunk-7GKEAIAD.js";
42
+ import "../chunk-CIUOICJT.js";
42
43
  import {
43
44
  FileSystemOutcomeStore,
44
45
  InMemoryOutcomeStore
@@ -223,6 +224,7 @@ async function selfImprove(opts) {
223
224
  winnerLabel: result.winnerLabel,
224
225
  winnerRationale: result.winnerRationale,
225
226
  diff: result.promotedDiff,
227
+ baselineSearchComposite: campaignMeanComposite(result.baselineCampaign),
226
228
  generations: result.generations.map((g) => ({
227
229
  generationIndex: g.record.generationIndex,
228
230
  candidates: g.record.candidates,