@tangle-network/agent-eval 0.215.1 → 0.216.1

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 (400) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/adapters/http.d.ts +3 -3
  3. package/dist/{agent-profile-DmzL8KaJ.d.ts → agent-profile-VFcQncbW.d.ts} +5 -5
  4. package/dist/{agent-profile-DmzL8KaJ.d.ts.map → agent-profile-VFcQncbW.d.ts.map} +1 -1
  5. package/dist/{agent-profile-cell-BYc0bxsL.js → agent-profile-cell-BK8mlqlq.js} +3 -3
  6. package/dist/{agent-profile-cell-BYc0bxsL.js.map → agent-profile-cell-BK8mlqlq.js.map} +1 -1
  7. package/dist/agreement-irr-BEWLIF3_.js +186 -0
  8. package/dist/agreement-irr-BEWLIF3_.js.map +1 -0
  9. package/dist/analyst/index.d.ts +487 -14
  10. package/dist/analyst/index.d.ts.map +1 -1
  11. package/dist/analyst/index.js +1547 -12
  12. package/dist/analyst/index.js.map +1 -1
  13. package/dist/{analyze-runs-3xpby3p2.js → analyze-runs-C84irm4i.js} +608 -604
  14. package/dist/analyze-runs-C84irm4i.js.map +1 -0
  15. package/dist/{analyze-runs-BhFLOztS.d.ts → analyze-runs-D68fd-su.d.ts} +17 -15
  16. package/dist/analyze-runs-D68fd-su.d.ts.map +1 -0
  17. package/dist/{baseline-Dm8966du.js → baseline-Udi_PLuT.js} +5 -5
  18. package/dist/{baseline-Dm8966du.js.map → baseline-Udi_PLuT.js.map} +1 -1
  19. package/dist/{benchmark-BywPeAUo.js → benchmark-CXmVVHH2.js} +2 -2
  20. package/dist/{benchmark-BywPeAUo.js.map → benchmark-CXmVVHH2.js.map} +1 -1
  21. package/dist/{benchmark-command-CgpGi7vY.js → benchmark-command-By0vh8q7.js} +71 -70
  22. package/dist/benchmark-command-By0vh8q7.js.map +1 -0
  23. package/dist/benchmarks/index.d.ts +5 -5
  24. package/dist/benchmarks/index.js +3 -3
  25. package/dist/builder-eval/index.js +2 -2
  26. package/dist/campaign/index.d.ts +7 -7
  27. package/dist/campaign/index.js +14 -14
  28. package/dist/{campaign-CpnsCgfz.js → campaign-BudZ70zo.js} +245 -247
  29. package/dist/campaign-BudZ70zo.js.map +1 -0
  30. package/dist/{campaign-evidence-OcUciD-N.js → campaign-evidence-Clrn4hBV.js} +8 -8
  31. package/dist/campaign-evidence-Clrn4hBV.js.map +1 -0
  32. package/dist/{canonical-BsZVgBhW.js → canonical-B2RqLofv.js} +2 -2
  33. package/dist/{canonical-BsZVgBhW.js.map → canonical-B2RqLofv.js.map} +1 -1
  34. package/dist/{chat-client-DthPOYGd.js → chat-client-l-MVDlDk.js} +2 -2
  35. package/dist/{chat-client-DthPOYGd.js.map → chat-client-l-MVDlDk.js.map} +1 -1
  36. package/dist/{chat-json-call-BrKsyspg.js → chat-json-call-puMArmtW.js} +2 -2
  37. package/dist/{chat-json-call-BrKsyspg.js.map → chat-json-call-puMArmtW.js.map} +1 -1
  38. package/dist/{claim-BXcZw-jo.js → claim-q4HQhK1G.js} +4 -4
  39. package/dist/claim-q4HQhK1G.js.map +1 -0
  40. package/dist/cli.js +9 -9
  41. package/dist/cli.js.map +1 -1
  42. package/dist/cluster-bootstrap-qcUWYFl-.js +66 -0
  43. package/dist/cluster-bootstrap-qcUWYFl-.js.map +1 -0
  44. package/dist/contract/index.d.ts +11 -11
  45. package/dist/contract/index.js +1023 -1079
  46. package/dist/contract/index.js.map +1 -1
  47. package/dist/{cost-ledger-D2FnJPBF.js → cost-ledger-BP8V4kUQ.js} +835 -816
  48. package/dist/cost-ledger-BP8V4kUQ.js.map +1 -0
  49. package/dist/{cost-ledger-CO7UyEcQ.d.ts → cost-ledger-Jk62OBfF.d.ts} +12 -47
  50. package/dist/cost-ledger-Jk62OBfF.d.ts.map +1 -0
  51. package/dist/{counterfactual-DtMWvn7D.js → counterfactual-Dn3veueY.js} +2 -2
  52. package/dist/{counterfactual-DtMWvn7D.js.map → counterfactual-Dn3veueY.js.map} +1 -1
  53. package/dist/{default-registry-KP4-Tolz.js → default-registry-COhk9g36.js} +744 -759
  54. package/dist/default-registry-COhk9g36.js.map +1 -0
  55. package/dist/{default-registry-B4B7GMvI.d.ts → default-registry-DzHiGruW.d.ts} +6 -6
  56. package/dist/{default-registry-B4B7GMvI.d.ts.map → default-registry-DzHiGruW.d.ts.map} +1 -1
  57. package/dist/{define-agent-eval-BdfnqXeP.js → define-agent-eval-CNTPzIkp.js} +10 -10
  58. package/dist/define-agent-eval-CNTPzIkp.js.map +1 -0
  59. package/dist/{define-agent-eval-DfXvNho5.d.ts → define-agent-eval-WSck0CZJ.d.ts} +8 -8
  60. package/dist/{define-agent-eval-DfXvNho5.d.ts.map → define-agent-eval-WSck0CZJ.d.ts.map} +1 -1
  61. package/dist/{descriptive-CnU8Yq29.js → descriptive-DboxPZrG.js} +2 -2
  62. package/dist/{descriptive-CnU8Yq29.js.map → descriptive-DboxPZrG.js.map} +1 -1
  63. package/dist/diagnosis/index.d.ts +3 -3
  64. package/dist/diagnosis/index.js +4 -4
  65. package/dist/{dspy-rlm-engine-DZfHM7kT.js → dspy-rlm-engine-LRCu61m5.js} +3 -3
  66. package/dist/{dspy-rlm-engine-DZfHM7kT.js.map → dspy-rlm-engine-LRCu61m5.js.map} +1 -1
  67. package/dist/{effect-sizes-DiH8MGOH.js → effect-sizes-BhzEpXMc.js} +2 -2
  68. package/dist/{effect-sizes-DiH8MGOH.js.map → effect-sizes-BhzEpXMc.js.map} +1 -1
  69. package/dist/{engine-C37HS2kr.d.ts → engine-3A_4jOlI.d.ts} +5 -5
  70. package/dist/{engine-C37HS2kr.d.ts.map → engine-3A_4jOlI.d.ts.map} +1 -1
  71. package/dist/{equal-terms-Blx9Zk5I.js → equal-terms-BtdXayCJ.js} +2 -2
  72. package/dist/{equal-terms-Blx9Zk5I.js.map → equal-terms-BtdXayCJ.js.map} +1 -1
  73. package/dist/{errors-Dngq5h35.js → errors-DVZiqS7K.js} +6 -2
  74. package/dist/{errors-Dngq5h35.js.map → errors-DVZiqS7K.js.map} +1 -1
  75. package/dist/{eval-campaign-4byTtqrf.js → eval-campaign-90jeaCAI.js} +6 -6
  76. package/dist/{eval-campaign-4byTtqrf.js.map → eval-campaign-90jeaCAI.js.map} +1 -1
  77. package/dist/evaluation-6Yoi74gM.d.ts +75 -0
  78. package/dist/evaluation-6Yoi74gM.d.ts.map +1 -0
  79. package/dist/evaluation.d.ts +2 -74
  80. package/dist/evaluation.js +1 -1
  81. package/dist/{exact-types-Dlb73wN4.d.ts → exact-types-ClugMJfI.d.ts} +2 -2
  82. package/dist/{exact-types-Dlb73wN4.d.ts.map → exact-types-ClugMJfI.d.ts.map} +1 -1
  83. package/dist/experiment/index.d.ts +404 -3
  84. package/dist/experiment/index.d.ts.map +1 -1
  85. package/dist/experiment/index.js +313 -19
  86. package/dist/experiment/index.js.map +1 -1
  87. package/dist/{external-optimizer-process-GngofQML.js → external-optimizer-process-BjMGUuds.js} +3 -3
  88. package/dist/{external-optimizer-process-GngofQML.js.map → external-optimizer-process-BjMGUuds.js.map} +1 -1
  89. package/dist/{external-optimizer-subprocess-BUxifb8g.js → external-optimizer-subprocess-BqW0hHcI.js} +791 -532
  90. package/dist/external-optimizer-subprocess-BqW0hHcI.js.map +1 -0
  91. package/dist/{feedback-trajectory-BLN_6fEs.d.ts → feedback-trajectory-C4EG0nNH.d.ts} +5 -8
  92. package/dist/feedback-trajectory-C4EG0nNH.d.ts.map +1 -0
  93. package/dist/fuzz.d.ts +1 -1
  94. package/dist/fuzz.js +3 -3
  95. package/dist/hosted/index.js +1 -1
  96. package/dist/{index-CPJJr98o.d.ts → index-BFRO6chs.d.ts} +3 -2
  97. package/dist/index-BFRO6chs.d.ts.map +1 -0
  98. package/dist/{index-Ch9VxCpK.d.ts → index-BO41eGj5.d.ts} +2 -2
  99. package/dist/{index-Ch9VxCpK.d.ts.map → index-BO41eGj5.d.ts.map} +1 -1
  100. package/dist/{index-B3WBm953.d.ts → index-CyszSg4O.d.ts} +165 -162
  101. package/dist/index-CyszSg4O.d.ts.map +1 -0
  102. package/dist/{index-B7m2uzJL.d.ts → index-DPcngtwt.d.ts} +30 -17
  103. package/dist/index-DPcngtwt.d.ts.map +1 -0
  104. package/dist/{index-tYLUvk_w.d.ts → index-DV-jSzxF.d.ts} +9 -9
  105. package/dist/{index-tYLUvk_w.d.ts.map → index-DV-jSzxF.d.ts.map} +1 -1
  106. package/dist/index.d.ts +1969 -1871
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +162 -201
  109. package/dist/index.js.map +1 -1
  110. package/dist/{integrity-BvnVARVl.js → integrity-BXOsAb3i.js} +2 -2
  111. package/dist/{integrity-BvnVARVl.js.map → integrity-BXOsAb3i.js.map} +1 -1
  112. package/dist/{integrity-CCAxGVK6.d.ts → integrity-DAMEDFaC.d.ts} +2 -2
  113. package/dist/{integrity-CCAxGVK6.d.ts.map → integrity-DAMEDFaC.d.ts.map} +1 -1
  114. package/dist/{integrity-BV1ZDf42.js → integrity-dLiDe2kD.js} +2 -5
  115. package/dist/integrity-dLiDe2kD.js.map +1 -0
  116. package/dist/{internal-CRHwS9iz.js → internal-Epl-YBZW.js} +3 -3
  117. package/dist/{internal-CRHwS9iz.js.map → internal-Epl-YBZW.js.map} +1 -1
  118. package/dist/interval-CELpye1n.js +219 -0
  119. package/dist/interval-CELpye1n.js.map +1 -0
  120. package/dist/interval-ohuOJurX.d.ts +47 -0
  121. package/dist/interval-ohuOJurX.d.ts.map +1 -0
  122. package/dist/{journal-DvKCvjty.js → journal-DfRz9kps.js} +2 -2
  123. package/dist/{journal-DvKCvjty.js.map → journal-DfRz9kps.js.map} +1 -1
  124. package/dist/{judge-calibration-N44V04Se.js → judge-calibration-BpCy5XQl.js} +3 -3
  125. package/dist/{judge-calibration-N44V04Se.js.map → judge-calibration-BpCy5XQl.js.map} +1 -1
  126. package/dist/{judge-gate-DNcUrRFA.d.ts → judge-gate-CE7CQAgt.d.ts} +3 -3
  127. package/dist/{judge-gate-DNcUrRFA.d.ts.map → judge-gate-CE7CQAgt.d.ts.map} +1 -1
  128. package/dist/{judge-gate-B1qYnkpi.js → judge-gate-iY9s4L44.js} +3 -3
  129. package/dist/judge-gate-iY9s4L44.js.map +1 -0
  130. package/dist/{kind-factory-AaEhUADH.js → kind-factory-BobI5Jy3.js} +5 -5
  131. package/dist/{kind-factory-AaEhUADH.js.map → kind-factory-BobI5Jy3.js.map} +1 -1
  132. package/dist/ledger-core/index.js +3 -3
  133. package/dist/{ledger-core-B2hahzrt.js → ledger-core-Gq7yp8lP.js} +4 -4
  134. package/dist/{ledger-core-B2hahzrt.js.map → ledger-core-Gq7yp8lP.js.map} +1 -1
  135. package/dist/{llm-client-DQveoxSM.js → llm-client-CyBAoYiX.js} +192 -219
  136. package/dist/llm-client-CyBAoYiX.js.map +1 -0
  137. package/dist/{llm-judge-Cd5s5Ei6.js → llm-judge-CG12SQJq.js} +499 -921
  138. package/dist/llm-judge-CG12SQJq.js.map +1 -0
  139. package/dist/matrix/index.d.ts +2 -2
  140. package/dist/matrix/index.js +1 -1
  141. package/dist/{matrix-DXVAJMLD.d.ts → matrix-DSrSxjjy.d.ts} +4 -4
  142. package/dist/{matrix-DXVAJMLD.d.ts.map → matrix-DSrSxjjy.d.ts.map} +1 -1
  143. package/dist/{matrix-_BV9-Lk5.js → matrix-Dm0BQW7U.js} +7 -11
  144. package/dist/matrix-Dm0BQW7U.js.map +1 -0
  145. package/dist/{paired-tests-jbwPdSz5.js → mean-DHoMiudD.js} +11 -5
  146. package/dist/mean-DHoMiudD.js.map +1 -0
  147. package/dist/meta-eval/index.d.ts +3 -3
  148. package/dist/meta-eval/index.js +9 -70
  149. package/dist/meta-eval/index.js.map +1 -1
  150. package/dist/mint-DNU8QPG4.d.ts +81 -0
  151. package/dist/mint-DNU8QPG4.d.ts.map +1 -0
  152. package/dist/{mint-Csor1BLJ.js → mint-QaD5cA0u.js} +3 -3
  153. package/dist/{mint-Csor1BLJ.js.map → mint-QaD5cA0u.js.map} +1 -1
  154. package/dist/{multiplicity-D9cjmStq.js → multiplicity-DQUFcbW4.js} +2 -2
  155. package/dist/{multiplicity-D9cjmStq.js.map → multiplicity-DQUFcbW4.js.map} +1 -1
  156. package/dist/multishot/golden/index.d.ts +1 -1
  157. package/dist/multishot/golden/index.d.ts.map +1 -1
  158. package/dist/multishot/golden/index.js +3 -6
  159. package/dist/multishot/golden/index.js.map +1 -1
  160. package/dist/multishot/index.d.ts +2 -2
  161. package/dist/multishot/index.js +1 -1
  162. package/dist/nonnegative-number-DvdMxg_f.js +9 -0
  163. package/dist/nonnegative-number-DvdMxg_f.js.map +1 -0
  164. package/dist/openapi.json +1 -1
  165. package/dist/{otel-spans-C8YIJWy1.js → otel-spans-B9tUXRHF.js} +3 -3
  166. package/dist/{otel-spans-C8YIJWy1.js.map → otel-spans-B9tUXRHF.js.map} +1 -1
  167. package/dist/{paired-arms-DzKn0TfY.js → paired-arms-CwMGJsrS.js} +5 -5
  168. package/dist/{paired-arms-DzKn0TfY.js.map → paired-arms-CwMGJsrS.js.map} +1 -1
  169. package/dist/{paired-binary-Q36bhn2R.js → paired-binary-CvpFHfKZ.js} +2 -2
  170. package/dist/{paired-binary-Q36bhn2R.js.map → paired-binary-CvpFHfKZ.js.map} +1 -1
  171. package/dist/{paired-promotion-decision-BN6IQTiu.js → paired-promotion-decision-DsAPYGCm.js} +3 -3
  172. package/dist/{paired-promotion-decision-BN6IQTiu.js.map → paired-promotion-decision-DsAPYGCm.js.map} +1 -1
  173. package/dist/{search-kernel-BztlERLv.js → pareto-Cm6ndrWN.js} +883 -861
  174. package/dist/pareto-Cm6ndrWN.js.map +1 -0
  175. package/dist/pipelines/index.d.ts +2 -2
  176. package/dist/pipelines/index.js +3 -3
  177. package/dist/{power-and-mde-fK5Qocwo.js → power-and-mde-Hj2ubb4B.js} +2 -2
  178. package/dist/{power-and-mde-fK5Qocwo.js.map → power-and-mde-Hj2ubb4B.js.map} +1 -1
  179. package/dist/predicate-FdKmElA_.js +38 -0
  180. package/dist/predicate-FdKmElA_.js.map +1 -0
  181. package/dist/{prime-protocol-DcAK9pC8.js → prime-protocol-CHKgA3a6.js} +2 -2
  182. package/dist/{prime-protocol-DcAK9pC8.js.map → prime-protocol-CHKgA3a6.js.map} +1 -1
  183. package/dist/{prime-protocol-BHia9vDz.d.ts → prime-protocol-HiB9HX7E.d.ts} +3 -3
  184. package/dist/{prime-protocol-BHia9vDz.d.ts.map → prime-protocol-HiB9HX7E.d.ts.map} +1 -1
  185. package/dist/{produced-state-BGp4BX8t.js → produced-state-BsDmnwxc.js} +8 -8
  186. package/dist/{produced-state-BGp4BX8t.js.map → produced-state-BsDmnwxc.js.map} +1 -1
  187. package/dist/profile-cell.js +1 -1
  188. package/dist/{release-confidence-BK2QCB5M.d.ts → promotion-gate-BawrdPYr.d.ts} +102 -102
  189. package/dist/promotion-gate-BawrdPYr.d.ts.map +1 -0
  190. package/dist/{promotion-policy-CWW35UWq.js → promotion-policy-KO57gbyV.js} +4 -4
  191. package/dist/{promotion-policy-CWW35UWq.js.map → promotion-policy-KO57gbyV.js.map} +1 -1
  192. package/dist/{proposal-findings-CXblsskH.js → proposal-findings-CY1xKn_a.js} +2 -36
  193. package/dist/proposal-findings-CY1xKn_a.js.map +1 -0
  194. package/dist/{query-B1D1qp2Z.js → query-BUCZCK7F.js} +3 -3
  195. package/dist/{query-B1D1qp2Z.js.map → query-BUCZCK7F.js.map} +1 -1
  196. package/dist/{random-Dn5fPWkt.js → random-ByUSnV9w.js} +2 -2
  197. package/dist/{random-Dn5fPWkt.js.map → random-ByUSnV9w.js.map} +1 -1
  198. package/dist/{raw-provider-sink-rB2DYxr6.js → raw-provider-sink-DoHz4JNG.js} +2 -2
  199. package/dist/{raw-provider-sink-rB2DYxr6.js.map → raw-provider-sink-DoHz4JNG.js.map} +1 -1
  200. package/dist/{redact-Dk1ZdJEm.js → redact-B5xXKqQ3.js} +97 -98
  201. package/dist/redact-B5xXKqQ3.js.map +1 -0
  202. package/dist/{redact-Cveoq6fJ.d.ts → redact-mtCCcT8z.d.ts} +4 -20
  203. package/dist/redact-mtCCcT8z.d.ts.map +1 -0
  204. package/dist/{registry-CMYIaDgS.d.ts → registry-D7_hm2fK.d.ts} +11 -13
  205. package/dist/registry-D7_hm2fK.d.ts.map +1 -0
  206. package/dist/{release-confidence-Dbe9AS_X.js → release-confidence-CpuP65S5.js} +5 -5
  207. package/dist/{release-confidence-Dbe9AS_X.js.map → release-confidence-CpuP65S5.js.map} +1 -1
  208. package/dist/{report-command-CtIIsQKP.js → report-command-SC9nqb4M.js} +128 -177
  209. package/dist/report-command-SC9nqb4M.js.map +1 -0
  210. package/dist/reporting-html-Kvlc8oMt.js +100 -0
  211. package/dist/reporting-html-Kvlc8oMt.js.map +1 -0
  212. package/dist/reporting.d.ts +3 -3
  213. package/dist/reporting.js +6 -6
  214. package/dist/{researcher-f6mZhh58.d.ts → researcher-CEcfku-T.d.ts} +5 -5
  215. package/dist/{researcher-f6mZhh58.d.ts.map → researcher-CEcfku-T.d.ts.map} +1 -1
  216. package/dist/reward-CpCmAM8L.d.ts +78 -0
  217. package/dist/reward-CpCmAM8L.d.ts.map +1 -0
  218. package/dist/{reward-hacking-BFcQgkux.js → reward-hacking-E0d-WVcP.js} +2 -2
  219. package/dist/{reward-hacking-BFcQgkux.js.map → reward-hacking-E0d-WVcP.js.map} +1 -1
  220. package/dist/{reward-hacking-DHA7c1l8.d.ts → reward-hacking-RVdZ6Kkt.d.ts} +2 -2
  221. package/dist/{reward-hacking-DHA7c1l8.d.ts.map → reward-hacking-RVdZ6Kkt.d.ts.map} +1 -1
  222. package/dist/rl.d.ts +8 -8
  223. package/dist/rl.js +14 -14
  224. package/dist/rollout/index.d.ts +3 -2
  225. package/dist/rollout/index.js +2 -2
  226. package/dist/{rollout-D9bKKBnZ.js → rollout-DZV1t2Wg.js} +2 -2
  227. package/dist/{rollout-D9bKKBnZ.js.map → rollout-DZV1t2Wg.js.map} +1 -1
  228. package/dist/round-decimal-COrKglMh.js +10 -0
  229. package/dist/round-decimal-COrKglMh.js.map +1 -0
  230. package/dist/{rubric-predictive-validity-2SgHxoa5.d.ts → rubric-predictive-validity-C03EC7ZE.d.ts} +2 -2
  231. package/dist/{rubric-predictive-validity-2SgHxoa5.d.ts.map → rubric-predictive-validity-C03EC7ZE.d.ts.map} +1 -1
  232. package/dist/{rubric-predictive-validity-BsgkBfT0.js → rubric-predictive-validity-DaFW70y9.js} +3 -3
  233. package/dist/{rubric-predictive-validity-BsgkBfT0.js.map → rubric-predictive-validity-DaFW70y9.js.map} +1 -1
  234. package/dist/{run-record-DlTZ_lqe.js → run-record-Boc5IUTp.js} +4 -4
  235. package/dist/{run-record-DlTZ_lqe.js.map → run-record-Boc5IUTp.js.map} +1 -1
  236. package/dist/{run-record-D1Hw-Jml.d.ts → run-record-C1E24G2A.d.ts} +2 -2
  237. package/dist/{run-record-D1Hw-Jml.d.ts.map → run-record-C1E24G2A.d.ts.map} +1 -1
  238. package/dist/{run-record-ES07wfz9.js → run-record-C5e7FjhJ.js} +3 -5
  239. package/dist/run-record-C5e7FjhJ.js.map +1 -0
  240. package/dist/search/index.d.ts +46 -32
  241. package/dist/search/index.d.ts.map +1 -1
  242. package/dist/search/index.js +3 -3
  243. package/dist/{search-kernel-BqyBZ9Wm.d.ts → search-kernel-DyNEa6IU.d.ts} +14 -10
  244. package/dist/search-kernel-DyNEa6IU.d.ts.map +1 -0
  245. package/dist/{search-ledger-d7V8o9Lk.js → search-ledger-CVUGLDZp.js} +189 -199
  246. package/dist/search-ledger-CVUGLDZp.js.map +1 -0
  247. package/dist/{search-ledger-file-BqOo-bVo.js → search-ledger-file-DDQUgvCg.js} +4 -4
  248. package/dist/{search-ledger-file-BqOo-bVo.js.map → search-ledger-file-DDQUgvCg.js.map} +1 -1
  249. package/dist/search-ledger-types-p2xKfiDJ.d.ts.map +1 -1
  250. package/dist/{search-shipper-er4pK5_Y.js → search-shipper-BOSD46qv.js} +3 -3
  251. package/dist/{search-shipper-er4pK5_Y.js.map → search-shipper-BOSD46qv.js.map} +1 -1
  252. package/dist/{search-summary-CBvz3u_S.js → search-summary-BQCSWf1g.js} +5 -5
  253. package/dist/{search-summary-CBvz3u_S.js.map → search-summary-BQCSWf1g.js.map} +1 -1
  254. package/dist/{semantic-concept-judge-BPqbwIVs.js → semantic-concept-judge-BQF8te0T.js} +12 -14
  255. package/dist/semantic-concept-judge-BQF8te0T.js.map +1 -0
  256. package/dist/{sequential-D-1PPCmM.js → sequential-Bf_pbE50.js} +5 -5
  257. package/dist/{sequential-D-1PPCmM.js.map → sequential-Bf_pbE50.js.map} +1 -1
  258. package/dist/{sequential-eprocess-D1jKoihe.js → sequential-eprocess-DM_qENCl.js} +2 -2
  259. package/dist/{sequential-eprocess-D1jKoihe.js.map → sequential-eprocess-DM_qENCl.js.map} +1 -1
  260. package/dist/{server-DbcC7xMl.js → server-e9oWO_bN.js} +4 -4
  261. package/dist/{server-DbcC7xMl.js.map → server-e9oWO_bN.js.map} +1 -1
  262. package/dist/{single-run-lock-fVu3MZWH.js → single-run-lock-CV9Eyd_q.js} +2 -2
  263. package/dist/{single-run-lock-fVu3MZWH.js.map → single-run-lock-CV9Eyd_q.js.map} +1 -1
  264. package/dist/{skillopt-optimization-method-Dcepr6QL.js → skillopt-optimization-method-BiwA8nfX.js} +427 -12
  265. package/dist/skillopt-optimization-method-BiwA8nfX.js.map +1 -0
  266. package/dist/{spans-D9_ehFuk.d.ts → spans-BHAUXMGN.d.ts} +2 -2
  267. package/dist/{spans-D9_ehFuk.d.ts.map → spans-BHAUXMGN.d.ts.map} +1 -1
  268. package/dist/{statistical-heldout-1Gbmex7v.js → statistical-heldout-42NlCNDe.js} +3 -3
  269. package/dist/{statistical-heldout-1Gbmex7v.js.map → statistical-heldout-42NlCNDe.js.map} +1 -1
  270. package/dist/{statistical-heldout-CJTj2EoS.d.ts → statistical-heldout-CYpGaoDH.d.ts} +3 -3
  271. package/dist/{statistical-heldout-CJTj2EoS.d.ts.map → statistical-heldout-CYpGaoDH.d.ts.map} +1 -1
  272. package/dist/{store-otlp-DWVhUgEj.js → store-otlp-DJ9dtA5x.js} +135 -132
  273. package/dist/store-otlp-DJ9dtA5x.js.map +1 -0
  274. package/dist/{store-tool-spans-BNICrhsb.js → store-tool-spans-CIX5arAG.js} +7 -7
  275. package/dist/{store-tool-spans-BNICrhsb.js.map → store-tool-spans-CIX5arAG.js.map} +1 -1
  276. package/dist/{store-tool-spans-BNzls3OD.d.ts → store-tool-spans-DdCSPa7C.d.ts} +162 -161
  277. package/dist/store-tool-spans-DdCSPa7C.d.ts.map +1 -0
  278. package/dist/storyboard/index.d.ts.map +1 -1
  279. package/dist/storyboard/index.js +20 -3
  280. package/dist/storyboard/index.js.map +1 -1
  281. package/dist/{student-t-BQeKJx2N.js → student-t-DVPW7CdL.js} +2 -2
  282. package/dist/{student-t-BQeKJx2N.js.map → student-t-DVPW7CdL.js.map} +1 -1
  283. package/dist/{summary-report-DtdRucM0.js → summary-report-V_JACR4Y.js} +526 -614
  284. package/dist/summary-report-V_JACR4Y.js.map +1 -0
  285. package/dist/{summary-report-C-CtItCN.d.ts → summary-report-bdFDXq0b.d.ts} +10 -5
  286. package/dist/summary-report-bdFDXq0b.d.ts.map +1 -0
  287. package/dist/supervisor-run/index.d.ts +154 -150
  288. package/dist/supervisor-run/index.d.ts.map +1 -1
  289. package/dist/supervisor-run/index.js +65 -3
  290. package/dist/supervisor-run/index.js.map +1 -1
  291. package/dist/systemone-BomhHr2c.d.ts +135 -0
  292. package/dist/systemone-BomhHr2c.d.ts.map +1 -0
  293. package/dist/systemone-protocol.js +1 -1
  294. package/dist/{systemone-review-C4dZgrgN.d.ts → systemone-review-CUVcQJu6.d.ts} +2 -2
  295. package/dist/{systemone-review-C4dZgrgN.d.ts.map → systemone-review-CUVcQJu6.d.ts.map} +1 -1
  296. package/dist/{systemone-review-DTClwgmE.js → systemone-review-D7sXwsqq.js} +3 -3
  297. package/dist/{systemone-review-DTClwgmE.js.map → systemone-review-D7sXwsqq.js.map} +1 -1
  298. package/dist/systemone.d.ts +4 -134
  299. package/dist/systemone.js +4 -4
  300. package/dist/{task-failure-attributes-DngaLdE4.js → task-failure-attributes-hEmASjix.js} +2 -2
  301. package/dist/{task-failure-attributes-DngaLdE4.js.map → task-failure-attributes-hEmASjix.js.map} +1 -1
  302. package/dist/{terminal-record-BHocwFw1.js → terminal-record-DZyQZ3pz.js} +14 -10
  303. package/dist/terminal-record-DZyQZ3pz.js.map +1 -0
  304. package/dist/{tool-groups-BKRrtqy4.d.ts → tool-groups-C3NEcdCM.d.ts} +3 -3
  305. package/dist/tool-groups-C3NEcdCM.d.ts.map +1 -0
  306. package/dist/{tool-waste-Wi4g6Ekb.d.ts → tool-waste-BKgvd-TP.d.ts} +30 -30
  307. package/dist/tool-waste-BKgvd-TP.d.ts.map +1 -0
  308. package/dist/{tool-waste-BYt5rdt8.js → tool-waste-BlesqTqW.js} +5 -158
  309. package/dist/tool-waste-BlesqTqW.js.map +1 -0
  310. package/dist/{trace-questions-CLx8vt6t.d.ts → trace-questions-CM2CAocU.d.ts} +4 -4
  311. package/dist/{trace-questions-CLx8vt6t.d.ts.map → trace-questions-CM2CAocU.d.ts.map} +1 -1
  312. package/dist/trace-repair/index.d.ts +3 -3
  313. package/dist/trace-repair/index.d.ts.map +1 -1
  314. package/dist/trace-repair/index.js +7 -13
  315. package/dist/trace-repair/index.js.map +1 -1
  316. package/dist/traces.d.ts +76 -58
  317. package/dist/traces.d.ts.map +1 -1
  318. package/dist/traces.js +9 -9
  319. package/dist/trajectory-replay/index.js +3 -3
  320. package/dist/{tree-rXLW3M_4.js → tree-C1XYeXvy.js} +2277 -2339
  321. package/dist/tree-C1XYeXvy.js.map +1 -0
  322. package/dist/{types-DjOMwGY_.d.ts → types-BqkVmHfv.d.ts} +7 -1
  323. package/dist/types-BqkVmHfv.d.ts.map +1 -0
  324. package/dist/{types-DBZ7keha.d.ts → types-C02qtnG8.d.ts} +4 -46
  325. package/dist/types-C02qtnG8.d.ts.map +1 -0
  326. package/dist/{types-DHb5TI36.d.ts → types-C1tnkEgM.d.ts} +347 -6
  327. package/dist/types-C1tnkEgM.d.ts.map +1 -0
  328. package/dist/{types-DinHtRJp.d.ts → types-Cbe2fWBa.d.ts} +3 -3
  329. package/dist/{types-DinHtRJp.d.ts.map → types-Cbe2fWBa.d.ts.map} +1 -1
  330. package/dist/{types-CGEmVYOk.d.ts → types-Cq8mSbq8.d.ts} +78 -72
  331. package/dist/types-Cq8mSbq8.d.ts.map +1 -0
  332. package/dist/{types-CW5b90JH.js → types-IXD2HJzu.js} +16 -3
  333. package/dist/types-IXD2HJzu.js.map +1 -0
  334. package/dist/{verdict-DhPoXApk.js → verdict-Dl0tiT1X.js} +2 -2
  335. package/dist/{verdict-DhPoXApk.js.map → verdict-Dl0tiT1X.js.map} +1 -1
  336. package/dist/{verdict-cache-BQEsVy9n.js → verdict-cache-Bm8EKL2s.js} +2 -2
  337. package/dist/{verdict-cache-BQEsVy9n.js.map → verdict-cache-Bm8EKL2s.js.map} +1 -1
  338. package/dist/wire/index.d.ts +3 -3
  339. package/dist/wire/index.js +1 -1
  340. package/docs/concepts.md +1 -0
  341. package/docs/design/mlbenchmarks-book-review.md +1 -1
  342. package/docs/design/mlbenchmarks-review/probes.mts +23 -31
  343. package/docs/experiment.md +1 -1
  344. package/docs/finding-layers.md +69 -0
  345. package/package.json +1 -1
  346. package/dist/analyze-runs-3xpby3p2.js.map +0 -1
  347. package/dist/analyze-runs-BhFLOztS.d.ts.map +0 -1
  348. package/dist/ast-DJ6Bc7ab.js +0 -558
  349. package/dist/ast-DJ6Bc7ab.js.map +0 -1
  350. package/dist/ast-hI-vjW6J.d.ts +0 -457
  351. package/dist/ast-hI-vjW6J.d.ts.map +0 -1
  352. package/dist/benchmark-command-CgpGi7vY.js.map +0 -1
  353. package/dist/campaign-CpnsCgfz.js.map +0 -1
  354. package/dist/campaign-evidence-OcUciD-N.js.map +0 -1
  355. package/dist/claim-BXcZw-jo.js.map +0 -1
  356. package/dist/cost-ledger-CO7UyEcQ.d.ts.map +0 -1
  357. package/dist/cost-ledger-D2FnJPBF.js.map +0 -1
  358. package/dist/default-registry-KP4-Tolz.js.map +0 -1
  359. package/dist/define-agent-eval-BdfnqXeP.js.map +0 -1
  360. package/dist/evaluation.d.ts.map +0 -1
  361. package/dist/external-optimizer-subprocess-BUxifb8g.js.map +0 -1
  362. package/dist/feedback-trajectory-BLN_6fEs.d.ts.map +0 -1
  363. package/dist/index-B3WBm953.d.ts.map +0 -1
  364. package/dist/index-B7m2uzJL.d.ts.map +0 -1
  365. package/dist/index-CPJJr98o.d.ts.map +0 -1
  366. package/dist/integrity-BV1ZDf42.js.map +0 -1
  367. package/dist/judge-gate-B1qYnkpi.js.map +0 -1
  368. package/dist/llm-client-DQveoxSM.js.map +0 -1
  369. package/dist/llm-judge-Cd5s5Ei6.js.map +0 -1
  370. package/dist/matrix-_BV9-Lk5.js.map +0 -1
  371. package/dist/mint-DCGoBYhB.d.ts +0 -155
  372. package/dist/mint-DCGoBYhB.d.ts.map +0 -1
  373. package/dist/paired-tests-jbwPdSz5.js.map +0 -1
  374. package/dist/proposal-findings-CXblsskH.js.map +0 -1
  375. package/dist/redact-Cveoq6fJ.d.ts.map +0 -1
  376. package/dist/redact-Dk1ZdJEm.js.map +0 -1
  377. package/dist/registry-CMYIaDgS.d.ts.map +0 -1
  378. package/dist/release-confidence-BK2QCB5M.d.ts.map +0 -1
  379. package/dist/report-command-CtIIsQKP.js.map +0 -1
  380. package/dist/run-record-ES07wfz9.js.map +0 -1
  381. package/dist/search-kernel-BqyBZ9Wm.d.ts.map +0 -1
  382. package/dist/search-kernel-BztlERLv.js.map +0 -1
  383. package/dist/search-ledger-d7V8o9Lk.js.map +0 -1
  384. package/dist/semantic-concept-judge-BPqbwIVs.js.map +0 -1
  385. package/dist/skillopt-optimization-method-Dcepr6QL.js.map +0 -1
  386. package/dist/store-otlp-DWVhUgEj.js.map +0 -1
  387. package/dist/store-tool-spans-BNzls3OD.d.ts.map +0 -1
  388. package/dist/summary-report-C-CtItCN.d.ts.map +0 -1
  389. package/dist/summary-report-DtdRucM0.js.map +0 -1
  390. package/dist/systemone.d.ts.map +0 -1
  391. package/dist/terminal-record-BHocwFw1.js.map +0 -1
  392. package/dist/tool-groups-BKRrtqy4.d.ts.map +0 -1
  393. package/dist/tool-waste-BYt5rdt8.js.map +0 -1
  394. package/dist/tool-waste-Wi4g6Ekb.d.ts.map +0 -1
  395. package/dist/tree-rXLW3M_4.js.map +0 -1
  396. package/dist/types-CGEmVYOk.d.ts.map +0 -1
  397. package/dist/types-CW5b90JH.js.map +0 -1
  398. package/dist/types-DBZ7keha.d.ts.map +0 -1
  399. package/dist/types-DHb5TI36.d.ts.map +0 -1
  400. package/dist/types-DjOMwGY_.d.ts.map +0 -1
