@tangle-network/agent-eval 0.117.1 → 0.118.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 (143) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/analyst/index.d.ts +2772 -21
  3. package/dist/analyst/index.js +7 -6
  4. package/dist/analyst/index.js.map +1 -1
  5. package/dist/belief-state/index.d.ts +706 -10
  6. package/dist/belief-state/index.js +2 -1
  7. package/dist/belief-state/index.js.map +1 -1
  8. package/dist/benchmarks/index.d.ts +958 -14
  9. package/dist/benchmarks/index.js +12 -10
  10. package/dist/builder-eval/index.d.ts +449 -4
  11. package/dist/builder-eval/index.js +4 -3
  12. package/dist/builder-eval/index.js.map +1 -1
  13. package/dist/campaign/index.d.ts +4275 -73
  14. package/dist/campaign/index.js +12 -10
  15. package/dist/{chunk-VF3XSYTI.js → chunk-33JA4TFA.js} +6 -6
  16. package/dist/{chunk-4JLWXDYA.js → chunk-3EHHMC6E.js} +2 -2
  17. package/dist/{chunk-CCZIVI3F.js → chunk-BFW56GTT.js} +2 -2
  18. package/dist/{chunk-YZPO4UHR.js → chunk-DP3BBMYJ.js} +100 -143
  19. package/dist/chunk-DP3BBMYJ.js.map +1 -0
  20. package/dist/{chunk-E4BUPP7Z.js → chunk-HKUCJ437.js} +38 -66
  21. package/dist/chunk-HKUCJ437.js.map +1 -0
  22. package/dist/{chunk-HZHNRYHK.js → chunk-K6N6XJJX.js} +2 -2
  23. package/dist/chunk-KSDQVPLR.js +286 -0
  24. package/dist/chunk-KSDQVPLR.js.map +1 -0
  25. package/dist/chunk-MA6HLL3S.js +65 -0
  26. package/dist/chunk-MA6HLL3S.js.map +1 -0
  27. package/dist/{chunk-MGEHEHSN.js → chunk-OIIMMLRB.js} +11 -11
  28. package/dist/{chunk-DXZRATT5.js → chunk-OYZAPX5G.js} +3 -3
  29. package/dist/chunk-PXE2VKMX.js +140 -0
  30. package/dist/chunk-PXE2VKMX.js.map +1 -0
  31. package/dist/{chunk-JSJZ4PJ6.js → chunk-Q442S5AS.js} +17 -17
  32. package/dist/{chunk-ODVOOEWQ.js → chunk-QBRSJK47.js} +2 -2
  33. package/dist/{chunk-S2F4J57L.js → chunk-QKEGNI5B.js} +77 -32
  34. package/dist/chunk-QKEGNI5B.js.map +1 -0
  35. package/dist/{chunk-5UF54T55.js → chunk-S3UZOQ5Y.js} +34 -7
  36. package/dist/chunk-S3UZOQ5Y.js.map +1 -0
  37. package/dist/{chunk-FQNLDL4D.js → chunk-SVH2ANFD.js} +136 -4
  38. package/dist/chunk-SVH2ANFD.js.map +1 -0
  39. package/dist/{chunk-GQCZRZ7L.js → chunk-U5CHZ5M3.js} +9 -9
  40. package/dist/{chunk-TVVP3ZZQ.js → chunk-VQMK5FMP.js} +2 -1
  41. package/dist/{chunk-TVVP3ZZQ.js.map → chunk-VQMK5FMP.js.map} +1 -1
  42. package/dist/chunk-WDHBCA3M.js +31 -0
  43. package/dist/chunk-WDHBCA3M.js.map +1 -0
  44. package/dist/{chunk-HQPHZGL6.js → chunk-YLMUS4MM.js} +9 -9
  45. package/dist/{chunk-LQUTGLOZ.js → chunk-ZET2UAYW.js} +15 -65
  46. package/dist/chunk-ZET2UAYW.js.map +1 -0
  47. package/dist/contract/index.d.ts +4012 -38
  48. package/dist/contract/index.js +56 -29
  49. package/dist/contract/index.js.map +1 -1
  50. package/dist/control.d.ts +1013 -9
  51. package/dist/control.js +4 -3
  52. package/dist/fuzz.d.ts +194 -4
  53. package/dist/fuzz.js +3 -3
  54. package/dist/hosted/index.d.ts +498 -17
  55. package/dist/index.d.ts +10982 -1286
  56. package/dist/index.js +97 -80
  57. package/dist/index.js.map +1 -1
  58. package/dist/matrix/index.d.ts +139 -4
  59. package/dist/meta-eval/index.d.ts +862 -15
  60. package/dist/meta-eval/index.js +2 -1
  61. package/dist/meta-eval/index.js.map +1 -1
  62. package/dist/multishot/index.d.ts +214 -14
  63. package/dist/openapi.json +1 -1
  64. package/dist/pipelines/index.d.ts +392 -7
  65. package/dist/pipelines/index.js +5 -3
  66. package/dist/pipelines/index.js.map +1 -1
  67. package/dist/reporting.d.ts +1277 -17
  68. package/dist/rl.d.ts +2359 -28
  69. package/dist/rl.js +6 -5
  70. package/dist/rl.js.map +1 -1
  71. package/dist/storyboard/index.d.ts +86 -1
  72. package/dist/trace-attributes.d.ts +16 -0
  73. package/dist/trace-attributes.js +32 -0
  74. package/dist/trace-attributes.js.map +1 -0
  75. package/dist/traces.d.ts +1970 -697
  76. package/dist/traces.js +49 -32
  77. package/dist/wire/index.d.ts +655 -9
  78. package/docs/insight-report.md +44 -0
  79. package/package.json +9 -3
  80. package/dist/adversarial-B7loGVVX.d.ts +0 -19
  81. package/dist/analyst-C8HHvfJp.d.ts +0 -88
  82. package/dist/analyze-runs--2x39HZ7.d.ts +0 -81
  83. package/dist/baseline-DKq3gJpP.d.ts +0 -141
  84. package/dist/calibration-C8MTS7cw.d.ts +0 -101
  85. package/dist/chunk-5UF54T55.js.map +0 -1
  86. package/dist/chunk-E4BUPP7Z.js.map +0 -1
  87. package/dist/chunk-FQNLDL4D.js.map +0 -1
  88. package/dist/chunk-LQUTGLOZ.js.map +0 -1
  89. package/dist/chunk-S2F4J57L.js.map +0 -1
  90. package/dist/chunk-YZPO4UHR.js.map +0 -1
  91. package/dist/code-agent-session-CjZsVd19.d.ts +0 -87
  92. package/dist/control-6vuGfmDH.d.ts +0 -258
  93. package/dist/cost-ledger-DWy3XdJc.d.ts +0 -183
  94. package/dist/dataset-NENEzRgk.d.ts +0 -115
  95. package/dist/default-registry-DaK8b3fv.d.ts +0 -155
  96. package/dist/emitter-CjD7vUwv.d.ts +0 -122
  97. package/dist/errors-oeQrLqXC.d.ts +0 -74
  98. package/dist/failure-cluster-DOAcSJ87.d.ts +0 -76
  99. package/dist/feedback-trajectory-BUnM58xL.d.ts +0 -348
  100. package/dist/gepa-eESocoDi.d.ts +0 -642
  101. package/dist/index-PdX4VnPA.d.ts +0 -423
  102. package/dist/insight-report-DY4nDW9Q.d.ts +0 -310
  103. package/dist/integrity-DqlBiLyK.d.ts +0 -81
  104. package/dist/judge-calibration-7C-IDmKr.d.ts +0 -145
  105. package/dist/kind-factory-ClZmO25A.d.ts +0 -171
  106. package/dist/llm-client-qoDd18Qz.d.ts +0 -289
  107. package/dist/multi-layer-verifier-BsqKuLyN.d.ts +0 -150
  108. package/dist/off-policy-DiwuKKg7.d.ts +0 -132
  109. package/dist/outcome-store-rnXLEqSn.d.ts +0 -63
  110. package/dist/policy-edit-wG9uFEFm.d.ts +0 -455
  111. package/dist/pre-registration-BWQhJ3vz.d.ts +0 -761
  112. package/dist/provenance-DpjwyseI.d.ts +0 -541
  113. package/dist/query-CF7PG61p.d.ts +0 -35
  114. package/dist/raw-provider-sink-C46HDghv.d.ts +0 -132
  115. package/dist/release-report-C8G2i5Xi.d.ts +0 -236
  116. package/dist/researcher-C8XyxQsu.d.ts +0 -387
  117. package/dist/rubric-predictive-validity-p49lLVrE.d.ts +0 -105
  118. package/dist/run-record-BDH49H2E.d.ts +0 -360
  119. package/dist/runtime-trajectory-DGBIUt4B.d.ts +0 -49
  120. package/dist/schema-B3Q3l9Z_.d.ts +0 -201
  121. package/dist/semantic-concept-judge-CXnPEJbf.d.ts +0 -723
  122. package/dist/sequential-5iSVfzl2.d.ts +0 -139
  123. package/dist/series-convergence-D5OWMBg6.d.ts +0 -33
  124. package/dist/statistics-KUnG73jH.d.ts +0 -494
  125. package/dist/storage-DrX3v_5B.d.ts +0 -50
  126. package/dist/store-C1YxJDEK.d.ts +0 -248
  127. package/dist/store-DGqD0Pyo.d.ts +0 -116
  128. package/dist/summary-report-C5bKFfm-.d.ts +0 -445
  129. package/dist/test-graded-scenario-B0ybnPY7.d.ts +0 -166
  130. package/dist/types-BSw1rOUB.d.ts +0 -634
  131. package/dist/types-BUxNaJ8c.d.ts +0 -108
  132. package/dist/types-BkfcQnxV.d.ts +0 -313
  133. package/dist/verdict-C9MlYujm.d.ts +0 -35
  134. /package/dist/{chunk-VF3XSYTI.js.map → chunk-33JA4TFA.js.map} +0 -0
  135. /package/dist/{chunk-4JLWXDYA.js.map → chunk-3EHHMC6E.js.map} +0 -0
  136. /package/dist/{chunk-CCZIVI3F.js.map → chunk-BFW56GTT.js.map} +0 -0
  137. /package/dist/{chunk-HZHNRYHK.js.map → chunk-K6N6XJJX.js.map} +0 -0
  138. /package/dist/{chunk-MGEHEHSN.js.map → chunk-OIIMMLRB.js.map} +0 -0
  139. /package/dist/{chunk-DXZRATT5.js.map → chunk-OYZAPX5G.js.map} +0 -0
  140. /package/dist/{chunk-JSJZ4PJ6.js.map → chunk-Q442S5AS.js.map} +0 -0
  141. /package/dist/{chunk-ODVOOEWQ.js.map → chunk-QBRSJK47.js.map} +0 -0
  142. /package/dist/{chunk-GQCZRZ7L.js.map → chunk-U5CHZ5M3.js.map} +0 -0
  143. /package/dist/{chunk-HQPHZGL6.js.map → chunk-YLMUS4MM.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/belief-state/calibration.ts","../../src/belief-state/ope.ts","../../src/belief-state/selective.ts","../../src/belief-state/report.ts","../../src/belief-state/code-agent-corpus.ts","../../src/belief-state/research-evidence.ts","../../src/belief-state/code-agent-evidence.ts","../../src/belief-state/types.ts","../../src/belief-state/extract.ts","../../src/belief-state/runtime-hooks.ts","../../src/belief-state/phase0-measurement.ts","../../src/belief-state/runtime-benchmark-corpus.ts","../../src/belief-state/shadow-probe.ts"],"sourcesContent":["import { ValidationError } from '../errors'\nimport { calibrationFromPairs } from '../meta-eval/calibration'\nimport type { BeliefDecisionPoint, BeliefSelectivePolicy } from './types'\n\nexport type BeliefCalibrationRegion = 'all' | 'accepted' | 'rejected'\n\nexport interface BeliefCalibrationOptions {\n bins?: number\n minPairs?: number\n policy?: BeliefSelectivePolicy\n region?: BeliefCalibrationRegion\n}\n\nexport function calibrateBeliefDecisions(\n points: BeliefDecisionPoint[],\n options: BeliefCalibrationOptions = {},\n) {\n const filtered = filterCalibrationRegion(points, options)\n const pairs = filtered\n .filter((point) => typeof point.confidence === 'number' && point.outcome)\n .map((point) => ({\n evalScore: point.confidence!,\n outcome: outcomeScore(point),\n }))\n .filter((pair) => Number.isFinite(pair.outcome))\n const minPairs = options.minPairs ?? 10\n if (pairs.length < minPairs) return null\n return calibrationFromPairs(pairs, 'belief-confidence', 'decision-outcome', {\n bins: options.bins ?? 5,\n range: { lo: 0, hi: 1 },\n })\n}\n\nfunction filterCalibrationRegion(\n points: BeliefDecisionPoint[],\n options: BeliefCalibrationOptions,\n): BeliefDecisionPoint[] {\n const region = options.region ?? 'all'\n if (region === 'all') return points\n const policy = options.policy\n if (!policy) {\n throw new ValidationError(\n `calibrateBeliefDecisions: policy is required when region is \"${region}\"`,\n )\n }\n return points.filter((point) => {\n const accepted = policy.decide(point).action === 'accept'\n return region === 'accepted' ? accepted : !accepted\n })\n}\n\nfunction outcomeScore(point: BeliefDecisionPoint): number {\n if (typeof point.outcome?.reward === 'number') return point.outcome.reward\n if (typeof point.outcome?.score === 'number') return point.outcome.score\n if (point.outcome?.success === true) return 1\n if (point.outcome?.success === false) return 0\n return Number.NaN\n}\n","import {\n type OffPolicyOptions,\n type OffPolicyTrajectory,\n offPolicyEstimateAll,\n} from '../rl/off-policy'\nimport type {\n BeliefDecisionPoint,\n BeliefOpeReport,\n BeliefOpeSupportDiagnostics,\n BeliefOpeTargetPolicy,\n} from './types'\n\nexport interface BeliefOpeOptions extends OffPolicyOptions {\n minEffectiveSampleSize?: number\n minEffectiveSampleRatio?: number\n maxDiagnostics?: number\n}\n\nexport interface BeliefOffPolicyTrajectoryReport {\n targetPolicyId: string\n trajectories: OffPolicyTrajectory[]\n dropped: number\n diagnostics: string[]\n}\n\nexport function embeddedBeliefOpeTargetPolicy(id = 'embedded-target-prob'): BeliefOpeTargetPolicy {\n return {\n id,\n targetProbOf(point) {\n return point.targetProb\n },\n qHatOf(point) {\n return point.qHat\n },\n }\n}\n\nexport function beliefDecisionsToOffPolicyTrajectories(\n points: BeliefDecisionPoint[],\n targetPolicy: BeliefOpeTargetPolicy,\n options: Pick<BeliefOpeOptions, 'maxDiagnostics'> = {},\n): BeliefOffPolicyTrajectoryReport {\n const trajectories: OffPolicyTrajectory[] = []\n const diagnostics: string[] = []\n for (const point of points) {\n if (!point.outcome) {\n diagnostics.push(`${point.id}: missing outcome`)\n continue\n }\n if (!isBehaviorProbability(point.behaviorProb)) {\n diagnostics.push(`${point.id}: invalid behaviorProb ${formatProbability(point.behaviorProb)}`)\n continue\n }\n\n let targetProb: number | null | undefined\n let qHat: number | null | undefined\n try {\n targetProb = targetPolicy.targetProbOf(point)\n qHat = targetPolicy.qHatOf?.(point)\n } catch (error) {\n diagnostics.push(\n `${point.id}: target policy ${targetPolicy.id} threw (${errorMessage(error)})`,\n )\n continue\n }\n if (!isTargetProbability(targetProb)) {\n diagnostics.push(`${point.id}: invalid targetProb ${formatProbability(targetProb)}`)\n continue\n }\n if (qHat !== null && qHat !== undefined && !isTargetProbability(qHat)) {\n diagnostics.push(`${point.id}: invalid qHat ${formatProbability(qHat)}; ignoring qHat`)\n qHat = null\n }\n\n trajectories.push({\n runId: point.id,\n reward: rewardOf(point),\n behaviorProb: point.behaviorProb,\n targetProb,\n qHat,\n })\n }\n return {\n targetPolicyId: targetPolicy.id,\n trajectories,\n dropped: points.length - trajectories.length,\n diagnostics: compactDiagnostics(diagnostics, options.maxDiagnostics ?? 20),\n }\n}\n\nexport function evaluateBeliefOffPolicy(\n points: BeliefDecisionPoint[],\n targetPolicy: BeliefOpeTargetPolicy,\n options: BeliefOpeOptions = {},\n): BeliefOpeReport {\n const trajectoryReport = beliefDecisionsToOffPolicyTrajectories(points, targetPolicy, options)\n const { trajectories } = trajectoryReport\n const estimates = offPolicyEstimateAll(trajectories, options)\n const support = supportDiagnostics(estimates.dr, {\n minEffectiveSampleSize: options.minEffectiveSampleSize ?? 30,\n minEffectiveSampleRatio: options.minEffectiveSampleRatio ?? 0.25,\n dropped: trajectoryReport.dropped,\n diagnostics: trajectoryReport.diagnostics,\n })\n return { targetPolicyId: targetPolicy.id, ...estimates, support }\n}\n\nfunction supportDiagnostics(\n estimate: { n: number; effectiveSampleSize: number; maxImportanceWeight: number },\n options: {\n minEffectiveSampleSize: number\n minEffectiveSampleRatio: number\n dropped: number\n diagnostics: string[]\n },\n): BeliefOpeSupportDiagnostics {\n const ratio = estimate.n > 0 ? estimate.effectiveSampleSize / estimate.n : 0\n const reasons: string[] = [...options.diagnostics]\n if (estimate.n === 0) {\n reasons.push('no valid OPE trajectories')\n }\n if (options.dropped > 0) {\n reasons.push(`dropped ${options.dropped} unsupported decision(s)`)\n }\n if (estimate.effectiveSampleSize < options.minEffectiveSampleSize) {\n reasons.push(\n `effective sample size ${estimate.effectiveSampleSize.toFixed(2)} below ${options.minEffectiveSampleSize}`,\n )\n }\n if (ratio < options.minEffectiveSampleRatio) {\n reasons.push(\n `effective sample ratio ${ratio.toFixed(2)} below ${options.minEffectiveSampleRatio}`,\n )\n }\n if (estimate.maxImportanceWeight > 10) {\n reasons.push(`max importance weight ${estimate.maxImportanceWeight.toFixed(2)} is high`)\n }\n return {\n supported: reasons.length === 0,\n n: estimate.n,\n dropped: options.dropped,\n effectiveSampleSize: estimate.effectiveSampleSize,\n effectiveSampleRatio: ratio,\n maxImportanceWeight: estimate.maxImportanceWeight,\n reasons,\n }\n}\n\nfunction rewardOf(point: BeliefDecisionPoint): number {\n if (typeof point.outcome?.reward === 'number') return point.outcome.reward\n if (typeof point.outcome?.score === 'number') return point.outcome.score\n if (point.outcome?.success === true) return 1\n return 0\n}\n\nfunction isBehaviorProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 && value <= 1\n}\n\nfunction isTargetProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1\n}\n\nfunction formatProbability(value: unknown): string {\n return typeof value === 'number' ? String(value) : String(value ?? 'missing')\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction compactDiagnostics(diagnostics: string[], maxDiagnostics: number): string[] {\n if (diagnostics.length <= maxDiagnostics) return diagnostics\n return [\n ...diagnostics.slice(0, maxDiagnostics),\n `${diagnostics.length - maxDiagnostics} additional OPE diagnostic(s) omitted`,\n ]\n}\n","import { ValidationError } from '../errors'\nimport { confidenceInterval } from '../statistics'\nimport type {\n BeliefDecisionPoint,\n BeliefPolicyAction,\n BeliefSelectivePolicy,\n BeliefSelectivePolicyMetrics,\n BeliefUtilityOptions,\n} from './types'\n\nexport interface EvaluateBeliefSelectivePolicyOptions {\n utility?: BeliefUtilityOptions\n minN?: number\n minAccepted?: number\n minUtilityDelta?: number\n seed?: number\n}\n\nconst DEFAULT_UTILITY: Required<BeliefUtilityOptions> = {\n successUtility: 1,\n failureUtility: -1,\n deferUtility: 0,\n verifyCost: 0.05,\n askCost: 0.05,\n retryCost: 0.1,\n stopUtility: 0,\n costWeight: 1,\n}\n\nexport function thresholdSelectivePolicy(options: {\n id?: string\n confidenceThreshold: number\n belowThresholdAction?: Exclude<BeliefPolicyAction, 'accept'>\n}): BeliefSelectivePolicy {\n const threshold = options.confidenceThreshold\n if (!Number.isFinite(threshold) || threshold < 0 || threshold > 1) {\n throw new ValidationError(\n `thresholdSelectivePolicy: confidenceThreshold must be in [0, 1], got ${threshold}`,\n )\n }\n const belowThresholdAction = options.belowThresholdAction ?? 'verify'\n return {\n id: options.id ?? `confidence>=${threshold}`,\n decide(point) {\n const confidence = point.confidence ?? 0\n return {\n action: confidence >= threshold ? 'accept' : belowThresholdAction,\n confidence,\n targetProb: point.targetProb,\n qHat: point.qHat,\n reason:\n confidence >= threshold ? 'confidence threshold passed' : 'confidence threshold failed',\n }\n },\n }\n}\n\nexport function evaluateBeliefSelectivePolicy(\n points: BeliefDecisionPoint[],\n policy: BeliefSelectivePolicy,\n options: EvaluateBeliefSelectivePolicyOptions = {},\n): BeliefSelectivePolicyMetrics {\n const utility = { ...DEFAULT_UTILITY, ...(options.utility ?? {}) }\n const scored = points.filter((point) => point.outcome)\n const minN = options.minN ?? 30\n const minAccepted = options.minAccepted ?? 5\n const minUtilityDelta = options.minUtilityDelta ?? 0\n const deltas: number[] = []\n const acceptedRewards: number[] = []\n const rejectedRewards: number[] = []\n let baselineUtility = 0\n let policyUtility = 0\n let accepted = 0\n let acceptedErrors = 0\n\n for (const point of scored) {\n const baseline = acceptUtility(point, utility)\n const decision = policy.decide(point)\n const candidate = policyDecisionUtility(point, decision.action, utility)\n const reward = rewardOf(point, utility)\n baselineUtility += baseline\n policyUtility += candidate\n deltas.push(candidate - baseline)\n if (decision.action === 'accept') {\n accepted++\n acceptedRewards.push(reward)\n if (reward < 0) acceptedErrors++\n } else {\n rejectedRewards.push(reward)\n }\n }\n\n const n = scored.length\n const rejected = Math.max(0, n - accepted)\n const ci = confidenceInterval(deltas, 0.95, { seed: options.seed ?? 17 })\n const reasons: string[] = []\n if (n < minN) reasons.push(`need at least ${minN} scored decisions, got ${n}`)\n if (accepted < minAccepted)\n reasons.push(`need at least ${minAccepted} accepted decisions, got ${accepted}`)\n if (ci.lower <= minUtilityDelta) {\n reasons.push(`utility CI lower bound ${ci.lower.toFixed(4)} does not clear ${minUtilityDelta}`)\n }\n const recommendation =\n n < minN || accepted < minAccepted\n ? 'need_more_data'\n : ci.lower > minUtilityDelta\n ? 'ship'\n : 'hold'\n\n return {\n policyId: policy.id,\n n,\n accepted,\n rejected,\n coverage: n > 0 ? accepted / n : 0,\n acceptedErrorRate: accepted > 0 ? acceptedErrors / accepted : 0,\n baselineUtility,\n policyUtility,\n utilityDelta: policyUtility - baselineUtility,\n utilityCi95: ci,\n rejectedMeanReward: rejectedRewards.length > 0 ? mean(rejectedRewards) : null,\n recommendation,\n reasons,\n }\n}\n\nfunction acceptUtility(\n point: BeliefDecisionPoint,\n utility: Required<BeliefUtilityOptions>,\n): number {\n return (\n rewardOf(point, utility) - utility.costWeight * (point.costUsd ?? point.outcome?.costUsd ?? 0)\n )\n}\n\nfunction policyDecisionUtility(\n point: BeliefDecisionPoint,\n action: BeliefPolicyAction,\n utility: Required<BeliefUtilityOptions>,\n): number {\n if (action === 'accept') return acceptUtility(point, utility)\n if (action === 'verify') return utility.deferUtility - utility.verifyCost\n if (action === 'ask') return utility.deferUtility - utility.askCost\n if (action === 'retry') return utility.deferUtility - utility.retryCost\n if (action === 'stop') return utility.stopUtility\n return utility.deferUtility\n}\n\nfunction rewardOf(point: BeliefDecisionPoint, utility: Required<BeliefUtilityOptions>): number {\n const outcome = point.outcome\n if (!outcome) return utility.failureUtility\n if (typeof outcome.reward === 'number') return 2 * outcome.reward - 1\n if (typeof outcome.score === 'number') return 2 * outcome.score - 1\n if (outcome.success === true) return utility.successUtility\n if (outcome.success === false) return utility.failureUtility\n return utility.failureUtility\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n","import { type BeliefCalibrationOptions, calibrateBeliefDecisions } from './calibration'\nimport { type BeliefOpeOptions, evaluateBeliefOffPolicy } from './ope'\nimport {\n type EvaluateBeliefSelectivePolicyOptions,\n evaluateBeliefSelectivePolicy,\n} from './selective'\nimport type {\n BeliefDecisionPoint,\n BeliefEvaluationStatus,\n BeliefOpeStatus,\n BeliefOpeTargetPolicy,\n BeliefPolicyEvaluationReport,\n BeliefSelectivePolicy,\n} from './types'\n\nexport interface AnalyzeBeliefPolicyOpeOptions extends BeliefOpeOptions {\n targetPolicy?: BeliefOpeTargetPolicy\n}\n\nexport interface AnalyzeBeliefPolicyOptions {\n points: BeliefDecisionPoint[]\n policy: BeliefSelectivePolicy\n selective?: EvaluateBeliefSelectivePolicyOptions\n calibration?: BeliefCalibrationOptions\n ope?: AnalyzeBeliefPolicyOpeOptions\n requireOpe?: boolean\n}\n\nexport function analyzeBeliefPolicy(\n options: AnalyzeBeliefPolicyOptions,\n): BeliefPolicyEvaluationReport {\n const selective = evaluateBeliefSelectivePolicy(options.points, options.policy, options.selective)\n const calibration = calibrateBeliefDecisions(options.points, options.calibration)\n const opeTargetPolicy = options.ope?.targetPolicy\n const ope = opeTargetPolicy\n ? evaluateBeliefOffPolicy(options.points, opeTargetPolicy, options.ope)\n : null\n const diagnostics: string[] = []\n const selectiveStatus = selective.recommendation\n const calibrationStatus = calibration ? 'supported' : 'unsupported'\n const opeRequested = options.requireOpe === true || options.ope !== undefined\n const opeStatus: BeliefOpeStatus = ope\n ? ope.support.supported\n ? 'supported'\n : 'unsupported'\n : opeRequested\n ? 'unsupported'\n : 'not_requested'\n\n if (!calibration) diagnostics.push('calibration unsupported: not enough confidence/outcome pairs')\n if (opeRequested && !opeTargetPolicy) diagnostics.push('OPE unsupported: missing target policy')\n else if (ope && !ope.support.supported)\n diagnostics.push(...ope.support.reasons.map((reason) => `OPE unsupported: ${reason}`))\n\n const status = overallStatus({\n selectiveStatus,\n hasCalibration: calibration !== null,\n opeStatus,\n opeRequested,\n })\n\n return {\n policyId: options.policy.id,\n n: options.points.length,\n status,\n selectiveStatus,\n calibrationStatus,\n opeStatus,\n ...(ope ? { opeTargetPolicyId: ope.targetPolicyId } : {}),\n selective,\n ...(calibration ? { calibration } : {}),\n ...(ope ? { ope } : {}),\n diagnostics,\n }\n}\n\nfunction overallStatus(options: {\n selectiveStatus: BeliefEvaluationStatus\n hasCalibration: boolean\n opeStatus: BeliefOpeStatus\n opeRequested: boolean\n}): BeliefEvaluationStatus {\n if (options.selectiveStatus === 'need_more_data' || !options.hasCalibration) {\n return 'need_more_data'\n }\n if (options.selectiveStatus === 'hold') return 'hold'\n if (options.opeRequested && options.opeStatus !== 'supported') return 'hold'\n return 'ship'\n}\n","import type { CodeAgentSessionSource } from '../contract/intake/code-agent-session'\nimport type { RunRecord } from '../run-record'\nimport { embeddedBeliefOpeTargetPolicy } from './ope'\nimport { type AnalyzeBeliefPolicyOptions, analyzeBeliefPolicy } from './report'\nimport { thresholdSelectivePolicy } from './selective'\nimport type {\n BeliefDecisionExtractionDiagnostic,\n BeliefDecisionExtractionReport,\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceRef,\n BeliefPolicyEvaluationReport,\n BeliefSelectivePolicy,\n} from './types'\n\nexport type CodeAgentBeliefDecisionTargetId =\n | 'failure-recovery'\n | 'tool-selection'\n | 'graph-completion'\n\nexport interface ExtractCodeAgentBeliefDecisionPointsOptions {\n source: CodeAgentSessionSource\n entries: unknown[]\n run: Pick<RunRecord, 'runId' | 'scenarioId' | 'outcome' | 'costUsd'>\n sourcePath?: string\n}\n\nexport interface BeliefDecisionInventoryBucket {\n id: string\n kind?: BeliefDecisionKind\n targetId?: CodeAgentBeliefDecisionTargetId\n n: number\n withOutcome: number\n withConfidence: number\n withCandidateActions: number\n withBehaviorProb: number\n withTargetProb: number\n successRate: number | null\n meanScore: number | null\n meanConfidence: number | null\n}\n\nexport interface BeliefDecisionInventoryReport {\n n: number\n byKind: BeliefDecisionInventoryBucket[]\n byTarget: BeliefDecisionInventoryBucket[]\n diagnostics: string[]\n}\n\nexport interface BeliefDecisionTargetSelection {\n id: CodeAgentBeliefDecisionTargetId\n label: string\n points: BeliefDecisionPoint[]\n support: BeliefDecisionInventoryBucket\n reasons: string[]\n}\n\nexport interface SelectBeliefDecisionTargetOptions {\n minN?: number\n minOutcomeCoverage?: number\n preferredTargets?: CodeAgentBeliefDecisionTargetId[]\n}\n\nexport interface AnalyzeBeliefDecisionCorpusOptions {\n points: BeliefDecisionPoint[]\n targetId?: CodeAgentBeliefDecisionTargetId\n minN?: number\n minOutcomeCoverage?: number\n minAccepted?: number\n confidenceThreshold?: number\n policy?: BeliefSelectivePolicy\n requireOpe?: boolean\n policyOptions?: Partial<AnalyzeBeliefPolicyOptions>\n}\n\nexport interface BeliefDecisionCorpusEvaluation {\n inventory: BeliefDecisionInventoryReport\n target?: BeliefDecisionTargetSelection\n policy?: BeliefSelectivePolicy\n evaluation?: BeliefPolicyEvaluationReport\n diagnostics: string[]\n}\n\ntype ObservedActionKind = 'tool' | 'patch' | 'terminal' | 'graph-completion'\n\ninterface ObservedAction {\n id: string\n localId: string\n stepIndex: number\n kind: ObservedActionKind\n action: string\n timestamp?: number\n success?: boolean\n costUsd?: number\n evidence: BeliefEvidenceRef[]\n metadata: Record<string, unknown>\n}\n\nconst FAILURE_RECOVERY_ACTIONS = ['retry', 'verify', 'continue', 'stop'] as const\n\nconst TARGET_LABELS: Record<CodeAgentBeliefDecisionTargetId, string> = {\n 'failure-recovery': 'Failure recovery after tool or patch failure',\n 'tool-selection': 'Tool/action selection',\n 'graph-completion': 'Graph completion decision',\n}\n\nexport function extractCodeAgentBeliefDecisionPoints(\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionExtractionReport {\n const entries = options.entries.filter(isRecord)\n const diagnostics: BeliefDecisionExtractionDiagnostic[] = []\n const observed = observedActionsFor(options.source, entries, options)\n const decisions: BeliefDecisionPoint[] = []\n\n for (const action of observed) {\n if (action.kind === 'tool' || action.kind === 'patch') {\n decisions.push(toolSelectionDecision(action, options))\n }\n if (action.kind === 'graph-completion') {\n decisions.push(graphCompletionDecision(action, options))\n }\n }\n\n for (const failed of observed) {\n if ((failed.kind !== 'tool' && failed.kind !== 'patch') || failed.success !== false) continue\n const next = observed.find(\n (candidate) =>\n candidate.stepIndex > failed.stepIndex &&\n (candidate.kind === 'tool' || candidate.kind === 'patch' || candidate.kind === 'terminal'),\n )\n if (!next) {\n diagnostics.push({\n runId: options.run.runId,\n severity: 'warning',\n reason: `${failed.id}: failed action has no observable follow-up decision`,\n })\n continue\n }\n decisions.push(failureRecoveryDecision(failed, next, options))\n }\n\n if (decisions.length === 0) {\n diagnostics.push({\n runId: options.run.runId,\n severity: 'info',\n reason: `no belief decision points extracted from ${options.source} entries`,\n })\n }\n\n return { decisions, diagnostics }\n}\n\nexport function inventoryBeliefDecisionPoints(\n points: BeliefDecisionPoint[],\n): BeliefDecisionInventoryReport {\n const byKind = [...groupBy(points, (point) => point.kind).entries()]\n .map(([kind, bucketPoints]) =>\n bucketFor(kind, bucketPoints, { kind: kind as BeliefDecisionKind }),\n )\n .sort(sortBuckets)\n const byTarget = [...groupBy(points, targetIdOf).entries()]\n .filter((entry): entry is [CodeAgentBeliefDecisionTargetId, BeliefDecisionPoint[]] => {\n return entry[0] !== undefined\n })\n .map(([targetId, bucketPoints]) => bucketFor(targetId, bucketPoints, { targetId }))\n .sort(sortBuckets)\n\n const diagnostics: string[] = []\n if (points.length === 0) diagnostics.push('no decision points available')\n for (const bucket of byTarget) {\n if (bucket.withOutcome < bucket.n) {\n diagnostics.push(`${bucket.id}: ${bucket.n - bucket.withOutcome} decision(s) missing outcome`)\n }\n if (bucket.withBehaviorProb < bucket.n || bucket.withTargetProb < bucket.n) {\n diagnostics.push(`${bucket.id}: OPE support incomplete`)\n }\n }\n\n return { n: points.length, byKind, byTarget, diagnostics }\n}\n\nexport function selectBeliefDecisionTarget(\n points: BeliefDecisionPoint[],\n options: SelectBeliefDecisionTargetOptions = {},\n): BeliefDecisionTargetSelection | null {\n const minN = options.minN ?? 10\n const minOutcomeCoverage = options.minOutcomeCoverage ?? 0.8\n const preferredTargets = options.preferredTargets ?? [\n 'failure-recovery',\n 'tool-selection',\n 'graph-completion',\n ]\n const inventory = inventoryBeliefDecisionPoints(points)\n\n for (const targetId of preferredTargets) {\n const support = inventory.byTarget.find((bucket) => bucket.targetId === targetId)\n if (!support) continue\n const reasons: string[] = []\n if (support.n < minN) reasons.push(`need at least ${minN} decisions, got ${support.n}`)\n const outcomeCoverage = support.n > 0 ? support.withOutcome / support.n : 0\n if (outcomeCoverage < minOutcomeCoverage) {\n reasons.push(\n `outcome coverage ${outcomeCoverage.toFixed(2)} below ${minOutcomeCoverage.toFixed(2)}`,\n )\n }\n if (reasons.length > 0) continue\n const targetPoints = points.filter((point) => targetIdOf(point) === targetId)\n return {\n id: targetId,\n label: TARGET_LABELS[targetId],\n points: targetPoints,\n support,\n reasons,\n }\n }\n\n return null\n}\n\nexport function analyzeBeliefDecisionCorpus(\n options: AnalyzeBeliefDecisionCorpusOptions,\n): BeliefDecisionCorpusEvaluation {\n const inventory = inventoryBeliefDecisionPoints(options.points)\n const diagnostics = [...inventory.diagnostics]\n const target =\n options.targetId !== undefined\n ? targetSelectionFor(options.points, options.targetId, options)\n : selectBeliefDecisionTarget(options.points, options)\n\n if (!target) {\n diagnostics.push('no decision target has enough support for policy evaluation')\n return { inventory, diagnostics }\n }\n\n const policy =\n options.policy ??\n thresholdSelectivePolicy({\n id: `${target.id}:confidence>=${options.confidenceThreshold ?? 0.5}`,\n confidenceThreshold: options.confidenceThreshold ?? 0.5,\n belowThresholdAction: 'verify',\n })\n const minN = options.minN ?? 10\n const evaluation = analyzeBeliefPolicy({\n points: target.points,\n policy,\n selective: {\n minN,\n minAccepted: options.minAccepted ?? Math.min(5, minN),\n minUtilityDelta: 0,\n ...(options.policyOptions?.selective ?? {}),\n },\n calibration: {\n minPairs: Math.min(10, minN),\n policy,\n region: 'all',\n ...(options.policyOptions?.calibration ?? {}),\n },\n ope: {\n targetPolicy: embeddedBeliefOpeTargetPolicy(`${target.id}:embedded-target-prob`),\n minEffectiveSampleSize: minN,\n ...(options.policyOptions?.ope ?? {}),\n },\n requireOpe: options.requireOpe ?? true,\n })\n\n return { inventory, target, policy, evaluation, diagnostics }\n}\n\nfunction observedActionsFor(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n switch (source) {\n case 'codex':\n return codexObservedActions(entries, options)\n case 'claude-code':\n return claudeObservedActions(entries, options)\n case 'opencode':\n return openCodeObservedActions(entries, options)\n case 'kimi-code':\n return kimiObservedActions(entries, options)\n case 'pi':\n return piObservedActions(entries, options)\n }\n}\n\nfunction codexObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const payload = record(entry.payload) ?? {}\n const entryType = stringField(entry, 'type')\n const payloadType = stringField(payload, 'type')\n const timestamp = timestampMs(entry.timestamp)\n if (entryType === 'response_item') {\n if (payloadType === 'function_call' || payloadType === 'custom_tool_call') {\n const callId =\n stringField(payload, 'call_id') ?? stringField(payload, 'id') ?? `${actions.length}`\n const action = observedAction({\n options,\n localId: callId,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(payload, 'name') ?? payloadType,\n timestamp,\n metadata: { sourceEventType: entryType, payloadType },\n })\n calls.set(callId, action)\n actions.push(action)\n }\n if (payloadType === 'function_call_output' || payloadType === 'custom_tool_call_output') {\n const callId = stringField(payload, 'call_id') ?? stringField(payload, 'id')\n const action = callId ? calls.get(callId) : undefined\n if (action) action.success = !looksLikeError(payload.output)\n }\n }\n if (entryType === 'event_msg') {\n if (payloadType === 'patch_apply_end') {\n actions.push(\n observedAction({\n options,\n localId: stringField(payload, 'call_id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n action: 'patch',\n timestamp,\n success: typeof payload.success === 'boolean' ? payload.success : undefined,\n metadata: { sourceEventType: entryType, payloadType },\n }),\n )\n }\n if (payloadType === 'task_complete' || payloadType === 'turn_aborted') {\n actions.push(\n observedAction({\n options,\n localId: `${payloadType}-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: payloadType === 'task_complete' ? 'stop' : 'abort',\n timestamp,\n success: payloadType === 'task_complete',\n metadata: { sourceEventType: entryType, payloadType },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction claudeObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const timestamp = timestampMs(entry.timestamp)\n const message = record(entry.message)\n const content = Array.isArray(message?.content) ? message.content : []\n for (const item of content) {\n const part = record(item)\n if (!part) continue\n const partType = stringField(part, 'type')\n if (partType === 'tool_use') {\n const id = stringField(part, 'id') ?? `tool-${actions.length}`\n const action = observedAction({\n options,\n localId: id,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(part, 'name') ?? 'tool',\n timestamp,\n metadata: { sourceEventType: stringField(entry, 'type'), partType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (partType === 'tool_result') {\n const id = stringField(part, 'tool_use_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.success = part.is_error !== true\n }\n }\n if (stringField(entry, 'type') === 'pr-link') {\n actions.push(\n observedAction({\n options,\n localId: `pr-link-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: 'stop',\n timestamp,\n success: true,\n metadata: { sourceEventType: 'pr-link' },\n }),\n )\n }\n }\n return actions\n}\n\nfunction openCodeObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n for (const entry of entries) {\n const type = stringField(entry, 'type')\n const role = stringField(entry, 'role')\n const time = record(entry.time)\n const timestamp = timestampMs(time?.created)\n if (type === 'tool') {\n const state = record(entry.state)\n const status = stringField(state ?? {}, 'status')\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(entry, 'tool') ?? 'tool',\n timestamp,\n success: status === 'completed' ? true : status === 'error' ? false : undefined,\n metadata: { sourceEventType: type, status },\n }),\n )\n }\n if (type === 'patch') {\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n action: 'patch',\n timestamp,\n success: true,\n metadata: { sourceEventType: type },\n }),\n )\n }\n if (role === 'assistant') {\n const finish = stringField(entry, 'finish')\n if (finish === 'stop' || finish === 'error') {\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `terminal-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: finish === 'stop' ? 'stop' : 'abort',\n timestamp: timestampMs(time?.completed) ?? timestamp,\n success: finish === 'stop',\n costUsd: numberField(entry, 'cost'),\n metadata: { sourceEventType: 'assistant', finish },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction kimiObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const timestamp = timestampMs(entry.timestamp)\n const message = record(entry.message)\n const messageType = stringField(message ?? {}, 'type')\n const payload = record(message?.payload) ?? {}\n if (messageType === 'ToolCall') {\n const call = record(payload.function)\n const id = stringField(payload, 'id') ?? `tool-${actions.length}`\n const action = observedAction({\n options,\n localId: id,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(call ?? {}, 'name') ?? 'tool',\n timestamp,\n metadata: { sourceEventType: messageType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (messageType === 'ToolResult') {\n const id = stringField(payload, 'tool_call_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.success = record(payload.return_value)?.is_error !== true\n }\n if (messageType === 'TurnEnd' || messageType === 'StepInterrupted') {\n actions.push(\n observedAction({\n options,\n localId: `${messageType}-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: messageType === 'TurnEnd' ? 'stop' : 'abort',\n timestamp,\n success: messageType === 'TurnEnd',\n metadata: { sourceEventType: messageType },\n }),\n )\n }\n }\n return actions\n}\n\nfunction piObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n for (const entry of entries) {\n const nodes = Array.isArray(entry.nodes) ? entry.nodes : []\n for (const node of nodes) {\n const obj = record(node)\n const ir = record(obj?.ir) ?? obj\n const kind = stringField(ir ?? {}, 'kind')\n if (kind === 'ToolInvocation') {\n actions.push(\n observedAction({\n options,\n localId:\n stringField(ir ?? {}, 'id') ??\n stringField(obj ?? {}, 'id') ??\n `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n action: 'graph-tool',\n timestamp: timestampMs(ir?.createdAt),\n success: undefined,\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n if (kind === 'ToolResult') {\n const prior = [...actions].reverse().find((action) => action.kind === 'tool')\n if (prior) prior.success = true\n }\n if (kind === 'CompletionDecision') {\n actions.push(\n observedAction({\n options,\n localId:\n stringField(ir ?? {}, 'id') ??\n stringField(obj ?? {}, 'id') ??\n `completion-${actions.length}`,\n stepIndex: actions.length,\n kind: 'graph-completion',\n action: 'complete',\n timestamp: timestampMs(ir?.createdAt),\n success: true,\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction toolSelectionDecision(\n action: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n return {\n id: `${options.run.runId}:tool-selection:${action.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: action.stepIndex,\n kind: 'tool-select',\n chosenAction: action.action,\n candidateActions: [action.action],\n confidence: 0.65,\n costUsd: action.costUsd,\n evidence: action.evidence,\n outcome: outcomeFromAction(action, options.run),\n metadata: {\n target: 'tool-selection',\n source: options.source,\n actionKind: action.kind,\n confidenceSource: 'fixed-observed-action-prior',\n ...action.metadata,\n },\n }\n}\n\nfunction graphCompletionDecision(\n action: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n return {\n id: `${options.run.runId}:graph-completion:${action.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: action.stepIndex,\n kind: 'stop',\n chosenAction: 'complete',\n candidateActions: ['complete', 'continue', 'verify'],\n confidence: 0.75,\n evidence: action.evidence,\n outcome: outcomeFromAction(action, options.run),\n metadata: {\n target: 'graph-completion',\n source: options.source,\n confidenceSource: 'fixed-graph-completion-prior',\n ...action.metadata,\n },\n }\n}\n\nfunction failureRecoveryDecision(\n failed: ObservedAction,\n next: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n const chosenAction = classifyFailureRecovery(failed, next)\n return {\n id: `${options.run.runId}:failure-recovery:${failed.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: failed.stepIndex,\n kind: 'retry',\n chosenAction,\n candidateActions: [...FAILURE_RECOVERY_ACTIONS],\n confidence: recoveryConfidence(chosenAction),\n evidence: [...failed.evidence, ...next.evidence],\n outcome: outcomeFromAction(next, options.run),\n metadata: {\n target: 'failure-recovery',\n source: options.source,\n failedActionKind: failed.kind,\n failedAction: failed.action,\n nextActionKind: next.kind,\n nextAction: next.action,\n confidenceSource: 'heuristic-observed-follow-up',\n },\n }\n}\n\nfunction classifyFailureRecovery(\n failed: ObservedAction,\n next: ObservedAction,\n): (typeof FAILURE_RECOVERY_ACTIONS)[number] {\n if (next.kind === 'terminal') return 'stop'\n if (isVerificationAction(next.action)) return 'verify'\n if (next.kind === failed.kind && next.action === failed.action) return 'retry'\n return 'continue'\n}\n\nfunction recoveryConfidence(action: string): number {\n if (action === 'verify') return 0.8\n if (action === 'retry') return 0.6\n if (action === 'stop') return 0.55\n return 0.35\n}\n\nfunction isVerificationAction(action: string): boolean {\n const normalized = action.toLowerCase()\n return (\n normalized.includes('verify') ||\n normalized.includes('test') ||\n normalized.includes('check') ||\n normalized.includes('lint') ||\n normalized.includes('build') ||\n normalized.includes('typecheck') ||\n normalized.includes('pytest') ||\n normalized.includes('vitest') ||\n normalized.includes('tsc')\n )\n}\n\nfunction outcomeFromAction(\n action: ObservedAction,\n run: Pick<RunRecord, 'outcome' | 'costUsd'>,\n): BeliefDecisionOutcome | undefined {\n const runScore = scoreFromRun(run)\n const success = action.success ?? (runScore !== null ? runScore >= 0.5 : undefined)\n const score = action.success === undefined ? (runScore ?? undefined) : action.success ? 1 : 0\n if (success === undefined && score === undefined) return undefined\n return {\n ...(success !== undefined ? { success } : {}),\n ...(score !== undefined ? { score, reward: score } : {}),\n ...(action.costUsd !== undefined ? { costUsd: action.costUsd } : {}),\n metadata: {\n outcomeSource: action.success === undefined ? 'run-score' : 'observed-action-status',\n },\n }\n}\n\nfunction observedAction(input: {\n options: ExtractCodeAgentBeliefDecisionPointsOptions\n localId: string\n stepIndex: number\n kind: ObservedActionKind\n action: string\n timestamp?: number\n success?: boolean\n costUsd?: number\n metadata?: Record<string, unknown>\n}): ObservedAction {\n const id = `${input.options.run.runId}:${input.options.source}:${input.localId}`\n return {\n id,\n localId: input.localId,\n stepIndex: input.stepIndex,\n kind: input.kind,\n action: input.action,\n timestamp: input.timestamp,\n success: input.success,\n costUsd: input.costUsd,\n evidence: [\n {\n source: 'event',\n id,\n runId: input.options.run.runId,\n detail: input.action,\n metadata: {\n source: input.options.source,\n sourcePath: input.options.sourcePath,\n ...input.metadata,\n },\n },\n ],\n metadata: input.metadata ?? {},\n }\n}\n\nfunction targetSelectionFor(\n points: BeliefDecisionPoint[],\n targetId: CodeAgentBeliefDecisionTargetId,\n options: SelectBeliefDecisionTargetOptions,\n): BeliefDecisionTargetSelection | null {\n const targetPoints = points.filter((point) => targetIdOf(point) === targetId)\n if (targetPoints.length === 0) return null\n const support = bucketFor(targetId, targetPoints, { targetId })\n const minN = options.minN ?? 10\n const minOutcomeCoverage = options.minOutcomeCoverage ?? 0.8\n const reasons: string[] = []\n if (support.n < minN) reasons.push(`need at least ${minN} decisions, got ${support.n}`)\n const outcomeCoverage = support.n > 0 ? support.withOutcome / support.n : 0\n if (outcomeCoverage < minOutcomeCoverage) {\n reasons.push(\n `outcome coverage ${outcomeCoverage.toFixed(2)} below ${minOutcomeCoverage.toFixed(2)}`,\n )\n }\n if (reasons.length > 0) return null\n return { id: targetId, label: TARGET_LABELS[targetId], points: targetPoints, support, reasons }\n}\n\nfunction bucketFor(\n id: string,\n points: BeliefDecisionPoint[],\n identity: { kind?: BeliefDecisionKind; targetId?: CodeAgentBeliefDecisionTargetId },\n): BeliefDecisionInventoryBucket {\n const outcomes = points.filter((point) => point.outcome)\n const scores = outcomes\n .map((point) => outcomeScore(point.outcome))\n .filter((score): score is number => score !== null)\n const confidences = points\n .map((point) => point.confidence)\n .filter((confidence): confidence is number => typeof confidence === 'number')\n const successes = outcomes.filter((point) => point.outcome?.success === true).length\n const successDenominator = outcomes.filter(\n (point) => typeof point.outcome?.success === 'boolean',\n ).length\n return {\n id,\n ...identity,\n n: points.length,\n withOutcome: outcomes.length,\n withConfidence: confidences.length,\n withCandidateActions: points.filter((point) => (point.candidateActions?.length ?? 0) > 0)\n .length,\n withBehaviorProb: points.filter((point) => point.behaviorProb !== undefined).length,\n withTargetProb: points.filter((point) => point.targetProb !== undefined).length,\n successRate: successDenominator > 0 ? successes / successDenominator : null,\n meanScore: scores.length > 0 ? mean(scores) : null,\n meanConfidence: confidences.length > 0 ? mean(confidences) : null,\n }\n}\n\nfunction targetIdOf(point: BeliefDecisionPoint): CodeAgentBeliefDecisionTargetId | undefined {\n const target = point.metadata?.target\n if (target === 'failure-recovery' || target === 'tool-selection' || target === 'graph-completion')\n return target\n return undefined\n}\n\nfunction outcomeScore(outcome: BeliefDecisionOutcome | undefined): number | null {\n if (!outcome) return null\n if (typeof outcome.score === 'number') return outcome.score\n if (typeof outcome.reward === 'number') return outcome.reward\n if (outcome.success === true) return 1\n if (outcome.success === false) return 0\n return null\n}\n\nfunction scoreFromRun(run: Pick<RunRecord, 'outcome'>): number | null {\n if (typeof run.outcome.holdoutScore === 'number') return run.outcome.holdoutScore\n if (typeof run.outcome.searchScore === 'number') return run.outcome.searchScore\n return null\n}\n\nfunction sortBuckets(a: BeliefDecisionInventoryBucket, b: BeliefDecisionInventoryBucket): number {\n return b.n - a.n || a.id.localeCompare(b.id)\n}\n\nfunction groupBy<T, K>(values: T[], keyOf: (value: T) => K): Map<K, T[]> {\n const map = new Map<K, T[]>()\n for (const value of values) {\n const key = keyOf(value)\n const bucket = map.get(key)\n if (bucket) bucket.push(value)\n else map.set(key, [value])\n }\n return map\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n\nfunction looksLikeError(value: unknown): boolean {\n if (isRecord(value)) {\n if (value.is_error === true || value.error === true) return true\n if ('Err' in value) return true\n }\n if (typeof value !== 'string') return false\n return /\\b(error|failed|exception|traceback)\\b/i.test(value)\n}\n\nfunction timestampMs(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value > 1_000_000_000_000 ? value : value * 1000\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Date.parse(value)\n return Number.isFinite(parsed) ? parsed : undefined\n }\n return undefined\n}\n\nfunction stringField(obj: Record<string, unknown>, key: string): string | undefined {\n const value = obj[key]\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction numberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = obj[key]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n","import {\n type AnalyzeBeliefDecisionCorpusOptions,\n analyzeBeliefDecisionCorpus,\n type BeliefDecisionCorpusEvaluation,\n} from './code-agent-corpus'\n\nexport type BeliefResearchClaimScope = 'selective' | 'counterfactual'\nexport type BeliefResearchEvidenceStatus = 'supported' | 'blocked'\nexport type BeliefResearchGateId = 'corpus' | 'selective' | 'calibration' | 'ope'\n\nexport interface BeliefResearchEvidenceGate {\n id: BeliefResearchGateId\n status: BeliefResearchEvidenceStatus\n blockers: string[]\n caveats: string[]\n}\n\nexport interface BeliefDecisionResearchEvidencePacket {\n claimScope: BeliefResearchClaimScope\n status: BeliefResearchEvidenceStatus\n analysis: BeliefDecisionCorpusEvaluation\n gates: BeliefResearchEvidenceGate[]\n blockers: string[]\n caveats: string[]\n}\n\nexport interface BuildBeliefDecisionResearchEvidencePacketOptions\n extends AnalyzeBeliefDecisionCorpusOptions {\n claimScope?: BeliefResearchClaimScope\n}\n\nexport function buildBeliefDecisionResearchEvidencePacket(\n options: BuildBeliefDecisionResearchEvidencePacketOptions,\n): BeliefDecisionResearchEvidencePacket {\n const claimScope = options.claimScope ?? 'counterfactual'\n const requireOpe = claimScope === 'counterfactual'\n const analysis = analyzeBeliefDecisionCorpus({\n ...options,\n requireOpe: options.requireOpe ?? requireOpe,\n })\n const gates = [\n corpusGate(analysis),\n selectiveGate(analysis),\n calibrationGate(analysis),\n ...(requireOpe ? [opeGate(analysis)] : []),\n ]\n const caveats = unique([\n ...gates.flatMap((gate) => gate.caveats),\n ...(claimScope === 'selective'\n ? ['counterfactual claims excluded: OPE support was not required']\n : []),\n ])\n\n return {\n claimScope,\n status: gates.every((gate) => gate.status === 'supported') ? 'supported' : 'blocked',\n analysis,\n gates,\n blockers: unique(gates.flatMap((gate) => gate.blockers)),\n caveats,\n }\n}\n\nfunction corpusGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const support = analysis.target?.support\n if (!support) {\n return blocked('corpus', 'no decision target has enough outcome support')\n }\n\n const caveats =\n support.withBehaviorProb < support.n || support.withTargetProb < support.n\n ? ['propensity support incomplete; counterfactual claims will require OPE support']\n : []\n\n return { id: 'corpus', status: 'supported', blockers: [], caveats }\n}\n\nfunction selectiveGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('selective', 'no policy evaluation was produced')\n if (evaluation.selectiveStatus !== 'ship') {\n return blocked(\n 'selective',\n ...orDefault(\n evaluation.selective.reasons,\n `selective status is ${evaluation.selectiveStatus}`,\n ),\n )\n }\n return { id: 'selective', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction calibrationGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('calibration', 'no policy evaluation was produced')\n if (evaluation.calibrationStatus !== 'supported') {\n return blocked('calibration', 'not enough confidence/outcome pairs for calibration')\n }\n return { id: 'calibration', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction opeGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('ope', 'no policy evaluation was produced')\n if (evaluation.opeStatus !== 'supported') {\n const reasons =\n evaluation.ope?.support.reasons ??\n evaluation.diagnostics.filter((diagnostic) => diagnostic.includes('OPE'))\n return blocked('ope', ...orDefault(reasons, 'missing OPE support'))\n }\n return { id: 'ope', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction blocked(id: BeliefResearchGateId, ...blockers: string[]): BeliefResearchEvidenceGate {\n return { id, status: 'blocked', blockers, caveats: [] }\n}\n\nfunction orDefault(values: string[], fallback: string): string[] {\n return values.length > 0 ? values : [fallback]\n}\n\nfunction unique(values: string[]): string[] {\n return [...new Set(values)]\n}\n","import {\n type CodeAgentSessionDiagnostic,\n type CodeAgentSessionIntakeOptions,\n type CodeAgentSessionIntakeResult,\n type CodeAgentSessionMetrics,\n type CodeAgentSessionSource,\n fromClaudeCodeSession,\n fromCodexSession,\n fromKimiCodeSession,\n fromOpenCodeSession,\n fromPiSession,\n} from '../contract/intake/code-agent-session'\nimport type { RunRecord } from '../run-record'\nimport {\n type BeliefDecisionInventoryReport,\n extractCodeAgentBeliefDecisionPoints,\n inventoryBeliefDecisionPoints,\n} from './code-agent-corpus'\nimport {\n type BeliefDecisionResearchEvidencePacket,\n type BuildBeliefDecisionResearchEvidencePacketOptions,\n buildBeliefDecisionResearchEvidencePacket,\n} from './research-evidence'\nimport type { BeliefDecisionExtractionDiagnostic, BeliefDecisionPoint } from './types'\n\nexport interface CodeAgentBeliefSession extends CodeAgentSessionIntakeOptions {\n source: CodeAgentSessionSource\n}\n\nexport interface BuildCodeAgentBeliefEvidenceCorpusOptions\n extends Omit<BuildBeliefDecisionResearchEvidencePacketOptions, 'points'> {\n sessions: CodeAgentBeliefSession[]\n}\n\nexport interface CodeAgentBeliefEvidenceCorpus {\n runs: RunRecord[]\n metrics: CodeAgentSessionMetrics[]\n intakeDiagnostics: CodeAgentSessionDiagnostic[]\n extractionDiagnostics: BeliefDecisionExtractionDiagnostic[]\n decisions: BeliefDecisionPoint[]\n inventory: BeliefDecisionInventoryReport\n evidence: BeliefDecisionResearchEvidencePacket\n}\n\nexport function buildCodeAgentBeliefEvidenceCorpus(\n options: BuildCodeAgentBeliefEvidenceCorpusOptions,\n): CodeAgentBeliefEvidenceCorpus {\n const { sessions, ...evidenceOptions } = options\n const runs: RunRecord[] = []\n const metrics: CodeAgentSessionMetrics[] = []\n const intakeDiagnostics: CodeAgentSessionDiagnostic[] = []\n const extractionDiagnostics: BeliefDecisionExtractionDiagnostic[] = []\n const decisions: BeliefDecisionPoint[] = []\n\n for (const session of sessions) {\n const intake = fromCodeAgentBeliefSession(session)\n runs.push(...intake.runs)\n metrics.push(...intake.metrics)\n intakeDiagnostics.push(...intake.diagnostics)\n\n for (const run of intake.runs) {\n const extraction = extractCodeAgentBeliefDecisionPoints({\n source: session.source,\n entries: session.entries,\n run,\n sourcePath: session.sourcePath,\n })\n decisions.push(...extraction.decisions)\n extractionDiagnostics.push(...extraction.diagnostics)\n }\n }\n\n const evidence = buildBeliefDecisionResearchEvidencePacket({\n ...evidenceOptions,\n points: decisions,\n })\n\n return {\n runs,\n metrics,\n intakeDiagnostics,\n extractionDiagnostics,\n decisions,\n inventory: inventoryBeliefDecisionPoints(decisions),\n evidence,\n }\n}\n\nfunction fromCodeAgentBeliefSession(session: CodeAgentBeliefSession): CodeAgentSessionIntakeResult {\n switch (session.source) {\n case 'codex':\n return fromCodexSession(session)\n case 'claude-code':\n return fromClaudeCodeSession(session)\n case 'opencode':\n return fromOpenCodeSession(session)\n case 'kimi-code':\n return fromKimiCodeSession(session)\n case 'pi':\n return fromPiSession(session)\n }\n}\n","import type { CalibrationReport } from '../meta-eval/calibration'\nimport type { OffPolicyEstimate } from '../rl/off-policy'\n\nexport const BELIEF_DECISION_KINDS = [\n 'continue',\n 'verify',\n 'ask',\n 'retry',\n 'stop',\n 'memory-write',\n 'memory-read',\n 'tool-select',\n 'skill-select',\n 'workflow-select',\n 'surface-promote',\n] as const\n\nexport type BeliefDecisionKind = (typeof BELIEF_DECISION_KINDS)[number]\n\nexport const BELIEF_EVIDENCE_SOURCES = [\n 'run',\n 'span',\n 'event',\n 'finding',\n 'memory',\n 'knowledge',\n 'policy',\n] as const\n\nexport type BeliefEvidenceSource = (typeof BELIEF_EVIDENCE_SOURCES)[number]\n\nexport const BELIEF_EVIDENCE_QUALITIES = [\n 'direct',\n 'derived',\n 'self-reported',\n 'unverified',\n 'stale',\n 'contradicted',\n] as const\n\nexport type BeliefEvidenceQuality = (typeof BELIEF_EVIDENCE_QUALITIES)[number]\n\nexport const BELIEF_EVALUATION_CRITERIA = [\n {\n id: 'capture-integrity',\n label: 'Capture integrity',\n reasonCodes: ['trace-missing', 'run-record-missing', 'backend-integrity-missing'],\n },\n {\n id: 'decision-completeness',\n label: 'Decision completeness',\n reasonCodes: [\n 'candidate-actions-missing',\n 'chosen-action-missing',\n 'decision-evidence-missing',\n ],\n },\n {\n id: 'evidence-quality',\n label: 'Evidence quality',\n reasonCodes: [\n 'evidence-stale',\n 'evidence-contradictory',\n 'evidence-unverified',\n 'evidence-self-reported',\n ],\n },\n {\n id: 'outcome-quality',\n label: 'Outcome quality',\n reasonCodes: ['outcome-missing', 'outcome-delayed', 'cost-missing'],\n },\n {\n id: 'calibration',\n label: 'Calibration',\n reasonCodes: ['confidence-missing', 'calibration-unsupported', 'calibration-gap-high'],\n },\n {\n id: 'accepted-region-risk',\n label: 'Accepted-region risk',\n reasonCodes: ['accepted-error-high', 'coverage-too-low'],\n },\n {\n id: 'policy-value',\n label: 'Policy value',\n reasonCodes: ['utility-lift-missing', 'baseline-dominates', 'cost-too-high'],\n },\n {\n id: 'ope-support',\n label: 'OPE support',\n reasonCodes: [\n 'behavior-propensity-missing',\n 'behavior-propensity-invalid',\n 'target-propensity-missing',\n 'target-propensity-invalid',\n 'effective-sample-size-low',\n 'importance-weight-high',\n ],\n },\n {\n id: 'memory-health',\n label: 'Memory health',\n reasonCodes: [\n 'memory-stale',\n 'memory-poisoning-risk',\n 'context-bloat',\n 'memory-write-unverified',\n ],\n },\n {\n id: 'surface-attribution',\n label: 'Surface attribution',\n reasonCodes: ['surface-claim-unsupported', 'causal-attribution-missing'],\n },\n {\n id: 'generalization',\n label: 'Generalization',\n reasonCodes: [\n 'split-missing',\n 'holdout-regression',\n 'task-family-coverage-low',\n 'leakage-risk',\n ],\n },\n {\n id: 'promotion',\n label: 'Promotion',\n reasonCodes: ['negative-control-failed', 'promotion-gate-failed', 'human-review-required'],\n },\n] as const\n\nexport type BeliefEvaluationCriterionId = (typeof BELIEF_EVALUATION_CRITERIA)[number]['id']\nexport type BeliefDecisionReasonCode =\n (typeof BELIEF_EVALUATION_CRITERIA)[number]['reasonCodes'][number]\n\nexport interface BeliefDecisionReason {\n code: BeliefDecisionReasonCode\n criterion?: BeliefEvaluationCriterionId\n detail?: string\n evidenceIds?: string[]\n metadata?: Record<string, unknown>\n}\n\nexport function isBeliefDecisionKind(value: unknown): value is BeliefDecisionKind {\n return typeof value === 'string' && BELIEF_DECISION_KINDS.includes(value as BeliefDecisionKind)\n}\n\nexport function isBeliefEvidenceSource(value: unknown): value is BeliefEvidenceSource {\n return (\n typeof value === 'string' && BELIEF_EVIDENCE_SOURCES.includes(value as BeliefEvidenceSource)\n )\n}\n\nexport interface BeliefEvidenceRef {\n source: BeliefEvidenceSource\n id: string\n runId?: string\n spanId?: string\n eventId?: string\n detail?: string\n quality?: BeliefEvidenceQuality\n observedAt?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionOutcome {\n success?: boolean\n score?: number\n reward?: number\n costUsd?: number\n observedAt?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionPoint {\n id: string\n runId: string\n scenarioId?: string\n stepIndex: number\n kind: BeliefDecisionKind\n chosenAction: string\n candidateActions?: string[]\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n evidence: BeliefEvidenceRef[]\n outcome?: BeliefDecisionOutcome\n reasons?: BeliefDecisionReason[]\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionExtractionDiagnostic {\n runId: string\n eventId?: string\n severity: 'info' | 'warning' | 'error'\n reason: string\n}\n\nexport interface BeliefDecisionExtractionReport {\n decisions: BeliefDecisionPoint[]\n diagnostics: BeliefDecisionExtractionDiagnostic[]\n}\n\nexport type BeliefPolicyAction = 'accept' | 'defer' | 'verify' | 'ask' | 'retry' | 'stop'\n\nexport interface BeliefPolicyDecision {\n action: BeliefPolicyAction\n confidence?: number\n targetProb?: number\n qHat?: number | null\n reason?: string\n reasons?: BeliefDecisionReason[]\n}\n\nexport interface BeliefSelectivePolicy {\n id: string\n decide(point: BeliefDecisionPoint): BeliefPolicyDecision\n}\n\nexport interface BeliefOpeTargetPolicy {\n id: string\n targetProbOf(point: BeliefDecisionPoint): number | null | undefined\n qHatOf?(point: BeliefDecisionPoint): number | null | undefined\n}\n\nexport interface BeliefUtilityOptions {\n successUtility?: number\n failureUtility?: number\n deferUtility?: number\n verifyCost?: number\n askCost?: number\n retryCost?: number\n stopUtility?: number\n costWeight?: number\n}\n\nexport interface BeliefSelectivePolicyMetrics {\n policyId: string\n n: number\n accepted: number\n rejected: number\n coverage: number\n acceptedErrorRate: number\n baselineUtility: number\n policyUtility: number\n utilityDelta: number\n utilityCi95: { mean: number; lower: number; upper: number }\n rejectedMeanReward: number | null\n recommendation: 'ship' | 'hold' | 'need_more_data'\n reasons: string[]\n}\n\nexport interface BeliefOpeSupportDiagnostics {\n supported: boolean\n n: number\n dropped: number\n effectiveSampleSize: number\n effectiveSampleRatio: number\n maxImportanceWeight: number\n reasons: string[]\n}\n\nexport interface BeliefOpeReport {\n targetPolicyId: string\n ips: OffPolicyEstimate\n snips: OffPolicyEstimate\n dr: OffPolicyEstimate\n support: BeliefOpeSupportDiagnostics\n}\n\nexport type BeliefEvaluationStatus = 'ship' | 'hold' | 'need_more_data'\nexport type BeliefCalibrationStatus = 'supported' | 'unsupported'\nexport type BeliefOpeStatus = 'supported' | 'unsupported' | 'not_requested'\n\nexport interface BeliefPolicyEvaluationReport {\n policyId: string\n n: number\n status: BeliefEvaluationStatus\n selectiveStatus: BeliefEvaluationStatus\n calibrationStatus: BeliefCalibrationStatus\n opeStatus: BeliefOpeStatus\n opeTargetPolicyId?: string\n selective: BeliefSelectivePolicyMetrics\n calibration?: CalibrationReport\n ope?: BeliefOpeReport\n diagnostics: string[]\n}\n","import type { TraceEvent } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\nimport type {\n BeliefDecisionExtractionDiagnostic,\n BeliefDecisionExtractionReport,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceRef,\n} from './types'\nimport { isBeliefDecisionKind } from './types'\n\nexport interface ExtractBeliefDecisionPointsOptions {\n runIds?: string[]\n}\n\nconst DECISION_MARKERS = new Set(['belief_decision', 'belief.decision', 'decision_point'])\n\nexport async function extractBeliefDecisionPoints(\n store: TraceStore,\n options: ExtractBeliefDecisionPointsOptions = {},\n): Promise<BeliefDecisionExtractionReport> {\n const runs = options.runIds\n ? (await Promise.all(options.runIds.map((runId) => store.getRun(runId)))).filter(Boolean)\n : await store.listRuns()\n const decisions: BeliefDecisionPoint[] = []\n const diagnostics: BeliefDecisionExtractionDiagnostic[] = []\n\n for (const run of runs) {\n if (!run) continue\n const events = await store.events({ runId: run.runId })\n const spans = await store.spans({ runId: run.runId })\n const spanIds = new Set(spans.map((span) => span.spanId))\n let stepIndex = 0\n for (const event of [...events].sort((a, b) => a.timestamp - b.timestamp)) {\n const parsed = parseDecisionEvent(event, {\n scenarioId: run.scenarioId,\n stepIndex,\n spanExists: event.spanId ? spanIds.has(event.spanId) : false,\n })\n if (!parsed) continue\n if ('diagnostic' in parsed) {\n diagnostics.push(parsed.diagnostic)\n continue\n }\n decisions.push(parsed.decision)\n stepIndex++\n }\n }\n\n return { decisions, diagnostics }\n}\n\nfunction parseDecisionEvent(\n event: TraceEvent,\n context: { scenarioId?: string; stepIndex: number; spanExists: boolean },\n): { decision: BeliefDecisionPoint } | { diagnostic: BeliefDecisionExtractionDiagnostic } | null {\n const payload = event.payload\n const marker = stringField(payload, 'kind') ?? stringField(payload, 'type')\n if (!marker || !DECISION_MARKERS.has(marker)) return null\n\n const decisionKind = stringField(payload, 'decisionKind')\n if (!isBeliefDecisionKind(decisionKind)) {\n return {\n diagnostic: {\n runId: event.runId,\n eventId: event.eventId,\n severity: 'warning',\n reason: `belief decision event has unsupported decisionKind \"${decisionKind ?? ''}\"`,\n },\n }\n }\n\n const chosenAction = stringField(payload, 'chosenAction')\n if (!chosenAction) {\n return {\n diagnostic: {\n runId: event.runId,\n eventId: event.eventId,\n severity: 'warning',\n reason: 'belief decision event is missing chosenAction',\n },\n }\n }\n\n const evidence: BeliefEvidenceRef[] = [\n {\n source: 'event',\n id: event.eventId,\n runId: event.runId,\n eventId: event.eventId,\n quality: 'direct',\n },\n ]\n if (event.spanId && context.spanExists) {\n evidence.push({\n source: 'span',\n id: event.spanId,\n runId: event.runId,\n spanId: event.spanId,\n quality: 'direct',\n })\n }\n\n return {\n decision: {\n id: stringField(payload, 'id') ?? event.eventId,\n runId: event.runId,\n scenarioId: stringField(payload, 'scenarioId') ?? context.scenarioId,\n stepIndex: numberField(payload, 'stepIndex') ?? context.stepIndex,\n kind: decisionKind,\n chosenAction,\n candidateActions: stringArrayField(payload, 'candidateActions'),\n confidence: finiteUnitField(payload, 'confidence'),\n behaviorProb: numberField(payload, 'behaviorProb'),\n targetProb: numberField(payload, 'targetProb'),\n qHat: finiteUnitField(payload, 'qHat'),\n costUsd: nonNegativeNumberField(payload, 'costUsd'),\n evidence,\n outcome: parseOutcome(payload),\n metadata: recordField(payload, 'metadata'),\n },\n }\n}\n\nfunction parseOutcome(payload: Record<string, unknown>): BeliefDecisionOutcome | undefined {\n const value = recordField(payload, 'outcome')\n if (!value) return undefined\n return {\n success: typeof value.success === 'boolean' ? value.success : undefined,\n score: finiteUnitField(value, 'score'),\n reward: finiteUnitField(value, 'reward'),\n costUsd: nonNegativeNumberField(value, 'costUsd'),\n observedAt: stringField(value, 'observedAt'),\n metadata: recordField(value, 'metadata'),\n }\n}\n\nfunction stringField(obj: Record<string, unknown>, key: string): string | undefined {\n const value = obj[key]\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction numberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = obj[key]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction finiteUnitField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = numberField(obj, key)\n return value === undefined ? undefined : Math.max(0, Math.min(1, value))\n}\n\nfunction nonNegativeNumberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = numberField(obj, key)\n return value === undefined ? undefined : Math.max(0, value)\n}\n\nfunction stringArrayField(obj: Record<string, unknown>, key: string): string[] | undefined {\n const value = obj[key]\n if (!Array.isArray(value)) return undefined\n const strings = value.filter(\n (item): item is string => typeof item === 'string' && item.length > 0,\n )\n return strings.length > 0 ? strings : undefined\n}\n\nfunction recordField(\n obj: Record<string, unknown>,\n key: string,\n): Record<string, unknown> | undefined {\n const value = obj[key]\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined\n return value as Record<string, unknown>\n}\n","import type { BeliefShadowProbeInput } from './shadow-probe'\nimport type {\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceQuality,\n BeliefEvidenceRef,\n} from './types'\nimport { isBeliefDecisionKind, isBeliefEvidenceSource } from './types'\n\nexport interface RuntimeBeliefDecisionEvidenceRef {\n source: string\n id: string\n detail?: string\n quality?: BeliefEvidenceQuality\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefDecisionPoint {\n id: string\n runId: string\n scenarioId?: string\n stepIndex: number\n kind: string\n candidateActions?: string[]\n context?: string\n evidence?: RuntimeBeliefDecisionEvidenceRef[]\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefHookEvent {\n id: string\n runId: string\n scenarioId?: string\n target: string\n phase: string\n timestamp: number\n stepIndex?: number\n parentId?: string\n payload?: unknown\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefHookContext {\n signal?: AbortSignal\n}\n\nexport interface RuntimeBeliefHooks {\n onEvent?: (\n event: RuntimeBeliefHookEvent,\n context: RuntimeBeliefHookContext,\n ) => void | Promise<void>\n onDecisionPoint?: (\n point: RuntimeBeliefDecisionPoint,\n context: RuntimeBeliefHookContext,\n ) => void | Promise<void>\n}\n\nexport interface RuntimeBeliefConversionDiagnostic {\n decisionId: string\n severity: 'warning' | 'error'\n reason: string\n}\n\nexport interface RuntimeBeliefShadowProbeInputOptions {\n probeId: string\n decisionKind?: BeliefDecisionKind\n includeEvidenceDetail?: boolean\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n maxContextChars?: number\n}\n\nexport interface RuntimeBeliefDecisionPointOptions {\n chosenAction?: string\n decisionKind?: BeliefDecisionKind\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n outcome?: BeliefDecisionOutcome\n metadata?: Record<string, unknown>\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n}\n\nexport interface RuntimeBeliefShadowProbeInputReport {\n input?: BeliefShadowProbeInput\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n}\n\nexport interface RuntimeBeliefDecisionPointReport {\n point?: BeliefDecisionPoint\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n}\n\nexport interface BeliefRuntimeHookCollector {\n hooks: RuntimeBeliefHooks\n decisions: RuntimeBeliefDecisionPoint[]\n events: RuntimeBeliefHookEvent[]\n toShadowProbeInputs(options?: Partial<RuntimeBeliefShadowProbeInputOptions>): {\n inputs: BeliefShadowProbeInput[]\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n }\n clear(): void\n}\n\nconst DEFAULT_MAX_CONTEXT_CHARS = 12_000\nconst DEFAULT_PAYLOAD_PREVIEW_CHARS = 2_000\n\nexport function runtimeDecisionPointToBeliefShadowProbeInput(\n point: RuntimeBeliefDecisionPoint,\n options: RuntimeBeliefShadowProbeInputOptions,\n): RuntimeBeliefShadowProbeInputReport {\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const decisionKind = resolveDecisionKind(point, options.decisionKind, diagnostics)\n if (!decisionKind) return { diagnostics }\n const lifecycleEvidence = runtimeHookEventsToEvidenceRefs(point, options)\n const evidence = [...(point.evidence ?? []), ...lifecycleEvidence]\n\n return {\n input: {\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind,\n candidateActions: uniqueStrings(point.candidateActions ?? []),\n evidence: evidence.map((ref) => ({\n id: ref.id,\n source: ref.source,\n ...(options.includeEvidenceDetail && ref.detail ? { detail: ref.detail } : {}),\n ...(ref.quality ? { quality: ref.quality } : {}),\n })),\n context: trimText(point.context, options.maxContextChars),\n metadata: mergeMetadata(point.metadata, lifecycleMetadata(lifecycleEvidence)),\n },\n diagnostics,\n }\n}\n\nexport function runtimeDecisionPointToBeliefDecisionPoint(\n point: RuntimeBeliefDecisionPoint,\n options: RuntimeBeliefDecisionPointOptions,\n): RuntimeBeliefDecisionPointReport {\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const decisionKind = resolveDecisionKind(point, options.decisionKind, diagnostics)\n const chosenAction = stringOrUndefined(options.chosenAction)\n\n if (!chosenAction) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: 'missing chosenAction',\n })\n }\n\n const candidateActions = uniqueStrings(point.candidateActions ?? [])\n if (chosenAction && candidateActions.length > 0 && !candidateActions.includes(chosenAction)) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'warning',\n reason: `chosenAction ${chosenAction} is not in candidateActions`,\n })\n }\n\n if (!decisionKind || !chosenAction) return { diagnostics }\n const lifecycleEvidence = runtimeHookEventsToEvidenceRefs(point, options)\n const evidence = [...(point.evidence ?? []), ...lifecycleEvidence]\n\n return {\n point: {\n id: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n kind: decisionKind,\n chosenAction,\n candidateActions,\n confidence: unitProbabilityOrUndefined(options.confidence),\n behaviorProb: finiteNumberOrUndefined(options.behaviorProb),\n targetProb: finiteNumberOrUndefined(options.targetProb),\n qHat: options.qHat === null ? null : unitProbabilityOrUndefined(options.qHat),\n costUsd: nonNegativeNumberOrUndefined(options.costUsd),\n evidence: evidence.map((ref) => runtimeEvidenceToBeliefEvidence(ref, point)),\n outcome: options.outcome,\n metadata: mergeMetadata(\n mergeMetadata(point.metadata, lifecycleMetadata(lifecycleEvidence)),\n options.metadata,\n ),\n },\n diagnostics,\n }\n}\n\nexport function createBeliefRuntimeHookCollector(\n defaults: RuntimeBeliefShadowProbeInputOptions,\n): BeliefRuntimeHookCollector {\n const decisions: RuntimeBeliefDecisionPoint[] = []\n const events: RuntimeBeliefHookEvent[] = []\n\n return {\n hooks: {\n onEvent: (event) => {\n events.push(snapshotRuntimeHookEvent(event))\n },\n onDecisionPoint: (point) => {\n decisions.push(snapshotRuntimeDecisionPoint(point))\n },\n },\n decisions,\n events,\n toShadowProbeInputs: (options = {}) => {\n const inputs: BeliefShadowProbeInput[] = []\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const includeLifecycleEvidence =\n options.includeLifecycleEvidence ?? defaults.includeLifecycleEvidence\n for (const point of decisions) {\n const report = runtimeDecisionPointToBeliefShadowProbeInput(point, {\n ...defaults,\n ...options,\n includeLifecycleEvidence,\n lifecycleEvents:\n includeLifecycleEvidence === false\n ? undefined\n : (options.lifecycleEvents ?? defaults.lifecycleEvents ?? events),\n })\n if (report.input) inputs.push(report.input)\n diagnostics.push(...report.diagnostics)\n }\n return { inputs, diagnostics }\n },\n clear: () => {\n decisions.length = 0\n events.length = 0\n },\n }\n}\n\nfunction resolveDecisionKind(\n point: RuntimeBeliefDecisionPoint,\n override: BeliefDecisionKind | undefined,\n diagnostics: RuntimeBeliefConversionDiagnostic[],\n): BeliefDecisionKind | undefined {\n const kind = override ?? point.kind\n if (isBeliefDecisionKind(kind)) return kind\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: `unsupported decisionKind \"${kind}\"`,\n })\n return undefined\n}\n\nfunction runtimeEvidenceToBeliefEvidence(\n ref: RuntimeBeliefDecisionEvidenceRef,\n point: RuntimeBeliefDecisionPoint,\n): BeliefEvidenceRef {\n if (isBeliefEvidenceSource(ref.source)) {\n return {\n source: ref.source,\n id: ref.id,\n runId: point.runId,\n detail: ref.detail,\n quality: ref.quality,\n metadata: ref.metadata,\n }\n }\n\n return {\n source: 'event',\n id: ref.id,\n runId: point.runId,\n detail: ref.detail,\n quality: ref.quality,\n metadata: mergeMetadata({ runtimeSource: ref.source }, ref.metadata),\n }\n}\n\nfunction runtimeHookEventsToEvidenceRefs(\n point: RuntimeBeliefDecisionPoint,\n options: {\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n },\n): RuntimeBeliefDecisionEvidenceRef[] {\n if (options.includeLifecycleEvidence === false) return []\n return (options.lifecycleEvents ?? [])\n .filter((event) => runtimeHookEventMatchesDecision(point, event))\n .map(runtimeHookEventToEvidenceRef)\n}\n\nfunction runtimeHookEventMatchesDecision(\n point: RuntimeBeliefDecisionPoint,\n event: RuntimeBeliefHookEvent,\n): boolean {\n if (event.runId !== point.runId) return false\n if (event.scenarioId && point.scenarioId && event.scenarioId !== point.scenarioId) return false\n return event.stepIndex === undefined || event.stepIndex === point.stepIndex\n}\n\nfunction runtimeHookEventToEvidenceRef(\n event: RuntimeBeliefHookEvent,\n): RuntimeBeliefDecisionEvidenceRef {\n return {\n source: 'runtime_event',\n id: event.id,\n detail: `${event.target}:${event.phase}`,\n quality: 'direct',\n metadata: mergeMetadata(\n compactMetadata({\n target: event.target,\n phase: event.phase,\n timestamp: event.timestamp,\n stepIndex: event.stepIndex,\n parentId: event.parentId,\n payloadPreview: previewUnknown(event.payload),\n }),\n event.metadata,\n ),\n }\n}\n\nfunction lifecycleMetadata(\n refs: RuntimeBeliefDecisionEvidenceRef[],\n): Record<string, unknown> | undefined {\n if (refs.length === 0) return undefined\n return {\n lifecycleEventCount: refs.length,\n lifecycleEventIds: refs.map((ref) => ref.id),\n }\n}\n\nfunction snapshotRuntimeHookEvent(event: RuntimeBeliefHookEvent): RuntimeBeliefHookEvent {\n return {\n id: event.id,\n runId: event.runId,\n scenarioId: event.scenarioId,\n target: event.target,\n phase: event.phase,\n timestamp: event.timestamp,\n stepIndex: event.stepIndex,\n parentId: event.parentId,\n payload: snapshotUnknown(event.payload),\n metadata: event.metadata ? { ...event.metadata } : undefined,\n }\n}\n\nfunction snapshotRuntimeDecisionPoint(\n point: RuntimeBeliefDecisionPoint,\n): RuntimeBeliefDecisionPoint {\n return {\n id: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n kind: point.kind,\n candidateActions: [...(point.candidateActions ?? [])],\n context: point.context,\n evidence: (point.evidence ?? []).map((ref) => ({\n source: ref.source,\n id: ref.id,\n detail: ref.detail,\n quality: ref.quality,\n metadata: ref.metadata ? { ...ref.metadata } : undefined,\n })),\n metadata: point.metadata ? { ...point.metadata } : undefined,\n }\n}\n\nfunction mergeMetadata(\n base: Record<string, unknown> | undefined,\n extra: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (!base && !extra) return undefined\n return { ...(base ?? {}), ...(extra ?? {}) }\n}\n\nfunction compactMetadata(values: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(values).filter(([, value]) => value !== undefined)\n return entries.length > 0 ? Object.fromEntries(entries) : undefined\n}\n\nfunction previewUnknown(\n value: unknown,\n maxChars = DEFAULT_PAYLOAD_PREVIEW_CHARS,\n): string | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'string') return trimText(value, maxChars)\n try {\n return trimText(JSON.stringify(value), maxChars)\n } catch {\n return trimText(String(value), maxChars)\n }\n}\n\nfunction snapshotUnknown(value: unknown): unknown {\n if (Array.isArray(value)) return [...value]\n if (isRecord(value)) return { ...value }\n return value\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values.filter((value) => value.length > 0))]\n}\n\nfunction trimText(\n value: string | undefined,\n maxChars = DEFAULT_MAX_CONTEXT_CHARS,\n): string | undefined {\n if (!value) return undefined\n return value.length > maxChars ? value.slice(value.length - maxChars) : value\n}\n\nfunction stringOrUndefined(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction finiteNumberOrUndefined(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction unitProbabilityOrUndefined(value: unknown): number | undefined {\n const number = finiteNumberOrUndefined(value)\n return number !== undefined && number >= 0 && number <= 1 ? number : undefined\n}\n\nfunction nonNegativeNumberOrUndefined(value: unknown): number | undefined {\n const number = finiteNumberOrUndefined(value)\n return number !== undefined && number >= 0 ? number : undefined\n}\n","import type { RunSplitTag } from '../run-record'\nimport {\n type BeliefDecisionResearchEvidencePacket,\n type BuildBeliefDecisionResearchEvidencePacketOptions,\n buildBeliefDecisionResearchEvidencePacket,\n} from './research-evidence'\nimport {\n type RuntimeBeliefDecisionPoint,\n type RuntimeBeliefHookEvent,\n runtimeDecisionPointToBeliefDecisionPoint,\n} from './runtime-hooks'\nimport type { BeliefDecisionOutcome, BeliefDecisionPoint } from './types'\n\nexport interface RuntimeBeliefPhase0RunRecord {\n runId: string\n scenarioId?: string\n splitTag: RunSplitTag\n}\n\nexport interface RuntimeBeliefDecisionLabel {\n decisionId: string\n chosenAction: string\n outcome: BeliefDecisionOutcome\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n splitTag?: RunSplitTag\n metadata?: Record<string, unknown>\n}\n\nexport interface BuildRuntimeBeliefPhase0MeasurementOptions\n extends Omit<BuildBeliefDecisionResearchEvidencePacketOptions, 'points'> {\n runs: RuntimeBeliefPhase0RunRecord[]\n decisions: RuntimeBeliefDecisionPoint[]\n events?: RuntimeBeliefHookEvent[]\n labels: RuntimeBeliefDecisionLabel[]\n baselinePolicyId?: string\n}\n\nexport interface RuntimeBeliefPhase0MeasurementSummary {\n runCount: number\n producerDecisionCount: number\n lifecycleEventCount: number\n labelCount: number\n completedPointCount: number\n runJoinRate: number\n labelJoinRate: number\n missingRunRecordCount: number\n missingLabelCount: number\n withEvidence: number\n withOutcome: number\n withSplit: number\n withBehaviorProb: number\n withTargetProb: number\n baselinePolicyId: string\n packetStatus: BeliefDecisionResearchEvidencePacket['status']\n claimScope: BeliefDecisionResearchEvidencePacket['claimScope']\n}\n\nexport interface RuntimeBeliefPhase0Measurement {\n points: BeliefDecisionPoint[]\n packet: BeliefDecisionResearchEvidencePacket\n summary: RuntimeBeliefPhase0MeasurementSummary\n diagnostics: string[]\n}\n\nconst DEFAULT_BASELINE_POLICY_ID = 'always-accept-observed-action'\n\nexport function buildRuntimeBeliefPhase0Measurement(\n options: BuildRuntimeBeliefPhase0MeasurementOptions,\n): RuntimeBeliefPhase0Measurement {\n const runsById = new Map(options.runs.map((run) => [run.runId, run]))\n const labelsByDecisionId = new Map<string, RuntimeBeliefDecisionLabel>()\n const diagnostics: string[] = []\n\n for (const label of options.labels) {\n if (labelsByDecisionId.has(label.decisionId)) {\n diagnostics.push(`${label.decisionId}: duplicate label; using the last label`)\n }\n labelsByDecisionId.set(label.decisionId, label)\n }\n\n const points: BeliefDecisionPoint[] = []\n let missingRunRecordCount = 0\n let missingLabelCount = 0\n\n for (const decision of options.decisions) {\n const run = runsById.get(decision.runId)\n if (!run) {\n missingRunRecordCount += 1\n diagnostics.push(`${decision.id}: missing RunRecord join for runId ${decision.runId}`)\n continue\n }\n\n const label = labelsByDecisionId.get(decision.id)\n if (!label) {\n missingLabelCount += 1\n diagnostics.push(`${decision.id}: missing observed action/outcome label`)\n continue\n }\n\n const splitTag = label.splitTag ?? run.splitTag\n const report = runtimeDecisionPointToBeliefDecisionPoint(\n { ...decision, scenarioId: decision.scenarioId ?? run.scenarioId },\n {\n chosenAction: label.chosenAction,\n confidence: label.confidence,\n behaviorProb: label.behaviorProb,\n targetProb: label.targetProb,\n qHat: label.qHat,\n costUsd: label.costUsd,\n outcome: label.outcome,\n lifecycleEvents: options.events,\n metadata: compactMetadata({\n baselinePolicyId: options.baselinePolicyId ?? DEFAULT_BASELINE_POLICY_ID,\n splitTag,\n ...label.metadata,\n }),\n },\n )\n diagnostics.push(...report.diagnostics.map((item) => `${item.decisionId}: ${item.reason}`))\n if (report.point) points.push(report.point)\n }\n\n const packet = buildBeliefDecisionResearchEvidencePacket({\n ...options,\n points,\n })\n\n return {\n points,\n packet,\n summary: summarizePhase0Measurement(options, points, packet, {\n missingRunRecordCount,\n missingLabelCount,\n }),\n diagnostics,\n }\n}\n\nfunction summarizePhase0Measurement(\n options: BuildRuntimeBeliefPhase0MeasurementOptions,\n points: BeliefDecisionPoint[],\n packet: BeliefDecisionResearchEvidencePacket,\n counts: { missingRunRecordCount: number; missingLabelCount: number },\n): RuntimeBeliefPhase0MeasurementSummary {\n const producerDecisionCount = options.decisions.length\n return {\n runCount: options.runs.length,\n producerDecisionCount,\n lifecycleEventCount: options.events?.length ?? 0,\n labelCount: options.labels.length,\n completedPointCount: points.length,\n runJoinRate: ratio(producerDecisionCount - counts.missingRunRecordCount, producerDecisionCount),\n labelJoinRate: ratio(points.length, producerDecisionCount),\n missingRunRecordCount: counts.missingRunRecordCount,\n missingLabelCount: counts.missingLabelCount,\n withEvidence: points.filter((point) => point.evidence.length > 0).length,\n withOutcome: points.filter((point) => point.outcome).length,\n withSplit: points.filter((point) => typeof point.metadata?.splitTag === 'string').length,\n withBehaviorProb: points.filter((point) => point.behaviorProb !== undefined).length,\n withTargetProb: points.filter((point) => point.targetProb !== undefined).length,\n baselinePolicyId: options.baselinePolicyId ?? DEFAULT_BASELINE_POLICY_ID,\n packetStatus: packet.status,\n claimScope: packet.claimScope,\n }\n}\n\nfunction ratio(numerator: number, denominator: number): number {\n return denominator > 0 ? numerator / denominator : 0\n}\n\nfunction compactMetadata(values: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(values).filter(([, value]) => value !== undefined)\n return entries.length > 0 ? Object.fromEntries(entries) : undefined\n}\n","import {\n type ProjectRuntimeTrajectoryEvidenceOptions,\n projectRuntimeTrajectoryEvidence,\n type RuntimeTrajectoryEvidenceProjection,\n type RuntimeTrajectoryRecord,\n} from '../runtime-trajectory'\nimport {\n type BuildRuntimeBeliefPhase0MeasurementOptions,\n buildRuntimeBeliefPhase0Measurement,\n type RuntimeBeliefDecisionLabel,\n type RuntimeBeliefPhase0Measurement,\n type RuntimeBeliefPhase0RunRecord,\n} from './phase0-measurement'\nimport type { RuntimeBeliefDecisionPoint, RuntimeBeliefHookEvent } from './runtime-hooks'\n\ntype RuntimeBenchmarkTrajectoryRecord = RuntimeTrajectoryRecord & {\n benchmark?: unknown\n condition?: unknown\n instanceId?: unknown\n runtimeDecisionPoints?: unknown\n}\n\nconst MAX_STRING_LENGTH = 12_000\nconst MAX_CONTEXT_LENGTH = 20_000\nconst MAX_EVIDENCE_DETAIL_LENGTH = 2_000\nconst MAX_CANDIDATE_ACTIONS = 50\nconst MAX_EVIDENCE_REFS = 50\nconst MAX_METADATA_DEPTH = 4\nconst MAX_METADATA_KEYS = 100\nconst SENSITIVE_KEY_RE =\n /(?:authorization|api[_-]?key|token|secret|password|cookie|credential|bearer)/i\nconst SENSITIVE_VALUE_RES = [\n /\\bBearer\\s+[A-Za-z0-9._~+/=-]+/gi,\n /\\b(?:sk|gh[pousr])_[A-Za-z0-9_]{20,}\\b/g,\n /\\b(?:sk|ghp|gho|ghu|ghs|ghr)-[A-Za-z0-9_-]{20,}\\b/g,\n]\nconst SENSITIVE_ASSIGNMENT_RE =\n /\\b(api[_-]?key|token|secret|password|cookie)\\s*[:=]\\s*[\"']?[^\"'\\s,;}]+/gi\n\nexport interface BuildRuntimeBenchmarkBeliefPhase0MeasurementOptions\n extends Omit<\n BuildRuntimeBeliefPhase0MeasurementOptions,\n 'runs' | 'events' | 'decisions' | 'labels'\n > {\n records: RuntimeBenchmarkTrajectoryRecord[]\n decisions?: RuntimeBeliefDecisionPoint[]\n defaultSplitTag?: ProjectRuntimeTrajectoryEvidenceOptions['defaultSplitTag']\n labels?: RuntimeBeliefDecisionLabel[]\n}\n\nexport interface RuntimeBenchmarkBeliefPhase0Summary {\n decisionCount: number\n labelCount: number\n}\n\nexport interface RuntimeBenchmarkBeliefPhase0Measurement {\n runs: RuntimeBeliefPhase0RunRecord[]\n events: RuntimeBeliefHookEvent[]\n decisions: RuntimeBeliefDecisionPoint[]\n labels: RuntimeBeliefDecisionLabel[]\n trajectory: RuntimeTrajectoryEvidenceProjection\n measurement: RuntimeBeliefPhase0Measurement\n summary: RuntimeBenchmarkBeliefPhase0Summary\n diagnostics: string[]\n}\n\nexport function buildRuntimeBenchmarkBeliefPhase0Measurement(\n options: BuildRuntimeBenchmarkBeliefPhase0MeasurementOptions,\n): RuntimeBenchmarkBeliefPhase0Measurement {\n const diagnostics: string[] = []\n const trajectory = projectRuntimeTrajectoryEvidence({\n records: options.records,\n defaultSplitTag: options.defaultSplitTag,\n recordIdOf: runtimeBenchmarkRecordId,\n scenarioIdOf: runtimeBenchmarkScenarioId,\n })\n const decisions =\n options.decisions ?? runtimeBenchmarkDecisionPoints(options.records, diagnostics)\n const labels = options.labels ?? []\n if (decisions.length === 0) {\n diagnostics.push(\n 'no runtime decision points supplied or found on records; benchmark lifecycle events alone cannot produce belief decision rows',\n )\n }\n if (labels.length === 0 && decisions.length > 0) {\n diagnostics.push(\n 'no decision labels supplied; observed action/outcome joins will be incomplete',\n )\n }\n\n const measurement = buildRuntimeBeliefPhase0Measurement({\n ...options,\n runs: trajectory.runs,\n events: trajectory.events,\n decisions,\n labels,\n })\n\n return {\n runs: trajectory.runs,\n events: trajectory.events,\n decisions,\n labels,\n trajectory,\n measurement,\n summary: {\n decisionCount: decisions.length,\n labelCount: labels.length,\n },\n diagnostics: [...trajectory.diagnostics, ...diagnostics, ...measurement.diagnostics],\n }\n}\n\nfunction runtimeBenchmarkRecordId(record: RuntimeBenchmarkTrajectoryRecord): string | undefined {\n const parts = [\n nonEmptyString(record.benchmark),\n nonEmptyString(record.instanceId),\n nonEmptyString(record.condition),\n ].filter((part): part is string => part !== undefined)\n return parts.length > 0 ? parts.join(':') : undefined\n}\n\nfunction runtimeBenchmarkScenarioId(record: RuntimeBenchmarkTrajectoryRecord): string | undefined {\n return nonEmptyString(record.instanceId)\n}\n\nfunction runtimeBenchmarkDecisionPoints(\n records: RuntimeBenchmarkTrajectoryRecord[],\n diagnostics: string[],\n): RuntimeBeliefDecisionPoint[] {\n const decisions: RuntimeBeliefDecisionPoint[] = []\n for (let recordIndex = 0; recordIndex < records.length; recordIndex += 1) {\n const record = records[recordIndex]!\n const raw = record.runtimeDecisionPoints\n if (raw === undefined) continue\n const recordId = runtimeBenchmarkRecordId(record) ?? `record[${recordIndex}]`\n if (!Array.isArray(raw)) {\n diagnostics.push(`${recordId}: runtimeDecisionPoints is not an array`)\n continue\n }\n for (let pointIndex = 0; pointIndex < raw.length; pointIndex += 1) {\n const point = runtimeBenchmarkDecisionPoint(raw[pointIndex], {\n diagnostics,\n path: `${recordId}: runtimeDecisionPoints[${pointIndex}]`,\n })\n if (!point) {\n diagnostics.push(\n `${recordId}: runtimeDecisionPoints[${pointIndex}] is not a RuntimeDecisionPoint`,\n )\n continue\n }\n decisions.push(point)\n }\n }\n return decisions\n}\n\nfunction runtimeBenchmarkDecisionPoint(\n input: unknown,\n context: { diagnostics: string[]; path: string },\n): RuntimeBeliefDecisionPoint | null {\n if (!isRecord(input)) return null\n if (typeof input.id !== 'string' || input.id.length === 0) return null\n if (typeof input.runId !== 'string' || input.runId.length === 0) return null\n if (\n typeof input.stepIndex !== 'number' ||\n !Number.isInteger(input.stepIndex) ||\n input.stepIndex < 0\n ) {\n return null\n }\n if (typeof input.kind !== 'string' || input.kind.length === 0) return null\n return {\n id: sanitizeString(input.id, MAX_STRING_LENGTH),\n runId: sanitizeString(input.runId, MAX_STRING_LENGTH),\n scenarioId: sanitizeOptionalString(input.scenarioId, MAX_STRING_LENGTH),\n stepIndex: input.stepIndex,\n kind: sanitizeString(input.kind, MAX_STRING_LENGTH),\n candidateActions: stringArray(input.candidateActions, {\n ...context,\n maxItems: MAX_CANDIDATE_ACTIONS,\n label: 'candidateActions',\n }),\n context: sanitizeOptionalString(input.context, MAX_CONTEXT_LENGTH),\n evidence: runtimeBenchmarkEvidence(input.evidence, context),\n metadata: sanitizeMetadataRecord(input.metadata),\n }\n}\n\nfunction runtimeBenchmarkEvidence(\n input: unknown,\n context: { diagnostics: string[]; path: string },\n): RuntimeBeliefDecisionPoint['evidence'] {\n if (!Array.isArray(input)) return []\n if (input.length > MAX_EVIDENCE_REFS) {\n context.diagnostics.push(`${context.path}: evidence truncated to ${MAX_EVIDENCE_REFS} refs`)\n }\n return input.slice(0, MAX_EVIDENCE_REFS).flatMap((item) => {\n if (!isRecord(item)) return []\n const source = sanitizeOptionalString(item.source, MAX_STRING_LENGTH)\n const id = sanitizeOptionalString(item.id, MAX_STRING_LENGTH)\n if (!source || !id) return []\n return [\n {\n source,\n id,\n detail: sanitizeOptionalString(item.detail, MAX_EVIDENCE_DETAIL_LENGTH),\n metadata: sanitizeMetadataRecord(item.metadata),\n },\n ]\n })\n}\n\nfunction stringArray(\n input: unknown,\n context: { diagnostics: string[]; path: string; maxItems: number; label: string },\n): string[] | undefined {\n if (!Array.isArray(input)) return undefined\n if (input.length > context.maxItems) {\n context.diagnostics.push(`${context.path}: ${context.label} truncated to ${context.maxItems}`)\n }\n const values = input\n .slice(0, context.maxItems)\n .filter((value): value is string => typeof value === 'string' && value.length > 0)\n .map((value) => sanitizeString(value, MAX_STRING_LENGTH))\n return values.length > 0 ? values : undefined\n}\n\nfunction sanitizeMetadataRecord(metadata: unknown): Record<string, unknown> | undefined {\n if (!isRecord(metadata)) return undefined\n const sanitized = sanitizeMetadata(metadata)\n if (!sanitized || typeof sanitized !== 'object' || Array.isArray(sanitized)) return undefined\n return sanitized as Record<string, unknown>\n}\n\nfunction sanitizeMetadata(value: unknown, depth = 0): unknown {\n if (value == null) return value\n if (typeof value === 'string') return sanitizeString(value, MAX_STRING_LENGTH)\n if (typeof value === 'number' || typeof value === 'boolean') return value\n if (Array.isArray(value)) {\n if (depth >= MAX_METADATA_DEPTH) return '[MaxDepth]'\n return value.slice(0, MAX_METADATA_KEYS).map((item) => sanitizeMetadata(item, depth + 1))\n }\n if (!isRecord(value)) return undefined\n if (depth >= MAX_METADATA_DEPTH) return '[MaxDepth]'\n\n const sanitized: Record<string, unknown> = {}\n for (const [key, nested] of Object.entries(value).slice(0, MAX_METADATA_KEYS)) {\n sanitized[key] = SENSITIVE_KEY_RE.test(key) ? '[REDACTED]' : sanitizeMetadata(nested, depth + 1)\n }\n return sanitized\n}\n\nfunction sanitizeOptionalString(value: unknown, maxLength: number): string | undefined {\n return typeof value === 'string' && value.length > 0\n ? sanitizeString(value, maxLength)\n : undefined\n}\n\nfunction sanitizeString(value: string, maxLength: number): string {\n let sanitized = value\n for (const pattern of SENSITIVE_VALUE_RES) {\n sanitized = sanitized.replace(pattern, '[REDACTED]')\n }\n sanitized = sanitized.replace(\n SENSITIVE_ASSIGNMENT_RE,\n (_match, key: string) => `${key}=[REDACTED]`,\n )\n if (sanitized.length <= maxLength) return sanitized\n return sanitized.slice(0, maxLength)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n","import type {\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceQuality,\n} from './types'\n\nexport interface BeliefShadowProbeInput {\n probeId: string\n decisionId: string\n runId: string\n scenarioId?: string\n stepIndex: number\n decisionKind: BeliefDecisionKind\n candidateActions: string[]\n observedAction?: string\n evidence: BeliefShadowProbeEvidenceRef[]\n context?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefShadowProbeEvidenceRef {\n id: string\n source: string\n detail?: string\n quality?: BeliefEvidenceQuality\n}\n\nexport interface BeliefShadowProbeResponse {\n predictedAction: string\n confidence: number\n beliefSummary?: string\n uncertainty?: string[]\n evidenceRefs?: string[]\n wouldChangeMindIf?: string[]\n targetProb?: number\n qHat?: number | null\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefShadowProbeRecord extends BeliefShadowProbeResponse {\n probeId: string\n decisionId: string\n runId: string\n scenarioId?: string\n stepIndex: number\n decisionKind: BeliefDecisionKind\n candidateActions: string[]\n observedAction: string\n agreesWithObservedAction: boolean\n outcome?: BeliefDecisionOutcome\n}\n\nexport interface BeliefShadowProbeDiagnostic {\n decisionId: string\n severity: 'warning' | 'error'\n reason: string\n}\n\nexport interface BeliefShadowProbeSummary {\n attempted: number\n completed: number\n dropped: number\n withOutcome: number\n withTargetProb: number\n meanConfidence: number | null\n observedAgreementRate: number | null\n}\n\nexport interface BeliefShadowProbeRun {\n probeId: string\n records: BeliefShadowProbeRecord[]\n diagnostics: BeliefShadowProbeDiagnostic[]\n summary: BeliefShadowProbeSummary\n}\n\nexport interface RunBeliefShadowProbeOptions {\n probeId: string\n points: BeliefDecisionPoint[]\n probe: (\n input: BeliefShadowProbeInput,\n ) => BeliefShadowProbeResponse | Promise<BeliefShadowProbeResponse>\n contextOf?: (point: BeliefDecisionPoint) => string | undefined | Promise<string | undefined>\n metadataOf?: (\n point: BeliefDecisionPoint,\n ) => Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>\n includeObservedAction?: boolean\n includeEvidenceDetail?: boolean\n includeOutcomeInRecord?: boolean\n requireCandidateActions?: boolean\n allowOutOfSetActions?: boolean\n concurrency?: number\n maxContextChars?: number\n}\n\nconst DEFAULT_CONCURRENCY = 4\nconst DEFAULT_MAX_CONTEXT_CHARS = 12_000\n\nexport async function runBeliefShadowProbe(\n options: RunBeliefShadowProbeOptions,\n): Promise<BeliefShadowProbeRun> {\n const concurrency = boundedInteger(options.concurrency ?? DEFAULT_CONCURRENCY, 1, 32)\n const records: Array<BeliefShadowProbeRecord | undefined> = []\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n let next = 0\n\n async function worker() {\n while (next < options.points.length) {\n const index = next\n next += 1\n const point = options.points[index]\n if (!point) continue\n const result = await probePoint(point, options)\n records[index] = result.record\n diagnostics.push(...result.diagnostics)\n }\n }\n\n await Promise.all(Array.from({ length: Math.min(concurrency, options.points.length) }, worker))\n const completed = records.filter((record): record is BeliefShadowProbeRecord => !!record)\n\n return {\n probeId: options.probeId,\n records: completed,\n diagnostics,\n summary: summarizeShadowProbe(options.points.length, completed),\n }\n}\n\nexport function formatBeliefShadowProbePrompt(input: BeliefShadowProbeInput): string {\n return [\n 'Return only JSON. Do not include chain-of-thought.',\n 'Infer the agent belief state at this decision boundary using only the context below.',\n '',\n `decisionKind: ${input.decisionKind}`,\n `candidateActions: ${JSON.stringify(input.candidateActions)}`,\n input.observedAction ? `observedAction: ${JSON.stringify(input.observedAction)}` : '',\n input.context ? `context:\\n${input.context}` : '',\n '',\n 'Schema:',\n JSON.stringify({\n predictedAction: 'one candidate action',\n confidence: 'number in [0,1]',\n beliefSummary: 'short outcome-blind summary',\n uncertainty: ['short uncertainty'],\n evidenceRefs: ['evidence id'],\n wouldChangeMindIf: ['observable evidence'],\n targetProb: 'optional number in [0,1]',\n qHat: 'optional number in [0,1]',\n }),\n ]\n .filter(Boolean)\n .join('\\n')\n}\n\nasync function probePoint(\n point: BeliefDecisionPoint,\n options: RunBeliefShadowProbeOptions,\n): Promise<{ record?: BeliefShadowProbeRecord; diagnostics: BeliefShadowProbeDiagnostic[] }> {\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n const candidateActions = uniqueStrings(point.candidateActions ?? [])\n if ((options.requireCandidateActions ?? true) && candidateActions.length === 0) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'warning',\n reason: 'missing candidateActions',\n })\n return { diagnostics }\n }\n\n let response: BeliefShadowProbeResponse\n try {\n response = await options.probe({\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind: point.kind,\n candidateActions,\n ...(options.includeObservedAction ? { observedAction: point.chosenAction } : {}),\n evidence: point.evidence.map((ref) => ({\n id: ref.id,\n source: ref.source,\n ...(options.includeEvidenceDetail && ref.detail ? { detail: ref.detail } : {}),\n ...(ref.quality ? { quality: ref.quality } : {}),\n })),\n context: trimText(await options.contextOf?.(point), options.maxContextChars),\n metadata: await options.metadataOf?.(point),\n })\n } catch (error) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: `probe threw: ${errorMessage(error)}`,\n })\n return { diagnostics }\n }\n\n const normalized = normalizeProbeResponse(response, {\n point,\n candidateActions,\n allowOutOfSetActions: options.allowOutOfSetActions ?? false,\n })\n if (!normalized.record) {\n diagnostics.push(...normalized.diagnostics)\n return { diagnostics }\n }\n\n return {\n record: {\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind: point.kind,\n candidateActions,\n observedAction: point.chosenAction,\n agreesWithObservedAction: normalized.record.predictedAction === point.chosenAction,\n ...(options.includeOutcomeInRecord === false ? {} : { outcome: point.outcome }),\n ...normalized.record,\n },\n diagnostics,\n }\n}\n\nfunction normalizeProbeResponse(\n response: BeliefShadowProbeResponse,\n options: {\n point: BeliefDecisionPoint\n candidateActions: string[]\n allowOutOfSetActions: boolean\n },\n): { record?: BeliefShadowProbeResponse; diagnostics: BeliefShadowProbeDiagnostic[] } {\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n const predictedAction = stringOrNull(response.predictedAction)\n if (!predictedAction) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: 'missing predictedAction',\n })\n } else if (\n !options.allowOutOfSetActions &&\n options.candidateActions.length > 0 &&\n !options.candidateActions.includes(predictedAction)\n ) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `predictedAction ${predictedAction} is not in candidateActions`,\n })\n }\n\n if (!isUnitProbability(response.confidence)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid confidence ${String(response.confidence)}`,\n })\n }\n if (response.targetProb !== undefined && !isUnitProbability(response.targetProb)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid targetProb ${String(response.targetProb)}`,\n })\n }\n if (response.qHat !== undefined && response.qHat !== null && !isUnitProbability(response.qHat)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid qHat ${String(response.qHat)}`,\n })\n }\n if (diagnostics.length > 0 || !predictedAction) return { diagnostics }\n\n return {\n record: {\n predictedAction,\n confidence: response.confidence,\n ...(response.beliefSummary ? { beliefSummary: trimText(response.beliefSummary, 2_000) } : {}),\n uncertainty: compactStrings(response.uncertainty),\n evidenceRefs: compactStrings(response.evidenceRefs),\n wouldChangeMindIf: compactStrings(response.wouldChangeMindIf),\n ...(response.targetProb !== undefined ? { targetProb: response.targetProb } : {}),\n ...(response.qHat !== undefined ? { qHat: response.qHat } : {}),\n ...(response.metadata ? { metadata: response.metadata } : {}),\n },\n diagnostics,\n }\n}\n\nfunction summarizeShadowProbe(\n attempted: number,\n records: BeliefShadowProbeRecord[],\n): BeliefShadowProbeSummary {\n const confidences = records.map((record) => record.confidence)\n const agreements = records.filter((record) => record.agreesWithObservedAction).length\n return {\n attempted,\n completed: records.length,\n dropped: attempted - records.length,\n withOutcome: records.filter((record) => record.outcome !== undefined).length,\n withTargetProb: records.filter((record) => record.targetProb !== undefined).length,\n meanConfidence: confidences.length > 0 ? mean(confidences) : null,\n observedAgreementRate: records.length > 0 ? agreements / records.length : null,\n }\n}\n\nfunction isUnitProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1\n}\n\nfunction boundedInteger(value: number, min: number, max: number): number {\n if (!Number.isFinite(value)) return min\n return Math.max(min, Math.min(max, Math.floor(value)))\n}\n\nfunction compactStrings(values: unknown, maxItems = 12): string[] {\n if (!Array.isArray(values)) return []\n return values\n .filter((value): value is string => typeof value === 'string' && value.length > 0)\n .slice(0, maxItems)\n .map((value) => trimText(value, 500) ?? '')\n .filter(Boolean)\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values.filter((value) => value.length > 0))]\n}\n\nfunction stringOrNull(value: unknown): string | null {\n return typeof value === 'string' && value.length > 0 ? value : null\n}\n\nfunction trimText(\n value: string | undefined,\n maxChars = DEFAULT_MAX_CONTEXT_CHARS,\n): string | undefined {\n if (!value) return undefined\n return value.length > maxChars ? value.slice(value.length - maxChars) : value\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n"],"mappings":"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","names":["ratio","rewardOf","outcomeScore","mean","stringField","numberField","isRecord","compactMetadata","record","isRecord","DEFAULT_MAX_CONTEXT_CHARS","record","uniqueStrings","trimText","errorMessage","mean"]}
1
+ {"version":3,"sources":["../../src/belief-state/calibration.ts","../../src/belief-state/ope.ts","../../src/belief-state/selective.ts","../../src/belief-state/report.ts","../../src/belief-state/code-agent-corpus.ts","../../src/belief-state/research-evidence.ts","../../src/belief-state/code-agent-evidence.ts","../../src/belief-state/types.ts","../../src/belief-state/extract.ts","../../src/belief-state/runtime-hooks.ts","../../src/belief-state/phase0-measurement.ts","../../src/belief-state/runtime-benchmark-corpus.ts","../../src/belief-state/shadow-probe.ts"],"sourcesContent":["import { ValidationError } from '../errors'\nimport { calibrationFromPairs } from '../meta-eval/calibration'\nimport type { BeliefDecisionPoint, BeliefSelectivePolicy } from './types'\n\nexport type BeliefCalibrationRegion = 'all' | 'accepted' | 'rejected'\n\nexport interface BeliefCalibrationOptions {\n bins?: number\n minPairs?: number\n policy?: BeliefSelectivePolicy\n region?: BeliefCalibrationRegion\n}\n\nexport function calibrateBeliefDecisions(\n points: BeliefDecisionPoint[],\n options: BeliefCalibrationOptions = {},\n) {\n const filtered = filterCalibrationRegion(points, options)\n const pairs = filtered\n .filter((point) => typeof point.confidence === 'number' && point.outcome)\n .map((point) => ({\n evalScore: point.confidence!,\n outcome: outcomeScore(point),\n }))\n .filter((pair) => Number.isFinite(pair.outcome))\n const minPairs = options.minPairs ?? 10\n if (pairs.length < minPairs) return null\n return calibrationFromPairs(pairs, 'belief-confidence', 'decision-outcome', {\n bins: options.bins ?? 5,\n range: { lo: 0, hi: 1 },\n })\n}\n\nfunction filterCalibrationRegion(\n points: BeliefDecisionPoint[],\n options: BeliefCalibrationOptions,\n): BeliefDecisionPoint[] {\n const region = options.region ?? 'all'\n if (region === 'all') return points\n const policy = options.policy\n if (!policy) {\n throw new ValidationError(\n `calibrateBeliefDecisions: policy is required when region is \"${region}\"`,\n )\n }\n return points.filter((point) => {\n const accepted = policy.decide(point).action === 'accept'\n return region === 'accepted' ? accepted : !accepted\n })\n}\n\nfunction outcomeScore(point: BeliefDecisionPoint): number {\n if (typeof point.outcome?.reward === 'number') return point.outcome.reward\n if (typeof point.outcome?.score === 'number') return point.outcome.score\n if (point.outcome?.success === true) return 1\n if (point.outcome?.success === false) return 0\n return Number.NaN\n}\n","import {\n type OffPolicyOptions,\n type OffPolicyTrajectory,\n offPolicyEstimateAll,\n} from '../rl/off-policy'\nimport type {\n BeliefDecisionPoint,\n BeliefOpeReport,\n BeliefOpeSupportDiagnostics,\n BeliefOpeTargetPolicy,\n} from './types'\n\nexport interface BeliefOpeOptions extends OffPolicyOptions {\n minEffectiveSampleSize?: number\n minEffectiveSampleRatio?: number\n maxDiagnostics?: number\n}\n\nexport interface BeliefOffPolicyTrajectoryReport {\n targetPolicyId: string\n trajectories: OffPolicyTrajectory[]\n dropped: number\n diagnostics: string[]\n}\n\nexport function embeddedBeliefOpeTargetPolicy(id = 'embedded-target-prob'): BeliefOpeTargetPolicy {\n return {\n id,\n targetProbOf(point) {\n return point.targetProb\n },\n qHatOf(point) {\n return point.qHat\n },\n }\n}\n\nexport function beliefDecisionsToOffPolicyTrajectories(\n points: BeliefDecisionPoint[],\n targetPolicy: BeliefOpeTargetPolicy,\n options: Pick<BeliefOpeOptions, 'maxDiagnostics'> = {},\n): BeliefOffPolicyTrajectoryReport {\n const trajectories: OffPolicyTrajectory[] = []\n const diagnostics: string[] = []\n for (const point of points) {\n if (!point.outcome) {\n diagnostics.push(`${point.id}: missing outcome`)\n continue\n }\n if (!isBehaviorProbability(point.behaviorProb)) {\n diagnostics.push(`${point.id}: invalid behaviorProb ${formatProbability(point.behaviorProb)}`)\n continue\n }\n\n let targetProb: number | null | undefined\n let qHat: number | null | undefined\n try {\n targetProb = targetPolicy.targetProbOf(point)\n qHat = targetPolicy.qHatOf?.(point)\n } catch (error) {\n diagnostics.push(\n `${point.id}: target policy ${targetPolicy.id} threw (${errorMessage(error)})`,\n )\n continue\n }\n if (!isTargetProbability(targetProb)) {\n diagnostics.push(`${point.id}: invalid targetProb ${formatProbability(targetProb)}`)\n continue\n }\n if (qHat !== null && qHat !== undefined && !isTargetProbability(qHat)) {\n diagnostics.push(`${point.id}: invalid qHat ${formatProbability(qHat)}; ignoring qHat`)\n qHat = null\n }\n\n trajectories.push({\n runId: point.id,\n reward: rewardOf(point),\n behaviorProb: point.behaviorProb,\n targetProb,\n qHat,\n })\n }\n return {\n targetPolicyId: targetPolicy.id,\n trajectories,\n dropped: points.length - trajectories.length,\n diagnostics: compactDiagnostics(diagnostics, options.maxDiagnostics ?? 20),\n }\n}\n\nexport function evaluateBeliefOffPolicy(\n points: BeliefDecisionPoint[],\n targetPolicy: BeliefOpeTargetPolicy,\n options: BeliefOpeOptions = {},\n): BeliefOpeReport {\n const trajectoryReport = beliefDecisionsToOffPolicyTrajectories(points, targetPolicy, options)\n const { trajectories } = trajectoryReport\n const estimates = offPolicyEstimateAll(trajectories, options)\n const support = supportDiagnostics(estimates.dr, {\n minEffectiveSampleSize: options.minEffectiveSampleSize ?? 30,\n minEffectiveSampleRatio: options.minEffectiveSampleRatio ?? 0.25,\n dropped: trajectoryReport.dropped,\n diagnostics: trajectoryReport.diagnostics,\n })\n return { targetPolicyId: targetPolicy.id, ...estimates, support }\n}\n\nfunction supportDiagnostics(\n estimate: { n: number; effectiveSampleSize: number; maxImportanceWeight: number },\n options: {\n minEffectiveSampleSize: number\n minEffectiveSampleRatio: number\n dropped: number\n diagnostics: string[]\n },\n): BeliefOpeSupportDiagnostics {\n const ratio = estimate.n > 0 ? estimate.effectiveSampleSize / estimate.n : 0\n const reasons: string[] = [...options.diagnostics]\n if (estimate.n === 0) {\n reasons.push('no valid OPE trajectories')\n }\n if (options.dropped > 0) {\n reasons.push(`dropped ${options.dropped} unsupported decision(s)`)\n }\n if (estimate.effectiveSampleSize < options.minEffectiveSampleSize) {\n reasons.push(\n `effective sample size ${estimate.effectiveSampleSize.toFixed(2)} below ${options.minEffectiveSampleSize}`,\n )\n }\n if (ratio < options.minEffectiveSampleRatio) {\n reasons.push(\n `effective sample ratio ${ratio.toFixed(2)} below ${options.minEffectiveSampleRatio}`,\n )\n }\n if (estimate.maxImportanceWeight > 10) {\n reasons.push(`max importance weight ${estimate.maxImportanceWeight.toFixed(2)} is high`)\n }\n return {\n supported: reasons.length === 0,\n n: estimate.n,\n dropped: options.dropped,\n effectiveSampleSize: estimate.effectiveSampleSize,\n effectiveSampleRatio: ratio,\n maxImportanceWeight: estimate.maxImportanceWeight,\n reasons,\n }\n}\n\nfunction rewardOf(point: BeliefDecisionPoint): number {\n if (typeof point.outcome?.reward === 'number') return point.outcome.reward\n if (typeof point.outcome?.score === 'number') return point.outcome.score\n if (point.outcome?.success === true) return 1\n return 0\n}\n\nfunction isBehaviorProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value > 0 && value <= 1\n}\n\nfunction isTargetProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1\n}\n\nfunction formatProbability(value: unknown): string {\n return typeof value === 'number' ? String(value) : String(value ?? 'missing')\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n\nfunction compactDiagnostics(diagnostics: string[], maxDiagnostics: number): string[] {\n if (diagnostics.length <= maxDiagnostics) return diagnostics\n return [\n ...diagnostics.slice(0, maxDiagnostics),\n `${diagnostics.length - maxDiagnostics} additional OPE diagnostic(s) omitted`,\n ]\n}\n","import { ValidationError } from '../errors'\nimport { confidenceInterval } from '../statistics'\nimport type {\n BeliefDecisionPoint,\n BeliefPolicyAction,\n BeliefSelectivePolicy,\n BeliefSelectivePolicyMetrics,\n BeliefUtilityOptions,\n} from './types'\n\nexport interface EvaluateBeliefSelectivePolicyOptions {\n utility?: BeliefUtilityOptions\n minN?: number\n minAccepted?: number\n minUtilityDelta?: number\n seed?: number\n}\n\nconst DEFAULT_UTILITY: Required<BeliefUtilityOptions> = {\n successUtility: 1,\n failureUtility: -1,\n deferUtility: 0,\n verifyCost: 0.05,\n askCost: 0.05,\n retryCost: 0.1,\n stopUtility: 0,\n costWeight: 1,\n}\n\nexport function thresholdSelectivePolicy(options: {\n id?: string\n confidenceThreshold: number\n belowThresholdAction?: Exclude<BeliefPolicyAction, 'accept'>\n}): BeliefSelectivePolicy {\n const threshold = options.confidenceThreshold\n if (!Number.isFinite(threshold) || threshold < 0 || threshold > 1) {\n throw new ValidationError(\n `thresholdSelectivePolicy: confidenceThreshold must be in [0, 1], got ${threshold}`,\n )\n }\n const belowThresholdAction = options.belowThresholdAction ?? 'verify'\n return {\n id: options.id ?? `confidence>=${threshold}`,\n decide(point) {\n const confidence = point.confidence ?? 0\n return {\n action: confidence >= threshold ? 'accept' : belowThresholdAction,\n confidence,\n targetProb: point.targetProb,\n qHat: point.qHat,\n reason:\n confidence >= threshold ? 'confidence threshold passed' : 'confidence threshold failed',\n }\n },\n }\n}\n\nexport function evaluateBeliefSelectivePolicy(\n points: BeliefDecisionPoint[],\n policy: BeliefSelectivePolicy,\n options: EvaluateBeliefSelectivePolicyOptions = {},\n): BeliefSelectivePolicyMetrics {\n const utility = { ...DEFAULT_UTILITY, ...(options.utility ?? {}) }\n const scored = points.filter((point) => point.outcome)\n const minN = options.minN ?? 30\n const minAccepted = options.minAccepted ?? 5\n const minUtilityDelta = options.minUtilityDelta ?? 0\n const deltas: number[] = []\n const acceptedRewards: number[] = []\n const rejectedRewards: number[] = []\n let baselineUtility = 0\n let policyUtility = 0\n let accepted = 0\n let acceptedErrors = 0\n\n for (const point of scored) {\n const baseline = acceptUtility(point, utility)\n const decision = policy.decide(point)\n const candidate = policyDecisionUtility(point, decision.action, utility)\n const reward = rewardOf(point, utility)\n baselineUtility += baseline\n policyUtility += candidate\n deltas.push(candidate - baseline)\n if (decision.action === 'accept') {\n accepted++\n acceptedRewards.push(reward)\n if (reward < 0) acceptedErrors++\n } else {\n rejectedRewards.push(reward)\n }\n }\n\n const n = scored.length\n const rejected = Math.max(0, n - accepted)\n const ci = confidenceInterval(deltas, 0.95, { seed: options.seed ?? 17 })\n const reasons: string[] = []\n if (n < minN) reasons.push(`need at least ${minN} scored decisions, got ${n}`)\n if (accepted < minAccepted)\n reasons.push(`need at least ${minAccepted} accepted decisions, got ${accepted}`)\n if (ci.lower <= minUtilityDelta) {\n reasons.push(`utility CI lower bound ${ci.lower.toFixed(4)} does not clear ${minUtilityDelta}`)\n }\n const recommendation =\n n < minN || accepted < minAccepted\n ? 'need_more_data'\n : ci.lower > minUtilityDelta\n ? 'ship'\n : 'hold'\n\n return {\n policyId: policy.id,\n n,\n accepted,\n rejected,\n coverage: n > 0 ? accepted / n : 0,\n acceptedErrorRate: accepted > 0 ? acceptedErrors / accepted : 0,\n baselineUtility,\n policyUtility,\n utilityDelta: policyUtility - baselineUtility,\n utilityCi95: ci,\n rejectedMeanReward: rejectedRewards.length > 0 ? mean(rejectedRewards) : null,\n recommendation,\n reasons,\n }\n}\n\nfunction acceptUtility(\n point: BeliefDecisionPoint,\n utility: Required<BeliefUtilityOptions>,\n): number {\n return (\n rewardOf(point, utility) - utility.costWeight * (point.costUsd ?? point.outcome?.costUsd ?? 0)\n )\n}\n\nfunction policyDecisionUtility(\n point: BeliefDecisionPoint,\n action: BeliefPolicyAction,\n utility: Required<BeliefUtilityOptions>,\n): number {\n if (action === 'accept') return acceptUtility(point, utility)\n if (action === 'verify') return utility.deferUtility - utility.verifyCost\n if (action === 'ask') return utility.deferUtility - utility.askCost\n if (action === 'retry') return utility.deferUtility - utility.retryCost\n if (action === 'stop') return utility.stopUtility\n return utility.deferUtility\n}\n\nfunction rewardOf(point: BeliefDecisionPoint, utility: Required<BeliefUtilityOptions>): number {\n const outcome = point.outcome\n if (!outcome) return utility.failureUtility\n if (typeof outcome.reward === 'number') return 2 * outcome.reward - 1\n if (typeof outcome.score === 'number') return 2 * outcome.score - 1\n if (outcome.success === true) return utility.successUtility\n if (outcome.success === false) return utility.failureUtility\n return utility.failureUtility\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n","import { type BeliefCalibrationOptions, calibrateBeliefDecisions } from './calibration'\nimport { type BeliefOpeOptions, evaluateBeliefOffPolicy } from './ope'\nimport {\n type EvaluateBeliefSelectivePolicyOptions,\n evaluateBeliefSelectivePolicy,\n} from './selective'\nimport type {\n BeliefDecisionPoint,\n BeliefEvaluationStatus,\n BeliefOpeStatus,\n BeliefOpeTargetPolicy,\n BeliefPolicyEvaluationReport,\n BeliefSelectivePolicy,\n} from './types'\n\nexport interface AnalyzeBeliefPolicyOpeOptions extends BeliefOpeOptions {\n targetPolicy?: BeliefOpeTargetPolicy\n}\n\nexport interface AnalyzeBeliefPolicyOptions {\n points: BeliefDecisionPoint[]\n policy: BeliefSelectivePolicy\n selective?: EvaluateBeliefSelectivePolicyOptions\n calibration?: BeliefCalibrationOptions\n ope?: AnalyzeBeliefPolicyOpeOptions\n requireOpe?: boolean\n}\n\nexport function analyzeBeliefPolicy(\n options: AnalyzeBeliefPolicyOptions,\n): BeliefPolicyEvaluationReport {\n const selective = evaluateBeliefSelectivePolicy(options.points, options.policy, options.selective)\n const calibration = calibrateBeliefDecisions(options.points, options.calibration)\n const opeTargetPolicy = options.ope?.targetPolicy\n const ope = opeTargetPolicy\n ? evaluateBeliefOffPolicy(options.points, opeTargetPolicy, options.ope)\n : null\n const diagnostics: string[] = []\n const selectiveStatus = selective.recommendation\n const calibrationStatus = calibration ? 'supported' : 'unsupported'\n const opeRequested = options.requireOpe === true || options.ope !== undefined\n const opeStatus: BeliefOpeStatus = ope\n ? ope.support.supported\n ? 'supported'\n : 'unsupported'\n : opeRequested\n ? 'unsupported'\n : 'not_requested'\n\n if (!calibration) diagnostics.push('calibration unsupported: not enough confidence/outcome pairs')\n if (opeRequested && !opeTargetPolicy) diagnostics.push('OPE unsupported: missing target policy')\n else if (ope && !ope.support.supported)\n diagnostics.push(...ope.support.reasons.map((reason) => `OPE unsupported: ${reason}`))\n\n const status = overallStatus({\n selectiveStatus,\n hasCalibration: calibration !== null,\n opeStatus,\n opeRequested,\n })\n\n return {\n policyId: options.policy.id,\n n: options.points.length,\n status,\n selectiveStatus,\n calibrationStatus,\n opeStatus,\n ...(ope ? { opeTargetPolicyId: ope.targetPolicyId } : {}),\n selective,\n ...(calibration ? { calibration } : {}),\n ...(ope ? { ope } : {}),\n diagnostics,\n }\n}\n\nfunction overallStatus(options: {\n selectiveStatus: BeliefEvaluationStatus\n hasCalibration: boolean\n opeStatus: BeliefOpeStatus\n opeRequested: boolean\n}): BeliefEvaluationStatus {\n if (options.selectiveStatus === 'need_more_data' || !options.hasCalibration) {\n return 'need_more_data'\n }\n if (options.selectiveStatus === 'hold') return 'hold'\n if (options.opeRequested && options.opeStatus !== 'supported') return 'hold'\n return 'ship'\n}\n","import type { CodeAgentSessionSource } from '../contract/intake/code-agent-session'\nimport type { RunRecord } from '../run-record'\nimport { embeddedBeliefOpeTargetPolicy } from './ope'\nimport { type AnalyzeBeliefPolicyOptions, analyzeBeliefPolicy } from './report'\nimport { thresholdSelectivePolicy } from './selective'\nimport type {\n BeliefDecisionExtractionDiagnostic,\n BeliefDecisionExtractionReport,\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceRef,\n BeliefPolicyEvaluationReport,\n BeliefSelectivePolicy,\n} from './types'\n\nexport type CodeAgentBeliefDecisionTargetId =\n | 'failure-recovery'\n | 'tool-selection'\n | 'graph-completion'\n\nexport interface ExtractCodeAgentBeliefDecisionPointsOptions {\n source: CodeAgentSessionSource\n entries: unknown[]\n run: Pick<RunRecord, 'runId' | 'scenarioId' | 'outcome' | 'costUsd'>\n sourcePath?: string\n}\n\nexport interface BeliefDecisionInventoryBucket {\n id: string\n kind?: BeliefDecisionKind\n targetId?: CodeAgentBeliefDecisionTargetId\n n: number\n withOutcome: number\n withConfidence: number\n withCandidateActions: number\n withBehaviorProb: number\n withTargetProb: number\n successRate: number | null\n meanScore: number | null\n meanConfidence: number | null\n}\n\nexport interface BeliefDecisionInventoryReport {\n n: number\n byKind: BeliefDecisionInventoryBucket[]\n byTarget: BeliefDecisionInventoryBucket[]\n diagnostics: string[]\n}\n\nexport interface BeliefDecisionTargetSelection {\n id: CodeAgentBeliefDecisionTargetId\n label: string\n points: BeliefDecisionPoint[]\n support: BeliefDecisionInventoryBucket\n reasons: string[]\n}\n\nexport interface SelectBeliefDecisionTargetOptions {\n minN?: number\n minOutcomeCoverage?: number\n preferredTargets?: CodeAgentBeliefDecisionTargetId[]\n}\n\nexport interface AnalyzeBeliefDecisionCorpusOptions {\n points: BeliefDecisionPoint[]\n targetId?: CodeAgentBeliefDecisionTargetId\n minN?: number\n minOutcomeCoverage?: number\n minAccepted?: number\n confidenceThreshold?: number\n policy?: BeliefSelectivePolicy\n requireOpe?: boolean\n policyOptions?: Partial<AnalyzeBeliefPolicyOptions>\n}\n\nexport interface BeliefDecisionCorpusEvaluation {\n inventory: BeliefDecisionInventoryReport\n target?: BeliefDecisionTargetSelection\n policy?: BeliefSelectivePolicy\n evaluation?: BeliefPolicyEvaluationReport\n diagnostics: string[]\n}\n\ntype ObservedActionKind = 'tool' | 'patch' | 'terminal' | 'graph-completion'\n\ninterface ObservedAction {\n id: string\n localId: string\n stepIndex: number\n kind: ObservedActionKind\n action: string\n timestamp?: number\n success?: boolean\n costUsd?: number\n evidence: BeliefEvidenceRef[]\n metadata: Record<string, unknown>\n}\n\nconst FAILURE_RECOVERY_ACTIONS = ['retry', 'verify', 'continue', 'stop'] as const\n\nconst TARGET_LABELS: Record<CodeAgentBeliefDecisionTargetId, string> = {\n 'failure-recovery': 'Failure recovery after tool or patch failure',\n 'tool-selection': 'Tool/action selection',\n 'graph-completion': 'Graph completion decision',\n}\n\nexport function extractCodeAgentBeliefDecisionPoints(\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionExtractionReport {\n const entries = options.entries.filter(isRecord)\n const diagnostics: BeliefDecisionExtractionDiagnostic[] = []\n const observed = observedActionsFor(options.source, entries, options)\n const decisions: BeliefDecisionPoint[] = []\n\n for (const action of observed) {\n if (action.kind === 'tool' || action.kind === 'patch') {\n decisions.push(toolSelectionDecision(action, options))\n }\n if (action.kind === 'graph-completion') {\n decisions.push(graphCompletionDecision(action, options))\n }\n }\n\n for (const failed of observed) {\n if ((failed.kind !== 'tool' && failed.kind !== 'patch') || failed.success !== false) continue\n const next = observed.find(\n (candidate) =>\n candidate.stepIndex > failed.stepIndex &&\n (candidate.kind === 'tool' || candidate.kind === 'patch' || candidate.kind === 'terminal'),\n )\n if (!next) {\n diagnostics.push({\n runId: options.run.runId,\n severity: 'warning',\n reason: `${failed.id}: failed action has no observable follow-up decision`,\n })\n continue\n }\n decisions.push(failureRecoveryDecision(failed, next, options))\n }\n\n if (decisions.length === 0) {\n diagnostics.push({\n runId: options.run.runId,\n severity: 'info',\n reason: `no belief decision points extracted from ${options.source} entries`,\n })\n }\n\n return { decisions, diagnostics }\n}\n\nexport function inventoryBeliefDecisionPoints(\n points: BeliefDecisionPoint[],\n): BeliefDecisionInventoryReport {\n const byKind = [...groupBy(points, (point) => point.kind).entries()]\n .map(([kind, bucketPoints]) =>\n bucketFor(kind, bucketPoints, { kind: kind as BeliefDecisionKind }),\n )\n .sort(sortBuckets)\n const byTarget = [...groupBy(points, targetIdOf).entries()]\n .filter((entry): entry is [CodeAgentBeliefDecisionTargetId, BeliefDecisionPoint[]] => {\n return entry[0] !== undefined\n })\n .map(([targetId, bucketPoints]) => bucketFor(targetId, bucketPoints, { targetId }))\n .sort(sortBuckets)\n\n const diagnostics: string[] = []\n if (points.length === 0) diagnostics.push('no decision points available')\n for (const bucket of byTarget) {\n if (bucket.withOutcome < bucket.n) {\n diagnostics.push(`${bucket.id}: ${bucket.n - bucket.withOutcome} decision(s) missing outcome`)\n }\n if (bucket.withBehaviorProb < bucket.n || bucket.withTargetProb < bucket.n) {\n diagnostics.push(`${bucket.id}: OPE support incomplete`)\n }\n }\n\n return { n: points.length, byKind, byTarget, diagnostics }\n}\n\nexport function selectBeliefDecisionTarget(\n points: BeliefDecisionPoint[],\n options: SelectBeliefDecisionTargetOptions = {},\n): BeliefDecisionTargetSelection | null {\n const minN = options.minN ?? 10\n const minOutcomeCoverage = options.minOutcomeCoverage ?? 0.8\n const preferredTargets = options.preferredTargets ?? [\n 'failure-recovery',\n 'tool-selection',\n 'graph-completion',\n ]\n const inventory = inventoryBeliefDecisionPoints(points)\n\n for (const targetId of preferredTargets) {\n const support = inventory.byTarget.find((bucket) => bucket.targetId === targetId)\n if (!support) continue\n const reasons: string[] = []\n if (support.n < minN) reasons.push(`need at least ${minN} decisions, got ${support.n}`)\n const outcomeCoverage = support.n > 0 ? support.withOutcome / support.n : 0\n if (outcomeCoverage < minOutcomeCoverage) {\n reasons.push(\n `outcome coverage ${outcomeCoverage.toFixed(2)} below ${minOutcomeCoverage.toFixed(2)}`,\n )\n }\n if (reasons.length > 0) continue\n const targetPoints = points.filter((point) => targetIdOf(point) === targetId)\n return {\n id: targetId,\n label: TARGET_LABELS[targetId],\n points: targetPoints,\n support,\n reasons,\n }\n }\n\n return null\n}\n\nexport function analyzeBeliefDecisionCorpus(\n options: AnalyzeBeliefDecisionCorpusOptions,\n): BeliefDecisionCorpusEvaluation {\n const inventory = inventoryBeliefDecisionPoints(options.points)\n const diagnostics = [...inventory.diagnostics]\n const target =\n options.targetId !== undefined\n ? targetSelectionFor(options.points, options.targetId, options)\n : selectBeliefDecisionTarget(options.points, options)\n\n if (!target) {\n diagnostics.push('no decision target has enough support for policy evaluation')\n return { inventory, diagnostics }\n }\n\n const policy =\n options.policy ??\n thresholdSelectivePolicy({\n id: `${target.id}:confidence>=${options.confidenceThreshold ?? 0.5}`,\n confidenceThreshold: options.confidenceThreshold ?? 0.5,\n belowThresholdAction: 'verify',\n })\n const minN = options.minN ?? 10\n const evaluation = analyzeBeliefPolicy({\n points: target.points,\n policy,\n selective: {\n minN,\n minAccepted: options.minAccepted ?? Math.min(5, minN),\n minUtilityDelta: 0,\n ...(options.policyOptions?.selective ?? {}),\n },\n calibration: {\n minPairs: Math.min(10, minN),\n policy,\n region: 'all',\n ...(options.policyOptions?.calibration ?? {}),\n },\n ope: {\n targetPolicy: embeddedBeliefOpeTargetPolicy(`${target.id}:embedded-target-prob`),\n minEffectiveSampleSize: minN,\n ...(options.policyOptions?.ope ?? {}),\n },\n requireOpe: options.requireOpe ?? true,\n })\n\n return { inventory, target, policy, evaluation, diagnostics }\n}\n\nfunction observedActionsFor(\n source: CodeAgentSessionSource,\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n switch (source) {\n case 'codex':\n return codexObservedActions(entries, options)\n case 'claude-code':\n return claudeObservedActions(entries, options)\n case 'opencode':\n return openCodeObservedActions(entries, options)\n case 'kimi-code':\n return kimiObservedActions(entries, options)\n case 'pi':\n return piObservedActions(entries, options)\n }\n}\n\nfunction codexObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const payload = record(entry.payload) ?? {}\n const entryType = stringField(entry, 'type')\n const payloadType = stringField(payload, 'type')\n const timestamp = timestampMs(entry.timestamp)\n if (entryType === 'response_item') {\n if (payloadType === 'function_call' || payloadType === 'custom_tool_call') {\n const callId =\n stringField(payload, 'call_id') ?? stringField(payload, 'id') ?? `${actions.length}`\n const action = observedAction({\n options,\n localId: callId,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(payload, 'name') ?? payloadType,\n timestamp,\n metadata: { sourceEventType: entryType, payloadType },\n })\n calls.set(callId, action)\n actions.push(action)\n }\n if (payloadType === 'function_call_output' || payloadType === 'custom_tool_call_output') {\n const callId = stringField(payload, 'call_id') ?? stringField(payload, 'id')\n const action = callId ? calls.get(callId) : undefined\n if (action) action.success = !looksLikeError(payload.output)\n }\n }\n if (entryType === 'event_msg') {\n if (payloadType === 'patch_apply_end') {\n actions.push(\n observedAction({\n options,\n localId: stringField(payload, 'call_id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n action: 'patch',\n timestamp,\n success: typeof payload.success === 'boolean' ? payload.success : undefined,\n metadata: { sourceEventType: entryType, payloadType },\n }),\n )\n }\n if (payloadType === 'task_complete' || payloadType === 'turn_aborted') {\n actions.push(\n observedAction({\n options,\n localId: `${payloadType}-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: payloadType === 'task_complete' ? 'stop' : 'abort',\n timestamp,\n success: payloadType === 'task_complete',\n metadata: { sourceEventType: entryType, payloadType },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction claudeObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const timestamp = timestampMs(entry.timestamp)\n const message = record(entry.message)\n const content = Array.isArray(message?.content) ? message.content : []\n for (const item of content) {\n const part = record(item)\n if (!part) continue\n const partType = stringField(part, 'type')\n if (partType === 'tool_use') {\n const id = stringField(part, 'id') ?? `tool-${actions.length}`\n const action = observedAction({\n options,\n localId: id,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(part, 'name') ?? 'tool',\n timestamp,\n metadata: { sourceEventType: stringField(entry, 'type'), partType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (partType === 'tool_result') {\n const id = stringField(part, 'tool_use_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.success = part.is_error !== true\n }\n }\n if (stringField(entry, 'type') === 'pr-link') {\n actions.push(\n observedAction({\n options,\n localId: `pr-link-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: 'stop',\n timestamp,\n success: true,\n metadata: { sourceEventType: 'pr-link' },\n }),\n )\n }\n }\n return actions\n}\n\nfunction openCodeObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n for (const entry of entries) {\n const type = stringField(entry, 'type')\n const role = stringField(entry, 'role')\n const time = record(entry.time)\n const timestamp = timestampMs(time?.created)\n if (type === 'tool') {\n const state = record(entry.state)\n const status = stringField(state ?? {}, 'status')\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(entry, 'tool') ?? 'tool',\n timestamp,\n success: status === 'completed' ? true : status === 'error' ? false : undefined,\n metadata: { sourceEventType: type, status },\n }),\n )\n }\n if (type === 'patch') {\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `patch-${actions.length}`,\n stepIndex: actions.length,\n kind: 'patch',\n action: 'patch',\n timestamp,\n success: true,\n metadata: { sourceEventType: type },\n }),\n )\n }\n if (role === 'assistant') {\n const finish = stringField(entry, 'finish')\n if (finish === 'stop' || finish === 'error') {\n actions.push(\n observedAction({\n options,\n localId: stringField(entry, 'id') ?? `terminal-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: finish === 'stop' ? 'stop' : 'abort',\n timestamp: timestampMs(time?.completed) ?? timestamp,\n success: finish === 'stop',\n costUsd: numberField(entry, 'cost'),\n metadata: { sourceEventType: 'assistant', finish },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction kimiObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n const calls = new Map<string, ObservedAction>()\n for (const entry of entries) {\n const timestamp = timestampMs(entry.timestamp)\n const message = record(entry.message)\n const messageType = stringField(message ?? {}, 'type')\n const payload = record(message?.payload) ?? {}\n if (messageType === 'ToolCall') {\n const call = record(payload.function)\n const id = stringField(payload, 'id') ?? `tool-${actions.length}`\n const action = observedAction({\n options,\n localId: id,\n stepIndex: actions.length,\n kind: 'tool',\n action: stringField(call ?? {}, 'name') ?? 'tool',\n timestamp,\n metadata: { sourceEventType: messageType },\n })\n calls.set(id, action)\n actions.push(action)\n }\n if (messageType === 'ToolResult') {\n const id = stringField(payload, 'tool_call_id')\n const action = id ? calls.get(id) : undefined\n if (action) action.success = record(payload.return_value)?.is_error !== true\n }\n if (messageType === 'TurnEnd' || messageType === 'StepInterrupted') {\n actions.push(\n observedAction({\n options,\n localId: `${messageType}-${actions.length}`,\n stepIndex: actions.length,\n kind: 'terminal',\n action: messageType === 'TurnEnd' ? 'stop' : 'abort',\n timestamp,\n success: messageType === 'TurnEnd',\n metadata: { sourceEventType: messageType },\n }),\n )\n }\n }\n return actions\n}\n\nfunction piObservedActions(\n entries: Record<string, unknown>[],\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): ObservedAction[] {\n const actions: ObservedAction[] = []\n for (const entry of entries) {\n const nodes = Array.isArray(entry.nodes) ? entry.nodes : []\n for (const node of nodes) {\n const obj = record(node)\n const ir = record(obj?.ir) ?? obj\n const kind = stringField(ir ?? {}, 'kind')\n if (kind === 'ToolInvocation') {\n actions.push(\n observedAction({\n options,\n localId:\n stringField(ir ?? {}, 'id') ??\n stringField(obj ?? {}, 'id') ??\n `tool-${actions.length}`,\n stepIndex: actions.length,\n kind: 'tool',\n action: 'graph-tool',\n timestamp: timestampMs(ir?.createdAt),\n success: undefined,\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n if (kind === 'ToolResult') {\n const prior = [...actions].reverse().find((action) => action.kind === 'tool')\n if (prior) prior.success = true\n }\n if (kind === 'CompletionDecision') {\n actions.push(\n observedAction({\n options,\n localId:\n stringField(ir ?? {}, 'id') ??\n stringField(obj ?? {}, 'id') ??\n `completion-${actions.length}`,\n stepIndex: actions.length,\n kind: 'graph-completion',\n action: 'complete',\n timestamp: timestampMs(ir?.createdAt),\n success: true,\n metadata: { sourceEventType: 'graph-node', graphKind: kind },\n }),\n )\n }\n }\n }\n return actions\n}\n\nfunction toolSelectionDecision(\n action: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n return {\n id: `${options.run.runId}:tool-selection:${action.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: action.stepIndex,\n kind: 'tool-select',\n chosenAction: action.action,\n candidateActions: [action.action],\n confidence: 0.65,\n costUsd: action.costUsd,\n evidence: action.evidence,\n outcome: outcomeFromAction(action, options.run),\n metadata: {\n target: 'tool-selection',\n source: options.source,\n actionKind: action.kind,\n confidenceSource: 'fixed-observed-action-prior',\n ...action.metadata,\n },\n }\n}\n\nfunction graphCompletionDecision(\n action: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n return {\n id: `${options.run.runId}:graph-completion:${action.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: action.stepIndex,\n kind: 'stop',\n chosenAction: 'complete',\n candidateActions: ['complete', 'continue', 'verify'],\n confidence: 0.75,\n evidence: action.evidence,\n outcome: outcomeFromAction(action, options.run),\n metadata: {\n target: 'graph-completion',\n source: options.source,\n confidenceSource: 'fixed-graph-completion-prior',\n ...action.metadata,\n },\n }\n}\n\nfunction failureRecoveryDecision(\n failed: ObservedAction,\n next: ObservedAction,\n options: ExtractCodeAgentBeliefDecisionPointsOptions,\n): BeliefDecisionPoint {\n const chosenAction = classifyFailureRecovery(failed, next)\n return {\n id: `${options.run.runId}:failure-recovery:${failed.localId}`,\n runId: options.run.runId,\n scenarioId: options.run.scenarioId,\n stepIndex: failed.stepIndex,\n kind: 'retry',\n chosenAction,\n candidateActions: [...FAILURE_RECOVERY_ACTIONS],\n confidence: recoveryConfidence(chosenAction),\n evidence: [...failed.evidence, ...next.evidence],\n outcome: outcomeFromAction(next, options.run),\n metadata: {\n target: 'failure-recovery',\n source: options.source,\n failedActionKind: failed.kind,\n failedAction: failed.action,\n nextActionKind: next.kind,\n nextAction: next.action,\n confidenceSource: 'heuristic-observed-follow-up',\n },\n }\n}\n\nfunction classifyFailureRecovery(\n failed: ObservedAction,\n next: ObservedAction,\n): (typeof FAILURE_RECOVERY_ACTIONS)[number] {\n if (next.kind === 'terminal') return 'stop'\n if (isVerificationAction(next.action)) return 'verify'\n if (next.kind === failed.kind && next.action === failed.action) return 'retry'\n return 'continue'\n}\n\nfunction recoveryConfidence(action: string): number {\n if (action === 'verify') return 0.8\n if (action === 'retry') return 0.6\n if (action === 'stop') return 0.55\n return 0.35\n}\n\nfunction isVerificationAction(action: string): boolean {\n const normalized = action.toLowerCase()\n return (\n normalized.includes('verify') ||\n normalized.includes('test') ||\n normalized.includes('check') ||\n normalized.includes('lint') ||\n normalized.includes('build') ||\n normalized.includes('typecheck') ||\n normalized.includes('pytest') ||\n normalized.includes('vitest') ||\n normalized.includes('tsc')\n )\n}\n\nfunction outcomeFromAction(\n action: ObservedAction,\n run: Pick<RunRecord, 'outcome' | 'costUsd'>,\n): BeliefDecisionOutcome | undefined {\n const runScore = scoreFromRun(run)\n const success = action.success ?? (runScore !== null ? runScore >= 0.5 : undefined)\n const score = action.success === undefined ? (runScore ?? undefined) : action.success ? 1 : 0\n if (success === undefined && score === undefined) return undefined\n return {\n ...(success !== undefined ? { success } : {}),\n ...(score !== undefined ? { score, reward: score } : {}),\n ...(action.costUsd !== undefined ? { costUsd: action.costUsd } : {}),\n metadata: {\n outcomeSource: action.success === undefined ? 'run-score' : 'observed-action-status',\n },\n }\n}\n\nfunction observedAction(input: {\n options: ExtractCodeAgentBeliefDecisionPointsOptions\n localId: string\n stepIndex: number\n kind: ObservedActionKind\n action: string\n timestamp?: number\n success?: boolean\n costUsd?: number\n metadata?: Record<string, unknown>\n}): ObservedAction {\n const id = `${input.options.run.runId}:${input.options.source}:${input.localId}`\n return {\n id,\n localId: input.localId,\n stepIndex: input.stepIndex,\n kind: input.kind,\n action: input.action,\n timestamp: input.timestamp,\n success: input.success,\n costUsd: input.costUsd,\n evidence: [\n {\n source: 'event',\n id,\n runId: input.options.run.runId,\n detail: input.action,\n metadata: {\n source: input.options.source,\n sourcePath: input.options.sourcePath,\n ...input.metadata,\n },\n },\n ],\n metadata: input.metadata ?? {},\n }\n}\n\nfunction targetSelectionFor(\n points: BeliefDecisionPoint[],\n targetId: CodeAgentBeliefDecisionTargetId,\n options: SelectBeliefDecisionTargetOptions,\n): BeliefDecisionTargetSelection | null {\n const targetPoints = points.filter((point) => targetIdOf(point) === targetId)\n if (targetPoints.length === 0) return null\n const support = bucketFor(targetId, targetPoints, { targetId })\n const minN = options.minN ?? 10\n const minOutcomeCoverage = options.minOutcomeCoverage ?? 0.8\n const reasons: string[] = []\n if (support.n < minN) reasons.push(`need at least ${minN} decisions, got ${support.n}`)\n const outcomeCoverage = support.n > 0 ? support.withOutcome / support.n : 0\n if (outcomeCoverage < minOutcomeCoverage) {\n reasons.push(\n `outcome coverage ${outcomeCoverage.toFixed(2)} below ${minOutcomeCoverage.toFixed(2)}`,\n )\n }\n if (reasons.length > 0) return null\n return { id: targetId, label: TARGET_LABELS[targetId], points: targetPoints, support, reasons }\n}\n\nfunction bucketFor(\n id: string,\n points: BeliefDecisionPoint[],\n identity: { kind?: BeliefDecisionKind; targetId?: CodeAgentBeliefDecisionTargetId },\n): BeliefDecisionInventoryBucket {\n const outcomes = points.filter((point) => point.outcome)\n const scores = outcomes\n .map((point) => outcomeScore(point.outcome))\n .filter((score): score is number => score !== null)\n const confidences = points\n .map((point) => point.confidence)\n .filter((confidence): confidence is number => typeof confidence === 'number')\n const successes = outcomes.filter((point) => point.outcome?.success === true).length\n const successDenominator = outcomes.filter(\n (point) => typeof point.outcome?.success === 'boolean',\n ).length\n return {\n id,\n ...identity,\n n: points.length,\n withOutcome: outcomes.length,\n withConfidence: confidences.length,\n withCandidateActions: points.filter((point) => (point.candidateActions?.length ?? 0) > 0)\n .length,\n withBehaviorProb: points.filter((point) => point.behaviorProb !== undefined).length,\n withTargetProb: points.filter((point) => point.targetProb !== undefined).length,\n successRate: successDenominator > 0 ? successes / successDenominator : null,\n meanScore: scores.length > 0 ? mean(scores) : null,\n meanConfidence: confidences.length > 0 ? mean(confidences) : null,\n }\n}\n\nfunction targetIdOf(point: BeliefDecisionPoint): CodeAgentBeliefDecisionTargetId | undefined {\n const target = point.metadata?.target\n if (target === 'failure-recovery' || target === 'tool-selection' || target === 'graph-completion')\n return target\n return undefined\n}\n\nfunction outcomeScore(outcome: BeliefDecisionOutcome | undefined): number | null {\n if (!outcome) return null\n if (typeof outcome.score === 'number') return outcome.score\n if (typeof outcome.reward === 'number') return outcome.reward\n if (outcome.success === true) return 1\n if (outcome.success === false) return 0\n return null\n}\n\nfunction scoreFromRun(run: Pick<RunRecord, 'outcome'>): number | null {\n if (typeof run.outcome.holdoutScore === 'number') return run.outcome.holdoutScore\n if (typeof run.outcome.searchScore === 'number') return run.outcome.searchScore\n return null\n}\n\nfunction sortBuckets(a: BeliefDecisionInventoryBucket, b: BeliefDecisionInventoryBucket): number {\n return b.n - a.n || a.id.localeCompare(b.id)\n}\n\nfunction groupBy<T, K>(values: T[], keyOf: (value: T) => K): Map<K, T[]> {\n const map = new Map<K, T[]>()\n for (const value of values) {\n const key = keyOf(value)\n const bucket = map.get(key)\n if (bucket) bucket.push(value)\n else map.set(key, [value])\n }\n return map\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n\nfunction looksLikeError(value: unknown): boolean {\n if (isRecord(value)) {\n if (value.is_error === true || value.error === true) return true\n if ('Err' in value) return true\n }\n if (typeof value !== 'string') return false\n return /\\b(error|failed|exception|traceback)\\b/i.test(value)\n}\n\nfunction timestampMs(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) {\n return value > 1_000_000_000_000 ? value : value * 1000\n }\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Date.parse(value)\n return Number.isFinite(parsed) ? parsed : undefined\n }\n return undefined\n}\n\nfunction stringField(obj: Record<string, unknown>, key: string): string | undefined {\n const value = obj[key]\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction numberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = obj[key]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return isRecord(value) ? value : null\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n","import {\n type AnalyzeBeliefDecisionCorpusOptions,\n analyzeBeliefDecisionCorpus,\n type BeliefDecisionCorpusEvaluation,\n} from './code-agent-corpus'\n\nexport type BeliefResearchClaimScope = 'selective' | 'counterfactual'\nexport type BeliefResearchEvidenceStatus = 'supported' | 'blocked'\nexport type BeliefResearchGateId = 'corpus' | 'selective' | 'calibration' | 'ope'\n\nexport interface BeliefResearchEvidenceGate {\n id: BeliefResearchGateId\n status: BeliefResearchEvidenceStatus\n blockers: string[]\n caveats: string[]\n}\n\nexport interface BeliefDecisionResearchEvidencePacket {\n claimScope: BeliefResearchClaimScope\n status: BeliefResearchEvidenceStatus\n analysis: BeliefDecisionCorpusEvaluation\n gates: BeliefResearchEvidenceGate[]\n blockers: string[]\n caveats: string[]\n}\n\nexport interface BuildBeliefDecisionResearchEvidencePacketOptions\n extends AnalyzeBeliefDecisionCorpusOptions {\n claimScope?: BeliefResearchClaimScope\n}\n\nexport function buildBeliefDecisionResearchEvidencePacket(\n options: BuildBeliefDecisionResearchEvidencePacketOptions,\n): BeliefDecisionResearchEvidencePacket {\n const claimScope = options.claimScope ?? 'counterfactual'\n const requireOpe = claimScope === 'counterfactual'\n const analysis = analyzeBeliefDecisionCorpus({\n ...options,\n requireOpe: options.requireOpe ?? requireOpe,\n })\n const gates = [\n corpusGate(analysis),\n selectiveGate(analysis),\n calibrationGate(analysis),\n ...(requireOpe ? [opeGate(analysis)] : []),\n ]\n const caveats = unique([\n ...gates.flatMap((gate) => gate.caveats),\n ...(claimScope === 'selective'\n ? ['counterfactual claims excluded: OPE support was not required']\n : []),\n ])\n\n return {\n claimScope,\n status: gates.every((gate) => gate.status === 'supported') ? 'supported' : 'blocked',\n analysis,\n gates,\n blockers: unique(gates.flatMap((gate) => gate.blockers)),\n caveats,\n }\n}\n\nfunction corpusGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const support = analysis.target?.support\n if (!support) {\n return blocked('corpus', 'no decision target has enough outcome support')\n }\n\n const caveats =\n support.withBehaviorProb < support.n || support.withTargetProb < support.n\n ? ['propensity support incomplete; counterfactual claims will require OPE support']\n : []\n\n return { id: 'corpus', status: 'supported', blockers: [], caveats }\n}\n\nfunction selectiveGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('selective', 'no policy evaluation was produced')\n if (evaluation.selectiveStatus !== 'ship') {\n return blocked(\n 'selective',\n ...orDefault(\n evaluation.selective.reasons,\n `selective status is ${evaluation.selectiveStatus}`,\n ),\n )\n }\n return { id: 'selective', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction calibrationGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('calibration', 'no policy evaluation was produced')\n if (evaluation.calibrationStatus !== 'supported') {\n return blocked('calibration', 'not enough confidence/outcome pairs for calibration')\n }\n return { id: 'calibration', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction opeGate(analysis: BeliefDecisionCorpusEvaluation): BeliefResearchEvidenceGate {\n const evaluation = analysis.evaluation\n if (!evaluation) return blocked('ope', 'no policy evaluation was produced')\n if (evaluation.opeStatus !== 'supported') {\n const reasons =\n evaluation.ope?.support.reasons ??\n evaluation.diagnostics.filter((diagnostic) => diagnostic.includes('OPE'))\n return blocked('ope', ...orDefault(reasons, 'missing OPE support'))\n }\n return { id: 'ope', status: 'supported', blockers: [], caveats: [] }\n}\n\nfunction blocked(id: BeliefResearchGateId, ...blockers: string[]): BeliefResearchEvidenceGate {\n return { id, status: 'blocked', blockers, caveats: [] }\n}\n\nfunction orDefault(values: string[], fallback: string): string[] {\n return values.length > 0 ? values : [fallback]\n}\n\nfunction unique(values: string[]): string[] {\n return [...new Set(values)]\n}\n","import {\n type CodeAgentSessionDiagnostic,\n type CodeAgentSessionIntakeOptions,\n type CodeAgentSessionIntakeResult,\n type CodeAgentSessionMetrics,\n type CodeAgentSessionSource,\n fromClaudeCodeSession,\n fromCodexSession,\n fromKimiCodeSession,\n fromOpenCodeSession,\n fromPiSession,\n} from '../contract/intake/code-agent-session'\nimport type { RunRecord } from '../run-record'\nimport {\n type BeliefDecisionInventoryReport,\n extractCodeAgentBeliefDecisionPoints,\n inventoryBeliefDecisionPoints,\n} from './code-agent-corpus'\nimport {\n type BeliefDecisionResearchEvidencePacket,\n type BuildBeliefDecisionResearchEvidencePacketOptions,\n buildBeliefDecisionResearchEvidencePacket,\n} from './research-evidence'\nimport type { BeliefDecisionExtractionDiagnostic, BeliefDecisionPoint } from './types'\n\nexport interface CodeAgentBeliefSession extends CodeAgentSessionIntakeOptions {\n source: CodeAgentSessionSource\n}\n\nexport interface BuildCodeAgentBeliefEvidenceCorpusOptions\n extends Omit<BuildBeliefDecisionResearchEvidencePacketOptions, 'points'> {\n sessions: CodeAgentBeliefSession[]\n}\n\nexport interface CodeAgentBeliefEvidenceCorpus {\n runs: RunRecord[]\n metrics: CodeAgentSessionMetrics[]\n intakeDiagnostics: CodeAgentSessionDiagnostic[]\n extractionDiagnostics: BeliefDecisionExtractionDiagnostic[]\n decisions: BeliefDecisionPoint[]\n inventory: BeliefDecisionInventoryReport\n evidence: BeliefDecisionResearchEvidencePacket\n}\n\nexport function buildCodeAgentBeliefEvidenceCorpus(\n options: BuildCodeAgentBeliefEvidenceCorpusOptions,\n): CodeAgentBeliefEvidenceCorpus {\n const { sessions, ...evidenceOptions } = options\n const runs: RunRecord[] = []\n const metrics: CodeAgentSessionMetrics[] = []\n const intakeDiagnostics: CodeAgentSessionDiagnostic[] = []\n const extractionDiagnostics: BeliefDecisionExtractionDiagnostic[] = []\n const decisions: BeliefDecisionPoint[] = []\n\n for (const session of sessions) {\n const intake = fromCodeAgentBeliefSession(session)\n runs.push(...intake.runs)\n metrics.push(...intake.metrics)\n intakeDiagnostics.push(...intake.diagnostics)\n\n for (const run of intake.runs) {\n const extraction = extractCodeAgentBeliefDecisionPoints({\n source: session.source,\n entries: session.entries,\n run,\n sourcePath: session.sourcePath,\n })\n decisions.push(...extraction.decisions)\n extractionDiagnostics.push(...extraction.diagnostics)\n }\n }\n\n const evidence = buildBeliefDecisionResearchEvidencePacket({\n ...evidenceOptions,\n points: decisions,\n })\n\n return {\n runs,\n metrics,\n intakeDiagnostics,\n extractionDiagnostics,\n decisions,\n inventory: inventoryBeliefDecisionPoints(decisions),\n evidence,\n }\n}\n\nfunction fromCodeAgentBeliefSession(session: CodeAgentBeliefSession): CodeAgentSessionIntakeResult {\n switch (session.source) {\n case 'codex':\n return fromCodexSession(session)\n case 'claude-code':\n return fromClaudeCodeSession(session)\n case 'opencode':\n return fromOpenCodeSession(session)\n case 'kimi-code':\n return fromKimiCodeSession(session)\n case 'pi':\n return fromPiSession(session)\n }\n}\n","import type { CalibrationReport } from '../meta-eval/calibration'\nimport type { OffPolicyEstimate } from '../rl/off-policy'\n\nexport const BELIEF_DECISION_KINDS = [\n 'continue',\n 'verify',\n 'ask',\n 'retry',\n 'stop',\n 'memory-write',\n 'memory-read',\n 'tool-select',\n 'skill-select',\n 'workflow-select',\n 'surface-promote',\n] as const\n\nexport type BeliefDecisionKind = (typeof BELIEF_DECISION_KINDS)[number]\n\nexport const BELIEF_EVIDENCE_SOURCES = [\n 'run',\n 'span',\n 'event',\n 'finding',\n 'memory',\n 'knowledge',\n 'policy',\n] as const\n\nexport type BeliefEvidenceSource = (typeof BELIEF_EVIDENCE_SOURCES)[number]\n\nexport const BELIEF_EVIDENCE_QUALITIES = [\n 'direct',\n 'derived',\n 'self-reported',\n 'unverified',\n 'stale',\n 'contradicted',\n] as const\n\nexport type BeliefEvidenceQuality = (typeof BELIEF_EVIDENCE_QUALITIES)[number]\n\nexport const BELIEF_EVALUATION_CRITERIA = [\n {\n id: 'capture-integrity',\n label: 'Capture integrity',\n reasonCodes: ['trace-missing', 'run-record-missing', 'backend-integrity-missing'],\n },\n {\n id: 'decision-completeness',\n label: 'Decision completeness',\n reasonCodes: [\n 'candidate-actions-missing',\n 'chosen-action-missing',\n 'decision-evidence-missing',\n ],\n },\n {\n id: 'evidence-quality',\n label: 'Evidence quality',\n reasonCodes: [\n 'evidence-stale',\n 'evidence-contradictory',\n 'evidence-unverified',\n 'evidence-self-reported',\n ],\n },\n {\n id: 'outcome-quality',\n label: 'Outcome quality',\n reasonCodes: ['outcome-missing', 'outcome-delayed', 'cost-missing'],\n },\n {\n id: 'calibration',\n label: 'Calibration',\n reasonCodes: ['confidence-missing', 'calibration-unsupported', 'calibration-gap-high'],\n },\n {\n id: 'accepted-region-risk',\n label: 'Accepted-region risk',\n reasonCodes: ['accepted-error-high', 'coverage-too-low'],\n },\n {\n id: 'policy-value',\n label: 'Policy value',\n reasonCodes: ['utility-lift-missing', 'baseline-dominates', 'cost-too-high'],\n },\n {\n id: 'ope-support',\n label: 'OPE support',\n reasonCodes: [\n 'behavior-propensity-missing',\n 'behavior-propensity-invalid',\n 'target-propensity-missing',\n 'target-propensity-invalid',\n 'effective-sample-size-low',\n 'importance-weight-high',\n ],\n },\n {\n id: 'memory-health',\n label: 'Memory health',\n reasonCodes: [\n 'memory-stale',\n 'memory-poisoning-risk',\n 'context-bloat',\n 'memory-write-unverified',\n ],\n },\n {\n id: 'surface-attribution',\n label: 'Surface attribution',\n reasonCodes: ['surface-claim-unsupported', 'causal-attribution-missing'],\n },\n {\n id: 'generalization',\n label: 'Generalization',\n reasonCodes: [\n 'split-missing',\n 'holdout-regression',\n 'task-family-coverage-low',\n 'leakage-risk',\n ],\n },\n {\n id: 'promotion',\n label: 'Promotion',\n reasonCodes: ['negative-control-failed', 'promotion-gate-failed', 'human-review-required'],\n },\n] as const\n\nexport type BeliefEvaluationCriterionId = (typeof BELIEF_EVALUATION_CRITERIA)[number]['id']\nexport type BeliefDecisionReasonCode =\n (typeof BELIEF_EVALUATION_CRITERIA)[number]['reasonCodes'][number]\n\nexport interface BeliefDecisionReason {\n code: BeliefDecisionReasonCode\n criterion?: BeliefEvaluationCriterionId\n detail?: string\n evidenceIds?: string[]\n metadata?: Record<string, unknown>\n}\n\nexport function isBeliefDecisionKind(value: unknown): value is BeliefDecisionKind {\n return typeof value === 'string' && BELIEF_DECISION_KINDS.includes(value as BeliefDecisionKind)\n}\n\nexport function isBeliefEvidenceSource(value: unknown): value is BeliefEvidenceSource {\n return (\n typeof value === 'string' && BELIEF_EVIDENCE_SOURCES.includes(value as BeliefEvidenceSource)\n )\n}\n\nexport interface BeliefEvidenceRef {\n source: BeliefEvidenceSource\n id: string\n runId?: string\n spanId?: string\n eventId?: string\n detail?: string\n quality?: BeliefEvidenceQuality\n observedAt?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionOutcome {\n success?: boolean\n score?: number\n reward?: number\n costUsd?: number\n observedAt?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionPoint {\n id: string\n runId: string\n scenarioId?: string\n stepIndex: number\n kind: BeliefDecisionKind\n chosenAction: string\n candidateActions?: string[]\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n evidence: BeliefEvidenceRef[]\n outcome?: BeliefDecisionOutcome\n reasons?: BeliefDecisionReason[]\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefDecisionExtractionDiagnostic {\n runId: string\n eventId?: string\n severity: 'info' | 'warning' | 'error'\n reason: string\n}\n\nexport interface BeliefDecisionExtractionReport {\n decisions: BeliefDecisionPoint[]\n diagnostics: BeliefDecisionExtractionDiagnostic[]\n}\n\nexport type BeliefPolicyAction = 'accept' | 'defer' | 'verify' | 'ask' | 'retry' | 'stop'\n\nexport interface BeliefPolicyDecision {\n action: BeliefPolicyAction\n confidence?: number\n targetProb?: number\n qHat?: number | null\n reason?: string\n reasons?: BeliefDecisionReason[]\n}\n\nexport interface BeliefSelectivePolicy {\n id: string\n decide(point: BeliefDecisionPoint): BeliefPolicyDecision\n}\n\nexport interface BeliefOpeTargetPolicy {\n id: string\n targetProbOf(point: BeliefDecisionPoint): number | null | undefined\n qHatOf?(point: BeliefDecisionPoint): number | null | undefined\n}\n\nexport interface BeliefUtilityOptions {\n successUtility?: number\n failureUtility?: number\n deferUtility?: number\n verifyCost?: number\n askCost?: number\n retryCost?: number\n stopUtility?: number\n costWeight?: number\n}\n\nexport interface BeliefSelectivePolicyMetrics {\n policyId: string\n n: number\n accepted: number\n rejected: number\n coverage: number\n acceptedErrorRate: number\n baselineUtility: number\n policyUtility: number\n utilityDelta: number\n utilityCi95: { mean: number; lower: number; upper: number }\n rejectedMeanReward: number | null\n recommendation: 'ship' | 'hold' | 'need_more_data'\n reasons: string[]\n}\n\nexport interface BeliefOpeSupportDiagnostics {\n supported: boolean\n n: number\n dropped: number\n effectiveSampleSize: number\n effectiveSampleRatio: number\n maxImportanceWeight: number\n reasons: string[]\n}\n\nexport interface BeliefOpeReport {\n targetPolicyId: string\n ips: OffPolicyEstimate\n snips: OffPolicyEstimate\n dr: OffPolicyEstimate\n support: BeliefOpeSupportDiagnostics\n}\n\nexport type BeliefEvaluationStatus = 'ship' | 'hold' | 'need_more_data'\nexport type BeliefCalibrationStatus = 'supported' | 'unsupported'\nexport type BeliefOpeStatus = 'supported' | 'unsupported' | 'not_requested'\n\nexport interface BeliefPolicyEvaluationReport {\n policyId: string\n n: number\n status: BeliefEvaluationStatus\n selectiveStatus: BeliefEvaluationStatus\n calibrationStatus: BeliefCalibrationStatus\n opeStatus: BeliefOpeStatus\n opeTargetPolicyId?: string\n selective: BeliefSelectivePolicyMetrics\n calibration?: CalibrationReport\n ope?: BeliefOpeReport\n diagnostics: string[]\n}\n","import type { TraceEvent } from '../trace/schema'\nimport type { TraceStore } from '../trace/store'\nimport type {\n BeliefDecisionExtractionDiagnostic,\n BeliefDecisionExtractionReport,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceRef,\n} from './types'\nimport { isBeliefDecisionKind } from './types'\n\nexport interface ExtractBeliefDecisionPointsOptions {\n runIds?: string[]\n}\n\nconst DECISION_MARKERS = new Set(['belief_decision', 'belief.decision', 'decision_point'])\n\nexport async function extractBeliefDecisionPoints(\n store: TraceStore,\n options: ExtractBeliefDecisionPointsOptions = {},\n): Promise<BeliefDecisionExtractionReport> {\n const runs = options.runIds\n ? (await Promise.all(options.runIds.map((runId) => store.getRun(runId)))).filter(Boolean)\n : await store.listRuns()\n const decisions: BeliefDecisionPoint[] = []\n const diagnostics: BeliefDecisionExtractionDiagnostic[] = []\n\n for (const run of runs) {\n if (!run) continue\n const events = await store.events({ runId: run.runId })\n const spans = await store.spans({ runId: run.runId })\n const spanIds = new Set(spans.map((span) => span.spanId))\n let stepIndex = 0\n for (const event of [...events].sort((a, b) => a.timestamp - b.timestamp)) {\n const parsed = parseDecisionEvent(event, {\n scenarioId: run.scenarioId,\n stepIndex,\n spanExists: event.spanId ? spanIds.has(event.spanId) : false,\n })\n if (!parsed) continue\n if ('diagnostic' in parsed) {\n diagnostics.push(parsed.diagnostic)\n continue\n }\n decisions.push(parsed.decision)\n stepIndex++\n }\n }\n\n return { decisions, diagnostics }\n}\n\nfunction parseDecisionEvent(\n event: TraceEvent,\n context: { scenarioId?: string; stepIndex: number; spanExists: boolean },\n): { decision: BeliefDecisionPoint } | { diagnostic: BeliefDecisionExtractionDiagnostic } | null {\n const payload = event.payload\n const marker = stringField(payload, 'kind') ?? stringField(payload, 'type')\n if (!marker || !DECISION_MARKERS.has(marker)) return null\n\n const decisionKind = stringField(payload, 'decisionKind')\n if (!isBeliefDecisionKind(decisionKind)) {\n return {\n diagnostic: {\n runId: event.runId,\n eventId: event.eventId,\n severity: 'warning',\n reason: `belief decision event has unsupported decisionKind \"${decisionKind ?? ''}\"`,\n },\n }\n }\n\n const chosenAction = stringField(payload, 'chosenAction')\n if (!chosenAction) {\n return {\n diagnostic: {\n runId: event.runId,\n eventId: event.eventId,\n severity: 'warning',\n reason: 'belief decision event is missing chosenAction',\n },\n }\n }\n\n const evidence: BeliefEvidenceRef[] = [\n {\n source: 'event',\n id: event.eventId,\n runId: event.runId,\n eventId: event.eventId,\n quality: 'direct',\n },\n ]\n if (event.spanId && context.spanExists) {\n evidence.push({\n source: 'span',\n id: event.spanId,\n runId: event.runId,\n spanId: event.spanId,\n quality: 'direct',\n })\n }\n\n return {\n decision: {\n id: stringField(payload, 'id') ?? event.eventId,\n runId: event.runId,\n scenarioId: stringField(payload, 'scenarioId') ?? context.scenarioId,\n stepIndex: numberField(payload, 'stepIndex') ?? context.stepIndex,\n kind: decisionKind,\n chosenAction,\n candidateActions: stringArrayField(payload, 'candidateActions'),\n confidence: finiteUnitField(payload, 'confidence'),\n behaviorProb: numberField(payload, 'behaviorProb'),\n targetProb: numberField(payload, 'targetProb'),\n qHat: finiteUnitField(payload, 'qHat'),\n costUsd: nonNegativeNumberField(payload, 'costUsd'),\n evidence,\n outcome: parseOutcome(payload),\n metadata: recordField(payload, 'metadata'),\n },\n }\n}\n\nfunction parseOutcome(payload: Record<string, unknown>): BeliefDecisionOutcome | undefined {\n const value = recordField(payload, 'outcome')\n if (!value) return undefined\n return {\n success: typeof value.success === 'boolean' ? value.success : undefined,\n score: finiteUnitField(value, 'score'),\n reward: finiteUnitField(value, 'reward'),\n costUsd: nonNegativeNumberField(value, 'costUsd'),\n observedAt: stringField(value, 'observedAt'),\n metadata: recordField(value, 'metadata'),\n }\n}\n\nfunction stringField(obj: Record<string, unknown>, key: string): string | undefined {\n const value = obj[key]\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction numberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = obj[key]\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction finiteUnitField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = numberField(obj, key)\n return value === undefined ? undefined : Math.max(0, Math.min(1, value))\n}\n\nfunction nonNegativeNumberField(obj: Record<string, unknown>, key: string): number | undefined {\n const value = numberField(obj, key)\n return value === undefined ? undefined : Math.max(0, value)\n}\n\nfunction stringArrayField(obj: Record<string, unknown>, key: string): string[] | undefined {\n const value = obj[key]\n if (!Array.isArray(value)) return undefined\n const strings = value.filter(\n (item): item is string => typeof item === 'string' && item.length > 0,\n )\n return strings.length > 0 ? strings : undefined\n}\n\nfunction recordField(\n obj: Record<string, unknown>,\n key: string,\n): Record<string, unknown> | undefined {\n const value = obj[key]\n if (!value || typeof value !== 'object' || Array.isArray(value)) return undefined\n return value as Record<string, unknown>\n}\n","import type { BeliefShadowProbeInput } from './shadow-probe'\nimport type {\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceQuality,\n BeliefEvidenceRef,\n} from './types'\nimport { isBeliefDecisionKind, isBeliefEvidenceSource } from './types'\n\nexport interface RuntimeBeliefDecisionEvidenceRef {\n source: string\n id: string\n detail?: string\n quality?: BeliefEvidenceQuality\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefDecisionPoint {\n id: string\n runId: string\n scenarioId?: string\n stepIndex: number\n kind: string\n candidateActions?: string[]\n context?: string\n evidence?: RuntimeBeliefDecisionEvidenceRef[]\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefHookEvent {\n id: string\n runId: string\n scenarioId?: string\n target: string\n phase: string\n timestamp: number\n stepIndex?: number\n parentId?: string\n payload?: unknown\n metadata?: Record<string, unknown>\n}\n\nexport interface RuntimeBeliefHookContext {\n signal?: AbortSignal\n}\n\nexport interface RuntimeBeliefHooks {\n onEvent?: (\n event: RuntimeBeliefHookEvent,\n context: RuntimeBeliefHookContext,\n ) => void | Promise<void>\n onDecisionPoint?: (\n point: RuntimeBeliefDecisionPoint,\n context: RuntimeBeliefHookContext,\n ) => void | Promise<void>\n}\n\nexport interface RuntimeBeliefConversionDiagnostic {\n decisionId: string\n severity: 'warning' | 'error'\n reason: string\n}\n\nexport interface RuntimeBeliefShadowProbeInputOptions {\n probeId: string\n decisionKind?: BeliefDecisionKind\n includeEvidenceDetail?: boolean\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n maxContextChars?: number\n}\n\nexport interface RuntimeBeliefDecisionPointOptions {\n chosenAction?: string\n decisionKind?: BeliefDecisionKind\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n outcome?: BeliefDecisionOutcome\n metadata?: Record<string, unknown>\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n}\n\nexport interface RuntimeBeliefShadowProbeInputReport {\n input?: BeliefShadowProbeInput\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n}\n\nexport interface RuntimeBeliefDecisionPointReport {\n point?: BeliefDecisionPoint\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n}\n\nexport interface BeliefRuntimeHookCollector {\n hooks: RuntimeBeliefHooks\n decisions: RuntimeBeliefDecisionPoint[]\n events: RuntimeBeliefHookEvent[]\n toShadowProbeInputs(options?: Partial<RuntimeBeliefShadowProbeInputOptions>): {\n inputs: BeliefShadowProbeInput[]\n diagnostics: RuntimeBeliefConversionDiagnostic[]\n }\n clear(): void\n}\n\nconst DEFAULT_MAX_CONTEXT_CHARS = 12_000\nconst DEFAULT_PAYLOAD_PREVIEW_CHARS = 2_000\n\nexport function runtimeDecisionPointToBeliefShadowProbeInput(\n point: RuntimeBeliefDecisionPoint,\n options: RuntimeBeliefShadowProbeInputOptions,\n): RuntimeBeliefShadowProbeInputReport {\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const decisionKind = resolveDecisionKind(point, options.decisionKind, diagnostics)\n if (!decisionKind) return { diagnostics }\n const lifecycleEvidence = runtimeHookEventsToEvidenceRefs(point, options)\n const evidence = [...(point.evidence ?? []), ...lifecycleEvidence]\n\n return {\n input: {\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind,\n candidateActions: uniqueStrings(point.candidateActions ?? []),\n evidence: evidence.map((ref) => ({\n id: ref.id,\n source: ref.source,\n ...(options.includeEvidenceDetail && ref.detail ? { detail: ref.detail } : {}),\n ...(ref.quality ? { quality: ref.quality } : {}),\n })),\n context: trimText(point.context, options.maxContextChars),\n metadata: mergeMetadata(point.metadata, lifecycleMetadata(lifecycleEvidence)),\n },\n diagnostics,\n }\n}\n\nexport function runtimeDecisionPointToBeliefDecisionPoint(\n point: RuntimeBeliefDecisionPoint,\n options: RuntimeBeliefDecisionPointOptions,\n): RuntimeBeliefDecisionPointReport {\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const decisionKind = resolveDecisionKind(point, options.decisionKind, diagnostics)\n const chosenAction = stringOrUndefined(options.chosenAction)\n\n if (!chosenAction) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: 'missing chosenAction',\n })\n }\n\n const candidateActions = uniqueStrings(point.candidateActions ?? [])\n if (chosenAction && candidateActions.length > 0 && !candidateActions.includes(chosenAction)) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'warning',\n reason: `chosenAction ${chosenAction} is not in candidateActions`,\n })\n }\n\n if (!decisionKind || !chosenAction) return { diagnostics }\n const lifecycleEvidence = runtimeHookEventsToEvidenceRefs(point, options)\n const evidence = [...(point.evidence ?? []), ...lifecycleEvidence]\n\n return {\n point: {\n id: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n kind: decisionKind,\n chosenAction,\n candidateActions,\n confidence: unitProbabilityOrUndefined(options.confidence),\n behaviorProb: finiteNumberOrUndefined(options.behaviorProb),\n targetProb: finiteNumberOrUndefined(options.targetProb),\n qHat: options.qHat === null ? null : unitProbabilityOrUndefined(options.qHat),\n costUsd: nonNegativeNumberOrUndefined(options.costUsd),\n evidence: evidence.map((ref) => runtimeEvidenceToBeliefEvidence(ref, point)),\n outcome: options.outcome,\n metadata: mergeMetadata(\n mergeMetadata(point.metadata, lifecycleMetadata(lifecycleEvidence)),\n options.metadata,\n ),\n },\n diagnostics,\n }\n}\n\nexport function createBeliefRuntimeHookCollector(\n defaults: RuntimeBeliefShadowProbeInputOptions,\n): BeliefRuntimeHookCollector {\n const decisions: RuntimeBeliefDecisionPoint[] = []\n const events: RuntimeBeliefHookEvent[] = []\n\n return {\n hooks: {\n onEvent: (event) => {\n events.push(snapshotRuntimeHookEvent(event))\n },\n onDecisionPoint: (point) => {\n decisions.push(snapshotRuntimeDecisionPoint(point))\n },\n },\n decisions,\n events,\n toShadowProbeInputs: (options = {}) => {\n const inputs: BeliefShadowProbeInput[] = []\n const diagnostics: RuntimeBeliefConversionDiagnostic[] = []\n const includeLifecycleEvidence =\n options.includeLifecycleEvidence ?? defaults.includeLifecycleEvidence\n for (const point of decisions) {\n const report = runtimeDecisionPointToBeliefShadowProbeInput(point, {\n ...defaults,\n ...options,\n includeLifecycleEvidence,\n lifecycleEvents:\n includeLifecycleEvidence === false\n ? undefined\n : (options.lifecycleEvents ?? defaults.lifecycleEvents ?? events),\n })\n if (report.input) inputs.push(report.input)\n diagnostics.push(...report.diagnostics)\n }\n return { inputs, diagnostics }\n },\n clear: () => {\n decisions.length = 0\n events.length = 0\n },\n }\n}\n\nfunction resolveDecisionKind(\n point: RuntimeBeliefDecisionPoint,\n override: BeliefDecisionKind | undefined,\n diagnostics: RuntimeBeliefConversionDiagnostic[],\n): BeliefDecisionKind | undefined {\n const kind = override ?? point.kind\n if (isBeliefDecisionKind(kind)) return kind\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: `unsupported decisionKind \"${kind}\"`,\n })\n return undefined\n}\n\nfunction runtimeEvidenceToBeliefEvidence(\n ref: RuntimeBeliefDecisionEvidenceRef,\n point: RuntimeBeliefDecisionPoint,\n): BeliefEvidenceRef {\n if (isBeliefEvidenceSource(ref.source)) {\n return {\n source: ref.source,\n id: ref.id,\n runId: point.runId,\n detail: ref.detail,\n quality: ref.quality,\n metadata: ref.metadata,\n }\n }\n\n return {\n source: 'event',\n id: ref.id,\n runId: point.runId,\n detail: ref.detail,\n quality: ref.quality,\n metadata: mergeMetadata({ runtimeSource: ref.source }, ref.metadata),\n }\n}\n\nfunction runtimeHookEventsToEvidenceRefs(\n point: RuntimeBeliefDecisionPoint,\n options: {\n includeLifecycleEvidence?: boolean\n lifecycleEvents?: RuntimeBeliefHookEvent[]\n },\n): RuntimeBeliefDecisionEvidenceRef[] {\n if (options.includeLifecycleEvidence === false) return []\n return (options.lifecycleEvents ?? [])\n .filter((event) => runtimeHookEventMatchesDecision(point, event))\n .map(runtimeHookEventToEvidenceRef)\n}\n\nfunction runtimeHookEventMatchesDecision(\n point: RuntimeBeliefDecisionPoint,\n event: RuntimeBeliefHookEvent,\n): boolean {\n if (event.runId !== point.runId) return false\n if (event.scenarioId && point.scenarioId && event.scenarioId !== point.scenarioId) return false\n return event.stepIndex === undefined || event.stepIndex === point.stepIndex\n}\n\nfunction runtimeHookEventToEvidenceRef(\n event: RuntimeBeliefHookEvent,\n): RuntimeBeliefDecisionEvidenceRef {\n return {\n source: 'runtime_event',\n id: event.id,\n detail: `${event.target}:${event.phase}`,\n quality: 'direct',\n metadata: mergeMetadata(\n compactMetadata({\n target: event.target,\n phase: event.phase,\n timestamp: event.timestamp,\n stepIndex: event.stepIndex,\n parentId: event.parentId,\n payloadPreview: previewUnknown(event.payload),\n }),\n event.metadata,\n ),\n }\n}\n\nfunction lifecycleMetadata(\n refs: RuntimeBeliefDecisionEvidenceRef[],\n): Record<string, unknown> | undefined {\n if (refs.length === 0) return undefined\n return {\n lifecycleEventCount: refs.length,\n lifecycleEventIds: refs.map((ref) => ref.id),\n }\n}\n\nfunction snapshotRuntimeHookEvent(event: RuntimeBeliefHookEvent): RuntimeBeliefHookEvent {\n return {\n id: event.id,\n runId: event.runId,\n scenarioId: event.scenarioId,\n target: event.target,\n phase: event.phase,\n timestamp: event.timestamp,\n stepIndex: event.stepIndex,\n parentId: event.parentId,\n payload: snapshotUnknown(event.payload),\n metadata: event.metadata ? { ...event.metadata } : undefined,\n }\n}\n\nfunction snapshotRuntimeDecisionPoint(\n point: RuntimeBeliefDecisionPoint,\n): RuntimeBeliefDecisionPoint {\n return {\n id: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n kind: point.kind,\n candidateActions: [...(point.candidateActions ?? [])],\n context: point.context,\n evidence: (point.evidence ?? []).map((ref) => ({\n source: ref.source,\n id: ref.id,\n detail: ref.detail,\n quality: ref.quality,\n metadata: ref.metadata ? { ...ref.metadata } : undefined,\n })),\n metadata: point.metadata ? { ...point.metadata } : undefined,\n }\n}\n\nfunction mergeMetadata(\n base: Record<string, unknown> | undefined,\n extra: Record<string, unknown> | undefined,\n): Record<string, unknown> | undefined {\n if (!base && !extra) return undefined\n return { ...(base ?? {}), ...(extra ?? {}) }\n}\n\nfunction compactMetadata(values: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(values).filter(([, value]) => value !== undefined)\n return entries.length > 0 ? Object.fromEntries(entries) : undefined\n}\n\nfunction previewUnknown(\n value: unknown,\n maxChars = DEFAULT_PAYLOAD_PREVIEW_CHARS,\n): string | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'string') return trimText(value, maxChars)\n try {\n return trimText(JSON.stringify(value), maxChars)\n } catch {\n return trimText(String(value), maxChars)\n }\n}\n\nfunction snapshotUnknown(value: unknown): unknown {\n if (Array.isArray(value)) return [...value]\n if (isRecord(value)) return { ...value }\n return value\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values.filter((value) => value.length > 0))]\n}\n\nfunction trimText(\n value: string | undefined,\n maxChars = DEFAULT_MAX_CONTEXT_CHARS,\n): string | undefined {\n if (!value) return undefined\n return value.length > maxChars ? value.slice(value.length - maxChars) : value\n}\n\nfunction stringOrUndefined(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n\nfunction finiteNumberOrUndefined(value: unknown): number | undefined {\n return typeof value === 'number' && Number.isFinite(value) ? value : undefined\n}\n\nfunction unitProbabilityOrUndefined(value: unknown): number | undefined {\n const number = finiteNumberOrUndefined(value)\n return number !== undefined && number >= 0 && number <= 1 ? number : undefined\n}\n\nfunction nonNegativeNumberOrUndefined(value: unknown): number | undefined {\n const number = finiteNumberOrUndefined(value)\n return number !== undefined && number >= 0 ? number : undefined\n}\n","import type { RunSplitTag } from '../run-record'\nimport {\n type BeliefDecisionResearchEvidencePacket,\n type BuildBeliefDecisionResearchEvidencePacketOptions,\n buildBeliefDecisionResearchEvidencePacket,\n} from './research-evidence'\nimport {\n type RuntimeBeliefDecisionPoint,\n type RuntimeBeliefHookEvent,\n runtimeDecisionPointToBeliefDecisionPoint,\n} from './runtime-hooks'\nimport type { BeliefDecisionOutcome, BeliefDecisionPoint } from './types'\n\nexport interface RuntimeBeliefPhase0RunRecord {\n runId: string\n scenarioId?: string\n splitTag: RunSplitTag\n}\n\nexport interface RuntimeBeliefDecisionLabel {\n decisionId: string\n chosenAction: string\n outcome: BeliefDecisionOutcome\n confidence?: number\n behaviorProb?: number\n targetProb?: number\n qHat?: number | null\n costUsd?: number\n splitTag?: RunSplitTag\n metadata?: Record<string, unknown>\n}\n\nexport interface BuildRuntimeBeliefPhase0MeasurementOptions\n extends Omit<BuildBeliefDecisionResearchEvidencePacketOptions, 'points'> {\n runs: RuntimeBeliefPhase0RunRecord[]\n decisions: RuntimeBeliefDecisionPoint[]\n events?: RuntimeBeliefHookEvent[]\n labels: RuntimeBeliefDecisionLabel[]\n baselinePolicyId?: string\n}\n\nexport interface RuntimeBeliefPhase0MeasurementSummary {\n runCount: number\n producerDecisionCount: number\n lifecycleEventCount: number\n labelCount: number\n completedPointCount: number\n runJoinRate: number\n labelJoinRate: number\n missingRunRecordCount: number\n missingLabelCount: number\n withEvidence: number\n withOutcome: number\n withSplit: number\n withBehaviorProb: number\n withTargetProb: number\n baselinePolicyId: string\n packetStatus: BeliefDecisionResearchEvidencePacket['status']\n claimScope: BeliefDecisionResearchEvidencePacket['claimScope']\n}\n\nexport interface RuntimeBeliefPhase0Measurement {\n points: BeliefDecisionPoint[]\n packet: BeliefDecisionResearchEvidencePacket\n summary: RuntimeBeliefPhase0MeasurementSummary\n diagnostics: string[]\n}\n\nconst DEFAULT_BASELINE_POLICY_ID = 'always-accept-observed-action'\n\nexport function buildRuntimeBeliefPhase0Measurement(\n options: BuildRuntimeBeliefPhase0MeasurementOptions,\n): RuntimeBeliefPhase0Measurement {\n const runsById = new Map(options.runs.map((run) => [run.runId, run]))\n const labelsByDecisionId = new Map<string, RuntimeBeliefDecisionLabel>()\n const diagnostics: string[] = []\n\n for (const label of options.labels) {\n if (labelsByDecisionId.has(label.decisionId)) {\n diagnostics.push(`${label.decisionId}: duplicate label; using the last label`)\n }\n labelsByDecisionId.set(label.decisionId, label)\n }\n\n const points: BeliefDecisionPoint[] = []\n let missingRunRecordCount = 0\n let missingLabelCount = 0\n\n for (const decision of options.decisions) {\n const run = runsById.get(decision.runId)\n if (!run) {\n missingRunRecordCount += 1\n diagnostics.push(`${decision.id}: missing RunRecord join for runId ${decision.runId}`)\n continue\n }\n\n const label = labelsByDecisionId.get(decision.id)\n if (!label) {\n missingLabelCount += 1\n diagnostics.push(`${decision.id}: missing observed action/outcome label`)\n continue\n }\n\n const splitTag = label.splitTag ?? run.splitTag\n const report = runtimeDecisionPointToBeliefDecisionPoint(\n { ...decision, scenarioId: decision.scenarioId ?? run.scenarioId },\n {\n chosenAction: label.chosenAction,\n confidence: label.confidence,\n behaviorProb: label.behaviorProb,\n targetProb: label.targetProb,\n qHat: label.qHat,\n costUsd: label.costUsd,\n outcome: label.outcome,\n lifecycleEvents: options.events,\n metadata: compactMetadata({\n baselinePolicyId: options.baselinePolicyId ?? DEFAULT_BASELINE_POLICY_ID,\n splitTag,\n ...label.metadata,\n }),\n },\n )\n diagnostics.push(...report.diagnostics.map((item) => `${item.decisionId}: ${item.reason}`))\n if (report.point) points.push(report.point)\n }\n\n const packet = buildBeliefDecisionResearchEvidencePacket({\n ...options,\n points,\n })\n\n return {\n points,\n packet,\n summary: summarizePhase0Measurement(options, points, packet, {\n missingRunRecordCount,\n missingLabelCount,\n }),\n diagnostics,\n }\n}\n\nfunction summarizePhase0Measurement(\n options: BuildRuntimeBeliefPhase0MeasurementOptions,\n points: BeliefDecisionPoint[],\n packet: BeliefDecisionResearchEvidencePacket,\n counts: { missingRunRecordCount: number; missingLabelCount: number },\n): RuntimeBeliefPhase0MeasurementSummary {\n const producerDecisionCount = options.decisions.length\n return {\n runCount: options.runs.length,\n producerDecisionCount,\n lifecycleEventCount: options.events?.length ?? 0,\n labelCount: options.labels.length,\n completedPointCount: points.length,\n runJoinRate: ratio(producerDecisionCount - counts.missingRunRecordCount, producerDecisionCount),\n labelJoinRate: ratio(points.length, producerDecisionCount),\n missingRunRecordCount: counts.missingRunRecordCount,\n missingLabelCount: counts.missingLabelCount,\n withEvidence: points.filter((point) => point.evidence.length > 0).length,\n withOutcome: points.filter((point) => point.outcome).length,\n withSplit: points.filter((point) => typeof point.metadata?.splitTag === 'string').length,\n withBehaviorProb: points.filter((point) => point.behaviorProb !== undefined).length,\n withTargetProb: points.filter((point) => point.targetProb !== undefined).length,\n baselinePolicyId: options.baselinePolicyId ?? DEFAULT_BASELINE_POLICY_ID,\n packetStatus: packet.status,\n claimScope: packet.claimScope,\n }\n}\n\nfunction ratio(numerator: number, denominator: number): number {\n return denominator > 0 ? numerator / denominator : 0\n}\n\nfunction compactMetadata(values: Record<string, unknown>): Record<string, unknown> | undefined {\n const entries = Object.entries(values).filter(([, value]) => value !== undefined)\n return entries.length > 0 ? Object.fromEntries(entries) : undefined\n}\n","import {\n type ProjectRuntimeTrajectoryEvidenceOptions,\n projectRuntimeTrajectoryEvidence,\n type RuntimeTrajectoryEvidenceProjection,\n type RuntimeTrajectoryRecord,\n} from '../runtime-trajectory'\nimport {\n type BuildRuntimeBeliefPhase0MeasurementOptions,\n buildRuntimeBeliefPhase0Measurement,\n type RuntimeBeliefDecisionLabel,\n type RuntimeBeliefPhase0Measurement,\n type RuntimeBeliefPhase0RunRecord,\n} from './phase0-measurement'\nimport type { RuntimeBeliefDecisionPoint, RuntimeBeliefHookEvent } from './runtime-hooks'\n\ntype RuntimeBenchmarkTrajectoryRecord = RuntimeTrajectoryRecord & {\n benchmark?: unknown\n condition?: unknown\n instanceId?: unknown\n runtimeDecisionPoints?: unknown\n}\n\nconst MAX_STRING_LENGTH = 12_000\nconst MAX_CONTEXT_LENGTH = 20_000\nconst MAX_EVIDENCE_DETAIL_LENGTH = 2_000\nconst MAX_CANDIDATE_ACTIONS = 50\nconst MAX_EVIDENCE_REFS = 50\nconst MAX_METADATA_DEPTH = 4\nconst MAX_METADATA_KEYS = 100\nconst SENSITIVE_KEY_RE =\n /(?:authorization|api[_-]?key|token|secret|password|cookie|credential|bearer)/i\nconst SENSITIVE_VALUE_RES = [\n /\\bBearer\\s+[A-Za-z0-9._~+/=-]+/gi,\n /\\b(?:sk|gh[pousr])_[A-Za-z0-9_]{20,}\\b/g,\n /\\b(?:sk|ghp|gho|ghu|ghs|ghr)-[A-Za-z0-9_-]{20,}\\b/g,\n]\nconst SENSITIVE_ASSIGNMENT_RE =\n /\\b(api[_-]?key|token|secret|password|cookie)\\s*[:=]\\s*[\"']?[^\"'\\s,;}]+/gi\n\nexport interface BuildRuntimeBenchmarkBeliefPhase0MeasurementOptions\n extends Omit<\n BuildRuntimeBeliefPhase0MeasurementOptions,\n 'runs' | 'events' | 'decisions' | 'labels'\n > {\n records: RuntimeBenchmarkTrajectoryRecord[]\n decisions?: RuntimeBeliefDecisionPoint[]\n defaultSplitTag?: ProjectRuntimeTrajectoryEvidenceOptions['defaultSplitTag']\n labels?: RuntimeBeliefDecisionLabel[]\n}\n\nexport interface RuntimeBenchmarkBeliefPhase0Summary {\n decisionCount: number\n labelCount: number\n}\n\nexport interface RuntimeBenchmarkBeliefPhase0Measurement {\n runs: RuntimeBeliefPhase0RunRecord[]\n events: RuntimeBeliefHookEvent[]\n decisions: RuntimeBeliefDecisionPoint[]\n labels: RuntimeBeliefDecisionLabel[]\n trajectory: RuntimeTrajectoryEvidenceProjection\n measurement: RuntimeBeliefPhase0Measurement\n summary: RuntimeBenchmarkBeliefPhase0Summary\n diagnostics: string[]\n}\n\nexport function buildRuntimeBenchmarkBeliefPhase0Measurement(\n options: BuildRuntimeBenchmarkBeliefPhase0MeasurementOptions,\n): RuntimeBenchmarkBeliefPhase0Measurement {\n const diagnostics: string[] = []\n const trajectory = projectRuntimeTrajectoryEvidence({\n records: options.records,\n defaultSplitTag: options.defaultSplitTag,\n recordIdOf: runtimeBenchmarkRecordId,\n scenarioIdOf: runtimeBenchmarkScenarioId,\n })\n const decisions =\n options.decisions ?? runtimeBenchmarkDecisionPoints(options.records, diagnostics)\n const labels = options.labels ?? []\n if (decisions.length === 0) {\n diagnostics.push(\n 'no runtime decision points supplied or found on records; benchmark lifecycle events alone cannot produce belief decision rows',\n )\n }\n if (labels.length === 0 && decisions.length > 0) {\n diagnostics.push(\n 'no decision labels supplied; observed action/outcome joins will be incomplete',\n )\n }\n\n const measurement = buildRuntimeBeliefPhase0Measurement({\n ...options,\n runs: trajectory.runs,\n events: trajectory.events,\n decisions,\n labels,\n })\n\n return {\n runs: trajectory.runs,\n events: trajectory.events,\n decisions,\n labels,\n trajectory,\n measurement,\n summary: {\n decisionCount: decisions.length,\n labelCount: labels.length,\n },\n diagnostics: [...trajectory.diagnostics, ...diagnostics, ...measurement.diagnostics],\n }\n}\n\nfunction runtimeBenchmarkRecordId(record: RuntimeBenchmarkTrajectoryRecord): string | undefined {\n const parts = [\n nonEmptyString(record.benchmark),\n nonEmptyString(record.instanceId),\n nonEmptyString(record.condition),\n ].filter((part): part is string => part !== undefined)\n return parts.length > 0 ? parts.join(':') : undefined\n}\n\nfunction runtimeBenchmarkScenarioId(record: RuntimeBenchmarkTrajectoryRecord): string | undefined {\n return nonEmptyString(record.instanceId)\n}\n\nfunction runtimeBenchmarkDecisionPoints(\n records: RuntimeBenchmarkTrajectoryRecord[],\n diagnostics: string[],\n): RuntimeBeliefDecisionPoint[] {\n const decisions: RuntimeBeliefDecisionPoint[] = []\n for (let recordIndex = 0; recordIndex < records.length; recordIndex += 1) {\n const record = records[recordIndex]!\n const raw = record.runtimeDecisionPoints\n if (raw === undefined) continue\n const recordId = runtimeBenchmarkRecordId(record) ?? `record[${recordIndex}]`\n if (!Array.isArray(raw)) {\n diagnostics.push(`${recordId}: runtimeDecisionPoints is not an array`)\n continue\n }\n for (let pointIndex = 0; pointIndex < raw.length; pointIndex += 1) {\n const point = runtimeBenchmarkDecisionPoint(raw[pointIndex], {\n diagnostics,\n path: `${recordId}: runtimeDecisionPoints[${pointIndex}]`,\n })\n if (!point) {\n diagnostics.push(\n `${recordId}: runtimeDecisionPoints[${pointIndex}] is not a RuntimeDecisionPoint`,\n )\n continue\n }\n decisions.push(point)\n }\n }\n return decisions\n}\n\nfunction runtimeBenchmarkDecisionPoint(\n input: unknown,\n context: { diagnostics: string[]; path: string },\n): RuntimeBeliefDecisionPoint | null {\n if (!isRecord(input)) return null\n if (typeof input.id !== 'string' || input.id.length === 0) return null\n if (typeof input.runId !== 'string' || input.runId.length === 0) return null\n if (\n typeof input.stepIndex !== 'number' ||\n !Number.isInteger(input.stepIndex) ||\n input.stepIndex < 0\n ) {\n return null\n }\n if (typeof input.kind !== 'string' || input.kind.length === 0) return null\n return {\n id: sanitizeString(input.id, MAX_STRING_LENGTH),\n runId: sanitizeString(input.runId, MAX_STRING_LENGTH),\n scenarioId: sanitizeOptionalString(input.scenarioId, MAX_STRING_LENGTH),\n stepIndex: input.stepIndex,\n kind: sanitizeString(input.kind, MAX_STRING_LENGTH),\n candidateActions: stringArray(input.candidateActions, {\n ...context,\n maxItems: MAX_CANDIDATE_ACTIONS,\n label: 'candidateActions',\n }),\n context: sanitizeOptionalString(input.context, MAX_CONTEXT_LENGTH),\n evidence: runtimeBenchmarkEvidence(input.evidence, context),\n metadata: sanitizeMetadataRecord(input.metadata),\n }\n}\n\nfunction runtimeBenchmarkEvidence(\n input: unknown,\n context: { diagnostics: string[]; path: string },\n): RuntimeBeliefDecisionPoint['evidence'] {\n if (!Array.isArray(input)) return []\n if (input.length > MAX_EVIDENCE_REFS) {\n context.diagnostics.push(`${context.path}: evidence truncated to ${MAX_EVIDENCE_REFS} refs`)\n }\n return input.slice(0, MAX_EVIDENCE_REFS).flatMap((item) => {\n if (!isRecord(item)) return []\n const source = sanitizeOptionalString(item.source, MAX_STRING_LENGTH)\n const id = sanitizeOptionalString(item.id, MAX_STRING_LENGTH)\n if (!source || !id) return []\n return [\n {\n source,\n id,\n detail: sanitizeOptionalString(item.detail, MAX_EVIDENCE_DETAIL_LENGTH),\n metadata: sanitizeMetadataRecord(item.metadata),\n },\n ]\n })\n}\n\nfunction stringArray(\n input: unknown,\n context: { diagnostics: string[]; path: string; maxItems: number; label: string },\n): string[] | undefined {\n if (!Array.isArray(input)) return undefined\n if (input.length > context.maxItems) {\n context.diagnostics.push(`${context.path}: ${context.label} truncated to ${context.maxItems}`)\n }\n const values = input\n .slice(0, context.maxItems)\n .filter((value): value is string => typeof value === 'string' && value.length > 0)\n .map((value) => sanitizeString(value, MAX_STRING_LENGTH))\n return values.length > 0 ? values : undefined\n}\n\nfunction sanitizeMetadataRecord(metadata: unknown): Record<string, unknown> | undefined {\n if (!isRecord(metadata)) return undefined\n const sanitized = sanitizeMetadata(metadata)\n if (!sanitized || typeof sanitized !== 'object' || Array.isArray(sanitized)) return undefined\n return sanitized as Record<string, unknown>\n}\n\nfunction sanitizeMetadata(value: unknown, depth = 0): unknown {\n if (value == null) return value\n if (typeof value === 'string') return sanitizeString(value, MAX_STRING_LENGTH)\n if (typeof value === 'number' || typeof value === 'boolean') return value\n if (Array.isArray(value)) {\n if (depth >= MAX_METADATA_DEPTH) return '[MaxDepth]'\n return value.slice(0, MAX_METADATA_KEYS).map((item) => sanitizeMetadata(item, depth + 1))\n }\n if (!isRecord(value)) return undefined\n if (depth >= MAX_METADATA_DEPTH) return '[MaxDepth]'\n\n const sanitized: Record<string, unknown> = {}\n for (const [key, nested] of Object.entries(value).slice(0, MAX_METADATA_KEYS)) {\n sanitized[key] = SENSITIVE_KEY_RE.test(key) ? '[REDACTED]' : sanitizeMetadata(nested, depth + 1)\n }\n return sanitized\n}\n\nfunction sanitizeOptionalString(value: unknown, maxLength: number): string | undefined {\n return typeof value === 'string' && value.length > 0\n ? sanitizeString(value, maxLength)\n : undefined\n}\n\nfunction sanitizeString(value: string, maxLength: number): string {\n let sanitized = value\n for (const pattern of SENSITIVE_VALUE_RES) {\n sanitized = sanitized.replace(pattern, '[REDACTED]')\n }\n sanitized = sanitized.replace(\n SENSITIVE_ASSIGNMENT_RE,\n (_match, key: string) => `${key}=[REDACTED]`,\n )\n if (sanitized.length <= maxLength) return sanitized\n return sanitized.slice(0, maxLength)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nfunction nonEmptyString(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined\n}\n","import type {\n BeliefDecisionKind,\n BeliefDecisionOutcome,\n BeliefDecisionPoint,\n BeliefEvidenceQuality,\n} from './types'\n\nexport interface BeliefShadowProbeInput {\n probeId: string\n decisionId: string\n runId: string\n scenarioId?: string\n stepIndex: number\n decisionKind: BeliefDecisionKind\n candidateActions: string[]\n observedAction?: string\n evidence: BeliefShadowProbeEvidenceRef[]\n context?: string\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefShadowProbeEvidenceRef {\n id: string\n source: string\n detail?: string\n quality?: BeliefEvidenceQuality\n}\n\nexport interface BeliefShadowProbeResponse {\n predictedAction: string\n confidence: number\n beliefSummary?: string\n uncertainty?: string[]\n evidenceRefs?: string[]\n wouldChangeMindIf?: string[]\n targetProb?: number\n qHat?: number | null\n metadata?: Record<string, unknown>\n}\n\nexport interface BeliefShadowProbeRecord extends BeliefShadowProbeResponse {\n probeId: string\n decisionId: string\n runId: string\n scenarioId?: string\n stepIndex: number\n decisionKind: BeliefDecisionKind\n candidateActions: string[]\n observedAction: string\n agreesWithObservedAction: boolean\n outcome?: BeliefDecisionOutcome\n}\n\nexport interface BeliefShadowProbeDiagnostic {\n decisionId: string\n severity: 'warning' | 'error'\n reason: string\n}\n\nexport interface BeliefShadowProbeSummary {\n attempted: number\n completed: number\n dropped: number\n withOutcome: number\n withTargetProb: number\n meanConfidence: number | null\n observedAgreementRate: number | null\n}\n\nexport interface BeliefShadowProbeRun {\n probeId: string\n records: BeliefShadowProbeRecord[]\n diagnostics: BeliefShadowProbeDiagnostic[]\n summary: BeliefShadowProbeSummary\n}\n\nexport interface RunBeliefShadowProbeOptions {\n probeId: string\n points: BeliefDecisionPoint[]\n probe: (\n input: BeliefShadowProbeInput,\n ) => BeliefShadowProbeResponse | Promise<BeliefShadowProbeResponse>\n contextOf?: (point: BeliefDecisionPoint) => string | undefined | Promise<string | undefined>\n metadataOf?: (\n point: BeliefDecisionPoint,\n ) => Record<string, unknown> | undefined | Promise<Record<string, unknown> | undefined>\n includeObservedAction?: boolean\n includeEvidenceDetail?: boolean\n includeOutcomeInRecord?: boolean\n requireCandidateActions?: boolean\n allowOutOfSetActions?: boolean\n concurrency?: number\n maxContextChars?: number\n}\n\nconst DEFAULT_CONCURRENCY = 4\nconst DEFAULT_MAX_CONTEXT_CHARS = 12_000\n\nexport async function runBeliefShadowProbe(\n options: RunBeliefShadowProbeOptions,\n): Promise<BeliefShadowProbeRun> {\n const concurrency = boundedInteger(options.concurrency ?? DEFAULT_CONCURRENCY, 1, 32)\n const records: Array<BeliefShadowProbeRecord | undefined> = []\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n let next = 0\n\n async function worker() {\n while (next < options.points.length) {\n const index = next\n next += 1\n const point = options.points[index]\n if (!point) continue\n const result = await probePoint(point, options)\n records[index] = result.record\n diagnostics.push(...result.diagnostics)\n }\n }\n\n await Promise.all(Array.from({ length: Math.min(concurrency, options.points.length) }, worker))\n const completed = records.filter((record): record is BeliefShadowProbeRecord => !!record)\n\n return {\n probeId: options.probeId,\n records: completed,\n diagnostics,\n summary: summarizeShadowProbe(options.points.length, completed),\n }\n}\n\nexport function formatBeliefShadowProbePrompt(input: BeliefShadowProbeInput): string {\n return [\n 'Return only JSON. Do not include chain-of-thought.',\n 'Infer the agent belief state at this decision boundary using only the context below.',\n '',\n `decisionKind: ${input.decisionKind}`,\n `candidateActions: ${JSON.stringify(input.candidateActions)}`,\n input.observedAction ? `observedAction: ${JSON.stringify(input.observedAction)}` : '',\n input.context ? `context:\\n${input.context}` : '',\n '',\n 'Schema:',\n JSON.stringify({\n predictedAction: 'one candidate action',\n confidence: 'number in [0,1]',\n beliefSummary: 'short outcome-blind summary',\n uncertainty: ['short uncertainty'],\n evidenceRefs: ['evidence id'],\n wouldChangeMindIf: ['observable evidence'],\n targetProb: 'optional number in [0,1]',\n qHat: 'optional number in [0,1]',\n }),\n ]\n .filter(Boolean)\n .join('\\n')\n}\n\nasync function probePoint(\n point: BeliefDecisionPoint,\n options: RunBeliefShadowProbeOptions,\n): Promise<{ record?: BeliefShadowProbeRecord; diagnostics: BeliefShadowProbeDiagnostic[] }> {\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n const candidateActions = uniqueStrings(point.candidateActions ?? [])\n if ((options.requireCandidateActions ?? true) && candidateActions.length === 0) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'warning',\n reason: 'missing candidateActions',\n })\n return { diagnostics }\n }\n\n let response: BeliefShadowProbeResponse\n try {\n response = await options.probe({\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind: point.kind,\n candidateActions,\n ...(options.includeObservedAction ? { observedAction: point.chosenAction } : {}),\n evidence: point.evidence.map((ref) => ({\n id: ref.id,\n source: ref.source,\n ...(options.includeEvidenceDetail && ref.detail ? { detail: ref.detail } : {}),\n ...(ref.quality ? { quality: ref.quality } : {}),\n })),\n context: trimText(await options.contextOf?.(point), options.maxContextChars),\n metadata: await options.metadataOf?.(point),\n })\n } catch (error) {\n diagnostics.push({\n decisionId: point.id,\n severity: 'error',\n reason: `probe threw: ${errorMessage(error)}`,\n })\n return { diagnostics }\n }\n\n const normalized = normalizeProbeResponse(response, {\n point,\n candidateActions,\n allowOutOfSetActions: options.allowOutOfSetActions ?? false,\n })\n if (!normalized.record) {\n diagnostics.push(...normalized.diagnostics)\n return { diagnostics }\n }\n\n return {\n record: {\n probeId: options.probeId,\n decisionId: point.id,\n runId: point.runId,\n scenarioId: point.scenarioId,\n stepIndex: point.stepIndex,\n decisionKind: point.kind,\n candidateActions,\n observedAction: point.chosenAction,\n agreesWithObservedAction: normalized.record.predictedAction === point.chosenAction,\n ...(options.includeOutcomeInRecord === false ? {} : { outcome: point.outcome }),\n ...normalized.record,\n },\n diagnostics,\n }\n}\n\nfunction normalizeProbeResponse(\n response: BeliefShadowProbeResponse,\n options: {\n point: BeliefDecisionPoint\n candidateActions: string[]\n allowOutOfSetActions: boolean\n },\n): { record?: BeliefShadowProbeResponse; diagnostics: BeliefShadowProbeDiagnostic[] } {\n const diagnostics: BeliefShadowProbeDiagnostic[] = []\n const predictedAction = stringOrNull(response.predictedAction)\n if (!predictedAction) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: 'missing predictedAction',\n })\n } else if (\n !options.allowOutOfSetActions &&\n options.candidateActions.length > 0 &&\n !options.candidateActions.includes(predictedAction)\n ) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `predictedAction ${predictedAction} is not in candidateActions`,\n })\n }\n\n if (!isUnitProbability(response.confidence)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid confidence ${String(response.confidence)}`,\n })\n }\n if (response.targetProb !== undefined && !isUnitProbability(response.targetProb)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid targetProb ${String(response.targetProb)}`,\n })\n }\n if (response.qHat !== undefined && response.qHat !== null && !isUnitProbability(response.qHat)) {\n diagnostics.push({\n decisionId: options.point.id,\n severity: 'error',\n reason: `invalid qHat ${String(response.qHat)}`,\n })\n }\n if (diagnostics.length > 0 || !predictedAction) return { diagnostics }\n\n return {\n record: {\n predictedAction,\n confidence: response.confidence,\n ...(response.beliefSummary ? { beliefSummary: trimText(response.beliefSummary, 2_000) } : {}),\n uncertainty: compactStrings(response.uncertainty),\n evidenceRefs: compactStrings(response.evidenceRefs),\n wouldChangeMindIf: compactStrings(response.wouldChangeMindIf),\n ...(response.targetProb !== undefined ? { targetProb: response.targetProb } : {}),\n ...(response.qHat !== undefined ? { qHat: response.qHat } : {}),\n ...(response.metadata ? { metadata: response.metadata } : {}),\n },\n diagnostics,\n }\n}\n\nfunction summarizeShadowProbe(\n attempted: number,\n records: BeliefShadowProbeRecord[],\n): BeliefShadowProbeSummary {\n const confidences = records.map((record) => record.confidence)\n const agreements = records.filter((record) => record.agreesWithObservedAction).length\n return {\n attempted,\n completed: records.length,\n dropped: attempted - records.length,\n withOutcome: records.filter((record) => record.outcome !== undefined).length,\n withTargetProb: records.filter((record) => record.targetProb !== undefined).length,\n meanConfidence: confidences.length > 0 ? mean(confidences) : null,\n observedAgreementRate: records.length > 0 ? agreements / records.length : null,\n }\n}\n\nfunction isUnitProbability(value: unknown): value is number {\n return typeof value === 'number' && Number.isFinite(value) && value >= 0 && value <= 1\n}\n\nfunction boundedInteger(value: number, min: number, max: number): number {\n if (!Number.isFinite(value)) return min\n return Math.max(min, Math.min(max, Math.floor(value)))\n}\n\nfunction compactStrings(values: unknown, maxItems = 12): string[] {\n if (!Array.isArray(values)) return []\n return values\n .filter((value): value is string => typeof value === 'string' && value.length > 0)\n .slice(0, maxItems)\n .map((value) => trimText(value, 500) ?? '')\n .filter(Boolean)\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values.filter((value) => value.length > 0))]\n}\n\nfunction stringOrNull(value: unknown): string | null {\n return typeof value === 'string' && value.length > 0 ? value : null\n}\n\nfunction trimText(\n value: string | undefined,\n maxChars = DEFAULT_MAX_CONTEXT_CHARS,\n): string | undefined {\n if (!value) return undefined\n return value.length > maxChars ? value.slice(value.length - maxChars) : value\n}\n\nfunction mean(values: number[]): number {\n return values.reduce((sum, value) => sum + value, 0) / values.length\n}\n\nfunction errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error)\n}\n"],"mappings":"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","names":["ratio","rewardOf","outcomeScore","mean","stringField","numberField","isRecord","compactMetadata","record","isRecord","DEFAULT_MAX_CONTEXT_CHARS","record","uniqueStrings","trimText","errorMessage","mean"]}