@tangle-network/agent-eval 0.196.0 → 0.198.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 (155) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/active-curriculum-B_Lc9kfO.js +61 -0
  3. package/dist/active-curriculum-B_Lc9kfO.js.map +1 -0
  4. package/dist/adapters/http.d.ts +2 -2
  5. package/dist/analyst/index.d.ts +5 -5
  6. package/dist/analyst/index.js +3 -3
  7. package/dist/{analyze-runs-B6gv7vAT.js → analyze-runs-DFbp2gB8.js} +5 -5
  8. package/dist/{analyze-runs-B6gv7vAT.js.map → analyze-runs-DFbp2gB8.js.map} +1 -1
  9. package/dist/{benchmark-command-Bw1he2JM.js → benchmark-command-D8E5TaPC.js} +6 -5
  10. package/dist/{benchmark-command-Bw1he2JM.js.map → benchmark-command-D8E5TaPC.js.map} +1 -1
  11. package/dist/benchmarks/index.d.ts +4 -3
  12. package/dist/benchmarks/index.d.ts.map +1 -1
  13. package/dist/benchmarks/index.js +3 -3
  14. package/dist/campaign/index.d.ts +5 -4
  15. package/dist/campaign/index.js +13 -11
  16. package/dist/{campaign-qe1WC3Sz.js → campaign-Dlg2iOzH.js} +13 -12
  17. package/dist/{campaign-qe1WC3Sz.js.map → campaign-Dlg2iOzH.js.map} +1 -1
  18. package/dist/{campaign-evidence-DJc60F9C.js → campaign-evidence-jL_U7Ikv.js} +2 -2
  19. package/dist/{campaign-evidence-DJc60F9C.js.map → campaign-evidence-jL_U7Ikv.js.map} +1 -1
  20. package/dist/cli.js +243 -13
  21. package/dist/cli.js.map +1 -1
  22. package/dist/contract/index.d.ts +7 -6
  23. package/dist/contract/index.js +9 -9
  24. package/dist/{default-registry-D2csUBBQ.d.ts → default-registry-oK9hHfX_.d.ts} +3 -3
  25. package/dist/{default-registry-D2csUBBQ.d.ts.map → default-registry-oK9hHfX_.d.ts.map} +1 -1
  26. package/dist/{define-agent-eval-DwAaPvvH.d.ts → define-agent-eval-By9PImpa.d.ts} +5 -4
  27. package/dist/define-agent-eval-By9PImpa.d.ts.map +1 -0
  28. package/dist/{define-agent-eval-h2qYe0xY.js → define-agent-eval-DvBgSzAI.js} +6 -6
  29. package/dist/{define-agent-eval-h2qYe0xY.js.map → define-agent-eval-DvBgSzAI.js.map} +1 -1
  30. package/dist/diagnosis/index.js +1 -1
  31. package/dist/{dspy-rlm-engine-k_QdEBZo.js → dspy-rlm-engine-B5T43BkZ.js} +2 -2
  32. package/dist/{dspy-rlm-engine-k_QdEBZo.js.map → dspy-rlm-engine-B5T43BkZ.js.map} +1 -1
  33. package/dist/{engine-De2hfuiQ.d.ts → engine-Dc996kAg.d.ts} +2 -2
  34. package/dist/{engine-De2hfuiQ.d.ts.map → engine-Dc996kAg.d.ts.map} +1 -1
  35. package/dist/{eval-campaign-CXT2WYUe.js → eval-campaign-GapmPHIA.js} +2 -2
  36. package/dist/{eval-campaign-CXT2WYUe.js.map → eval-campaign-GapmPHIA.js.map} +1 -1
  37. package/dist/evaluation.d.ts +1 -1
  38. package/dist/experiment/index.d.ts +1 -1
  39. package/dist/experiment/index.js +8 -6
  40. package/dist/experiment/index.js.map +1 -1
  41. package/dist/{external-optimizer-process-_YIECYJ7.js → external-optimizer-process-CEXcCKqd.js} +2 -2
  42. package/dist/{external-optimizer-process-_YIECYJ7.js.map → external-optimizer-process-CEXcCKqd.js.map} +1 -1
  43. package/dist/{external-optimizer-subprocess-BrghTvEp.js → external-optimizer-subprocess-laM1-UDV.js} +2 -61
  44. package/dist/external-optimizer-subprocess-laM1-UDV.js.map +1 -0
  45. package/dist/fuzz.d.ts.map +1 -1
  46. package/dist/fuzz.js +2 -3
  47. package/dist/fuzz.js.map +1 -1
  48. package/dist/hosted/index.js +1 -1
  49. package/dist/{index-CigojbNH.d.ts → index-BhoOCduB.d.ts} +38 -945
  50. package/dist/index-BhoOCduB.d.ts.map +1 -0
  51. package/dist/{index-CpCIXObe.d.ts → index-D-tI1vgf.d.ts} +6 -6
  52. package/dist/{index-CpCIXObe.d.ts.map → index-D-tI1vgf.d.ts.map} +1 -1
  53. package/dist/{index-kKECJfib.d.ts → index-lbwvO9vJ.d.ts} +3 -3
  54. package/dist/{index-kKECJfib.d.ts.map → index-lbwvO9vJ.d.ts.map} +1 -1
  55. package/dist/index.d.ts +9 -9
  56. package/dist/index.js +15 -13
  57. package/dist/index.js.map +1 -1
  58. package/dist/jev-protocol.d.ts +17 -9
  59. package/dist/jev-protocol.d.ts.map +1 -1
  60. package/dist/jev-protocol.js +22 -14
  61. package/dist/jev-protocol.js.map +1 -1
  62. package/dist/jev.d.ts +3 -3
  63. package/dist/jev.js +3 -7
  64. package/dist/jev.js.map +1 -1
  65. package/dist/{llm-judge-CxfoYqdk.js → llm-judge-BYWXsxhZ.js} +529 -2079
  66. package/dist/llm-judge-BYWXsxhZ.js.map +1 -0
  67. package/dist/{matrix-C1X-fIVX.d.ts → matrix-BnksRaDD.d.ts} +2 -2
  68. package/dist/{matrix-C1X-fIVX.d.ts.map → matrix-BnksRaDD.d.ts.map} +1 -1
  69. package/dist/multiplicity-D9cjmStq.js +101 -0
  70. package/dist/multiplicity-D9cjmStq.js.map +1 -0
  71. package/dist/multishot/golden/index.d.ts +1 -1
  72. package/dist/multishot/golden/index.js +1 -1
  73. package/dist/multishot/index.d.ts +2 -2
  74. package/dist/multishot/index.js +1 -1
  75. package/dist/openapi.json +1 -1
  76. package/dist/{paired-arms-JSDcs2zx.js → paired-arms-DKZFVPt8.js} +4 -398
  77. package/dist/paired-arms-DKZFVPt8.js.map +1 -0
  78. package/dist/paired-binary-fzkwENI4.js +399 -0
  79. package/dist/paired-binary-fzkwENI4.js.map +1 -0
  80. package/dist/{paired-promotion-decision-DTKl6-G8.js → paired-promotion-decision-D5B1Cxc2.js} +78 -5
  81. package/dist/paired-promotion-decision-D5B1Cxc2.js.map +1 -0
  82. package/dist/{power-and-mde-BJOpt6pq.js → power-and-mde-K_CmO3dc.js} +3 -101
  83. package/dist/power-and-mde-K_CmO3dc.js.map +1 -0
  84. package/dist/{produced-state-B0QMdiLh.js → produced-state-DOfmCEwP.js} +3 -3
  85. package/dist/{produced-state-B0QMdiLh.js.map → produced-state-DOfmCEwP.js.map} +1 -1
  86. package/dist/{promotion-policy-Cy5OV8BV.js → promotion-policy-C6FAJvmZ.js} +3 -3
  87. package/dist/{promotion-policy-Cy5OV8BV.js.map → promotion-policy-C6FAJvmZ.js.map} +1 -1
  88. package/dist/reporting.js +3 -3
  89. package/dist/rl.d.ts +17 -39
  90. package/dist/rl.d.ts.map +1 -1
  91. package/dist/rl.js +5 -5
  92. package/dist/search/index.d.ts +1162 -0
  93. package/dist/search/index.d.ts.map +1 -0
  94. package/dist/search/index.js +187 -0
  95. package/dist/search/index.js.map +1 -0
  96. package/dist/search-kernel-CuvbakC_.d.ts +1176 -0
  97. package/dist/search-kernel-CuvbakC_.d.ts.map +1 -0
  98. package/dist/search-kernel-D8_kxChy.js +2399 -0
  99. package/dist/search-kernel-D8_kxChy.js.map +1 -0
  100. package/dist/{search-ledger-9W0g5FP6.js → search-ledger-BnUytR8X.js} +3 -1
  101. package/dist/search-ledger-BnUytR8X.js.map +1 -0
  102. package/dist/{search-shipper-CYbmJQx8.js → search-shipper-Cn8cxcyp.js} +2 -2
  103. package/dist/{search-shipper-CYbmJQx8.js.map → search-shipper-Cn8cxcyp.js.map} +1 -1
  104. package/dist/search-summary-Dmppg8kV.js +133 -0
  105. package/dist/search-summary-Dmppg8kV.js.map +1 -0
  106. package/dist/{semantic-concept-judge-Bh5lvKGg.js → semantic-concept-judge-2SE_kXGF.js} +2 -2
  107. package/dist/{semantic-concept-judge-Bh5lvKGg.js.map → semantic-concept-judge-2SE_kXGF.js.map} +1 -1
  108. package/dist/{sequential-C21_PP7F.js → sequential-Yz3OSskl.js} +2 -2
  109. package/dist/{sequential-C21_PP7F.js.map → sequential-Yz3OSskl.js.map} +1 -1
  110. package/dist/single-run-lock-fVu3MZWH.js +62 -0
  111. package/dist/single-run-lock-fVu3MZWH.js.map +1 -0
  112. package/dist/{skillopt-optimization-method-IbEhlA1V.js → skillopt-optimization-method-BMP2qV_1.js} +46 -33
  113. package/dist/{skillopt-optimization-method-IbEhlA1V.js.map → skillopt-optimization-method-BMP2qV_1.js.map} +1 -1
  114. package/dist/{statistical-heldout-DANVmyug.js → statistical-heldout-BAFDCo07.js} +2 -2
  115. package/dist/{statistical-heldout-DANVmyug.js.map → statistical-heldout-BAFDCo07.js.map} +1 -1
  116. package/dist/{statistical-heldout-BedVSZb2.d.ts → statistical-heldout-CMpxMjlQ.d.ts} +2 -2
  117. package/dist/{statistical-heldout-BedVSZb2.d.ts.map → statistical-heldout-CMpxMjlQ.d.ts.map} +1 -1
  118. package/dist/{store-tool-spans-CawP-WxM.d.ts → store-tool-spans-CUwWSXoj.d.ts} +3 -3
  119. package/dist/{store-tool-spans-CawP-WxM.d.ts.map → store-tool-spans-CUwWSXoj.d.ts.map} +1 -1
  120. package/dist/{summary-report-BMvou2oZ.js → summary-report-BeYnvddy.js} +4 -3
  121. package/dist/{summary-report-BMvou2oZ.js.map → summary-report-BeYnvddy.js.map} +1 -1
  122. package/dist/{tool-groups-B4JVrH3g.d.ts → tool-groups-DVJAR1GE.d.ts} +2 -2
  123. package/dist/tool-groups-DVJAR1GE.d.ts.map +1 -0
  124. package/dist/trace-repair/index.d.ts +1 -1
  125. package/dist/traces.d.ts +2 -2
  126. package/dist/tree-DHHWsH-X.js +4045 -0
  127. package/dist/tree-DHHWsH-X.js.map +1 -0
  128. package/dist/{types-B3jzCp0p.js → types-B3jzCp0p2.js} +1 -1
  129. package/dist/types-B3jzCp0p2.js.map +1 -0
  130. package/dist/{types-CjFDKMDe.d.ts → types-D94EanDL.d.ts} +2 -2
  131. package/dist/{types-CjFDKMDe.d.ts.map → types-D94EanDL.d.ts.map} +1 -1
  132. package/dist/{types-B2673PBj.d.ts → types-EBUav9Bu.d.ts} +8 -4
  133. package/dist/types-EBUav9Bu.d.ts.map +1 -0
  134. package/docs/campaign-proposers.md +2 -0
  135. package/docs/design/statistics-decisions.md +1 -1
  136. package/docs/jev.md +3 -2
  137. package/docs/search-ledger.md +145 -8
  138. package/package.json +6 -1
  139. package/dist/active-curriculum-OjIWgrUJ.js +0 -204
  140. package/dist/active-curriculum-OjIWgrUJ.js.map +0 -1
  141. package/dist/define-agent-eval-DwAaPvvH.d.ts.map +0 -1
  142. package/dist/external-optimizer-subprocess-BrghTvEp.js.map +0 -1
  143. package/dist/index-CigojbNH.d.ts.map +0 -1
  144. package/dist/llm-judge-CxfoYqdk.js.map +0 -1
  145. package/dist/paired-arms-JSDcs2zx.js.map +0 -1
  146. package/dist/paired-delta-test-BF-FEP8V.js +0 -78
  147. package/dist/paired-delta-test-BF-FEP8V.js.map +0 -1
  148. package/dist/paired-promotion-decision-DTKl6-G8.js.map +0 -1
  149. package/dist/power-and-mde-BJOpt6pq.js.map +0 -1
  150. package/dist/search-ledger-9W0g5FP6.js.map +0 -1
  151. package/dist/search-summary-CcavvYLe.js +0 -378
  152. package/dist/search-summary-CcavvYLe.js.map +0 -1
  153. package/dist/tool-groups-B4JVrH3g.d.ts.map +0 -1
  154. package/dist/types-B2673PBj.d.ts.map +0 -1
  155. package/dist/types-B3jzCp0p.js.map +0 -1