@@ -1,8 +1,42 @@
1
- import { a as hashCanonical } from "./canonical-BsZVgBhW.js";
2
- import { o as summarizeNumberSeries } from "./descriptive-CnU8Yq29.js";
3
- import { a as parseJson, c as workerSourceKey, d as SUPERVISOR_RUN_SCHEMA, f as isUnavailable, i as asRecord, l as NO_SOURCE_LIMITS, m as unavailable, o as parseJsonl, p as showMeasured, r as readTerminalRecord, s as parseSupervisorTree, u as SUPERVISOR_RUN_ROLLUP_SCHEMA } from "./terminal-record-BHocwFw1.js";
1
+ import { l as errorMessage } from "./errors-DVZiqS7K.js";
2
+ import { a as hashCanonical } from "./canonical-B2RqLofv.js";
3
+ import { o as summarizeNumberSeries } from "./descriptive-DboxPZrG.js";
4
+ import { t as roundDecimal } from "./round-decimal-COrKglMh.js";
5
+ import { a as nonEmptyString, c as parseSupervisorTree, d as NO_SOURCE_LIMITS, g as unavailable, h as showMeasured, i as asRecord, l as recordOrNull, m as isUnavailable, o as parseJson, p as SUPERVISOR_RUN_SCHEMA, r as readTerminalRecord, s as parseJsonl, u as workerSourceKey } from "./terminal-record-DZyQZ3pz.js";
4
6
  import { join, resolve } from "node:path";
