@tangle-network/agent-eval 0.144.9 → 0.144.10

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 (54) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +3 -0
  3. package/dist/analyst/index.d.ts +1 -1
  4. package/dist/analyst/index.js +7 -7
  5. package/dist/{benchmark-B181aMF9.js → benchmark-CWeqGl7x.js} +2 -2
  6. package/dist/{benchmark-B181aMF9.js.map → benchmark-CWeqGl7x.js.map} +1 -1
  7. package/dist/{benchmark-command-Dtym4pA-.js → benchmark-command-D3fEnKdf.js} +8 -8
  8. package/dist/{benchmark-command-Dtym4pA-.js.map → benchmark-command-D3fEnKdf.js.map} +1 -1
  9. package/dist/benchmarks/index.d.ts +1 -1
  10. package/dist/benchmarks/index.js +1 -1
  11. package/dist/{benchmarks-Ce4Ae5fX.js → benchmarks-BzqyTvAr.js} +4 -4
  12. package/dist/{benchmarks-Ce4Ae5fX.js.map → benchmarks-BzqyTvAr.js.map} +1 -1
  13. package/dist/campaign/index.d.ts +4 -4
  14. package/dist/campaign/index.js +5 -5
  15. package/dist/{campaign-FG3thH2m.js → campaign-ccOrVCuR.js} +4 -4
  16. package/dist/{campaign-FG3thH2m.js.map → campaign-ccOrVCuR.js.map} +1 -1
  17. package/dist/cli.js +1 -1
  18. package/dist/contract/index.d.ts +1 -1
  19. package/dist/contract/index.js +6 -6
  20. package/dist/{default-registry-BaQXW1Ow.js → default-registry-BmktKy8r.js} +3 -3
  21. package/dist/{default-registry-BaQXW1Ow.js.map → default-registry-BmktKy8r.js.map} +1 -1
  22. package/dist/{dspy-rlm-engine-BiN49gK6.js → dspy-rlm-engine-DbTk4JdR.js} +3 -3
  23. package/dist/{dspy-rlm-engine-BiN49gK6.js.map → dspy-rlm-engine-DbTk4JdR.js.map} +1 -1
  24. package/dist/{extract-usage-BW27f3XW.js → extract-usage-CdZdoj1s.js} +2 -2
  25. package/dist/{extract-usage-BW27f3XW.js.map → extract-usage-CdZdoj1s.js.map} +1 -1
  26. package/dist/{index-CLKMJTJF2.d.ts → index-CwYZNzMD2.d.ts} +3 -3
  27. package/dist/{index-CLKMJTJF2.d.ts.map → index-CwYZNzMD2.d.ts.map} +1 -1
  28. package/dist/{index-CBEMKO8d.d.ts → index-DvvvSho7.d.ts} +2 -2
  29. package/dist/{index-CBEMKO8d.d.ts.map → index-DvvvSho7.d.ts.map} +1 -1
  30. package/dist/index.d.ts +3 -3
  31. package/dist/index.js +11 -11
  32. package/dist/{kind-factory-BHIgPmzS.js → kind-factory-B8-r8-y8.js} +3 -16
  33. package/dist/kind-factory-B8-r8-y8.js.map +1 -0
  34. package/dist/openapi.json +1 -1
  35. package/dist/{replay-B3gACG_H.js → replay-CohS93nE.js} +4 -4
  36. package/dist/{replay-B3gACG_H.js.map → replay-CohS93nE.js.map} +1 -1
  37. package/dist/{semantic-concept-judge-Bmrq6yqU.js → semantic-concept-judge-D1z-KepS.js} +2 -2
  38. package/dist/{semantic-concept-judge-Bmrq6yqU.js.map → semantic-concept-judge-D1z-KepS.js.map} +1 -1
  39. package/dist/{single-run-lock-BMQEv1wG.js → single-run-lock-DFWHEB09.js} +123 -123
  40. package/dist/{single-run-lock-BMQEv1wG.js.map → single-run-lock-DFWHEB09.js.map} +1 -1
  41. package/dist/{skillopt-optimization-method-D8wysvU1.d.ts → skillopt-optimization-method-9J8dJbrM.d.ts} +35 -3
  42. package/dist/skillopt-optimization-method-9J8dJbrM.d.ts.map +1 -0
  43. package/dist/{skillopt-optimization-method-Dtzp7QpP.js → skillopt-optimization-method-D6Q4dLbh.js} +299 -132
  44. package/dist/skillopt-optimization-method-D6Q4dLbh.js.map +1 -0
  45. package/dist/{store-otlp-CKtTpRhv.js → store-otlp-Dw8PPIlL.js} +2 -2
  46. package/dist/{store-otlp-CKtTpRhv.js.map → store-otlp-Dw8PPIlL.js.map} +1 -1
  47. package/dist/traces.js +4 -4
  48. package/dist/{usage-receipt-EVI8B8Xu.js → usage-receipt-t7vAzCRQ.js} +15 -2
  49. package/dist/usage-receipt-t7vAzCRQ.js.map +1 -0
  50. package/package.json +1 -1
  51. package/dist/kind-factory-BHIgPmzS.js.map +0 -1
  52. package/dist/skillopt-optimization-method-D8wysvU1.d.ts.map +0 -1
  53. package/dist/skillopt-optimization-method-Dtzp7QpP.js.map +0 -1
  54. package/dist/usage-receipt-EVI8B8Xu.js.map +0 -1
@@ -3,7 +3,7 @@ import { a as RunRecord } from "./run-record-CF4Dwpxr.js";
3
3
  import { A as ChatClient, U as LlmCallMetadata } from "./types-D216SgwM.js";
4
4
  import { s as TraceStore } from "./store-CT9YIIve.js";
5
5
  import { _ as ProposalFinding } from "./types-BvDKaULh.js";
6
- import { _ as ExternalTextEvaluationRequest, c as ExternalOptimizerModelBudget, g as ExternalTextCandidate, h as ExternalOptimizerRunnerCommand, l as ExternalOptimizerModelCall, m as ExternalOptimizerResumeMode, r as ExternalOptimizerCallbackLimits } from "./external-optimizer-contracts-CZuJNcT5.js";
6
+ import { _ as ExternalTextEvaluationRequest, c as ExternalOptimizerModelBudget, g as ExternalTextCandidate, h as ExternalOptimizerRunnerCommand, l as ExternalOptimizerModelCall, m as ExternalOptimizerResumeMode, o as ExternalOptimizerEvaluationObservation, r as ExternalOptimizerCallbackLimits } from "./external-optimizer-contracts-CZuJNcT5.js";
7
7
  import { C as JudgeDimension, H as SurfaceProposer, N as ParetoParent, R as Scenario, S as JudgeConfig, _ 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, o as CampaignScenarioIdentity, p as Gate, r as CampaignCellResult, v as GateResult, y as GenerationCandidate } from "./types-BnjdJ70P.js";