@@ -1,14 +1,14 @@
1
1
  import { c as ValidationError, t as AgentEvalError } from "./errors-DEE6u6ot.js";
2
- import { T as RunPaidCallInput, c as CostLedgerHandle, f as CostLedgerSummary, m as CostReceipt, o as CostLedger, p as CostProvenance } from "./cost-ledger-DbQdN3nO.js";
2
+ import { T as RunPaidCallInput, c as CostLedgerHandle, f as CostLedgerSummary, m as CostReceipt, p as CostProvenance } from "./cost-ledger-DbQdN3nO.js";
3
3
  import { a as RunRecord, c as RunSplitTag } from "./run-record-DF-fuu31.js";
4
4
  import { O as TraceAnalysisStore, _ as ProposalFinding, f as AnalystUsageReceipt, i as AnalystFinding, l as AnalystRunResult } from "./types-CeDfCRXp.js";
5
5
  import { M as LlmCallMetadata, ft as ServedModelPolicy, rt as RawProviderSink, x as ChatClient } from "./types-C0bWoSKC.js";
6
- import { Et as FinalEvidenceLedger, P as PairedArmsComparison, ft as EvidenceReceipt, it as CampaignEvidenceContext, kt as FinalEvidenceRecord } from "./statistical-heldout-BedVSZb2.js";
6
+ import { Et as FinalEvidenceLedger, P as PairedArmsComparison, ft as EvidenceReceipt, it as CampaignEvidenceContext, kt as FinalEvidenceRecord } from "./statistical-heldout-CMpxMjlQ.js";
7
7
  import { a as PairedPromotionDecision, d as PairedBootstrapResult } from "./paired-promotion-decision-DPKz8ZnF.js";
8
- import { A as SearchLedgerHash, C as SearchEdgeOperator, E as SearchExecutionIdentity, G as SearchSplit, H as SearchProposerKind, L as SearchOpenedEvent, N as SearchNodeDecision, O as SearchLedgerEntry, P as SearchNodeRef, Q as SearchTaskOutcome, R as SearchOperationKind, S as SearchEdgeAttribution, U as SearchReservation, V as SearchProposer, W as SearchSourceRef, Y as SearchSurfaceEvidence, Z as SearchTask, _ as SearchClaimPower, a as SearchAttemptAccounting, et as SearchTraceRef, i as SearchArtifactRef, j as SearchModelIdentity, k as SearchLedgerEvent, l as SearchCandidateSurface, m as SearchClaim, nt as EvaluationClaim, o as SearchAudit, p as SearchCellStage, rt as EvaluationUnitSummary, t as NodeEstimate, tt as SearchUnknown, y as SearchCloseReason, z as SearchOperationRecordedEvent } from "./search-ledger-types-p2xKfiDJ.js";
9
- import { b as LedgerTrustedHeadRemoval, f as LedgerLineContext, h as LedgerTextStore, y as LedgerTrustedHead } from "./index-Bj96W0jZ.js";
8
+ import { E as SearchExecutionIdentity, G as SearchSplit, V as SearchProposer, a as SearchAttemptAccounting, i as SearchArtifactRef, j as SearchModelIdentity, nt as EvaluationClaim, rt as EvaluationUnitSummary, tt as SearchUnknown, z as SearchOperationRecordedEvent } from "./search-ledger-types-p2xKfiDJ.js";
10
9
  import { r as LedgerHash } from "./canonical-CFpojCN5.js";
11
- import { $ as SearchNode, A as LabeledScenarioWrite, C as JudgeDimension, D as LabeledScenarioSampleArgs, E as LabeledScenarioRecord, H as SurfaceProposer, N as ParetoParent, O as LabeledScenarioSource, R as Scenario, S as JudgeConfig, T as LabelTrust, _ as GateDecision, a as CampaignResult, at as SearchUnitScore, b as GenerationRecord, c as CampaignTraceWriter, d as DispatchContext, f as DispatchFn, g as GateContribution, i as CampaignCostMeter, it as SearchStateView, j as MutableSurface, k as LabeledScenarioStore, l as CodeSurface, o as CampaignScenarioIdentity, p as Gate, r as CampaignCellResult, tt as SearchScoredCell, u as ComponentSurface, v as GateResult, y as GenerationCandidate } from "./types-B2673PBj.js";
10
+ import { A as LabeledScenarioWrite, C as JudgeDimension, D as LabeledScenarioSampleArgs, E as LabeledScenarioRecord, H as SurfaceProposer, N as ParetoParent, O as LabeledScenarioSource, R as Scenario, S as JudgeConfig, T as LabelTrust, _ as GateDecision, a as CampaignResult, b as GenerationRecord, c as CampaignTraceWriter, d as DispatchContext, f as DispatchFn, g as GateContribution, i as CampaignCostMeter, j as MutableSurface, k as LabeledScenarioStore, l as CodeSurface, o as CampaignScenarioIdentity, p as Gate, r as CampaignCellResult, u as ComponentSurface, v as GateResult, y as GenerationCandidate } from "./types-EBUav9Bu.js";
11
+ import { Dt as SearchHistoryAdmissionOptions, L as SearchPolicy, Mt as SearchHistoryReceipt, Yt as CampaignStorage, bt as SearchRunIdentity, gt as SearchLedgerBinding, ht as RegisterSearchNodeInput, i as SearchCellResult, kt as SearchHistoryCoverage, vt as SearchRecorder } from "./search-kernel-CuvbakC_.js";
12
12
  import { B as ExternalOptimizerModelBudget, E as AnalystIssueExpectation, F as ExternalOptimizerCallbackLimits, J as ExternalOptimizerWireCounts, K as ExternalOptimizerResumeMode, R as ExternalOptimizerEvaluationObservation, V as ExternalOptimizerModelCall, X as ExternalTextEvaluationRequest, Y as ExternalTextCandidate, m as AnalystBenchmarkLabelState, q as ExternalOptimizerRunnerCommand, t as AgentProfile$1, u as AnalystBenchmarkCase } from "./agent-profile-DDfIjdyS.js";
13
13
  import { r as DatasetScenario, t as Dataset } from "./dataset-DQqhOCPt.js";
14
14
  import { a as CheckerIdentity, n as VerdictCertification, t as DefaultVerdict, x as VerificationStrategySource } from "./verdict-E4eRNf7-.js";
@@ -40,60 +40,6 @@ interface FinalEvidenceUse {
40
40
  record: FinalEvidenceRecord;
41
41
  }
42
42
  //#endregion
43
- //#region src/campaign/storage.d.ts
44
- /**
45
- * `CampaignStorage` — the filesystem seam `runCampaign` writes through
46
- * (run/cell dirs, the resumability cache, per-cell artifacts, trace spans).
47
- *
48
- * The default (`fsCampaignStorage`) is the Node filesystem — identical
49
- * behavior to the inline `node:fs` calls it replaces, so existing CLI
50
- * consumers are unaffected. `inMemoryCampaignStorage` keeps everything in a
51
- * `Map`, so the substrate runs in environments WITHOUT a filesystem
52
- * (Cloudflare Workers, Deno Deploy, other edge runtimes) — the campaign
53
- * still produces its `CampaignResult` (cells + aggregates) in memory;
54
- * artifacts/traces simply aren't persisted to disk.
55
- *
56
- * Paths are opaque keys to the in-memory adapter — it does not parse them,
57
- * so the same `join(...)`-built paths work unchanged across both adapters.
58
- */
59
- interface CampaignStorage {
60
- /** `filesystem` for the Node filesystem, whose paths durable journals such
61
- * as the search ledger may open directly; any other storage keeps those
62
- * journals in itself. */
63
- readonly kind?: 'filesystem' | 'memory';
64
- /** Ensure a directory exists (recursive). No-op for in-memory. */
65
- ensureDir(dir: string): void;
66
- /** Does this path exist (as a written file or an ensured dir)? */
67
- exists(path: string): boolean;
68
- /** Read a UTF-8 file; `undefined` when missing or unreadable. */
69
- read(path: string): string | undefined;
70
- /** Write a file (string or bytes). Parent dir is assumed ensured. */
71
- write(path: string, content: string | Uint8Array): void;
72
- /** Append only when the current UTF-8 byte length matches `expectedBytes`.
73
- * Returns the new length, or undefined when another writer won. */
74
- append(path: string, content: string, expectedBytes: number): number | undefined;
75
- }
76
- /** Node-filesystem storage — the default. Lazily requires `node:fs` so the
77
- * module imports cleanly in non-Node runtimes (where the caller passes
78
- * `inMemoryCampaignStorage` instead and never constructs this).
79
- *
80
- * `createRequire(import.meta.url)` is the ESM-native lazy require — a bare
81
- * `require` is a ReferenceError under `"type": "module"`, which is exactly
82
- * the shape this package publishes. */
83
- declare function fsCampaignStorage(): CampaignStorage;
84
- /** In-memory storage for filesystem-less runtimes. Artifacts + trace spans
85
- * live in a `Map` for the duration of the run; the `CampaignResult` is
86
- * fully populated, but nothing is persisted to disk. */
87
- declare function inMemoryCampaignStorage(): CampaignStorage;
88
- /** Open the durable spend account stored beside a logical run. */
89
- declare function createRunCostLedger(input: {
90
- storage: CampaignStorage;
91
- runDir: string;
92
- costCeilingUsd?: number;
93
- /** Set false for read-only inspection that must not create the run directory. */
94
- ensureRunDir?: boolean;
95
- }): CostLedger;
96
- //#endregion
97
43
  //#region src/campaign/cell-schedule.d.ts