5
7
  import { appendFile, mkdir, readFile, readdir, stat, writeFile } from "node:fs/promises";
8
+ //#region src/supervisor-run/patch-stats.ts
9
+ /** Unified-diff stats. Counts `+++ b/<path>` targets, body +/- lines, and test-file touches. */
10
+ function parsePatch(text) {
11
+ const files = /* @__PURE__ */ new Set();
12
+ const testFiles = /* @__PURE__ */ new Set();
13
+ let added = 0;
14
+ let removed = 0;
15
+ for (const line of text.split("\n")) {
16
+ if (line.startsWith("+++ ")) {
17
+ const p = line.slice(4).trim().replace(/^b\//, "");
18
+ if (p !== "/dev/null") {
19
+ files.add(p);
20
+ if (isTestPath(p)) testFiles.add(p);
21
+ }
22
+ continue;
23
+ }
24
+ if (line.startsWith("--- ") || line.startsWith("diff --git") || line.startsWith("index ")) continue;
25
+ if (line.startsWith("+")) added += 1;
26
+ else if (line.startsWith("-")) removed += 1;
27
+ }
28
+ return {
29
+ files: files.size,
30
+ linesAdded: added,
31
+ linesRemoved: removed,
32
+ testFilesTouched: [...testFiles].sort()
33
+ };
34
+ }
35
+ function isTestPath(p) {
36
+ const base = p.split("/").pop() ?? p;
37
+ return /(^|\/)(tests?|__tests__|testing|spec)(\/|$)/.test(p) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(base) || /^test_.*\.py$/.test(base) || /_test\.py$/.test(base);
38
+ }
39
+ //#endregion
6
40
  //#region src/supervisor-run/analyze.ts
7
41
  /**
8
42
  * The pure analyzer. Takes already-read bytes (`SupervisorRunSources`) and
@@ -203,8 +237,8 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
203
237
  supervisorWallMs,
204
238
  supervisorWallSource,
205
239
  idleMs: isUnavailable(supervisorWallMs) ? unavailable(supervisorWallMs.unavailable) : idleMs,
206
- idlePct: isUnavailable(supervisorWallMs) || supervisorWallMs === 0 ? isUnavailable(supervisorWallMs) ? unavailable(supervisorWallMs.unavailable) : unavailable("supervisor wall is 0ms") : round(idleMs / supervisorWallMs * 100, 1),
207
- workerUtilization: isUnavailable(supervisorWallMs) || supervisorWallMs === 0 ? isUnavailable(supervisorWallMs) ? unavailable(supervisorWallMs.unavailable) : unavailable("supervisor wall is 0ms") : round(sumWorkerWallMs / supervisorWallMs, 3)
240
+ idlePct: isUnavailable(supervisorWallMs) || supervisorWallMs === 0 ? isUnavailable(supervisorWallMs) ? unavailable(supervisorWallMs.unavailable) : unavailable("supervisor wall is 0ms") : roundDecimal(idleMs / supervisorWallMs * 100, 1),
241
+ workerUtilization: isUnavailable(supervisorWallMs) || supervisorWallMs === 0 ? isUnavailable(supervisorWallMs) ? unavailable(supervisorWallMs.unavailable) : unavailable("supervisor wall is 0ms") : roundDecimal(sumWorkerWallMs / supervisorWallMs, 3)
208
242
  };
209
243
  const settledByStatus = {};
210
244
  const settledVerdicts = {};
@@ -303,20 +337,20 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
303
337
  const usdLimit = src.limits.spendUsd;
304
338
  const closeUsdUnreported = stateUsd === null && resultCloseUsd !== null && resultSpentTotal.usdKnown === false;
305
339
  const usdUnreportedReason = unpriced(usdUnknownRecords, usdKnownRecords + usdUnknownRecords, usdUnknownNodes);
306
- const totalUsd = usdLimit !== null ? gap("totalUsd", usdLimit) : stateUsd !== null ? round(stateUsd, 6) : !haveJournal ? gap("totalUsd", journalMissing) : usdUnknownRecords > 0 ? gap("totalUsd", usdUnreportedReason) : round(tree.brain.usd + journalWorkerUsd, 6);
340
+ const totalUsd = usdLimit !== null ? gap("totalUsd", usdLimit) : stateUsd !== null ? roundDecimal(stateUsd, 6) : !haveJournal ? gap("totalUsd", journalMissing) : usdUnknownRecords > 0 ? gap("totalUsd", usdUnreportedReason) : roundDecimal(tree.brain.usd + journalWorkerUsd, 6);
307
341
  const journalSpendRecords = usdKnownRecords;
308
342
  const journalDerivedAvailable = usdLimit === null && haveJournal && !usdAllUnknown;
309
343
  const closeRecordAvailable = usdLimit === null && closeUsd !== null && !closeUsdUnreported;
310
344
  const spend = {
311
345
  journalDerived: {
312
- usd: journalDerivedAvailable ? round(tree.brain.usd + journalWorkerUsd, 6) : unavailable(usdLimit ?? (haveJournal ? usdUnreportedReason : journalMissing)),
346
+ usd: journalDerivedAvailable ? roundDecimal(tree.brain.usd + journalWorkerUsd, 6) : unavailable(usdLimit ?? (haveJournal ? usdUnreportedReason : journalMissing)),
313
347
  records: journalDerivedAvailable ? journalSpendRecords : 0,
314
348
  unknownRecords: usdLimit === null && haveJournal ? usdUnknownRecords : 0,
315
349
  partial: journalDerivedAvailable && usdPartial,
316
350
  unknownNodes: usdLimit === null && haveJournal ? usdUnknownNodes : []
317
351
  },
318
352
  closeRecord: {
319
- usd: closeRecordAvailable ? round(closeUsd, 6) : unavailable(usdLimit ?? (closeUsdUnreported ? "close record incomplete: result.json spentTotal.usdKnown is false" : "no close record: neither state.json result.spentUsd nor result.json spentTotal.usd is present")),
353
+ usd: closeRecordAvailable ? roundDecimal(closeUsd, 6) : unavailable(usdLimit ?? (closeUsdUnreported ? "close record incomplete: result.json spentTotal.usdKnown is false" : "no close record: neither state.json result.spentUsd nor result.json spentTotal.usd is present")),
320
354
  records: closeRecordAvailable ? 1 : 0,
321
355
  unknownRecords: closeUsdUnreported ? 1 : 0,
322
356
  partial: false,
@@ -371,7 +405,7 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
371
405
  brain: {
372
406
  tokensIn: managerTokenLimit !== null ? gap("brain.tokensIn", managerTokenLimit) : !haveJournal ? gap("brain.tokensIn", journalMissing) : brainTokensUnreported !== null ? gap("brain.tokensIn", brainTokensUnreported) : tree.brain.tokensIn,
373
407
  tokensOut: managerTokenLimit !== null ? unavailable(managerTokenLimit) : !haveJournal ? unavailable(journalMissing) : brainTokensUnreported !== null ? unavailable(brainTokensUnreported) : tree.brain.tokensOut,
374
- usd: usdLimit !== null ? unavailable(usdLimit) : !haveJournal ? unavailable(journalMissing) : brainUsdUnreported !== null ? unavailable(brainUsdUnreported) : round(tree.brain.usd, 6),
408
+ usd: usdLimit !== null ? unavailable(usdLimit) : !haveJournal ? unavailable(journalMissing) : brainUsdUnreported !== null ? unavailable(brainUsdUnreported) : roundDecimal(tree.brain.usd, 6),
375
409
  cacheRead: managerTokenLimit !== null ? unavailable(managerTokenLimit) : !haveJournal ? unavailable(journalMissing) : brainTokensUnreported !== null ? unavailable(brainTokensUnreported) : !tree.brain.hasCache ? unavailable(NO_CACHE_COUNTERS) : tree.brain.cacheBreakdownKnown ? tree.brain.cacheRead : unavailable(NO_CACHE_BREAKDOWN),
376
410
  cacheWrite: managerTokenLimit !== null ? unavailable(managerTokenLimit) : !haveJournal ? unavailable(journalMissing) : brainTokensUnreported !== null ? unavailable(brainTokensUnreported) : !tree.brain.hasCache ? unavailable(NO_CACHE_COUNTERS) : tree.brain.cacheBreakdownKnown ? tree.brain.cacheWrite : unavailable(NO_CACHE_BREAKDOWN),
377
411
  source: managerTokenLimit ?? (haveJournal ? `journal metered events (n=${tree.brain.meteredCount})${tree.brain.usdKnownCount > 0 && tree.brain.usdUnknownCount > 0 ? ` — ${tree.brain.usdUnknownCount} unpriced` : ""}` : journalMissing)
@@ -382,13 +416,13 @@ function analyzeSupervisorRunSources(src, now = Date.now) {
382
416
  tokensOut: workerOut,
383
417
  cacheRead: workerTokenLimit !== null ? unavailable(workerTokenLimit) : sq?.cacheRead !== void 0 ? sq.cacheRead : unavailable(NO_CACHE_COUNTERS),
384
418
  cacheWrite: workerTokenLimit !== null ? unavailable(workerTokenLimit) : sq?.cacheWrite !== void 0 ? sq.cacheWrite : unavailable(NO_CACHE_COUNTERS),
385
- usd: usdLimit !== null ? unavailable(usdLimit) : !haveJournal ? unavailable(journalMissing) : workerUsdUnreported !== null ? unavailable(workerUsdUnreported) : round(journalWorkerUsd, 6),
419
+ usd: usdLimit !== null ? unavailable(usdLimit) : !haveJournal ? unavailable(journalMissing) : workerUsdUnreported !== null ? unavailable(workerUsdUnreported) : roundDecimal(journalWorkerUsd, 6),
386
420
  source: `${workerTokenLimit !== null ? workerTokenLimit : sq !== null ? `journal settled spend + ${sq.store} sessions (n=${sq.sessions})` : `journal settled spend only — ${src.harnessMissingReason ?? "harness session store unavailable"}`}${workerUsdUnknownNodes.length > 0 && workerUsdUnknownNodes.length < rootChildSpends.length ? ` — ${workerUsdUnknownNodes.length} unpriced` : ""}`
387
421
  },
388
422
  spend,
389
423
  totalUsd,
390
424
  totalUsdSource: usdLimit !== null ? usdLimit : stateUsd !== null ? `state.json result.spentUsd${rootChildCloses.length > 0 && journalWorkerUsd === 0 ? " — brain-priced only; worker CLI inference is unpriced (see worker token counts)" : ""}` : !haveJournal ? journalMissing : usdUnknownRecords > 0 ? usdUnreportedReason : "journal metered + settled usd",
391
- costPerAcceptedPatchUsd: isUnavailable(totalUsd) ? unavailable(totalUsd.unavailable) : isUnavailable(decision.accepted) ? unavailable(decision.accepted.unavailable) : decision.accepted === 0 ? unavailable("no accepted worker patch (cost has no denominator)") : round(totalUsd / decision.accepted, 6),
425
+ costPerAcceptedPatchUsd: isUnavailable(totalUsd) ? unavailable(totalUsd.unavailable) : isUnavailable(decision.accepted) ? unavailable(decision.accepted.unavailable) : decision.accepted === 0 ? unavailable("no accepted worker patch (cost has no denominator)") : roundDecimal(totalUsd / decision.accepted, 6),
392
426
  workerWallMsDistribution: wallDistribution === null ? unavailable(src.workers === null ? workersGapReason : "no worker start/finish pairs captured") : wallDistribution,
393
427
  perWorker: src.workers === null ? unavailable(workersGapReason) : perWorker
394
428
  };
@@ -447,98 +481,6 @@ function pickString(rec, key) {
447
481
  const v = rec?.[key];
448
482
  return typeof v === "string" ? v : null;
449
483
  }
450
- function round(v, digits) {
451
- const f = 10 ** digits;
452
- return Math.round(v * f) / f;
453
- }
454
- /** Unified-diff stats. Counts `+++ b/<path>` targets, body +/- lines, and test-file touches. */
455
- function parsePatch(text) {
456
- const files = /* @__PURE__ */ new Set();
457
- const testFiles = /* @__PURE__ */ new Set();
458
- let added = 0;
459
- let removed = 0;
460
- for (const line of text.split("\n")) {
461
- if (line.startsWith("+++ ")) {
462
- const p = line.slice(4).trim().replace(/^b\//, "");
463
- if (p !== "/dev/null") {
464
- files.add(p);
465
- if (isTestPath(p)) testFiles.add(p);
466
- }
467
- continue;
468
- }
469
- if (line.startsWith("--- ") || line.startsWith("diff --git") || line.startsWith("index ")) continue;
470
- if (line.startsWith("+")) added += 1;
471
- else if (line.startsWith("-")) removed += 1;
472
- }
473
- return {
474
- files: files.size,
475
- linesAdded: added,
476
- linesRemoved: removed,
477
- testFilesTouched: [...testFiles].sort()
478
- };
479
- }
480
- function isTestPath(p) {
481
- const base = p.split("/").pop() ?? p;
482
- return /(^|\/)(tests?|__tests__|testing|spec)(\/|$)/.test(p) || /\.(test|spec)\.[cm]?[jt]sx?$/.test(base) || /^test_.*\.py$/.test(base) || /_test\.py$/.test(base);
483
- }
484
- /**
485
- * Aggregate many supervisor-run reports. A metric no run could measure stays
486
- * `unavailable` rather than becoming a 0-valued mean, and cells whose steer
487
- * count was unavailable are counted separately from cells that measured zero.
488
- */
489
- function rollupSupervisorRuns(reports) {
490
- const known = (vals) => vals.filter((v) => !isUnavailable(v));
491
- const steerVals = known(reports.map((r) => r.orchestration.steers));
492
- const waveVals = known(reports.map((r) => r.orchestration.waves));
493
- const concVals = known(reports.map((r) => r.orchestration.maxConcurrency));
494
- const utilVals = known(reports.map((r) => r.orchestration.workerUtilization));
495
- const idleVals = known(reports.map((r) => r.orchestration.idlePct));
496
- const spawnVals = known(reports.map((r) => r.orchestration.workersSpawned));
497
- const acceptVals = known(reports.map((r) => r.decision.accepted));
498
- const usdVals = known(reports.map((r) => r.economics.totalUsd));
499
- const journalSpendVals = known(reports.map((r) => r.economics.spend.journalDerived.usd));
500
- const closeSpendVals = known(reports.map((r) => r.economics.spend.closeRecord.usd));
501
- const resolvedVals = known(reports.map((r) => r.outcome.judgeResolved));
502
- const sum = (xs) => xs.reduce((a, b) => a + b, 0);
503
- const mean = (xs) => xs.length === 0 ? unavailable("no cell reported this metric") : round(sum(xs) / xs.length, 3);
504
- const perCell = reports.map((r) => ({
505
- instanceId: r.instanceId,
506
- arm: r.arm,
507
- steers: r.orchestration.steers,
508
- waves: r.orchestration.waves,
509
- utilization: r.orchestration.workerUtilization,
510
- idlePct: r.orchestration.idlePct,
511
- resolved: r.outcome.judgeResolved,
512
- usd: r.economics.totalUsd,
513
- ...r.economics.resourceRecords === void 0 ? {} : { resourceRecords: r.economics.resourceRecords }
514
- }));
515
- return {
516
- schema: SUPERVISOR_RUN_ROLLUP_SCHEMA,
517
- cells: reports.length,
518
- steersTotal: steerVals.length === 0 ? unavailable("no cell reported a steer count") : sum(steerVals),
519
- cellsWithSteers: steerVals.length === 0 ? unavailable("no cell reported a steer count") : steerVals.filter((n) => n > 0).length,
520
- cellsWithUnavailableSteers: reports.filter((r) => isUnavailable(r.orchestration.steers)).length,
521
- wavesMean: mean(waveVals),
522
- maxConcurrencyMax: concVals.length === 0 ? unavailable("no cell reported concurrency") : Math.max(...concVals),
523
- utilizationMean: mean(utilVals),
524
- idlePctMean: mean(idleVals),
525
- workersSpawnedTotal: spawnVals.length === 0 ? unavailable("no cell reported spawns") : sum(spawnVals),
526
- acceptedTotal: acceptVals.length === 0 ? unavailable("no cell reported acceptance") : sum(acceptVals),
527
- usdTotal: usdVals.length === 0 ? unavailable("no cell reported spend") : round(sum(usdVals), 6),
528
- spendUsd: {
529
- journalDerived: {
530
- value: journalSpendVals.length === 0 ? unavailable("no cell measured journal-derived spend") : round(sum(journalSpendVals), 6),
531
- runs: journalSpendVals.length
532
- },
533
- closeRecord: {
534
- value: closeSpendVals.length === 0 ? unavailable("no cell carried a close record") : round(sum(closeSpendVals), 6),
535
- runs: closeSpendVals.length
536
- }
537
- },
538
- resolvedCount: resolvedVals.length === 0 ? unavailable("no cell reported a judge verdict") : resolvedVals.filter((v) => v === true).length,
539
- perCell
540
- };
541
- }
542
484
  //#endregion
543
485
  //#region src/supervisor-run/render.ts
544
486
  /**
@@ -602,8 +544,8 @@ function fmtMs(v) {
602
544
  if (isUnavailable(v)) return `unavailable — ${v.unavailable}`;
603
545
  if (v < 1e3) return `${v}ms`;
604
546
  const s = v / 1e3;
605
- if (s < 120) return `${round(s, 1)}s`;
606
- return `${round(s / 60, 1)}min`;
547
+ if (s < 120) return `${roundDecimal(s, 1)}s`;
548
+ return `${roundDecimal(s / 60, 1)}min`;
607
549
  }
608
550
  function renderSupervisorRunMarkdown(r) {
609
551
  const o = r.orchestration;
@@ -746,6 +688,66 @@ function renderSupervisorRollupMarkdown(rollup, title = "Round rollup") {
746
688
  return out.join("\n");
747
689
  }
748
690
  //#endregion
691
+ //#region src/supervisor-run/coordination-reader.ts
692
+ /**
693
+ * Optional Runtime run-dir files, read as bytes.
694
+ *
695
+ * `coordination-log.jsonl` is Runtime's JSONL of `{ runId, seq, at, event }`:
696
+ * questions, steers, answers and peer mail between nodes. The `team-shape`
697
+ * analyst reads communication and steer edges from it.
698
+ */
699
+ const COORDINATION_FILE = "coordination-log.jsonl";
700
+ /** File text, or null when the file does not exist. Any other read error throws. */
701
+ async function readMaybe(path) {
702
+ return readFile(path, "utf8").catch((error) => {
703
+ if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") return null;
704
+ throw error;
705
+ });
706
+ }
707
+ /** The run's coordination log, or null when Runtime wrote none. */
708
+ function readCoordinationLog(runDir) {
709
+ return readMaybe(join(runDir, COORDINATION_FILE));
710
+ }
711
+ //#endregion
712
+ //#region src/supervisor-run/runtime-source-limits.ts
713
+ function spendRecord(value) {
714
+ const spend = recordOrNull(value);
715
+ if (spend === null) return null;
716
+ const tokens = recordOrNull(spend.tokens);
717
+ if (tokens === null || typeof tokens.input !== "number" || !Number.isFinite(tokens.input) || tokens.input < 0 || typeof tokens.output !== "number" || !Number.isFinite(tokens.output) || tokens.output < 0 || typeof spend.usd !== "number" || !Number.isFinite(spend.usd) || spend.usd < 0 || spend.usdKnown !== void 0 && typeof spend.usdKnown !== "boolean") return null;
718
+ return spend;
719
+ }
720
+ function sourceLimits(root, events, workerIds) {
721
+ const rootMeters = events.filter((event) => event.kind === "metered" && event.id === root);
722
+ const invalidRootMeters = rootMeters.filter((event) => spendRecord(event.spend) === null);
723
+ const rootMeterReason = rootMeters.length === 0 ? "Runtime journal has no root metered event" : invalidRootMeters.length > 0 ? `${invalidRootMeters.length} root metered event(s) lack complete spend` : null;
724
+ const closes = events.filter((event) => workerIds.has(nonEmptyString(event.id) ?? "") && (event.kind === "settled" || event.kind === "cancelled"));
725
+ const settledById = /* @__PURE__ */ new Map();
726
+ for (const event of closes) {
727
+ const id = nonEmptyString(event.id);
728
+ if (id === null) continue;
729
+ const matches = settledById.get(id) ?? [];
730
+ matches.push(event);
731
+ settledById.set(id, matches);
732
+ }
733
+ const incompleteWorkers = [...workerIds].filter((id) => {
734
+ const terminal = settledById.get(id);
735
+ return terminal?.length !== 1 || terminal[0]?.kind !== "settled" || spendRecord(terminal[0]?.spent) === null;
736
+ });
737
+ const missingVerdicts = [...workerIds].filter((id) => {
738
+ const terminal = settledById.get(id)?.[0];
739
+ if (terminal?.kind !== "settled") return true;
740
+ return typeof recordOrNull(terminal.verdict)?.valid !== "boolean";
741
+ });
742
+ return {
743
+ managerTokens: rootMeterReason,
744
+ workerTokens: incompleteWorkers.length === 0 ? null : `${incompleteWorkers.length}/${workerIds.size} child invocation(s) lack one settled spend record`,
745
+ spendUsd: rootMeterReason !== null ? rootMeterReason : incompleteWorkers.length > 0 ? "at least one child invocation lacks a settled spend record" : null,
746
+ workerVerdicts: missingVerdicts.length === 0 ? null : `${missingVerdicts.length}/${workerIds.size} child invocation(s) lack a structured validity verdict`,
747
+ deliverables: workerIds.size === 0 ? null : "Runtime FileRunContext does not retain per-child delivered patches"
748
+ };
749
+ }
750
+ //#endregion
749
751
  //#region src/supervisor-run/runtime-reader.ts
750
752
  /**
751
753
  * Reader for agent-runtime's file-backed supervision context.
@@ -805,22 +807,10 @@ const RUNTIME_RUN_DIR_MARKERS = [
805
807
  OBSERVER_FILE,
806
808
  FAILURE_FILE
807
809
  ];
808
- async function readMaybe(path) {
809
- return readFile(path, "utf8").catch((error) => {
810
- if (typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT") return null;
811
- throw error;
812
- });
813
- }
814
- function record(value) {
815
- return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
816
- }
817
- function nonEmptyString(value) {
818
- return typeof value === "string" && value.length > 0 ? value : null;
819
- }
820
810
  function profileDigest(event) {
821
811
  const direct = nonEmptyString(event.profileDigest);
822
812
  if (direct !== null) return direct;
823
- const identity = record(event.identity);
813
+ const identity = recordOrNull(event.identity);
824
814
  return identity === null ? null : nonEmptyString(identity.profileDigest);
825
815
  }
826
816
  function formatError(path, line, detail) {
@@ -840,7 +830,7 @@ function parseEnvelopeJournal(text, path) {
840
830
  } catch {
841
831
  throw formatError(path, line, "line is not JSON");
842
832
  }
843
- const envelope = record(parsed);
833
+ const envelope = recordOrNull(parsed);
844
834
  if (envelope === null) throw formatError(path, line, "line is not an object");
845
835
  const kind = nonEmptyString(envelope.kind);
846
836
  const root = nonEmptyString(envelope.root);
@@ -860,7 +850,7 @@ function parseEnvelopeJournal(text, path) {
860
850
  }
861
851
  if (kind !== "event") throw formatError(path, line, "kind must be 'begin' or 'event'");
862
852
  if (!begun.has(root)) throw formatError(path, line, `event for tree ${JSON.stringify(root)} precedes begin`);
863
- const event = record(envelope.event);
853
+ const event = recordOrNull(envelope.event);
864
854
  if (event === null) throw formatError(path, line, "event must be an object");
865
855
  if (nonEmptyString(event.kind) === null) throw formatError(path, line, "event.kind must be a non-empty string");
866
856
  events.push({
@@ -974,47 +964,10 @@ function parseOptionalRecord(text, path) {
974
964
  } catch {
975
965
  throw new Error(`${path}: invalid JSON`);
976
966
  }
977
- const value = record(parsed);
967
+ const value = recordOrNull(parsed);
978
968
  if (value === null) throw new Error(`${path}: expected a JSON object`);
979
969
  return value;
980
970
  }
981
- function spendRecord(value) {
982
- const spend = record(value);
983
- if (spend === null) return null;
984
- const tokens = record(spend.tokens);
985
- if (tokens === null || typeof tokens.input !== "number" || !Number.isFinite(tokens.input) || tokens.input < 0 || typeof tokens.output !== "number" || !Number.isFinite(tokens.output) || tokens.output < 0 || typeof spend.usd !== "number" || !Number.isFinite(spend.usd) || spend.usd < 0 || spend.usdKnown !== void 0 && typeof spend.usdKnown !== "boolean") return null;
986
- return spend;
987
- }
988
- function sourceLimits(root, events, workerIds) {
989
- const rootMeters = events.filter((event) => event.kind === "metered" && event.id === root);
990
- const invalidRootMeters = rootMeters.filter((event) => spendRecord(event.spend) === null);
991
- const rootMeterReason = rootMeters.length === 0 ? "Runtime journal has no root metered event" : invalidRootMeters.length > 0 ? `${invalidRootMeters.length} root metered event(s) lack complete spend` : null;
992
- const closes = events.filter((event) => workerIds.has(nonEmptyString(event.id) ?? "") && (event.kind === "settled" || event.kind === "cancelled"));
993
- const settledById = /* @__PURE__ */ new Map();
994
- for (const event of closes) {
995
- const id = nonEmptyString(event.id);
996
- if (id === null) continue;
997
- const matches = settledById.get(id) ?? [];
998
- matches.push(event);
999
- settledById.set(id, matches);
1000
- }
1001
- const incompleteWorkers = [...workerIds].filter((id) => {
1002
- const terminal = settledById.get(id);
1003
- return terminal?.length !== 1 || terminal[0]?.kind !== "settled" || spendRecord(terminal[0]?.spent) === null;
1004
- });
1005
- const missingVerdicts = [...workerIds].filter((id) => {
1006
- const terminal = settledById.get(id)?.[0];
1007
- if (terminal?.kind !== "settled") return true;
1008
- return typeof record(terminal.verdict)?.valid !== "boolean";
1009
- });
1010
- return {
1011
- managerTokens: rootMeterReason,
1012
- workerTokens: incompleteWorkers.length === 0 ? null : `${incompleteWorkers.length}/${workerIds.size} child invocation(s) lack one settled spend record`,
1013
- spendUsd: rootMeterReason !== null ? rootMeterReason : incompleteWorkers.length > 0 ? "at least one child invocation lacks a settled spend record" : null,
1014
- workerVerdicts: missingVerdicts.length === 0 ? null : `${missingVerdicts.length}/${workerIds.size} child invocation(s) lack a structured validity verdict`,
1015
- deliverables: workerIds.size === 0 ? null : "Runtime FileRunContext does not retain per-child delivered patches"
1016
- };
1017
- }
1018
971
  /**
1019
972
  * Refuse a `result.json` that belongs to another run. Runtime's result carries
1020
973
  * its own `tree.root`; a settled record with a different root is a copied or
@@ -1023,7 +976,7 @@ function sourceLimits(root, events, workerIds) {
1023
976
  function assertResultMatchesJournal(root, result, resultPath) {
1024
977
  const resultKind = result === null ? null : nonEmptyString(result.kind);
1025
978
  if (resultKind === null || result === null) return;
1026
- const resultRoot = nonEmptyString(record(result.tree)?.root);
979
+ const resultRoot = nonEmptyString(recordOrNull(result.tree)?.root);
1027
980
  if (resultRoot === null) throw new Error(`${resultPath}: Runtime ${resultKind} result has no tree.root`);
1028
981
  if (resultRoot !== root) throw new Error(`${resultPath}: root ${JSON.stringify(resultRoot)} does not match journal root ${JSON.stringify(root)}`);
1029
982
  }
@@ -1036,7 +989,7 @@ function assertResultMatchesJournal(root, result, resultPath) {
1036
989
  */
1037
990
  function assertFailureRecord(failure, failurePath) {
1038
991
  if (failure === null) return;
1039
- if (record(failure.error) === null) throw new Error(`${failurePath}: Runtime failure record has no error object`);
992
+ if (recordOrNull(failure.error) === null) throw new Error(`${failurePath}: Runtime failure record has no error object`);
1040
993
  }
1041
994
  /**
1042
995
  * The journal's begin stamp in the analyzer's state-document shape. It carries
@@ -1082,12 +1035,12 @@ async function receiptSessionFiles(file) {
1082
1035
  } catch {
1083
1036
  return;
1084
1037
  }
1085
- const harness = record(descriptor)?.harness;
1086
- const files = record(descriptor)?.files;
1038
+ const harness = recordOrNull(descriptor)?.harness;
1039
+ const files = recordOrNull(descriptor)?.files;
1087
1040
  const pattern = typeof harness === "string" ? HARNESS_SESSION_FILE[harness] : void 0;
1088
1041
  if (pattern === void 0 || !Array.isArray(files)) return void 0;
1089
1042
  return files.filter((entry) => {
1090
- const path = record(entry)?.path;
1043
+ const path = recordOrNull(entry)?.path;
1091
1044
  return typeof path === "string" && pattern.test(path);
1092
1045
  }).length;
1093
1046
  }
@@ -1145,23 +1098,23 @@ async function workspaceCapturesFromOutput(runDir, ref) {
1145
1098
  addressGap = "Runtime output cannot be canonically hashed";
1146
1099
  }
1147
1100
  const project = (rawReceipt, receiptPointer) => {
1148
- const receipt = record(rawReceipt);
1101
+ const receipt = recordOrNull(rawReceipt);
1149
1102
  if (receipt === null) return {
1150
1103
  ...missing(`workspaceCapture receipt is absent or malformed${addressGap === null ? "" : `; ${addressGap}`}`),
1151
1104
  receiptPointer,
1152
1105
  receipt: rawReceipt
1153
1106
  };
1154
- const provenance = record(receipt.provenance);
1107
+ const provenance = recordOrNull(receipt.provenance);
1155
1108
  const attempts = Array.isArray(provenance?.attempts) ? provenance.attempts : null;
1156
1109
  const coverageComplete = typeof receipt.coverageComplete === "boolean" ? receipt.coverageComplete : null;
1157
1110
  const incompleteReason = typeof receipt.incompleteReason === "string" ? receipt.incompleteReason : null;
1158
1111
  const gaps = [];
1159
1112
  if (addressGap !== null) gaps.push(addressGap);
1160
1113
  if (coverageComplete === null) gaps.push("workspaceCapture.coverageComplete is absent");
1161
- if (record(receipt.snapshot) === null) gaps.push("workspaceCapture.snapshot is absent");
1114
+ if (recordOrNull(receipt.snapshot) === null) gaps.push("workspaceCapture.snapshot is absent");
1162
1115
  if (provenance === null) gaps.push("workspaceCapture.provenance is absent");
1163
1116
  if (attempts === null) gaps.push("workspaceCapture.provenance.attempts is absent");
1164
- else if (attempts.length === 0 || attempts.some((attempt) => record(attempt) === null)) gaps.push("workspaceCapture.provenance.attempts is empty or malformed");
1117
+ else if (attempts.length === 0 || attempts.some((attempt) => recordOrNull(attempt) === null)) gaps.push("workspaceCapture.provenance.attempts is empty or malformed");
1165
1118
  return {
1166
1119
  outRef,
1167
1120
  blobPath,
@@ -1173,7 +1126,7 @@ async function workspaceCapturesFromOutput(runDir, ref) {
1173
1126
  projectionGap: gaps.length > 0 ? gaps.join("; ") : null
1174
1127
  };
1175
1128
  };
1176
- const result = record(output);
1129
+ const result = recordOrNull(output);
1177
1130
  const captures = [];
1178
1131
  for (const key of Object.keys(result ?? {})) if (key === "workspaceCapture") captures.push(project(result?.[key], "/workspaceCapture"));
1179
1132
  else if (key === "workspaceCaptures") {
@@ -1238,8 +1191,8 @@ async function nodeTranscripts(runDir, events, nodeIds, root) {
1238
1191
  });
1239
1192
  }
1240
1193
  }
1241
- if (event.kind === "execution-admitted" && record(event.admission)?.phase === "dispatched") entry(id).dispatched += 1;
1242
- else if (event.kind === "settled" || event.kind === "cancelled" || event.kind === "reconciled") keepReceipt(entry(id), record(event.harnessTranscript));
1194
+ if (event.kind === "execution-admitted" && recordOrNull(event.admission)?.phase === "dispatched") entry(id).dispatched += 1;
1195
+ else if (event.kind === "settled" || event.kind === "cancelled" || event.kind === "reconciled") keepReceipt(entry(id), recordOrNull(event.harnessTranscript));
1243
1196
  }
1244
1197
  if (root !== void 0 && nodeIds.has(root.id)) keepReceipt(entry(root.id), root.receipt);
1245
1198
  const out = /* @__PURE__ */ new Map();
@@ -1301,7 +1254,7 @@ async function nodeTranscripts(runDir, events, nodeIds, root) {
1301
1254
  * instead of `?`.
1302
1255
  */
1303
1256
  function recordedRunId(result, failure) {
1304
- return nonEmptyString(record(result?.tree)?.root) ?? nonEmptyString(failure?.runId);
1257
+ return nonEmptyString(recordOrNull(result?.tree)?.root) ?? nonEmptyString(failure?.runId);
1305
1258
  }
1306
1259
  function absentRuntimeSupervisorRun(runDir, resultText, failureText, instanceId) {
1307
1260
  const reason = `no Runtime spawn journal (${JOURNAL_FILE}) under ${runDir}`;
@@ -1366,7 +1319,7 @@ async function readRuntimeSupervisorRun(runDir, opts = {}) {
1366
1319
  const workerIds = new Set(childSpawns.map((event) => nonEmptyString(event.id)).filter((id) => id !== null));
1367
1320
  const transcripts = await nodeTranscripts(runDir, normalized.events, /* @__PURE__ */ new Set([normalized.root, ...workerIds]), {
1368
1321
  id: normalized.root,
1369
- receipt: record(result?.rootHarnessTranscript)
1322
+ receipt: recordOrNull(result?.rootHarnessTranscript)
1370
1323
  });
1371
1324
  const workers = childSpawns.map((event) => {
1372
1325
  const workerId = nonEmptyString(event.id);
@@ -1406,6 +1359,7 @@ async function readRuntimeSupervisorRun(runDir, opts = {}) {
1406
1359
  judgeSource: null,
1407
1360
  patch: null,
1408
1361
  driverLog: null,
1362
+ coordinationLog: await readCoordinationLog(runDir),
1409
1363
  harnessWorkerTokens: null,
1410
1364
  harnessMissingReason: "Runtime FileRunContext has no external worker-token join",
1411
1365
  limits: sourceLimits(normalized.root, normalized.events, workerIds),
@@ -1586,9 +1540,6 @@ function parseReportArgs(argv) {
1586
1540
  format
1587
1541
  };
1588
1542
  }
1589
- function errorMessage(error) {
1590
- return error instanceof Error ? error.message : String(error);
1591
- }
1592
1543
  /**
1593
1544
  * CLI driver for `agent-eval supervisor-run`. `argv` is everything after the
1594
1545
  * command name, so `['report', runDir, ...flags]`. Returns the process exit code.
@@ -1638,6 +1589,6 @@ async function runSupervisorRunCommand(argv, io = PROCESS_IO) {
1638
1589
  }
1639
1590
  }
1640
1591
  //#endregion
1641
- export { writeSupervisorRunReportSafe as a, runtimeSupervisorRunReader as c, renderSupervisorRunMarkdown as d, analyzeSupervisorRunSources as f, writeSupervisorRunReport as i, renderSupervisorRollupMarkdown as l, rollupSupervisorRuns as m, analyzeSupervisorRun as n, isRuntimeSupervisorRunDir as o, parsePatch as p, findSupervisorRunDirs as r, readRuntimeSupervisorRun as s, runSupervisorRunCommand as t, renderSupervisorRunHeadline as u };
1592
+ export { writeSupervisorRunReportSafe as a, runtimeSupervisorRunReader as c, renderSupervisorRunMarkdown as d, analyzeSupervisorRunSources as f, writeSupervisorRunReport as i, renderSupervisorRollupMarkdown as l, analyzeSupervisorRun as n, isRuntimeSupervisorRunDir as o, parsePatch as p, findSupervisorRunDirs as r, readRuntimeSupervisorRun as s, runSupervisorRunCommand as t, renderSupervisorRunHeadline as u };
1642
1593
 
1643
- //# sourceMappingURL=report-command-CtIIsQKP.js.map
1594
+ //# sourceMappingURL=report-command-SC9nqb4M.js.map