8
8
  import { a as DatasetScenario, t as Dataset } from "./dataset-C8xaLXdY.js";
9
9
  import { t as DetectRewardHackingInput } from "./reward-hacking-BI0OMAlo.js";
@@ -216,6 +216,37 @@ interface ExternalOptimizerExecutionSummary {
216
216
  succeeded: number;
217
217
  failed: number;
218
218
  }
219
+ interface ExternalOptimizerSubmittedCandidate {
220
+ /** Exact text or named-component surface submitted to the evaluation callback. */
221
+ readonly candidate: ExternalTextCandidate;
222
+ /** Eval's canonical content identity for `candidate`. */
223
+ readonly candidateHash: string;
224
+ readonly candidateDigest: `sha256:${string}`;
225
+ readonly proposalSequence: number;
226
+ /** Exact observation artifact that proves this candidate was submitted. */
227
+ readonly provenance: {
228
+ readonly path: string;
229
+ readonly sha256: `sha256:${string}`;
230
+ };
231
+ }
232
+ interface ExternalOptimizerObservationArtifact {
233
+ readonly summary: ExternalOptimizerObservationSummary;
234
+ readonly observations: readonly ExternalOptimizerEvaluationObservation[];
235
+ /** Every distinct callback-submitted candidate in proposal order. */
236
+ readonly candidates: readonly ExternalOptimizerSubmittedCandidate[];
237
+ }
238
+ /**
239
+ * Read and verify the exact callback observation artifact addressed by method provenance.
240
+ *
241
+ * The reader checks the raw SHA-256, canonical JSONL bytes, sequence, candidate
242
+ * identities, and summary counts before it returns any candidate.
243
+ * This proves that the bytes match the supplied summary. The caller remains
244
+ * responsible for obtaining that summary from trusted provenance.
245
+ */
246
+ declare function readExternalOptimizerObservationArtifact(input: {
247
+ summary: ExternalOptimizerObservationSummary;
248
+ storage?: CampaignStorage;
249
+ }): ExternalOptimizerObservationArtifact;
219
250
  //#endregion
220
251
  //#region src/campaign/run-campaign.d.ts
221
252
  interface RunCampaignOptions<TScenario extends Scenario, TArtifact> {
@@ -627,6 +658,7 @@ interface ExternalTextEvaluationResponse {
627
658
  artifact?: unknown;
628
659
  };
629
660
  }
661
+ declare function decodeExternalTextCandidate(candidate: ExternalTextCandidate): MutableSurface;
630
662
  //#endregion
631
663
  //#region src/campaign/external-text-optimization-contract.d.ts