98
44
  declare function buildCellSchedule<TScenario extends Scenario>(scenarios: TScenario[], seed: number, reps: number): Array<{
99
45
  scenario: TScenario;
@@ -403,434 +349,6 @@ declare class SearchLedgerIntegrityError extends SearchLedgerError {}
403
349
  /** Error raised when an event identifier is reused with different content. */
404
350
  declare class SearchLedgerConflictError extends SearchLedgerError {}
405
351
  //#endregion
406
- //#region src/campaign/search-ledger.d.ts
407
- /** Validate and return a canonical copy. Arrays whose order carries no meaning
408
- * are sorted, so retries from different processes produce identical bytes. */
409
- declare function validateSearchLedgerEvent(input: unknown): SearchLedgerEvent;
410
- /**
411
- * How this ledger uses its trusted head — the `(sequence, entryHash)` pin kept
412
- * in the sibling `<path>.head` file that a hash chain needs to prove entries
413
- * were not deleted from the end. `ledger-core/trusted-head.ts` holds the threat
414
- * model.
415
- *
416
- * - `pin` (default): every append records the new head, and a pin that is
417
- * present is verified on every read.
418
- * - `require`: additionally refuses to read a non-empty ledger whose pin is
419
- * gone, so deleting the sibling file cannot downgrade the guarantee.
420
- * - `off`: chain verification only. Truncation to a valid shorter prefix is
421
- * undetectable.
422
- */
423
- type SearchLedgerTrustedHeadMode = 'pin' | 'require' | 'off';
424
- interface OpenSearchLedgerOptions {
425
- path: string;
426
- searchId: string;
427
- trustedHead?: SearchLedgerTrustedHeadMode;
428
- /**
429
- * Keep the ledger's text in this in-process store instead of a file, for a
430
- * run without a filesystem (an in-memory `CampaignStorage`, keyed by `path`).
431
- * The chain, parse and state rules are the file ledger's; there is no lock,
432
- * fsync or trusted head, and the ledger lives as long as the store.
433
- */
434
- store?: LedgerTextStore;
435
- }
436
- interface SearchLedgerAppendResult {
437
- entry: SearchLedgerEntry;
438
- /** False when the exact event was already durably present. */
439
- appended: boolean;
440
- state: SearchStateView;
441
- }
442
- interface SearchLedger {
443
- readonly path: string;
444
- readonly searchId: string;
445
- /** Sibling file holding this ledger's trusted head. */
446
- readonly trustedHeadPath: string;
447
- append(event: SearchLedgerEvent): Promise<SearchLedgerAppendResult>;
448
- /** The verified state at the file's current head. */
449
- state(): Promise<SearchStateView>;
450
- /** The pinned head, or null when this ledger has never been pinned. */
451
- trustedHead(): Promise<LedgerTrustedHead | null>;
452
- /** Pin the current verified head without rewriting a byte. */
453
- pinTrustedHead(): Promise<LedgerTrustedHead>;
454
- /** Discard this ledger's pin, reporting what was discarded. It gives up the
455
- * deletion guarantee for every entry the pin covered. */
456
- clearTrustedHead(): Promise<LedgerTrustedHeadRemoval>;
457
- }
458
- /** Open a durable filesystem search ledger. Construction performs no I/O; the
459
- * first `append` or `state` verifies the whole existing file. */
460
- declare function openSearchLedger(options: OpenSearchLedgerOptions): SearchLedger;
461
- /** Verify and project immutable search-ledger JSONL through the same codec as
462
- * `FileSearchLedger`. */
463
- declare function replaySearchLedgerText(text: string, searchId: string, source: string): SearchStateView;
464
- /**
465
- * Verify one stored ledger line in isolation: the schema tag, the entry and
466
- * event schemas, canonical bytes, the entry's own hash, and its search. The
467
- * chain (sequence and previous hash) and the state machine are the caller's,
468
- * because they need the lines before this one. An ingest server runs this on
469
- * every received line, so it hashes exactly the bytes the producer hashed.
470
- */
471
- declare function parseSearchLedgerLine(line: string, searchId: string, context: LedgerLineContext): SearchLedgerEntry;
472
- /** Append-only file-backed search ledger with idempotent writes. */
473
- declare class FileSearchLedger implements SearchLedger {
474
- readonly path: string;
475
- readonly searchId: string;
476
- readonly trustedHeadPath: string;
477
- private readonly trustedHeadMode;
478
- private readonly journal;
479
- constructor(path: string, searchId: string, trustedHead?: SearchLedgerTrustedHeadMode);
480
- state(): Promise<SearchStateView>;
481
- append(input: SearchLedgerEvent): Promise<SearchLedgerAppendResult>;
482
- trustedHead(): Promise<LedgerTrustedHead | null>;
483
- pinTrustedHead(): Promise<LedgerTrustedHead>;
484
- clearTrustedHead(): Promise<LedgerTrustedHeadRemoval>;
485
- }
486
- //#endregion
487
- //#region src/campaign/search-history-receipt.d.ts
488
- declare const SEARCH_HISTORY_RECEIPT_SCHEMA_VERSION: '2026-09';
489
- declare const SEARCH_HISTORY_RECEIPT_DIGEST_ALGORITHM: 'rfc8785-sha256';
490
- /** Bounded summary of a search's audit. Exact ids stay in the ledger. */
491
- interface SearchHistoryAuditSummary {
492
- readonly searchId: string;
493
- readonly headHash: SearchLedgerHash | null;
494
- readonly status: SearchAudit['status'];
495
- readonly closeReason: SearchAudit['closeReason'];
496
- readonly claimDecision: 'ship' | 'hold' | 'test-cannot-resolve' | null;
497
- readonly selectedNodeId: string | null;
498
- readonly eventCount: number;
499
- readonly nodes: number;
500
- readonly edges: number;
501
- readonly cells: number;
502
- readonly openCells: number;
503
- readonly openOperations: number;
504
- readonly nodesWithoutEdge: number;
505
- readonly undecidedNodes: number;
506
- }
507
- /**
508
- * A bounded proof envelope over one search ledger.
509
- *
510
- * The content-addressed ledger stays the only rich history. The receipt binds
511
- * its producer and run, the exact ledger bytes, the digest of the complete
512
- * audit, and a bounded summary. `complete` means the ledger holds
513
- * `search-closed`, which the ledger admits only when every allocated cell has
514
- * an outcome or was cancelled, every started operation was recorded, and every
515
- * node has an edge and a terminal decision.
516
- */
517
- interface SearchHistoryReceipt {
518
- readonly schemaVersion: typeof SEARCH_HISTORY_RECEIPT_SCHEMA_VERSION;
519
- readonly kind: 'search-history-receipt';
520
- readonly digestAlgorithm: typeof SEARCH_HISTORY_RECEIPT_DIGEST_ALGORITHM;
521
- readonly receiptDigest: SearchLedgerHash;
522
- /** Stable producer identity, for example an OptimizationMethod name. */
523
- readonly producerId: string;
524
- /** Concrete optimizer or runtime invocation that produced the ledger. */
525
- readonly runId: string;
526
- /** The ledger file: `sha256` and `byteLength` of its exact bytes. */
527
- readonly ledger: SearchArtifactRef;
528
- /** `hashCanonical` of the complete `SearchAudit` from replaying those bytes. */
529
- readonly auditDigest: SearchLedgerHash;
530
- readonly summary: SearchHistoryAuditSummary;
531
- readonly complete: boolean;
532
- readonly incompleteReasons: readonly string[];
533
- }
534
- interface CreateSearchHistoryReceiptInput {
535
- readonly producerId: string;
536
- readonly runId: string;
537
- readonly ledger: {
538
- readonly path: string;
539
- readonly searchId: string;
540
- };
541
- readonly storage?: Pick<CampaignStorage, 'read'>;
542
- }
543
- type SearchHistoryPolicy = 'allow-missing' | 'require-complete';
544
- interface SearchHistoryAdmissionOptions {
545
- /** Missing history is reported by default; require-complete refuses final
546
- * assessment without a closed search ledger. */
547
- searchHistoryPolicy?: SearchHistoryPolicy;
548
- /** Receipt checks are the default. Ledger checks also resolve and replay the bytes. */
549
- searchHistoryVerification?: 'receipt' | 'ledger';
550
- }
551
- /** Read the ledger's bytes, replay them through the search codec, and build
552
- * the receipt from that replay. */
553
- declare function createSearchHistoryReceipt(input: CreateSearchHistoryReceiptInput): SearchHistoryReceipt;
554
- /** Verify the receipt, then resolve its ledger bytes, check them, and replay
555
- * them with the canonical codec. Never trusts a caller-supplied projection. */
556
- declare function verifySearchHistoryArtifact(receipt: SearchHistoryReceipt, storage: Pick<CampaignStorage, 'read'>): void;
557
- interface SearchHistoryCoverageRow {
558
- readonly producerId: string;
559
- readonly status: 'complete' | 'incomplete' | 'missing';
560
- readonly reasons: readonly string[];
561
- readonly stages?: readonly SearchHistoryCoverageRow[];
562
- readonly receipt?: SearchHistoryReceipt;
563
- /** Present only after the referenced bytes and replay were verified. */
564
- readonly ledgerVerified?: true;
565
- }
566
- interface SearchHistoryCoverage {
567
- readonly policy: SearchHistoryPolicy;
568
- readonly allComplete: boolean;
569
- readonly producers: readonly SearchHistoryCoverageRow[];
570
- }
571
- declare class SearchHistoryRequiredError extends Error {
572
- readonly producerId: string;
573
- readonly reasons: readonly string[];
574
- constructor(producerId: string, reasons: readonly string[]);
575
- }
576
- /** Verify a receipt's own consistency and digest. */
577
- declare function verifySearchHistoryReceipt(receipt: SearchHistoryReceipt): SearchHistoryReceipt;
578
- /** Prove that a receipt describes exactly the supplied replayed state. */
579
- declare function assertSearchHistoryMatchesState(receipt: SearchHistoryReceipt, state: SearchStateView): void;
580
- /** Require a receipt owned by this producer over a closed search. */
581
- declare function assertCompleteSearchHistory(producerId: string, receipt: SearchHistoryReceipt | undefined): asserts receipt is SearchHistoryReceipt;
582
- /** Classify one producer's history without treating malformed evidence as absence. */
583
- declare function searchHistoryCoverageRow(producerId: string, receipt: SearchHistoryReceipt | undefined): SearchHistoryCoverageRow;
584
- //#endregion
585
- //#region src/campaign/search-ledger-recording.d.ts
586
- /** Identities the ledger needs and a loop cannot infer. */
587
- interface SearchRunIdentity {
588
- /** The agent implementation under optimization. */
589
- agent: SearchSourceRef;
590
- /** The candidate generator: a model call or deterministic code. */
591
- proposer: SearchOperationRecordedEvent['execution'];
592
- /** The code that runs the search and decides its nodes. */
593
- search: SearchSourceRef;
594
- /** Model the agent runs; used for a cell that reported none. */
595
- model: SearchModelIdentity;
596
- /** What the search improves, for example `vb/coder`. Default: the producer's name. */
597
- subject?: string;
598
- /** The judge's pinned source. Default: unknown, because judges arrive as functions. */
599
- judge?: SearchSourceRef;
600
- /** The claim the search's numbers may support. Default: a development claim
601
- * over the supplied tasks, one unit per task. */
602
- claim?: EvaluationClaim;
603
- }
604
- /** A ledger and the identities a loop records into it. */
605
- interface SearchLedgerBinding {
606
- ledger: SearchLedger;
607
- identity: SearchRunIdentity;
608
- }
609
- /** The default claim: development numbers over exactly the supplied tasks. */
610
- declare function developmentClaim(populationId: string): EvaluationClaim;
611
- /** The header of a search, with plain task lists; the recorder digests them. */
612
- type SearchOpening = Omit<SearchOpenedEvent, 'kind' | 'eventId' | 'occurredAt' | 'artifacts' | 'splits'> & {
613
- splits: {
614
- train: SearchTask[];
615
- selection: SearchTask[];
616
- test: SearchTask[];
617
- heldOutUnits: boolean;
618
- };
619
- };
620
- interface SearchRecorderOptions {
621
- ledger: SearchLedger;
622
- /** Where content-addressed blobs are written. Default: `blobs/` beside the ledger. */
623
- blobDir?: string;
624
- storage?: CampaignStorage;
625
- /** Milliseconds since the epoch. Default: `Date.now`. */
626
- now?: () => number;
627
- }
628
- interface RegisterSearchNodeInput {
629
- artifactDigest: `sha256:${string}`;
630
- artifact: SearchArtifactRef;
631
- surfaces: SearchCandidateSurface[];
632
- }
633
- interface RecordSearchEdgeInput {
634
- childNodeId: string;
635
- /** Parents in this search, primary first, as node ids; or refs for a derive edge. */
636
- parents: Array<string | SearchNodeRef>;
637
- operator: SearchEdgeOperator;
638
- attribution: SearchEdgeAttribution;
639
- proposer: SearchProposer | null;
640
- /** Stable id of this proposal within the search, so a resumed search
641
- * recognizes the edge; for example `gen-3:candidate-1`. */
642
- proposalKey: string;
643
- selection?: {
644
- rule: string;
645
- evidence: Record<string, number>;
646
- } | null;
647
- /** The proposer's free-text rationale; redacted before it is stored. */
648
- rationale: string | SearchUnknown;
649
- /** One per parent: a diff blob from `recorder.blob('diff', …)`, or why there is none. */
650
- diffs: Array<SearchArtifactRef | SearchUnknown>;
651
- label?: string;
652
- }
653
- interface AllocateSearchCellInput {
654
- nodeId: string;
655
- taskId: string;
656
- split: SearchSplit;
657
- rep: number;
658
- stage: SearchCellStage;
659
- lane?: string | null;
660
- reservation?: SearchReservation | null;
661
- }
662
- interface SettleSearchCellInput {
663
- cellId: string;
664
- /** Default: the next attempt. An attempt already in the ledger is not appended again. */
665
- attempt?: number;
666
- outcome: SearchTaskOutcome;
667
- accounting: SearchAttemptAccounting;
668
- identity: SearchExecutionIdentity;
669
- boxMinutes?: number | null;
670
- wallMs?: number | null;
671
- queueMs?: number | null;
672
- placement?: {
673
- lane: string;
674
- boxId: string | null;
675
- } | null;
676
- surfaceEvidence?: SearchSurfaceEvidence[];
677
- traceRef?: SearchTraceRef;
678
- /** The attempt's RunRecord; its search coordinates and runId must match. */
679
- runRecord?: RunRecord;
680
- artifacts?: SearchArtifactRef[];
681
- }
682
- /** Deterministic edge id: one proposal of one child within one search. */
683
- declare function searchEdgeId(searchId: string, childNodeId: string, proposalKey: string): string;
684
- /** Writes one search's events into its ledger as they happen. */
685
- declare class SearchRecorder {
686
- readonly ledger: SearchLedger;
687
- private readonly storage;
688
- private readonly blobDir;
689
- private readonly now;
690
- private readonly tasks;
691
- private lastStampMs;
692
- private constructor();
693
- /**
694
- * Open the search: append `search-opened`, or, when the ledger already holds
695
- * one, check that it is this search and continue it.
696
- */
697
- static open(options: SearchRecorderOptions, opening: SearchOpening, artifacts?: SearchArtifactRef[]): Promise<SearchRecorder>;
698
- get searchId(): string;
699
- /** The ledger's verified state now. */
700
- state(): Promise<SearchStateView>;
701
- /** Store `body` as a canonical JSON blob and return its content address. */
702
- blob(role: string, body: unknown): SearchArtifactRef;
703
- /**
704
- * Read back a blob this recorder stored, by its content address. The bytes
705
- * must hash to the reference's digest and length, so a resumed search reads
706
- * exactly what the ledger bound.
707
- */
708
- readBlob(ref: SearchArtifactRef): unknown;
709
- /** Register a node, or return the existing node with the same artifact digest. */
710
- registerNode(input: RegisterSearchNodeInput): Promise<{
711
- nodeId: string;
712
- existed: boolean;
713
- }>;
714
- /** Record the proposal that derived a node. Returns the edge id. */
715
- recordEdge(input: RecordSearchEdgeInput): Promise<string>;
716
- startOperation(input: {
717
- operationId: string;
718
- operationKind: SearchOperationKind;
719
- reservation?: SearchReservation | null;
720
- /** Bound at the start, so a restart finds them even if the operation
721
- * never records a result. */
722
- artifacts?: SearchArtifactRef[];
723
- }): Promise<void>;
724
- recordOperation(input: Omit<SearchOperationRecordedEvent, 'kind' | 'eventId' | 'occurredAt' | 'artifacts'> & {
725
- artifacts?: SearchArtifactRef[];
726
- }): Promise<void>;
727
- /** Plan one cell. Returns the cell id; an allocated cell is not allocated again. */
728
- allocateCell(input: AllocateSearchCellInput): Promise<string>;
729
- /** Record one finished attempt at a cell. */
730
- settleCell(input: SettleSearchCellInput): Promise<void>;
731
- cancelCell(input: {
732
- cellId: string;
733
- reason: 'pruned' | 'budget' | 'deadline' | 'aborted';
734
- }): Promise<void>;
735
- /** Record a decision about a node. Repeating the node's latest decision appends nothing. */
736
- decideNode(input: {
737
- nodeId: string;
738
- decision: SearchNodeDecision;
739
- basis?: NodeEstimate | null;
740
- rule: string;
741
- reason: string;
742
- }): Promise<void>;
743
- /** Close the search. The ledger refuses a close while any cell, operation or
744
- * node decision is outstanding. */
745
- close(input: {
746
- reason: SearchCloseReason;
747
- claim: SearchClaim | null;
748
- }): Promise<void>;
749
- /** A bounded receipt over the exact ledger bytes. */
750
- receipt(input: {
751
- producerId: string;
752
- runId: string;
753
- }): SearchHistoryReceipt;
754
- private append;
755
- /** Non-decreasing ISO stamps; the ledger refuses an event that moves back. */
756
- private stamp;
757
- }
758
- /** A mutable surface as a node: its content digest, stored bytes and declared surfaces. */
759
- declare function surfaceNode(recorder: SearchRecorder, surface: MutableSurface): RegisterSearchNodeInput;
760
- /** A parent-to-child diff of two mutable surfaces, stored as a blob. */
761
- declare function surfaceDiff(recorder: SearchRecorder, parent: MutableSurface, child: MutableSurface): SearchArtifactRef;
762
- //#endregion
763
- //#region src/campaign/search-policy.d.ts
764
- /** What a policy may read about a search. */
765
- interface SearchPolicyView {
766
- readonly searchId: string;
767
- readonly seed: number;
768
- readonly direction: 'maximize' | 'minimize';
769
- /** The split nodes are ranked on: selection, or train when the search
770
- * declares no selection split (the proposer's own feedback then ranks). */
771
- readonly split: 'selection' | 'train';
772
- readonly rootNodeId: string;
773
- /** Proposals completed so far. One an interrupted process lost does not count. */
774
- readonly expansions: number;
775
- /** Admitted nodes whose screen finished, in registration order, root first. */
776
- readonly screened: readonly string[];
777
- /** Admitted nodes still being screened. */
778
- readonly screening: number;
779
- /** True when the node has a scored cell on `split` and none of its cells
780
- * there ran and ended unscored. A node that dodged a unit cannot lead; cells
781
- * still to run, such as a rung the allocator just opened, do not count. */
782
- complete(nodeId: string): boolean;
783
- /** Per-unit means on `split`, in unitId order. */
784
- unitScores(nodeId: string): readonly SearchUnitScore[];
785
- /** The paired contrast of `nodeId` against `against` on `split`. */
786
- estimate(nodeId: string, against: string): NodeEstimate;
787
- }
788
- /** One expansion: the parents a proposer derives a child from, and how. */
789
- interface SearchExpansion {
790
- parents: string[];
791
- operator: Exclude<SearchEdgeOperator, 'seed' | 'derive'>;
792
- /** Why these parents: recorded on every edge the expansion produces. */
793
- selection: {
794
- rule: string;
795
- evidence: Record<string, number>;
796
- };
797
- }
798
- interface SearchPolicy {
799
- /** Recorded as the search's `policy.expansion`. */
800
- readonly name: string;
801
- /** Stop after this many expansions without a new leader. */
802
- readonly patience?: number;
803
- /** The next expansion, or null to wait for more evidence. */
804
- expand(view: SearchPolicyView): SearchExpansion | null;
805
- /** The node the search keeps if it stopped now. */
806
- leader(view: SearchPolicyView): string;
807
- }
808
- /**
809
- * The hill climb. The leader starts at the root; a screened node that dodged no
810
- * unit takes the lead when it scored every unit the leader scored and its mean
811
- * on them beats the leader's. A node measured on fewer units than the leader,
812
- * such as one an allocator has only screened, cannot take the lead on less
813
- * evidence than the leader holds. Nodes are taken in registration order, so
814
- * the leader is a pure function of the ledger. The policy expands the leader,
815
- * and only once every earlier child is screened, so each proposal sees every
816
- * result before it.
817
- */
818
- declare function incumbent(options?: {
819
- patience?: number;
820
- }): SearchPolicy;
821
- /**
822
- * The hill climb with a different parent: each expansion draws two distinct
823
- * members of the Pareto frontier (per-unit means on the policy split) with a
824
- * PRNG seeded from `seed` and the expansion index, and keeps the one with the
825
- * larger crowding distance, the more isolated. Boundary members carry infinite
826
- * distance. Ties fall to the higher mean, then to the earlier node. The leader
827
- * rule is the incumbent's: a frontier parent explores, and only a node that
828
- * beats the leader leads.
829
- */
830
- declare function crowdedFrontierParent(options: {
831
- seed: number;
832
- }): SearchPolicy;
833
- //#endregion
834
352
  //#region src/campaign/presets/run-optimization.d.ts
835
353
  interface PremeasuredOptimizationBaseline<TArtifact, TScenario extends Scenario> {
836
354
  /** Hash of the exact surface that produced `campaign`. */
@@ -887,7 +405,11 @@ interface RunOptimizationBaseOptions<TScenario extends Scenario, TArtifact> exte
887
405
  }) => Promise<ReadonlyArray<ProposalFinding>>;
888
406
  /** Which node each proposal extends, and which node the run keeps. Default
889
407
  * `incumbent()`: the hill climb. `crowdedFrontierParent({ seed })` draws
890
- * the parent from the Pareto frontier instead. */
408
+ * the parent from the Pareto frontier instead; `aide()` drafts, debugs and
409
+ * improves with Thompson-sampled parents, and `beam({ width })` expands the
410
+ * top nodes in turn. Every policy ranks on the scenarios, and the run keeps
411
+ * the `uniform` allocator, because the proposer reads every candidate's
412
+ * score on every scenario. */
891
413
  policy?: SearchPolicy;
892
414
  /** Where the search ledger goes and the identities it records. Default: a
893
415
  * ledger at `<runDir>/search/ledger.jsonl`, held in `storage` unless that is
@@ -2318,97 +1840,6 @@ interface EmitLoopProvenanceArgs<TArtifact, TScenario extends Scenario> extends
2318
1840
  */
2319
1841
  declare function emitLoopProvenance<TArtifact, TScenario extends Scenario>(args: EmitLoopProvenanceArgs<TArtifact, TScenario>): Promise<EmitLoopProvenanceResult>;
2320
1842
  //#endregion
2321
- //#region src/campaign/allocation.d.ts
2322
- /** One cell an allocator wants for a node. */
2323
- interface SearchCellPlan {
2324
- taskId: string;
2325
- split: SearchSplit;
2326
- rep: number;
2327
- stage: SearchCellStage;
2328
- }
2329
- /** What an allocator reads when it decides. */
2330
- interface SearchAllocationView {
2331
- readonly state: SearchStateView;
2332
- /** True when no cell allocated to the node can still run: each one ended
2333
- * scored, failed, cancelled or out of attempts. */
2334
- idle(nodeId: string): boolean;
2335
- }
2336
- /** A rank decision an allocator asks the kernel to record. */
2337
- interface SearchRungDecision {
2338
- nodeId: string;
2339
- decision: {
2340
- status: 'advanced';
2341
- rung: number;
2342
- } | {
2343
- status: 'pruned';
2344
- };
2345
- /** The node against the root on the ranked split, as it stood at the decision. */
2346
- basis: NodeEstimate | null;
2347
- rule: string;
2348
- reason: string;
2349
- }
2350
- interface SearchAllocator {
2351
- /** Recorded as the search's `policy.allocation`. */
2352
- readonly name: string;
2353
- /** Repeats of each task. The claim runs its test cells at the same repeats. */
2354
- readonly reps: number;
2355
- /** Every cell the node needs through `rung`. The kernel allocates the ones
2356
- * missing; a node that was never advanced is at rung 0. */
2357
- plan(state: SearchStateView, nodeId: string, rung: number): SearchCellPlan[];
2358
- /** Cells a newly admitted node's screen allocates, so the kernel can price an
2359
- * expansion against the budget before the proposer runs. */
2360
- screenSize(state: SearchStateView): number;
2361
- /** Nodes the evidence now moves to a further rung, deepest rung first. The
2362
- * kernel records each one the budget admits and allocates its rung. */
2363
- advance(view: SearchAllocationView): SearchRungDecision[];
2364
- /** At close: nodes left waiting below the top rung, decided `pruned` with
2365
- * their rank. `keep`, the node the search keeps, is never pruned. */
2366
- prune(view: SearchAllocationView, keep: string): SearchRungDecision[];
2367
- }
2368
- /**
2369
- * Every node gets every train and selection task at every repeat: the root as
2370
- * `root` cells, every other node as `train` cells (the proposer's feedback) and
2371
- * `screen` cells (the policy's private evidence). This is the fixed plan the
2372
- * generation loop ran and GEPA runs. It has one rung, so it never advances or
2373
- * prunes a node.
2374
- */
2375
- declare function uniform(options?: {
2376
- reps?: number;
2377
- }): SearchAllocator;
2378
- interface AshaOptions {
2379
- /** Units of the first rung. Default 6, `minimumPairsForPairedDeltaTest(0.95)`:
2380
- * the fewest shared units a paired contrast needs, so every screened edge
2381
- * gets one. */
2382
- units?: number;
2383
- /** Reduction factor: a node advances when it ranks in the top 1/eta of the
2384
- * nodes that finished its rung. Default 3. */
2385
- eta?: number;
2386
- /** Train units every non-root node also runs, as the proposer's feedback.
2387
- * They never enter a rank. Default 2. */
2388
- trainUnits?: number;
2389
- /** Repeats per task. Default 1. */
2390
- reps?: number;
2391
- }
2392
- /**
2393
- * Asynchronous successive halving (Li et al., 2020) over one seeded
2394
- * permutation of the ranked split's units, fixed by the search's seed.
2395
- *
2396
- * Rung k is the first `units × 2^k` units of the permutation; the top rung is
2397
- * every unit. The root runs every unit before anything else, so every rung
2398
- * pairs against it. A new node screens on rung 0 plus `trainUnits` train
2399
- * units. Every node at a rung runs the same units as its parent, the root and
2400
- * its siblings, so every contrast pairs.
2401
- *
2402
- * A node that finished rung k advances once it ranks in the top
2403
- * floor(n / eta) of the n nodes that finished rung k, the root included, by
2404
- * mean over the rung's units; a node with an unscored unit ranks last and
2405
- * never advances. There is no barrier: a node outside the top waits, because
2406
- * the set grows as more nodes finish. At close a waiting node is pruned with
2407
- * its rank. The ranked split is selection, or train when a search declares no
2408
- * selection split, as the policy's.
2409
- */
2410
- declare function asha(options?: AshaOptions): SearchAllocator;
2411
- //#endregion
2412
1843
  //#region src/campaign/analyst-surface.d.ts