632
664
  interface ExternalTextOptimizerContext {
@@ -1507,5 +1539,5 @@ interface SkillOptOptimizationMethodConfig<TScenario extends Scenario, TArtifact
1507
1539
  /** Run Microsoft's SkillOpt trainer as a complete optimization method. */
1508
1540
  declare function skillOptOptimizationMethod<TScenario extends Scenario, TArtifact>(config: SkillOptOptimizationMethodConfig<TScenario, TArtifact>): OptimizationMethod<TScenario, TArtifact>;
1509
1541
  //#endregion
1510
- export { redTeamDataset as $, openAutoPr as $t, RunEvalOptions as A, compareOptimizationMethods as At, OptimizerModelBudget as B, ExternalOptimizerExecutionSummary as Bt, RunImprovementLoopOptions as C, OptimizationMethodProvenance as Ct, RunOptimizationOptions as D, OptimizationPackageSource as Dt, PremeasuredOptimizationBaseline as E, OptimizationMethodScore as Et, GepaOptimizationMethodConfig as F, CampaignRunPlanCell as Ft, DefaultProductionRewardHackingOptions as G, inMemoryCampaignStorage as Gt, heldOutGate as H, CampaignStorage as Ht, GepaOptimizationRecipe as I, PlanCampaignRunOptions as It, RedTeamCase as J, campaignScenarioIdentity as Jt, defaultProductionGate as K, assertCampaignDesign as Kt, GepaRunnerCommand as L, RunCampaignOptions as Lt, GepaAdaptiveEngineRun as M, optimizationTokenUsageFromSummary as Mt, GepaEngineOptions as N, CampaignCellFailureReceipt as Nt, RunOptimizationResult as O, OptimizationTokenUsage as Ot, GepaEngineRun as P, CampaignRunPlan as Pt, RedTeamReport as Q, OpenAutoPrResult as Qt, gepaOptimizationMethod as R, planCampaignRun as Rt, verifyLoopProvenanceRecord as S, OptimizationMethodPairwise as St, runImprovementLoop as T, OptimizationMethodRunOptions as Tt, DefaultProductionGateCheck as U, createRunCostLedger as Ut, HeldOutGateOptions as V, ExternalOptimizerObservationSummary as Vt, DefaultProductionGateOptions as W, fsCampaignStorage as Wt, RedTeamFinding as X, campaignSplitDigestFromIdentities as Xt, RedTeamCategory as Y, campaignSplitDigest as Yt, RedTeamPayload as Z, OpenAutoPrOptions as Zt, emitLoopProvenance as _, CompareOptimizationMethodsOptions as _t, BuildLoopProvenanceArgs as a, ReferenceEquivalenceScenario as an, CanaryKind as at, provenanceRecordPath as b, OptimizationMethodComparison as bt, LoopProvenanceArgsFromResult as c, LlmJudgeDimension as cn, CanarySeverity as ct, LoopProvenanceEvidence as d, externalTextOptimizationMethod as dt, REFERENCE_EQUIVALENCE_INPUT_LIMITS as en, redTeamReport as et, LoopProvenanceOptimizationMethod as f, ExternalTextOptimizationMethodConfig as ft, canonicalDigest as g, ExternalTextEvaluationResponse as gt, campaignMeasurementDigest as h, ExternalOptimizationExample as ht, skillOptOptimizationMethod as i, ReferenceEquivalenceJudgeResult as in, CanaryEvaluation as it, runEval as j, costFromLedgerSummary as jt, runOptimization as k, combineComparisonCosts as kt, LoopProvenanceBackend as l, LlmJudgeOptions as ln, runCanaries as lt, buildLoopProvenanceRecord as m, ExternalTextOptimizerResult as mt, SkillOptRunnerCommand as n, ReferenceEquivalenceJudgeInput as nn, toolNamesForRun as nt, EmitLoopProvenanceArgs as o, createReferenceEquivalenceJudge as on, CanaryOptions as ot, LoopProvenanceRecord as p, ExternalTextOptimizerContext as pt, DEFAULT_RED_TEAM_CORPUS as q, assertCampaignSplitIdentity as qt, SkillOptTrainerConfig as r, ReferenceEquivalenceJudgeOptions as rn, CanaryAlert as rt, EmitLoopProvenanceResult as s, runReferenceEquivalenceJudge as sn, CanaryReport as st, SkillOptOptimizationMethodConfig as t, REFERENCE_EQUIVALENCE_JUDGE_VERSION as tn, scoreRedTeamOutput as tt, LoopProvenanceCandidate as u, llmJudge as un, composeGate as ut, loopProvenanceArgsFromResult as v, ComparisonCost as vt, RunImprovementLoopResult as w, OptimizationMethodResult as wt, provenanceSpansPath as x, OptimizationMethodInput as xt, loopProvenanceSpans as y, OptimizationMethod as yt, OpenAICompatibleOptimizerModel as z, runCampaign as zt };
1511
- //# sourceMappingURL=skillopt-optimization-method-D8wysvU1.d.ts.map
1542
+ export { redTeamDataset as $, campaignSplitDigest as $t, RunEvalOptions as A, combineComparisonCosts as At, OptimizerModelBudget as B, runCampaign as Bt, RunImprovementLoopOptions as C, OptimizationMethodPairwise as Ct, RunOptimizationOptions as D, OptimizationMethodScore as Dt, PremeasuredOptimizationBaseline as E, OptimizationMethodRunOptions as Et, GepaOptimizationMethodConfig as F, CampaignRunPlan as Ft, DefaultProductionRewardHackingOptions as G, readExternalOptimizerObservationArtifact as Gt, heldOutGate as H, ExternalOptimizerObservationArtifact as Ht, GepaOptimizationRecipe as I, CampaignRunPlanCell as It, RedTeamCase as J, fsCampaignStorage as Jt, defaultProductionGate as K, CampaignStorage as Kt, GepaRunnerCommand as L, PlanCampaignRunOptions as Lt, GepaAdaptiveEngineRun as M, costFromLedgerSummary as Mt, GepaEngineOptions as N, optimizationTokenUsageFromSummary as Nt, RunOptimizationResult as O, OptimizationPackageSource as Ot, GepaEngineRun as P, CampaignCellFailureReceipt as Pt, RedTeamReport as Q, campaignScenarioIdentity as Qt, gepaOptimizationMethod as R, RunCampaignOptions as Rt, verifyLoopProvenanceRecord as S, OptimizationMethodInput as St, runImprovementLoop as T, OptimizationMethodResult as Tt, DefaultProductionGateCheck as U, ExternalOptimizerObservationSummary as Ut, HeldOutGateOptions as V, ExternalOptimizerExecutionSummary as Vt, DefaultProductionGateOptions as W, ExternalOptimizerSubmittedCandidate as Wt, RedTeamFinding as X, assertCampaignDesign as Xt, RedTeamCategory as Y, inMemoryCampaignStorage as Yt, RedTeamPayload as Z, assertCampaignSplitIdentity as Zt, emitLoopProvenance as _, decodeExternalTextCandidate as _t, BuildLoopProvenanceArgs as a, REFERENCE_EQUIVALENCE_JUDGE_VERSION as an, CanaryKind as at, provenanceRecordPath as b, OptimizationMethod as bt, LoopProvenanceArgsFromResult as c, ReferenceEquivalenceJudgeResult as cn, CanarySeverity as ct, LoopProvenanceEvidence as d, runReferenceEquivalenceJudge as dn, externalTextOptimizationMethod as dt, campaignSplitDigestFromIdentities as en, redTeamReport as et, LoopProvenanceOptimizationMethod as f, LlmJudgeDimension as fn, ExternalTextOptimizationMethodConfig as ft, canonicalDigest as g, ExternalTextEvaluationResponse as gt, campaignMeasurementDigest as h, ExternalOptimizationExample as ht, skillOptOptimizationMethod as i, REFERENCE_EQUIVALENCE_INPUT_LIMITS as in, CanaryEvaluation as it, runEval as j, compareOptimizationMethods as jt, runOptimization as k, OptimizationTokenUsage as kt, LoopProvenanceBackend as l, ReferenceEquivalenceScenario as ln, runCanaries as lt, buildLoopProvenanceRecord as m, llmJudge as mn, ExternalTextOptimizerResult as mt, SkillOptRunnerCommand as n, OpenAutoPrResult as nn, toolNamesForRun as nt, EmitLoopProvenanceArgs as o, ReferenceEquivalenceJudgeInput as on, CanaryOptions as ot, LoopProvenanceRecord as p, LlmJudgeOptions as pn, ExternalTextOptimizerContext as pt, DEFAULT_RED_TEAM_CORPUS as q, createRunCostLedger as qt, SkillOptTrainerConfig as r, openAutoPr as rn, CanaryAlert as rt, EmitLoopProvenanceResult as s, ReferenceEquivalenceJudgeOptions as sn, CanaryReport as st, SkillOptOptimizationMethodConfig as t, OpenAutoPrOptions as tn, scoreRedTeamOutput as tt, LoopProvenanceCandidate as u, createReferenceEquivalenceJudge as un, composeGate as ut, loopProvenanceArgsFromResult as v, CompareOptimizationMethodsOptions as vt, RunImprovementLoopResult as w, OptimizationMethodProvenance as wt, provenanceSpansPath as x, OptimizationMethodComparison as xt, loopProvenanceSpans as y, ComparisonCost as yt, OpenAICompatibleOptimizerModel as z, planCampaignRun as zt };
1543
+ //# sourceMappingURL=skillopt-optimization-method-9J8dJbrM.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skillopt-optimization-method-9J8dJbrM.d.ts","names":[],"sources":["../src/llm-judge.ts","../src/reference-equivalence-judge.ts","../src/campaign/auto-pr.ts","../src/campaign/coverage.ts","../src/campaign/storage.ts","../src/campaign/external-optimizer-observations.ts","../src/campaign/run-campaign.ts","../src/campaign/presets/compare-optimization-methods.ts","../src/campaign/external-text-evaluation.ts","../src/campaign/external-text-optimization-contract.ts","../src/campaign/external-text-optimization.ts","../src/campaign/gates/compose.ts","../src/canary.ts","../src/red-team.ts","../src/campaign/gates/default-production-gate.ts","../src/campaign/gates/heldout-gate.ts","../src/campaign/optimizer-model.ts","../src/campaign/gepa-optimization-method.ts","../src/campaign/presets/run-eval.ts","../src/campaign/presets/run-optimization.ts","../src/campaign/presets/run-improvement-loop.ts","../src/campaign/provenance.ts","../src/campaign/skillopt-optimization-method.ts"],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import { c as ValidationError, i as JudgeError, t as AgentEvalError } from "./errors-D-LKuDhb.js";
2
2
  import { i as CostLedger, t as CostAccountingIncompleteError } from "./cost-ledger-DMFxsLKr.js";
3
3
  import { f as maximumChargeForLlmRequest, l as costReceiptFromLlm, m as stripFencedJson, u as costReceiptFromLlmError } from "./llm-client-DzvMUsS_.js";
4
+ import { a as deepFreezeCanonicalJson } from "./usage-receipt-t7vAzCRQ.js";
4
5
  import { a as clamp01, o as combineAbortSignals, t as assertProposalFindings } from "./proposal-findings-2GIUo1et.js";
5
- import { C as isExternalTextCandidate, D as resolveExternalOptimizerProcessLimits, E as resolveExternalOptimizerCallbackLimits, O as safePathComponent, S as isCandidateText, T as removeCredentialEnvironment, b as assertJsonValue, d as closeExternalOptimizerResources, f as runWithCleanup, l as startExternalOptimizerCallback, n as createRunCostLedger, p as startExternalOptimizerModelProxy, r as fsCampaignStorage, t as acquireSingleRunLock, u as runExternalOptimizerProcess, w as isRecord, x as assertNoCredentialValues, y as assertExternalOptimizerModelBudget } from "./single-run-lock-BMQEv1wG.js";
6
+ import { C as isExternalTextCandidate, D as resolveExternalOptimizerProcessLimits, E as resolveExternalOptimizerCallbackLimits, O as safePathComponent, S as isCandidateText, T as removeCredentialEnvironment, b as assertJsonValue, d as closeExternalOptimizerResources, f as runWithCleanup, i as fsCampaignStorage, n as startExternalOptimizerCallback, p as startExternalOptimizerModelProxy, r as createRunCostLedger, t as acquireSingleRunLock, u as runExternalOptimizerProcess, w as isRecord, x as assertNoCredentialValues, y as assertExternalOptimizerModelBudget } from "./single-run-lock-DFWHEB09.js";
6
7
  import { n as canonicalJson, r as contentHash } from "./verdict-cache-BCcOh0kF.js";
7
8
  import { p as mapConcurrent } from "./ledger-core-DXZIqu17.js";
8
9
  import { E as pairedBootstrap, H as weightedComposite, d as confidenceInterval } from "./statistics-ByxzSiOM.js";
@@ -1413,73 +1414,241 @@ function designedCellIds(scenarios, reps) {
1413
1414
  return ids;
1414
1415
  }
1415
1416
  //#endregion
1416
- //#region src/campaign/external-optimizer-run-budget.ts
1417
- function externalOptimizerRunKey(input) {
1418
- if (!input.attemptId.trim() || input.attemptId.trim() !== input.attemptId) throw new Error("external optimizer attemptId must be trimmed and non-empty");
1419
- if (typeof input.resumeEnabled !== "boolean") throw new Error("external optimizer resumeEnabled must be a boolean");
1420
- const compatible = externalOptimizerCompatibleRunKey(input.material);
1421
- return input.resumeEnabled ? compatible : `${compatible}-${input.attemptId}`;
1422
- }
1423
- function externalOptimizerCompatibleRunKey(material) {
1424
- return contentHash(material);
1425
- }
1426
- function openExternalOptimizerRunBudget(input) {
1427
- if (!input.runKey.trim() || input.runKey.trim() !== input.runKey) throw new Error("external optimizer runKey must be trimmed and non-empty");
1428
- if (!input.attemptId.trim() || input.attemptId.trim() !== input.attemptId) throw new Error("external optimizer attemptId must be trimmed and non-empty");
1429
- if (!Number.isSafeInteger(input.maxEvaluations) || input.maxEvaluations <= 0) throw new Error("external optimizer maxEvaluations must be a positive safe integer");
1430
- const budgetDir = `${input.runDir}/budgets`;
1431
- const statePath = `${budgetDir}/${input.runKey}.jsonl`;
1432
- input.storage.ensureDir(budgetDir);
1433
- const runTags = Object.freeze({ optimizerRun: input.runKey });
1434
- const attemptTags = Object.freeze({
1435
- optimizerRun: input.runKey,
1436
- optimizerAttempt: input.attemptId
1417
+ //#region src/campaign/external-optimizer-observations.ts
1418
+ /**
1419
+ * Read and verify the exact callback observation artifact addressed by method provenance.
1420
+ *
1421
+ * The reader checks the raw SHA-256, canonical JSONL bytes, sequence, candidate
1422
+ * identities, and summary counts before it returns any candidate.
1423
+ * This proves that the bytes match the supplied summary. The caller remains
1424
+ * responsible for obtaining that summary from trusted provenance.
1425
+ */
1426
+ function readExternalOptimizerObservationArtifact(input) {
1427
+ const { summary } = input;
1428
+ assertObservationSummary(summary);
1429
+ const storage = input.storage ?? fsCampaignStorage();
1430
+ const contents = storage.read(summary.path);
1431
+ if (contents === void 0) {
1432
+ const state = storage.exists(summary.path) ? "unreadable" : "missing";
1433
+ throw new Error(`external optimizer observation artifact is ${state} at '${summary.path}'`);
1434
+ }
1435
+ const sha256 = `sha256:${createHash("sha256").update(contents).digest("hex")}`;
1436
+ if (sha256 !== summary.sha256) throw new Error(`external optimizer observation artifact digest mismatch at '${summary.path}': expected ${summary.sha256}, got ${sha256}`);
1437
+ if (contents.length > 0 && !contents.endsWith("\n")) throw new Error(`external optimizer observation artifact must end with a newline at '${summary.path}'`);
1438
+ const observations = contents.length === 0 ? [] : parseObservationLines(contents, summary.path);
1439
+ const candidates = [];
1440
+ const proposed = /* @__PURE__ */ new Map();
1441
+ const evaluationNumbers = /* @__PURE__ */ new Set();
1442
+ let evaluations = 0;
1443
+ let failedEvaluations = 0;
1444
+ let refusals = 0;
1445
+ for (const [index, observation] of observations.entries()) {
1446
+ if (observation.sequence !== index + 1) throw new Error(`external optimizer observation artifact expected sequence ${index + 1}, got ${observation.sequence}`);
1447
+ if (observation.kind === "proposal") {
1448
+ assertCandidateIdentity(observation.candidate, observation.candidateHash, observation.sequence);
1449
+ if (proposed.has(observation.candidateHash)) throw new Error(`external optimizer observation artifact repeats candidate ${observation.candidateHash}`);
1450
+ const candidate = {
1451
+ candidate: structuredClone(observation.candidate),
1452
+ candidateHash: observation.candidateHash,
1453
+ candidateDigest: `sha256:${observation.candidateHash}`,
1454
+ proposalSequence: observation.sequence,
1455
+ provenance: {
1456
+ path: summary.path,
1457
+ sha256: summary.sha256
1458
+ }
1459
+ };
1460
+ proposed.set(observation.candidateHash, candidate);
1461
+ candidates.push(candidate);
1462
+ continue;
1463
+ }
1464
+ if (observation.kind === "evaluation") {
1465
+ evaluations += 1;
1466
+ if (evaluationNumbers.has(observation.evaluationNumber)) throw new Error(`external optimizer observation artifact repeats evaluation number ${observation.evaluationNumber}`);
1467
+ evaluationNumbers.add(observation.evaluationNumber);
1468
+ assertObservedCandidate(observation, proposed);
1469
+ assertJsonValue(observation.response, "external optimizer evaluation response");
1470
+ continue;
1471
+ }
1472
+ refusals += 1;
1473
+ if (observation.reason !== "invalid-request" && observation.reason !== "evaluation-limit" && observation.reason !== "evaluation-failed") throw new Error(`external optimizer observation artifact has invalid refusal reason at sequence ${observation.sequence}`);
1474
+ if (observation.reason === "evaluation-failed") failedEvaluations += 1;
1475
+ const candidateFields = [observation.candidate, observation.candidateHash];
1476
+ if (observation.reason !== "invalid-request" && candidateFields.some((value) => value === void 0)) throw new Error(`external optimizer observation artifact omits a refused candidate at sequence ${observation.sequence}`);
1477
+ if (candidateFields.some((value) => value !== void 0)) {
1478
+ if (candidateFields.some((value) => value === void 0)) throw new Error(`external optimizer observation artifact has incomplete candidate identity at sequence ${observation.sequence}`);
1479
+ assertObservedCandidate(observation, proposed);
1480
+ }
1481
+ }
1482
+ const acceptedEvaluations = evaluations + failedEvaluations;
1483
+ for (const evaluationNumber of evaluationNumbers) if (evaluationNumber > acceptedEvaluations) throw new Error(`external optimizer observation artifact has out-of-range evaluation number ${evaluationNumber}`);
1484
+ if (candidates.length !== summary.submittedCandidates || evaluations !== summary.evaluations || refusals !== summary.refusals) throw new Error(`external optimizer observation artifact counts disagree at '${summary.path}': expected ${summary.submittedCandidates}/${summary.evaluations}/${summary.refusals}, got ${candidates.length}/${evaluations}/${refusals}`);
1485
+ return deepFreezeCanonicalJson({
1486
+ summary: structuredClone(summary),
1487
+ observations,
1488
+ candidates
1437
1489
  });
1490
+ }
1491
+ /** Append-only observation log for one external-optimizer attempt. */
1492
+ function openExternalOptimizerObservationLog(input) {
1493
+ if (input.storage.read(input.path) !== void 0 || input.storage.exists(input.path)) throw new Error(`external optimizer observation log already exists at '${input.path}'`);
1494
+ input.storage.write(input.path, "");
1495
+ let revision = 0;
1496
+ const counts = {
1497
+ submittedCandidates: 0,
1498
+ evaluations: 0,
1499
+ refusals: 0
1500
+ };
1438
1501
  return {
1439
- runKey: input.runKey,
1440
- attemptId: input.attemptId,
1441
- runTags,
1442
- attemptTags,
1443
- acceptedEvaluations: () => readState(input.storage.read(statePath), input.maxEvaluations, statePath).accepted,
1444
- acceptEvaluation() {
1445
- for (let attempt = 0; attempt < 16; attempt += 1) {
1446
- const current = input.storage.read(statePath) ?? "";
1447
- const state = readState(current, input.maxEvaluations, statePath);
1448
- if (state.accepted >= input.maxEvaluations) return void 0;
1449
- if (!input.storage.append) throw new Error("external optimizer evaluation budgets require appendable storage");
1450
- const next = state.accepted + 1;
1451
- const event = `${JSON.stringify({
1452
- maxEvaluations: input.maxEvaluations,
1453
- accepted: next
1454
- })}\n`;
1455
- const expectedBytes = new TextEncoder().encode(current).byteLength;
1456
- if (input.storage.append(statePath, event, expectedBytes) !== void 0) return next;
1457
- }
1458
- throw new Error(`external optimizer evaluation counter for '${input.runKey}' was updated concurrently`);
1502
+ observe(observation) {
1503
+ const expectedSequence = counts.submittedCandidates + counts.evaluations + counts.refusals + 1;
1504
+ if (observation.sequence !== expectedSequence) throw new Error(`external optimizer observation log expected sequence ${expectedSequence}, got ${observation.sequence}`);
1505
+ const line = `${canonicalJson(observation)}\n`;
1506
+ const next = input.storage.append(input.path, line, revision);
1507
+ if (next === void 0) throw new Error(`external optimizer observation log changed concurrently at '${input.path}'`);
1508
+ revision = next;
1509
+ if (observation.kind === "proposal") counts.submittedCandidates += 1;
1510
+ else if (observation.kind === "evaluation") counts.evaluations += 1;
1511
+ else counts.refusals += 1;
1512
+ },
1513
+ summary() {
1514
+ const contents = input.storage.read(input.path) ?? "";
1515
+ const bytes = new TextEncoder().encode(contents);
1516
+ if (bytes.byteLength !== revision) throw new Error(`external optimizer observation log revision changed at '${input.path}'`);
1517
+ return {
1518
+ scope: "callback-submitted-candidates",
1519
+ path: input.path,
1520
+ sha256: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
1521
+ ...counts
1522
+ };
1459
1523
  }
1460
1524
  };
1461
1525
  }
1462
- function readState(text, maxEvaluations, statePath) {
1463
- if (text === void 0 || text === "") return {
1464
- maxEvaluations,
1465
- accepted: 0
1466
- };
1467
- let accepted = 0;
1468
- for (const line of text.split("\n")) {
1469
- if (!line) continue;
1470
- let value;
1526
+ function assertObservationSummary(summary) {
1527
+ if (summary.scope !== "callback-submitted-candidates") throw new Error("external optimizer observation summary has an invalid scope");
1528
+ if (typeof summary.path !== "string" || summary.path.trim().length === 0) throw new Error("external optimizer observation summary has an invalid path");
1529
+ if (!/^sha256:[a-f0-9]{64}$/u.test(summary.sha256)) throw new Error("external optimizer observation summary has an invalid SHA-256");
1530
+ for (const [field, value] of [
1531
+ ["submittedCandidates", summary.submittedCandidates],
1532
+ ["evaluations", summary.evaluations],
1533
+ ["refusals", summary.refusals]
1534
+ ]) if (!Number.isSafeInteger(value) || value < 0) throw new Error(`external optimizer observation summary ${field} must be a non-negative integer`);
1535
+ }
1536
+ function parseObservationLines(contents, path) {
1537
+ return contents.slice(0, -1).split("\n").map((line, index) => {
1538
+ let observation;
1471
1539
  try {
1472
- value = JSON.parse(line);
1540
+ observation = JSON.parse(line);
1473
1541
  } catch (cause) {
1474
- throw new Error(`external optimizer evaluation state is invalid at '${statePath}'`, { cause });
1542
+ throw new Error(`external optimizer observation artifact has invalid JSON at '${path}' line ${index + 1}`, { cause });
1475
1543
  }
1476
- if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).sort().join(",") !== "accepted,maxEvaluations" || value.maxEvaluations !== maxEvaluations || value.accepted !== accepted + 1) throw new Error(`external optimizer evaluation state does not match at '${statePath}'`);
1477
- accepted += 1;
1544
+ assertObservationShape(observation, index + 1);
1545
+ if (canonicalJson(observation) !== line) throw new Error(`external optimizer observation artifact is not canonical at '${path}' line ${index + 1}`);
1546
+ return observation;
1547
+ });
1548
+ }
1549
+ function assertObservationShape(value, line) {
1550
+ if (typeof value !== "object" || value === null || Array.isArray(value)) throw new Error(`external optimizer observation artifact line ${line} must be an object`);
1551
+ const observation = value;
1552
+ if (!Number.isSafeInteger(observation.sequence) || Number(observation.sequence) <= 0) throw new Error(`external optimizer observation artifact line ${line} has an invalid sequence`);
1553
+ if (observation.kind === "proposal") {
1554
+ assertExactKeys(observation, [
1555
+ "candidate",
1556
+ "candidateHash",
1557
+ "kind",
1558
+ "sequence"
1559
+ ], line);
1560
+ assertCandidateFields(observation, line);
1561
+ return;
1478
1562
  }
1479
- if (accepted > maxEvaluations) throw new Error(`external optimizer evaluation state exceeds its limit at '${statePath}'`);
1563
+ if (observation.kind === "evaluation") {
1564
+ assertExactKeys(observation, [
1565
+ "candidate",
1566
+ "candidateHash",
1567
+ "evaluationNumber",
1568
+ "exampleId",
1569
+ "kind",
1570
+ "response",
1571
+ "sequence"
1572
+ ], line);
1573
+ assertCandidateFields(observation, line);
1574
+ if (typeof observation.exampleId !== "string") throw new Error(`external optimizer observation artifact line ${line} has an invalid exampleId`);
1575
+ if (!Number.isSafeInteger(observation.evaluationNumber) || Number(observation.evaluationNumber) <= 0) throw new Error(`external optimizer observation artifact line ${line} has an invalid evaluationNumber`);
1576
+ assertJsonValue(observation.response, `external optimizer observation artifact line ${line}`);
1577
+ return;
1578
+ }
1579
+ if (observation.kind === "refusal") {
1580
+ assertAllowedKeys(observation, [
1581
+ "candidate",
1582
+ "candidateHash",
1583
+ "exampleId",
1584
+ "kind",
1585
+ "reason",
1586
+ "sequence"
1587
+ ], line);
1588
+ if (typeof observation.reason !== "string") throw new Error(`external optimizer observation artifact line ${line} has an invalid reason`);
1589
+ if (observation.candidate !== void 0 || observation.candidateHash !== void 0) assertCandidateFields(observation, line);
1590
+ if (observation.exampleId !== void 0 && typeof observation.exampleId !== "string") throw new Error(`external optimizer observation artifact line ${line} has an invalid exampleId`);
1591
+ return;
1592
+ }
1593
+ throw new Error(`external optimizer observation artifact line ${line} has an invalid kind`);
1594
+ }
1595
+ function assertCandidateFields(observation, line) {
1596
+ if (!isExternalTextCandidate(observation.candidate)) throw new Error(`external optimizer observation artifact line ${line} has an invalid candidate`);
1597
+ if (typeof observation.candidateHash !== "string" || !/^[a-f0-9]{64}$/u.test(observation.candidateHash)) throw new Error(`external optimizer observation artifact line ${line} has an invalid candidateHash`);
1598
+ }
1599
+ function assertExactKeys(value, expected, line) {
1600
+ assertAllowedKeys(value, expected, line);
1601
+ for (const key of expected) if (!(key in value)) throw new Error(`external optimizer observation artifact line ${line} is missing ${key}`);
1602
+ }
1603
+ function assertAllowedKeys(value, allowed, line) {
1604
+ const extras = Object.keys(value).filter((key) => !allowed.includes(key));
1605
+ if (extras.length > 0) throw new Error(`external optimizer observation artifact line ${line} has unexpected field ${extras[0]}`);
1606
+ }
1607
+ function assertCandidateIdentity(candidate, candidateHash, sequence) {
1608
+ if (candidateHash !== contentHash({
1609
+ kind: "external-text-candidate",
1610
+ candidate
1611
+ })) throw new Error(`external optimizer observation artifact candidate hash mismatch at sequence ${sequence}`);
1612
+ }
1613
+ function assertObservedCandidate(observation, proposed) {
1614
+ assertCandidateIdentity(observation.candidate, observation.candidateHash, observation.sequence);
1615
+ const candidate = proposed.get(observation.candidateHash);
1616
+ if (!candidate) throw new Error(`external optimizer observation artifact references an unproposed candidate at sequence ${observation.sequence}`);
1617
+ if (!isDeepStrictEqual(observation.candidate, candidate.candidate)) throw new Error(`external optimizer observation artifact changes candidate bytes at sequence ${observation.sequence}`);
1618
+ }
1619
+ /** Append-only opaque Runtime execution records for one optimizer attempt. */
1620
+ function openExternalOptimizerExecutionLog(input) {
1621
+ if (input.storage.read(input.path) !== void 0 || input.storage.exists(input.path)) throw new Error(`external optimizer execution log already exists at '${input.path}'`);
1622
+ input.storage.write(input.path, "");
1623
+ let revision = 0;
1624
+ const counts = {
1625
+ calls: 0,
1626
+ succeeded: 0,
1627
+ failed: 0
1628
+ };
1480
1629
  return {
1481
- maxEvaluations,
1482
- accepted
1630
+ observe(observation) {
1631
+ if (observation.sequence !== counts.calls + 1) throw new Error(`external optimizer execution log expected sequence ${counts.calls + 1}, got ${observation.sequence}`);
1632
+ const line = `${canonicalJson(observation)}\n`;
1633
+ const next = input.storage.append(input.path, line, revision);
1634
+ if (next === void 0) throw new Error(`external optimizer execution log changed concurrently at '${input.path}'`);
1635
+ revision = next;
1636
+ counts.calls += 1;
1637
+ if (observation.succeeded) counts.succeeded += 1;
1638
+ else counts.failed += 1;
1639
+ },
1640
+ summary() {
1641
+ const contents = input.storage.read(input.path) ?? "";
1642
+ const bytes = new TextEncoder().encode(contents);
1643
+ if (bytes.byteLength !== revision) throw new Error(`external optimizer execution log revision changed at '${input.path}'`);
1644
+ if (counts.calls !== counts.succeeded + counts.failed) throw new Error(`external optimizer execution log counts disagree at '${input.path}'`);
1645
+ return {
1646
+ scope: "runtime-model-calls",
1647
+ path: input.path,
1648
+ sha256: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
1649
+ ...counts
1650
+ };
1651
+ }
1483
1652
  };
1484
1653
  }
1485
1654
  //#endregion
@@ -2830,6 +2999,76 @@ function deepFreeze$1(value) {
2830
2999
  return value;
2831
3000
  }
2832
3001
  //#endregion
3002
+ //#region src/campaign/external-optimizer-run-budget.ts
3003
+ function externalOptimizerRunKey(input) {
3004
+ if (!input.attemptId.trim() || input.attemptId.trim() !== input.attemptId) throw new Error("external optimizer attemptId must be trimmed and non-empty");
3005
+ if (typeof input.resumeEnabled !== "boolean") throw new Error("external optimizer resumeEnabled must be a boolean");
3006
+ const compatible = externalOptimizerCompatibleRunKey(input.material);
3007
+ return input.resumeEnabled ? compatible : `${compatible}-${input.attemptId}`;
3008
+ }
3009
+ function externalOptimizerCompatibleRunKey(material) {
3010
+ return contentHash(material);
3011
+ }
3012
+ function openExternalOptimizerRunBudget(input) {
3013
+ if (!input.runKey.trim() || input.runKey.trim() !== input.runKey) throw new Error("external optimizer runKey must be trimmed and non-empty");
3014
+ if (!input.attemptId.trim() || input.attemptId.trim() !== input.attemptId) throw new Error("external optimizer attemptId must be trimmed and non-empty");
3015
+ if (!Number.isSafeInteger(input.maxEvaluations) || input.maxEvaluations <= 0) throw new Error("external optimizer maxEvaluations must be a positive safe integer");
3016
+ const budgetDir = `${input.runDir}/budgets`;
3017
+ const statePath = `${budgetDir}/${input.runKey}.jsonl`;
3018
+ input.storage.ensureDir(budgetDir);
3019
+ const runTags = Object.freeze({ optimizerRun: input.runKey });
3020
+ const attemptTags = Object.freeze({
3021
+ optimizerRun: input.runKey,
3022
+ optimizerAttempt: input.attemptId
3023
+ });
3024
+ return {
3025
+ runKey: input.runKey,
3026
+ attemptId: input.attemptId,
3027
+ runTags,
3028
+ attemptTags,
3029
+ acceptedEvaluations: () => readState(input.storage.read(statePath), input.maxEvaluations, statePath).accepted,
3030
+ acceptEvaluation() {
3031
+ for (let attempt = 0; attempt < 16; attempt += 1) {
3032
+ const current = input.storage.read(statePath) ?? "";
3033
+ const state = readState(current, input.maxEvaluations, statePath);
3034
+ if (state.accepted >= input.maxEvaluations) return void 0;
3035
+ if (!input.storage.append) throw new Error("external optimizer evaluation budgets require appendable storage");
3036
+ const next = state.accepted + 1;
3037
+ const event = `${JSON.stringify({
3038
+ maxEvaluations: input.maxEvaluations,
3039
+ accepted: next
3040
+ })}\n`;
3041
+ const expectedBytes = new TextEncoder().encode(current).byteLength;
3042
+ if (input.storage.append(statePath, event, expectedBytes) !== void 0) return next;
3043
+ }
3044
+ throw new Error(`external optimizer evaluation counter for '${input.runKey}' was updated concurrently`);
3045
+ }
3046
+ };
3047
+ }
3048
+ function readState(text, maxEvaluations, statePath) {
3049
+ if (text === void 0 || text === "") return {
3050
+ maxEvaluations,
3051
+ accepted: 0
3052
+ };
3053
+ let accepted = 0;
3054
+ for (const line of text.split("\n")) {
3055
+ if (!line) continue;
3056
+ let value;
3057
+ try {
3058
+ value = JSON.parse(line);
3059
+ } catch (cause) {
3060
+ throw new Error(`external optimizer evaluation state is invalid at '${statePath}'`, { cause });
3061
+ }
3062
+ if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).sort().join(",") !== "accepted,maxEvaluations" || value.maxEvaluations !== maxEvaluations || value.accepted !== accepted + 1) throw new Error(`external optimizer evaluation state does not match at '${statePath}'`);
3063
+ accepted += 1;
3064
+ }
3065
+ if (accepted > maxEvaluations) throw new Error(`external optimizer evaluation state exceeds its limit at '${statePath}'`);
3066
+ return {
3067
+ maxEvaluations,
3068
+ accepted
3069
+ };
3070
+ }
3071
+ //#endregion
2833
3072
  //#region src/campaign/external-text-optimization-contract.ts
2834
3073
  const MAX_TIMER_DELAY_MS$3 = 2147483647;
2835
3074
  function assertExternalTextOptimizationConfig(config) {
@@ -4493,78 +4732,6 @@ function assertExternalOptimizerCompletionCount(upstream, requestAttempts, succe
4493
4732
  if (upstream.requestAttempts !== void 0 && upstream.requestAttempts !== requestAttempts) throw new Error(`${name}: ${optimizer} reported ${upstream.requestAttempts} model attempts but the proxy received ${requestAttempts}`);
4494
4733
  }
4495
4734
  //#endregion
4496
- //#region src/campaign/external-optimizer-observations.ts
4497
- /** Append-only observation log for one external-optimizer attempt. */
4498
- function openExternalOptimizerObservationLog(input) {
4499
- if (input.storage.read(input.path) !== void 0 || input.storage.exists(input.path)) throw new Error(`external optimizer observation log already exists at '${input.path}'`);
4500
- input.storage.write(input.path, "");
4501
- let revision = 0;
4502
- const counts = {
4503
- submittedCandidates: 0,
4504
- evaluations: 0,
4505
- refusals: 0
4506
- };
4507
- return {
4508
- observe(observation) {
4509
- const expectedSequence = counts.submittedCandidates + counts.evaluations + counts.refusals + 1;
4510
- if (observation.sequence !== expectedSequence) throw new Error(`external optimizer observation log expected sequence ${expectedSequence}, got ${observation.sequence}`);
4511
- const line = `${canonicalJson(observation)}\n`;
4512
- const next = input.storage.append(input.path, line, revision);
4513
- if (next === void 0) throw new Error(`external optimizer observation log changed concurrently at '${input.path}'`);
4514
- revision = next;
4515
- if (observation.kind === "proposal") counts.submittedCandidates += 1;
4516
- else if (observation.kind === "evaluation") counts.evaluations += 1;
4517
- else counts.refusals += 1;
4518
- },
4519
- summary() {
4520
- const contents = input.storage.read(input.path) ?? "";
4521
- const bytes = new TextEncoder().encode(contents);
4522
- if (bytes.byteLength !== revision) throw new Error(`external optimizer observation log revision changed at '${input.path}'`);
4523
- return {
4524
- scope: "callback-submitted-candidates",
4525
- path: input.path,
4526
- sha256: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
4527
- ...counts
4528
- };
4529
- }
4530
- };
4531
- }
4532
- /** Append-only opaque Runtime execution records for one optimizer attempt. */
4533
- function openExternalOptimizerExecutionLog(input) {
4534
- if (input.storage.read(input.path) !== void 0 || input.storage.exists(input.path)) throw new Error(`external optimizer execution log already exists at '${input.path}'`);
4535
- input.storage.write(input.path, "");
4536
- let revision = 0;
4537
- const counts = {
4538
- calls: 0,
4539
- succeeded: 0,
4540
- failed: 0
4541
- };
4542
- return {
4543
- observe(observation) {
4544
- if (observation.sequence !== counts.calls + 1) throw new Error(`external optimizer execution log expected sequence ${counts.calls + 1}, got ${observation.sequence}`);
4545
- const line = `${canonicalJson(observation)}\n`;
4546
- const next = input.storage.append(input.path, line, revision);
4547
- if (next === void 0) throw new Error(`external optimizer execution log changed concurrently at '${input.path}'`);
4548
- revision = next;
4549
- counts.calls += 1;
4550
- if (observation.succeeded) counts.succeeded += 1;
4551
- else counts.failed += 1;
4552
- },
4553
- summary() {
4554
- const contents = input.storage.read(input.path) ?? "";
4555
- const bytes = new TextEncoder().encode(contents);
4556
- if (bytes.byteLength !== revision) throw new Error(`external optimizer execution log revision changed at '${input.path}'`);
4557
- if (counts.calls !== counts.succeeded + counts.failed) throw new Error(`external optimizer execution log counts disagree at '${input.path}'`);
4558
- return {
4559
- scope: "runtime-model-calls",
4560
- path: input.path,
4561
- sha256: `sha256:${createHash("sha256").update(bytes).digest("hex")}`,
4562
- ...counts
4563
- };
4564
- }
4565
- };
4566
- }
4567
- //#endregion
4568
4735
  //#region src/campaign/external-optimizer-run-config.ts
4569
4736
  function externalOptimizerRunnerIdentity(runner, module) {
4570
4737
  return {
@@ -6528,6 +6695,6 @@ function skillOptOptimizationMethod(config) {
6528
6695
  };
6529
6696
  }
6530
6697
  //#endregion
6531
- export { runReferenceEquivalenceJudge as $, componentSurfaceIdentityMaterial as A, planCampaignRun as B, combineComparisonCosts as C, assertCodeSurfaceIdentity as D, optimizationTokenUsageFromSummary as E, campaignMeanComposite as F, assertCampaignSplitIdentity as G, resolveRunDir as H, compareRankKeys as I, campaignSplitDigestFromIdentities as J, campaignScenarioIdentity as K, DEFAULT_MUTATION_PRIMITIVES as L, surfaceContentHash as M, surfaceHash as N, assertComponentSurface as O, campaignBreakdown as P, createReferenceEquivalenceJudge as Q, buildReflectionPrompt as R, assertOptimizationResult as S, costFromLedgerSummary as T, tangleTracesRoot as U, runCampaign as V, assertCampaignDesign as W, REFERENCE_EQUIVALENCE_INPUT_LIMITS as X, openAutoPr as Y, REFERENCE_EQUIVALENCE_JUDGE_VERSION as Z, heldOutGate as _, assertRealBackend as _t, emitLoopProvenance as a, Dataset as at, composeGate as b, JudgeParseError as bt, provenanceRecordPath as c, llmJudge as ct, runImprovementLoop as d, paretoFrontier as dt, DEFAULT_RED_TEAM_CORPUS as et, runOptimization as f, paretoFrontierWithCrowding as ft, gepaOptimizationMethod as g, assertRealAgentReceipts as gt, labelTrustRank as h, BackendIntegrityError as ht, canonicalDigest as i, toolNamesForRun as it, renderSurfaceDiff as j, codeSurfaceIdentityMaterial as k, provenanceSpansPath as l, crowdingDistance as lt, isProposedCandidate as m, recoverTruncatedJson as mt, buildLoopProvenanceRecord as n, redTeamReport as nt, loopProvenanceArgsFromResult as o, HoldoutLockedError as ot, runEval as p, scalarScore as pt, campaignSplitDigest as q, campaignMeasurementDigest as r, scoreRedTeamOutput as rt, loopProvenanceSpans as s, hashScenarios as st, skillOptOptimizationMethod as t, redTeamDataset as tt, verifyLoopProvenanceRecord as u, dominates as ut, defaultProductionGate as v, summarizeAgentReceiptIntegrity as vt, compareOptimizationMethods as w, externalTextOptimizationMethod as x, runCanaries as y, summarizeBackendIntegrity as yt, parseReflectionResponse as z };
6698
+ export { REFERENCE_EQUIVALENCE_JUDGE_VERSION as $, codeSurfaceIdentityMaterial as A, parseReflectionResponse as B, combineComparisonCosts as C, decodeExternalTextCandidate as D, optimizationTokenUsageFromSummary as E, campaignBreakdown as F, readExternalOptimizerObservationArtifact as G, runCampaign as H, campaignMeanComposite as I, campaignScenarioIdentity as J, assertCampaignDesign as K, compareRankKeys as L, renderSurfaceDiff as M, surfaceContentHash as N, assertCodeSurfaceIdentity as O, surfaceHash as P, REFERENCE_EQUIVALENCE_INPUT_LIMITS as Q, DEFAULT_MUTATION_PRIMITIVES as R, assertOptimizationResult as S, JudgeParseError as St, costFromLedgerSummary as T, resolveRunDir as U, planCampaignRun as V, tangleTracesRoot as W, campaignSplitDigestFromIdentities as X, campaignSplitDigest as Y, openAutoPr as Z, heldOutGate as _, BackendIntegrityError as _t, emitLoopProvenance as a, scoreRedTeamOutput as at, composeGate as b, summarizeAgentReceiptIntegrity as bt, provenanceRecordPath as c, HoldoutLockedError as ct, runImprovementLoop as d, crowdingDistance as dt, createReferenceEquivalenceJudge as et, runOptimization as f, dominates as ft, gepaOptimizationMethod as g, recoverTruncatedJson as gt, labelTrustRank as h, scalarScore as ht, canonicalDigest as i, redTeamReport as it, componentSurfaceIdentityMaterial as j, assertComponentSurface as k, provenanceSpansPath as l, hashScenarios as lt, isProposedCandidate as m, paretoFrontierWithCrowding as mt, buildLoopProvenanceRecord as n, DEFAULT_RED_TEAM_CORPUS as nt, loopProvenanceArgsFromResult as o, toolNamesForRun as ot, runEval as p, paretoFrontier as pt, assertCampaignSplitIdentity as q, campaignMeasurementDigest as r, redTeamDataset as rt, loopProvenanceSpans as s, Dataset as st, skillOptOptimizationMethod as t, runReferenceEquivalenceJudge as tt, verifyLoopProvenanceRecord as u, llmJudge as ut, defaultProductionGate as v, assertRealAgentReceipts as vt, compareOptimizationMethods as w, externalTextOptimizationMethod as x, summarizeBackendIntegrity as xt, runCanaries as y, assertRealBackend as yt, buildReflectionPrompt as z };
6532
6699
 
6533
- //# sourceMappingURL=skillopt-optimization-method-Dtzp7QpP.js.map
6700
+ //# sourceMappingURL=skillopt-optimization-method-D6Q4dLbh.js.map