2413
1844
  interface TraceAnalystScenario extends Scenario {
2414
1845
  kind: 'trace-analyst';
@@ -2702,89 +2133,6 @@ interface CrossSurfaceInteractionReport<TRow extends CrossSurfaceTaskRow = Cross
2702
2133
  */
2703
2134
  declare function analyzeCrossSurfaceInteractions<TRow extends CrossSurfaceTaskRow>(input: AnalyzeCrossSurfaceInteractionsInput<TRow>): CrossSurfaceInteractionReport<TRow>;
2704
2135
  //#endregion
2705
- //#region src/campaign/estimate-node.d.ts
2706
- /** The estimator every `NodeEstimate` names. */
2707
- declare const SEARCH_ESTIMATOR: SearchSourceRef;
2708
- interface EstimateNodeCellsInput {
2709
- nodeId: string;
2710
- against: string;
2711
- split: SearchSplit;
2712
- direction: 'maximize' | 'minimize';
2713
- /** Every scored cell of `nodeId` on `split`. */
2714
- nodeCells: readonly SearchScoredCell[];
2715
- /** Every scored cell of `against` on `split`. */
2716
- againstCells: readonly SearchScoredCell[];
2717
- }
2718
- /**
2719
- * Digest of the cells an estimate reads, with the contrast they serve. Cells
2720
- * are listed in cellId order, so the digest names the set, not the order it
2721
- * was read in.
2722
- */
2723
- declare function searchCellSetDigest(input: Omit<EstimateNodeCellsInput, 'direction'>): SearchLedgerHash;
2724
- /**
2725
- * The paired contrast of `nodeId` against `against` on the units both scored.
2726
- *
2727
- * `delta` is the mean per-unit difference, node minus `against`, in the
2728
- * metric's own units; for a `minimize` objective an improvement is negative.
2729
- * The exact sign test is one-sided toward improvement in the objective's
2730
- * direction. Unscored cells (errored, cancelled or in flight) are absent from
2731
- * the inputs, never zero.
2732
- *
2733
- * - `none` (0 or 1 pair): no delta.
2734
- * - `insufficient` (2 to 5): the delta only.
2735
- * - `descriptive` (6 to 19): the bootstrap interval as spread, and the sign-test p.
2736
- * - `bootstrap` (20 or more): the decision-grade bootstrap interval.
2737
- *
2738
- * When every paired delta is equal the interval would have zero width, which
2739
- * is an absence of evidence; the estimate is then `indeterminate` and carries
2740
- * neither an interval nor a p-value.
2741
- */
2742
- declare function estimateNodeFromCells(input: EstimateNodeCellsInput): NodeEstimate;
2743
- /**
2744
- * `estimateNodeFromCells` over the cells a search state holds: `nodeId`
2745
- * against `against` on one split, in the direction the search's objective
2746
- * declares.
2747
- */
2748
- declare function estimateNode(state: SearchStateView, nodeId: string, options: {
2749
- against: string;
2750
- split: SearchSplit;
2751
- }): NodeEstimate;
2752
- /** A node's normal posterior on its improvement over the root. */
2753
- interface NodePosterior {
2754
- nodeId: string;
2755
- /** Units the node and the root both scored. */
2756
- pairs: number;
2757
- /** Mean per-unit improvement over the root in the objective's direction,
2758
- * so larger is better for either direction. Null without a shared unit. */
2759
- mean: number | null;
2760
- /** The pooled variance divided by `pairs`. Null when either is unknown. */
2761
- variance: number | null;
2762
- }
2763
- interface SearchPosterior {
2764
- split: SearchSplit;
2765
- rootNodeId: string;
2766
- /**
2767
- * Between-unit variance of the per-unit improvements over the root, pooled
2768
- * across every non-root node with at least 2 shared units. Null until some
2769
- * node has 2.
2770
- */
2771
- pooledVariance: number | null;
2772
- /** Sum over the pooled nodes of their shared units minus one. */
2773
- degreesOfFreedom: number;
2774
- /** Every node in registration order; the root first, at exactly 0. */
2775
- nodes: NodePosterior[];
2776
- }
2777
- /**
2778
- * The posterior every node's parent-selection draw uses. Each node's mean is
2779
- * its improvement over the root on shared units; its variance is the search's
2780
- * pooled between-unit variance divided by its unit count, so a node measured
2781
- * on one unit has a wide posterior rather than none. The root is the reference
2782
- * and sits at exactly 0.
2783
- */
2784
- declare function searchPosterior(state: SearchStateView, options?: {
2785
- split?: SearchSplit;
2786
- }): SearchPosterior;
2787
- //#endregion
2788
2136
  //#region src/campaign/fixtures.d.ts
2789
2137
  type EvalFixtureValidationMode = 'vitest' | 'none';
2790
2138
  interface EvalFixtureFile {
@@ -2934,10 +2282,17 @@ interface ExternalSearchRecordInput {
2934
2282
  * GEPA's choice as the selected node, and the close. GEPA's own selection is a
2935
2283
  * budget decision, so the ledger carries no claim; the final comparison runs
2936
2284
  * outside this search.
2285
+ *
2286
+ * A composed recipe reports no population: pass `population: null` and GEPA's
2287
+ * returned best as `selected`, and every evaluated candidate enters with an
2288
+ * `unknown` edge, as SkillOpt's do.
2937
2289
  */
2938
- declare function recordGepaSearch(input: ExternalSearchRecordInput & {
2290
+ declare function recordGepaSearch(input: ExternalSearchRecordInput & ({
2939
2291
  population: GepaCandidatePopulationArtifact;
2940
- }): Promise<SearchHistoryReceipt>;
2292
+ } | {
2293
+ population: null;
2294
+ selected: MutableSurface;
2295
+ })): Promise<SearchHistoryReceipt>;
2941
2296
  /**
2942
2297
  * Write SkillOpt's finished search into its ledger: the baseline as the seeded
2943
2298
  * root, every candidate SkillOpt evaluated as a node with an `unknown` edge
@@ -3770,288 +3125,26 @@ declare function selectDiscriminative(signals: ScenarioSignal[], k: number, opts
3770
3125
  saturationCeiling?: number;
3771
3126
  }): string[];
3772
3127
  //#endregion
3773
- //#region src/campaign/search-claim.d.ts
3774
- /** The claim procedure every `SearchClaim` and claim plan names. */
3775
- declare const SEARCH_CLAIM_RULE: SearchSourceRef;
3776
- /**
3777
- * The claim reserve a search needs: the root and 3 finalists on every test
3778
- * task at `reps` repeats, each held at `cellUsd`. Declare at least this as
3779
- * `budget.reservedClaimUsd`; `runSearch` refuses to start a capped search
3780
- * with less.
3781
- */
3782
- declare function searchClaimReserveUsd(input: {
3783
- testTasks: number;
3784
- reps: number;
3785
- cellUsd: number;
3786
- }): number;
3787
- /**
3788
- * The claim's design, fixed before any test cell runs, and stored as the
3789
- * `claim-plan` artifact of the ledger's `claim` operation.
3790
- */
3791
- interface SearchClaimPlan {
3792
- kind: 'search-claim-plan';
3793
- rule: SearchSourceRef;
3794
- /** Why expansion stopped; the search closes with this reason. */
3795
- stopReason: SearchCloseReason;
3796
- /** Best first. Every one is decided `finalist` and named by the claim. */
3797
- finalists: Array<{
3798
- nodeId: string;
3799
- selectionMean: number;
3800
- }>;
3801
- power: SearchClaimPower;
3802
- /** `run`: the root and the finalists run every test task. Otherwise the
3803
- * claim closes with this decision and spends nothing on test cells. */
3804
- test: 'run' | 'hold' | 'test-cannot-resolve';
3805
- reason: string;
3806
- }
3807
- interface PlanSearchClaimInput {
3808
- stopReason: SearchCloseReason;
3809
- /** Repeats per test task. */
3810
- reps: number;
3811
- /** Whether the budget admits the test cells of the root and `finalists`. */
3812
- affordable(finalists: number): boolean;
3813
- }
3814
- /** Fix the claim's design from a search that stopped expanding. */
3815
- declare function planSearchClaim(state: SearchStateView, input: PlanSearchClaimInput): SearchClaimPlan;
3816
- /** A node decision the claim makes, ready for `recorder.decideNode`. */
3817
- interface SearchClaimDecision {
3818
- nodeId: string;
3819
- decision: SearchNodeDecision;
3820
- basis: NodeEstimate | null;
3821
- rule: string;
3822
- reason: string;
3823
- }
3824
- /**
3825
- * Decide the claim from the test cells of the root and the finalists. Call it
3826
- * once every claim cell is settled or cancelled. It returns the claim and the
3827
- * terminal decisions of the root and every finalist.
3828
- */
3829
- declare function decideSearchClaim(state: SearchStateView, plan: SearchClaimPlan): {
3830
- claim: SearchClaim;
3831
- decisions: SearchClaimDecision[];
3832
- };
3833
- /** Whether a closed search's claim is the one its own ledger supports. */
3834
- type SearchClaimVerification = {
3835
- status: 'verified';
3836
- } |
3837
- /** The claim differs from the one the claim rule makes from the ledger. */
3838
- {
3839
- status: 'mismatch';
3840
- differences: string[];
3841
- } |
3842
- /** The claim names a rule revision this code does not implement, so this
3843
- * code can neither confirm nor refute it. */
3844
- {
3845
- status: 'unknown';
3846
- reason: string;
3847
- };
3128
+ //#region src/campaign/search-campaign-cell.d.ts
3848
3129
  /**
3849
- * Make a closed search's claim again from its ledger alone and compare it with
3850
- * the recorded one, byte for byte: the power check, the finalists, each
3851
- * finalist's test estimate and deciding interval, the selection, the decision
3852
- * and the reason. A producer's claim is not evidence until this holds; a store
3853
- * keeps what this function derives, not what the producer wrote.
3854
- *
3855
- * It needs no blob, so it works on a store that keeps digests only. The
3856
- * finalists are the nodes the ledger decided `finalist`, in decision order.
3857
- * The one input the ledger cannot replay is whether the budget covered k
3858
- * finalists' test cells; the claim cells that ran answer it (none ran: the
3859
- * budget covered none). Test repeats come from the claim cells too; without
3860
- * test cells, the recorded estimator stands for them (binary needs one repeat,
3861
- * so any other count reproduces continuous).
3862
- *
3863
- * Returns null for a search that made no claim.
3130
+ * What `cell-settled` records for one campaign cell: `passed` with the
3131
+ * composite (and each judge's) when every judge scored it, else `errored`,
3132
+ * never retryable, because `runCampaign` already applied its own retry policy;
3133
+ * its tokens and cost, with an uncaptured cost kept as a lower bound; the
3134
+ * model the cell resolved, else the declared one.
3864
3135
  */
3865
- declare function verifySearchClaim(state: SearchStateView): SearchClaimVerification | null;
3866
- //#endregion
3867
- //#region src/campaign/search-kernel.d.ts
3868
- /** The kernel every `runSearch` ledger names as its search implementation. */
3869
- declare const SEARCH_KERNEL_SOURCE: SearchSourceRef;
3870
- /** An execution lane: a pool of slots whose cells share a cost rule. */
3871
- interface SearchLane {
3872
- name: string;
3873
- /** Cells the lane runs at once. */
3874
- capacity: number;
3875
- /** `hard`: the lane enforces `cellUsd` as each cell's maximum. `estimate`:
3876
- * it cannot, and the kernel holds an estimate, recording any overshoot. */
3877
- costCap: 'hard' | 'estimate';
3878
- /** The enforced per-cell maximum of a hard lane; the prior estimate of an
3879
- * estimate lane until it has settled enough cells to estimate its own. */
3880
- cellUsd: number;
3881
- }
3882
- /** One attempt at one cell, as the kernel hands it to an executor. */
3883
- interface SearchCellWork<TArtifact> {
3884
- searchId: string;
3885
- cellId: string;
3886
- nodeId: string;
3887
- taskId: string;
3888
- unitId: string;
3889
- split: SearchSplit;
3890
- rep: number;
3891
- stage: SearchCellStage;
3136
+ declare function campaignCellSearchResult<TArtifact>(cell: CampaignCellResult<TArtifact>, input: {
3137
+ execution: SearchExecutionIdentity;
3892
3138
  lane: string;
3893
- attempt: number;
3894
- /** `cellId:attempt`: the id an executor keys the attempt's run by. */
3895
- runId: string;
3896
- artifact: TArtifact;
3897
- signal: AbortSignal;
3898
- }
3899
- /** What an attempt produced: everything `cell-settled` records except the
3900
- * coordinates the kernel owns. An environment fault is an `errored` outcome,
3901
- * not a rejection; a rejection stops the search. */
3902
- type SearchCellResult = Omit<SettleSearchCellInput, 'cellId' | 'attempt'>;
3903
- /** The executor port: lanes, placement, running a cell, and adopting an
3904
- * attempt an earlier kernel process started. */
3905
- interface SearchExecutor<TArtifact> {
3906
- lanes(): readonly SearchLane[];
3907
- /** The lane a planned cell runs on. */
3908
- place(cell: SearchCellPlan & {
3909
- nodeId: string;
3910
- }): string;
3911
- run(work: SearchCellWork<TArtifact>): Promise<SearchCellResult>;
3912
- /** The result of `work.runId` if the executor already has it, else null.
3913
- * Called before the first dispatch of a cell the ledger shows unsettled when
3914
- * the kernel starts, so a restart does not run an attempt twice. */
3915
- adopt(work: SearchCellWork<TArtifact>): Promise<SearchCellResult | null>;
3916
- }
3917
- /** How a search stores, compares and restores its artifacts. */
3918
- interface SearchArtifactCodec<TArtifact> {
3919
- /** The artifact as a content-addressed node; stores its bytes. */
3920
- node(recorder: SearchRecorder, artifact: TArtifact): RegisterSearchNodeInput;
3921
- /** The parent-to-child diff, stored as a blob, or why there is none. */
3922
- diff(recorder: SearchRecorder, parent: TArtifact, child: TArtifact): SearchArtifactRef | SearchUnknown;
3923
- /** The artifact a node holds, read back from its stored bytes. */
3924
- load(recorder: SearchRecorder, node: SearchNode): TArtifact;
3925
- }
3926
- interface SearchProposalRequest<TArtifact> {
3927
- expansion: number;
3928
- operationId: string;
3929
- operator: Exclude<SearchEdgeOperator, 'seed' | 'derive'>;
3930
- /** The parents the policy chose, primary first. */
3931
- parents: ReadonlyArray<{
3932
- nodeId: string;
3933
- artifact: TArtifact;
3934
- }>;
3935
- /** The node the search keeps now. */
3936
- leader: string;
3937
- signal: AbortSignal;
3938
- }
3939
- /** One child a proposal returned. */
3940
- interface SearchProposedChild<TArtifact> {
3941
- artifact: TArtifact;
3942
- label: string;
3943
- /** The proposer's reason; redacted with the share profile before it is stored. */
3944
- rationale: string;
3945
- /** Typed JSON the proposer attaches to the child, stored with the proposal
3946
- * and never interpreted by the kernel. */
3947
- attribution?: Readonly<Record<string, unknown>>;
3948
- }
3949
- interface SearchProposalResult<TArtifact> {
3950
- children: ReadonlyArray<SearchProposedChild<TArtifact>>;
3951
- /** Set when the proposer judges the search converged; expansion stops. */
3952
- stop?: string;
3953
- /** What generated the children; default the port's `execution`. */
3954
- execution?: SearchOperationRecordedEvent['execution'];
3955
- accounting: SearchAttemptAccounting;
3956
- }
3957
- /** The proposer port: derives children from the parents the policy chose. */
3958
- interface SearchProposerPort<TArtifact> {
3959
- readonly name: string;
3960
- readonly kind: SearchProposerKind;
3961
- readonly source: SearchSourceRef;
3962
- readonly execution: SearchOperationRecordedEvent['execution'];
3963
- /** Prior hold for one proposal until 20 proposals have settled. Default 0. */
3964
- readonly reservationUsd?: number;
3965
- /** Children one proposal usually returns, to price an expansion's screens
3966
- * before it runs. Default 1. */
3967
- readonly childrenPerProposal?: number;
3968
- propose(request: SearchProposalRequest<TArtifact>): Promise<SearchProposalResult<TArtifact>>;
3969
- }
3970
- interface RunSearchOptions<TArtifact> {
3971
- /** An opened recorder; its header names this policy and allocator. */
3972
- recorder: SearchRecorder;
3973
- /** The starting artifact: the seeded root. */
3974
- root: TArtifact;
3975
- codec: SearchArtifactCodec<TArtifact>;
3976
- policy: SearchPolicy;
3977
- allocation: SearchAllocator;
3978
- proposer: SearchProposerPort<TArtifact>;
3979
- executor: SearchExecutor<TArtifact>;
3980
- /** Refuse a child before it runs: the reason, or null to admit it. A
3981
- * refused child is recorded, decided `invalid`, and never becomes a parent. */
3982
- admit?: (artifact: TArtifact) => string | null;
3983
- /** Stop expanding after this many proposals. */
3984
- maxExpansions?: number;
3985
- /** Attempts per cell for retryable environment errors. Default 3. */
3986
- maxAttempts?: number;
3987
- /** Aborting pauses the search: in-flight cells are aborted, what settled is
3988
- * recorded, the ledger stays open, and the call rejects. Run the kernel on
3989
- * the same ledger again to continue. */
3990
- signal?: AbortSignal;
3991
- /** Milliseconds since the epoch, for the deadline. Default `Date.now`. */
3992
- now?: () => number;
3993
- }
3994
- interface SearchRunResult {
3995
- /** The closed search. */
3996
- state: SearchStateView;
3997
- /** The node the search keeps: the claim's selection, or without a claim the
3998
- * policy leader; the root when nothing was selected. */
3999
- leader: string;
4000
- reason: SearchCloseReason;
4001
- /** The claim on the sealed test split; null for a search without one. */
4002
- claim: SearchClaim | null;
4003
- /** The claim made again from the ledger alone (`verifySearchClaim`): never
4004
- * `mismatch`, which `runSearch` throws; `unknown` for a claim another rule
4005
- * revision made; null without a claim. */
4006
- claimVerification: SearchClaimVerification | null;
4007
- }
4008
- /** Run a search to its close, or continue one from its ledger. */
4009
- declare function runSearch<TArtifact>(options: RunSearchOptions<TArtifact>): Promise<SearchRunResult>;
4010
- /** The expansion index a kernel operation id encodes, or null. */
4011
- declare function searchExpansionIndex(operationId: string): number | null;
4012
- /** The stored output of one proposal: enough to register its children again. */
4013
- interface SearchProposalBlob {
4014
- kind: 'search-proposal';
4015
- operator: SearchProposalRequest<unknown>['operator'];
4016
- parents: string[];
4017
- selection: {
4018
- rule: string;
4019
- evidence: Record<string, number>;
4020
- };
4021
- children: Array<{
4022
- node: RegisterSearchNodeInput;
4023
- diffs: Array<SearchArtifactRef | SearchUnknown>;
4024
- label: string;
4025
- rationale: string;
4026
- attribution: Readonly<Record<string, unknown>> | null;
4027
- invalid: string | null;
4028
- }>;
4029
- }
4030
- /**
4031
- * A policy's read of a search: `screened` lists the admitted nodes whose screen
4032
- * finished, in registration order; `screening` counts the admitted nodes still
4033
- * being screened. Nodes are ranked on the selection split, or on train when
4034
- * the search declares no selection split. The view reads no test cell.
4035
- * `maxAttempts` (default 3, the kernel's) says when an errored cell has no
4036
- * attempt left, which makes its unit a dodge.
4037
- */
4038
- declare function searchPolicyView(state: SearchStateView, input: {
4039
- screened: readonly string[];
4040
- screening: number;
4041
- expansions: number;
4042
- maxAttempts?: number;
4043
- }): SearchPolicyView;
4044
- /**
4045
- * The divergence rule: a node whose train mean rose over its parent's on the
4046
- * train units they share while its selection interval against the parent (6
4047
- * or more units, not indeterminate) lies wholly on the worse side. Train is
4048
- * what the proposer reads; a gain there that selection contradicts is the
4049
- * signature of fitting the feedback instead of the task.
4050
- */
4051
- declare function searchDivergence(state: SearchStateView, nodeId: string): {
4052
- basis: NodeEstimate;
4053
- reason: string;
4054
- } | null;
3139
+ }): SearchCellResult;
3140
+ /** A provider-reported model: a snapshot when its name pins one, else a moving alias. */
3141
+ declare function searchModelIdentity(model: string, provider: string): SearchModelIdentity;
3142
+ /** The accounting of a proposal's cost receipts: token and dollar sums, each
3143
+ * unknown (with the known dollars as a lower bound) when a receipt lacks it. */
3144
+ declare function searchReceiptAccounting(receipts: ReadonlyArray<CostReceipt>): SearchAttemptAccounting;
3145
+ /** What ran a proposal: a model when it made a paid call other than a judge's,
3146
+ * else deterministic code. */
3147
+ declare function searchProposalExecution(receipts: ReadonlyArray<CostReceipt>, provider: string, source: SearchOperationRecordedEvent['execution']['source']): SearchOperationRecordedEvent['execution'];
4055
3148
  //#endregion
4056
3149
  //#region src/campaign/single-run-lock.d.ts
4057
3150
  /**
@@ -4238,5 +3331,5 @@ declare function verifyCodeSurface(surface: CodeSurface, worktreeDir?: string):
4238
3331
  * identity against the checkout at `worktreeRef`. */
4239
3332
  declare function resolveWorktreePath(surface: CodeSurface, worktreeDir?: string): string;
4240
3333
  //#endregion
4241
- export { scoreDiscrimination as $, SettleSearchCellInput as $a, OptimizationMethodRunOptions as $i, CrossSurfaceCandidateEvidence as $n, FinalEvidencePolicy as $o, verifyLoopProvenanceRecord as $r, createLlmCorrectnessChecker as $t, SearchExecutor as A, isTransientTransportFailure as Aa, GepaEngineOptions as Ai, LoadEvalFixtureScenariosOptions as An, OpenAutoPrOptions as Ao, SearchAllocationView as Ar, RunProfileMatrixOptions as At, searchExpansionIndex as B, SearchExpansion as Ba, ExternalTextOptimizerContext as Bi, estimateNode as Bn, CampaignRunPlanCell as Bo, LoopProvenanceBackend as Br, RuntimeEventLike as Bt, SingleRunLockOptions as C, ReferenceEquivalenceScenario as Ca, runCanaries as Ci, neutralizationGate as Cn, openSearchLedger as Co, CrossSurfaceTaskRow as Cr, renderScoreboardMarkdown as Ct, SearchArtifactCodec as D, LlmJudgeOptions as Da, SkillOptTrainerConfig as Di, EvalFixtureRunPlan as Dn, SearchLedgerConflictError as Do, buildTraceAnalystSurfaceDispatch as Dr, ProfileDispatchFn as Dt, SEARCH_KERNEL_SOURCE as E, LlmJudgeDimension as Ea, SkillOptRunnerCommand as Ei, EvalFixtureLoadOptions as En, validateSearchLedgerEvent as Eo, TraceAnalystScenario as Er, userStoryScoreboard as Et, SearchProposedChild as F, runImprovementLoop as Fa, gepaOptimizationMethod as Fi, planEvalFixtureRun as Fn, CampaignCellFailureReceipt as Fo, uniform as Fr, BackendIntegrityReport as Ft, SearchClaimPlan as G, AllocateSearchCellInput as Ga, CompareOptimizationMethodsOptions as Gi, AnalyzeCrossSurfaceInteractionsInput as Gn, readCachedCell as Go, buildLoopProvenanceRecord as Gr, CorrectnessChecker as Gt, PlanSearchClaimInput as H, SearchPolicyView as Ha, ExternalOptimizationExample as Hi, searchCellSetDigest as Hn, planCampaignRun as Ho, LoopProvenanceEvidence as Hr, extractProducedState as Ht, SearchProposerPort as I, PremeasuredOptimizationBaseline as Ia, OpenAICompatibleOptimizerModel as Ii, EstimateNodeCellsInput as In, CampaignCellRetryPolicy as Io, BuildLoopProvenanceArgs as Ir, assertRealBackend as It, planSearchClaim as J, SearchLedgerBinding as Ja, OptimizationMethodComposition as Ji, CrossSurfaceAttemptCompleteness as Jn, cellCachePath as Jo, emitLoopProvenance as Jr, ProducedState as Jt, SearchClaimVerification as K, RecordSearchEdgeInput as Ka, OptimizationMethod as Ki, CrossSurfaceAdditionDecision as Kn, CellScheduleSlot as Ko, campaignMeasurementDigest as Kr, LlmCorrectnessCheckerOpts as Kt, SearchRunResult as L, RunOptimizationOptions as La, OptimizerModelBudget as Li, NodePosterior as Ln, RunCampaignOptions as Lo, EmitLoopProvenanceArgs as Lr, summarizeBackendIntegrity as Lt, SearchProposalBlob as M, transientDispatchFailure as Ma, GepaOptimizationMethodConfig as Mi, discoverEvalFixtures as Mn, openAutoPr as Mo, SearchCellPlan as Mr, ScenarioRollup as Mt, SearchProposalRequest as N, RunImprovementLoopOptions as Na, GepaOptimizationRecipe as Ni, loadEvalFixture as Nn, RunEvalOptions as No, SearchRungDecision as Nr, runProfileMatrix as Nt, SearchCellResult as O, llmJudge as Oa, skillOptOptimizationMethod as Oi, EvalFixtureScenario as On, SearchLedgerError as Oo, traceAnalystQualityJudge as Or, ProfileMatrixError as Ot, SearchProposalResult as P, RunImprovementLoopResult as Pa, GepaRunnerCommand as Pi, loadEvalFixtureScenarios as Pn, runEval as Po, asha as Pr, BackendIntegrityError as Pt, ScenarioSignal as Q, SearchRunIdentity as Qa, OptimizationMethodResult as Qi, CrossSurfaceCandidateComparison as Qn, inMemoryCampaignStorage as Qo, provenanceSpansPath as Qr, completionVerdict as Qt, runSearch as R, RunOptimizationResult as Ra, externalTextOptimizationMethod as Ri, SEARCH_ESTIMATOR as Rn, runCampaign as Ro, EmitLoopProvenanceResult as Rr, ArtifactEventLike as Rt, SingleRunLock as S, ReferenceEquivalenceJudgeResult as Sa, CanaryReport as Si, NeutralizationGateOptions as Sn, SearchLedgerTrustedHeadMode as So, CrossSurfaceSelections as Sr, makePlaybackDispatch as St, RunSearchOptions as T, runReferenceEquivalenceJudge as Ta, SkillOptOptimizationMethodConfig as Ti, EvalFixtureFile as Tn, replaySearchLedgerText as To, TraceAnalystArtifact as Tr, scoreboardSummary as Tt, SEARCH_CLAIM_RULE as U, crowdedFrontierParent as Ua, ExternalTextEvaluationResponse as Ui, searchPosterior as Un, CacheIssueReason as Uo, LoopProvenanceOptimizationMethod as Ur, CompletionRequirement as Ut, searchPolicyView as V, SearchPolicy as Va, ExternalTextOptimizerResult as Vi, estimateNodeFromCells as Vn, PlanCampaignRunOptions as Vo, LoopProvenanceCandidate as Vr, ToolCallEventLike as Vt, SearchClaimDecision as W, incumbent as Wa, decodeExternalTextCandidate as Wi, analyzeCrossSurfaceInteractions as Wn, CacheRead as Wo, LoopProvenanceRecord as Wr, CompletionVerdict as Wt, verifySearchClaim as X, SearchRecorder as Xa, OptimizationMethodPairwise as Xi, CrossSurfaceBootstrapPolicy as Xn, createRunCostLedger as Xo, loopProvenanceSpans as Xr, SatisfiedBy as Xt, searchClaimReserveUsd as Y, SearchOpening as Ya, OptimizationMethodInput as Yi, CrossSurfaceBestSingleSelection as Yn, CampaignStorage as Yo, loopProvenanceArgsFromResult as Yr, RequirementCheck as Yt, DiscriminationScore as Z, SearchRecorderOptions as Za, OptimizationMethodProvenance as Zi, CrossSurfaceCandidate as Zn, fsCampaignStorage as Zo, provenanceRecordPath as Zr, TaskGold as Zt, componentSurfaceIdentityMaterial as _, readExternalOptimizerObservationArtifact as _a, scoreRedTeamOutput as _i, externalSurface as _n, verifySearchHistoryReceipt as _o, CrossSurfacePairIncompatibilityReason as _r, ScoreboardRenderOptions as _t, WorktreeAdapterError as a, ComparisonCost as aa, heldOutGate as ai, FsLabeledScenarioStoreOptions as an, SearchHistoryAdmissionOptions as ao, CrossSurfaceDistribution as ar, campaignSplitDigestFromIdentities as as, FinalizedProfileMatrixResult as at, surfaceDispatchRef as b, ReferenceEquivalenceJudgeInput as ba, CanaryKind as bi, recordGepaSearch as bn, SearchLedger as bo, CrossSurfaceRelativeCost as br, UserStory as bt, verifyCodeSurface as c, GepaCandidatePopulationArtifact as ca, DefaultProductionRewardHackingOptions as ci, RolloutArgumentDiffOptions as cn, SearchHistoryCoverageRow as co, CrossSurfaceIneligibilityReason as cr, ProfileMatrixRow as ct, PhoenixEvaluationResultLike as d, GepaCandidateSelectionScore as da, RedTeamCase as di, UngroundedLiteralReport as dn, SearchHistoryRequiredError as do, CrossSurfaceInteractionPath as dr, createProfileMatrixPlan as dt, OptimizationMethodScore as ea, CampaignBreakdown as ei, verifyCompletion as en, developmentClaim as eo, CrossSurfaceCandidateOutcome as er, FinalEvidenceUse as es, selectDiscriminative as et, PhoenixEvaluatorLike as f, readGepaCandidatePopulationArtifact as fa, RedTeamCategory as fi, classifyUngroundedLiterals as fn, assertCompleteSearchHistory as fo, CrossSurfaceInteractionReport as fr, finalizeProfileMatrix as ft, codeSurfaceIdentityMaterial as g, ExternalOptimizerSubmittedCandidate as ga, redTeamReport as gi, GepaPopulationImport as gn, verifySearchHistoryArtifact as go, CrossSurfacePairEvidence as gr, PlaybackStep as gt, assertCodeSurfaceIdentity as h, ExternalOptimizerObservationSummary as ha, redTeamDataset as hi, GepaEvaluationImport as hn, searchHistoryCoverageRow as ho, CrossSurfacePairCompatibility as hr, PlaybackDriver as ht, WorktreeAdapter as i, optimizationTokenUsageFromSummary as ia, HeldOutGateOptions as ii, FsLabeledScenarioStore as in, CreateSearchHistoryReceiptInput as io, CrossSurfaceCompositionStep as ir, campaignSplitDigest as is, FinalizeProfileMatrixOptions as it, SearchLane as j, quotaExhaustedUntil as ja, GepaEngineRun as ji, PlanEvalFixtureRunOptions as jn, OpenAutoPrResult as jo, SearchAllocator as jr, RunProfileMatrixResult as jt, SearchCellWork as k, TransientFailureOptions as ka, GepaAdaptiveEngineRun as ki, EvalFixtureValidationMode as kn, SearchLedgerIntegrityError as ko, AshaOptions as kr, ProfileSummary as kt, AutoevalsScoreLike as l, GepaCandidatePopulationCandidate as la, defaultProductionGate as li, RolloutCall as ln, SearchHistoryPolicy as lo, CrossSurfaceInteractionAwareSelection as lr, ProfileMatrixSegmentResult as lt, phoenixEvaluatorJudge as m, ExternalOptimizerObservationArtifact as ma, RedTeamReport as mi, ExternalSearchOptimizer as mn, createSearchHistoryReceipt as mo, CrossSurfaceNaiveStackSelection as mr, PlaybackContext as mt, GitWorktreeAdapterOptions as n, OptimizationTokenUsage as na, campaignBreakdown as ni, sequentialOptimizationMethod as nn, surfaceDiff as no, CrossSurfaceComponent as nr, assertCampaignSplitIdentity as ns, tangleTracesRoot as nt, gitWorktreeAdapter as o, combineComparisonCosts as oa, DefaultProductionGateCheck as oi, LabeledScenarioStoreError as on, SearchHistoryAuditSummary as oo, CrossSurfaceEligibility as or, ProfileMatrixCoverage as ot, autoevalsScorerJudge as p, ExternalOptimizerExecutionSummary as pa, RedTeamFinding as pi, rolloutArgumentDiff as pn, assertSearchHistoryMatchesState as po, CrossSurfaceInteractionTask as pr, runProfileMatrixSegment as pt, decideSearchClaim as q, RegisterSearchNodeInput as qa, OptimizationMethodComparison as qi, CrossSurfaceAdditionRejectionReason as qn, buildCellSchedule as qo, canonicalDigest as qr, ProducedProposal as qt, Worktree as r, compareOptimizationMethods as ra, campaignMeanComposite as ri, neutralizeText as rn, surfaceNode as ro, CrossSurfaceComponentEvidence as rr, campaignScenarioIdentity as rs, CreateProfileMatrixPlanOptions as rt, resolveWorktreePath as s, costFromLedgerSummary as sa, DefaultProductionGateOptions as si, RolloutArgumentDiff as sn, SearchHistoryCoverage as so, CrossSurfaceEvidenceBreakdown as sr, ProfileMatrixPlan as st, CodeSurfaceVerification as t, OptimizationPackageSource as ta, CampaignComparisonUnits as ti, scopedOptimizationMethod as tn, searchEdgeId as to, CrossSurfaceCandidateSummary as tr, assertCampaignDesign as ts, resolveRunDir as tt, AutoevalsScorerLike as u, GepaCandidatePopulationSummary as ua, DEFAULT_RED_TEAM_CORPUS as ui, ScoredRollout as un, SearchHistoryReceipt as uo, CrossSurfaceInteractionEffect as ur, RunProfileMatrixSegmentOptions as ut, renderSurfaceDiff as v, REFERENCE_EQUIVALENCE_INPUT_LIMITS as va, CanaryAlert as vi, importExternalEvaluations as vn, FileSearchLedger as vo, CrossSurfacePairwiseEntry as vr, ScoreboardRow as vt, acquireSingleRunLock as w, createReferenceEquivalenceJudge as wa, composeGate as wi, EvalFixture as wn, parseSearchLedgerLine as wo, BuildTraceAnalystSurfaceDispatchOptions as wr, scoreUserStory as wt, surfaceHash as x, ReferenceEquivalenceJudgeOptions as xa, CanaryOptions as xi, recordSkillOptSearch as xn, SearchLedgerAppendResult as xo, CrossSurfaceSelectionPolicy as xr, UserStoryVerdict as xt, surfaceContentHash as y, REFERENCE_EQUIVALENCE_JUDGE_VERSION as ya, CanaryEvaluation as yi, importGepaPopulation as yn, OpenSearchLedgerOptions as yo, CrossSurfaceRankedSingle as yr, ScoreboardSummary as yt, searchDivergence as z, runOptimization as za, ExternalTextOptimizationMethodConfig as zi, SearchPosterior as zn, CampaignRunPlan as zo, LoopProvenanceArgsFromResult as zr, ProposalEventLike as zt };
4242
- //# sourceMappingURL=index-CigojbNH.d.ts.map
3334
+ export { UserStoryVerdict as $, PremeasuredOptimizationBaseline as $i, BuildLoopProvenanceArgs as $n, OpenAICompatibleOptimizerModel as $r, recordSkillOptSearch as $t, ScenarioSignal as A, campaignSplitDigest as Aa, ExternalOptimizerExecutionSummary as Ai, CrossSurfaceEligibility as An, RedTeamFinding as Ar, completionVerdict as At, ProfileMatrixRow as B, ReferenceEquivalenceScenario as Bi, CrossSurfacePairEvidence as Bn, runCanaries as Br, RolloutArgumentDiffOptions as Bt, SingleRunLockOptions as C, buildCellSchedule as Ca, combineComparisonCosts as Ci, CrossSurfaceCandidateEvidence as Cn, DefaultProductionGateCheck as Cr, CorrectnessChecker as Ct, searchProposalExecution as D, assertCampaignDesign as Da, GepaCandidatePopulationSummary as Di, CrossSurfaceComponentEvidence as Dn, DEFAULT_RED_TEAM_CORPUS as Dr, RequirementCheck as Dt, searchModelIdentity as E, FinalEvidenceUse as Ea, GepaCandidatePopulationCandidate as Ei, CrossSurfaceComponent as En, defaultProductionGate as Er, ProducedState as Et, CreateProfileMatrixPlanOptions as F, REFERENCE_EQUIVALENCE_INPUT_LIMITS as Fi, CrossSurfaceInteractionPath as Fn, CanaryAlert as Fr, neutralizeText as Ft, runProfileMatrixSegment as G, llmJudge as Gi, CrossSurfaceSelectionPolicy as Gn, skillOptOptimizationMethod as Gr, rolloutArgumentDiff as Gt, RunProfileMatrixSegmentOptions as H, runReferenceEquivalenceJudge as Hi, CrossSurfacePairwiseEntry as Hn, SkillOptOptimizationMethodConfig as Hr, ScoredRollout as Ht, FinalizeProfileMatrixOptions as I, REFERENCE_EQUIVALENCE_JUDGE_VERSION as Ii, CrossSurfaceInteractionReport as In, CanaryEvaluation as Ir, FsLabeledScenarioStore as It, PlaybackStep as J, quotaExhaustedUntil as Ji, BuildTraceAnalystSurfaceDispatchOptions as Jn, GepaEngineRun as Jr, GepaPopulationImport as Jt, PlaybackContext as K, TransientFailureOptions as Ki, CrossSurfaceSelections as Kn, GepaAdaptiveEngineRun as Kr, ExternalSearchOptimizer as Kt, FinalizedProfileMatrixResult as L, ReferenceEquivalenceJudgeInput as Li, CrossSurfaceInteractionTask as Ln, CanaryKind as Lr, FsLabeledScenarioStoreOptions as Lt, selectDiscriminative as M, ExternalOptimizerObservationSummary as Mi, CrossSurfaceIneligibilityReason as Mn, redTeamDataset as Mr, verifyCompletion as Mt, resolveRunDir as N, ExternalOptimizerSubmittedCandidate as Ni, CrossSurfaceInteractionAwareSelection as Nn, redTeamReport as Nr, scopedOptimizationMethod as Nt, searchReceiptAccounting as O, assertCampaignSplitIdentity as Oa, GepaCandidateSelectionScore as Oi, CrossSurfaceCompositionStep as On, RedTeamCase as Or, SatisfiedBy as Ot, tangleTracesRoot as P, readExternalOptimizerObservationArtifact as Pi, CrossSurfaceInteractionEffect as Pn, scoreRedTeamOutput as Pr, sequentialOptimizationMethod as Pt, UserStory as Q, runImprovementLoop as Qi, traceAnalystQualityJudge as Qn, gepaOptimizationMethod as Qr, recordGepaSearch as Qt, ProfileMatrixCoverage as R, ReferenceEquivalenceJudgeOptions as Ri, CrossSurfaceNaiveStackSelection as Rn, CanaryOptions as Rr, LabeledScenarioStoreError as Rt, SingleRunLock as S, CellScheduleSlot as Sa, ComparisonCost as Si, CrossSurfaceCandidateComparison as Sn, heldOutGate as Sr, CompletionVerdict as St, campaignCellSearchResult as T, FinalEvidencePolicy as Ta, GepaCandidatePopulationArtifact as Ti, CrossSurfaceCandidateSummary as Tn, DefaultProductionRewardHackingOptions as Tr, ProducedProposal as Tt, createProfileMatrixPlan as U, LlmJudgeDimension as Ui, CrossSurfaceRankedSingle as Un, SkillOptRunnerCommand as Ur, UngroundedLiteralReport as Ut, ProfileMatrixSegmentResult as V, createReferenceEquivalenceJudge as Vi, CrossSurfacePairIncompatibilityReason as Vn, composeGate as Vr, RolloutCall as Vt, finalizeProfileMatrix as W, LlmJudgeOptions as Wi, CrossSurfaceRelativeCost as Wn, SkillOptTrainerConfig as Wr, classifyUngroundedLiterals as Wt, ScoreboardRow as X, RunImprovementLoopOptions as Xi, TraceAnalystScenario as Xn, GepaOptimizationRecipe as Xr, importExternalEvaluations as Xt, ScoreboardRenderOptions as Y, transientDispatchFailure as Yi, TraceAnalystArtifact as Yn, GepaOptimizationMethodConfig as Yr, externalSurface as Yt, ScoreboardSummary as Z, RunImprovementLoopResult as Zi, buildTraceAnalystSurfaceDispatch as Zn, GepaRunnerCommand as Zr, importGepaPopulation as Zt, componentSurfaceIdentityMaterial as _, PlanCampaignRunOptions as _a, OptimizationMethodScore as _i, CrossSurfaceAdditionRejectionReason as _n, CampaignBreakdown as _r, ProposalEventLike as _t, WorktreeAdapterError as a, SearchLedgerIntegrityError as aa, ExternalOptimizationExample as ai, EvalFixtureRunPlan as an, LoopProvenanceEvidence as ar, ProfileDispatchFn as at, surfaceDispatchRef as b, CacheRead as ba, compareOptimizationMethods as bi, CrossSurfaceBootstrapPolicy as bn, campaignMeanComposite as br, extractProducedState as bt, verifyCodeSurface as c, openAutoPr as ca, CompareOptimizationMethodsOptions as ci, LoadEvalFixtureScenariosOptions as cn, buildLoopProvenanceRecord as cr, RunProfileMatrixOptions as ct, PhoenixEvaluationResultLike as d, CampaignCellFailureReceipt as da, OptimizationMethodComposition as di, loadEvalFixture as dn, emitLoopProvenance as dr, runProfileMatrix as dt, RunOptimizationOptions as ea, OptimizerModelBudget as ei, NeutralizationGateOptions as en, EmitLoopProvenanceArgs as er, makePlaybackDispatch as et, PhoenixEvaluatorLike as f, CampaignCellRetryPolicy as fa, OptimizationMethodInput as fi, loadEvalFixtureScenarios as fn, loopProvenanceArgsFromResult as fr, BackendIntegrityError as ft, codeSurfaceIdentityMaterial as g, CampaignRunPlanCell as ga, OptimizationMethodRunOptions as gi, CrossSurfaceAdditionDecision as gn, verifyLoopProvenanceRecord as gr, ArtifactEventLike as gt, assertCodeSurfaceIdentity as h, CampaignRunPlan as ha, OptimizationMethodResult as hi, AnalyzeCrossSurfaceInteractionsInput as hn, provenanceSpansPath as hr, summarizeBackendIntegrity as ht, WorktreeAdapter as i, SearchLedgerError as ia, ExternalTextOptimizerResult as ii, EvalFixtureLoadOptions as in, LoopProvenanceCandidate as ir, userStoryScoreboard as it, scoreDiscrimination as j, campaignSplitDigestFromIdentities as ja, ExternalOptimizerObservationArtifact as ji, CrossSurfaceEvidenceBreakdown as jn, RedTeamReport as jr, createLlmCorrectnessChecker as jt, DiscriminationScore as k, campaignScenarioIdentity as ka, readGepaCandidatePopulationArtifact as ki, CrossSurfaceDistribution as kn, RedTeamCategory as kr, TaskGold as kt, AutoevalsScoreLike as l, RunEvalOptions as la, OptimizationMethod as li, PlanEvalFixtureRunOptions as ln, campaignMeasurementDigest as lr, RunProfileMatrixResult as lt, phoenixEvaluatorJudge as m, runCampaign as ma, OptimizationMethodProvenance as mi, analyzeCrossSurfaceInteractions as mn, provenanceRecordPath as mr, assertRealBackend as mt, GitWorktreeAdapterOptions as n, runOptimization as na, ExternalTextOptimizationMethodConfig as ni, EvalFixture as nn, LoopProvenanceArgsFromResult as nr, scoreUserStory as nt, gitWorktreeAdapter as o, OpenAutoPrOptions as oa, ExternalTextEvaluationResponse as oi, EvalFixtureScenario as on, LoopProvenanceOptimizationMethod as or, ProfileMatrixError as ot, autoevalsScorerJudge as p, RunCampaignOptions as pa, OptimizationMethodPairwise as pi, planEvalFixtureRun as pn, loopProvenanceSpans as pr, BackendIntegrityReport as pt, PlaybackDriver as q, isTransientTransportFailure as qi, CrossSurfaceTaskRow as qn, GepaEngineOptions as qr, GepaEvaluationImport as qt, Worktree as r, SearchLedgerConflictError as ra, ExternalTextOptimizerContext as ri, EvalFixtureFile as rn, LoopProvenanceBackend as rr, scoreboardSummary as rt, resolveWorktreePath as s, OpenAutoPrResult as sa, decodeExternalTextCandidate as si, EvalFixtureValidationMode as sn, LoopProvenanceRecord as sr, ProfileSummary as st, CodeSurfaceVerification as t, RunOptimizationResult as ta, externalTextOptimizationMethod as ti, neutralizationGate as tn, EmitLoopProvenanceResult as tr, renderScoreboardMarkdown as tt, AutoevalsScorerLike as u, runEval as ua, OptimizationMethodComparison as ui, discoverEvalFixtures as un, canonicalDigest as ur, ScenarioRollup as ut, renderSurfaceDiff as v, planCampaignRun as va, OptimizationPackageSource as vi, CrossSurfaceAttemptCompleteness as vn, CampaignComparisonUnits as vr, RuntimeEventLike as vt, acquireSingleRunLock as w, cellCachePath as wa, costFromLedgerSummary as wi, CrossSurfaceCandidateOutcome as wn, DefaultProductionGateOptions as wr, LlmCorrectnessCheckerOpts as wt, surfaceHash as x, readCachedCell as xa, optimizationTokenUsageFromSummary as xi, CrossSurfaceCandidate as xn, HeldOutGateOptions as xr, CompletionRequirement as xt, surfaceContentHash as y, CacheIssueReason as ya, OptimizationTokenUsage as yi, CrossSurfaceBestSingleSelection as yn, campaignBreakdown as yr, ToolCallEventLike as yt, ProfileMatrixPlan as z, ReferenceEquivalenceJudgeResult as zi, CrossSurfacePairCompatibility as zn, CanaryReport as zr, RolloutArgumentDiff as zt };
3335
+ //# sourceMappingURL=index-BhoOCduB.d.ts.map