reeval 0.10.0 → 0.12.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 (295) hide show
  1. package/README.md +64 -39
  2. package/THIRD_PARTY_NOTICES.md +75 -106
  3. package/bin/mcp-timer.cjs +224 -0
  4. package/dist/{adapter-DWlpOtRn.js → adapter-DigeVFWC.js} +3 -3
  5. package/dist/{adapter-DWlpOtRn.js.map → adapter-DigeVFWC.js.map} +1 -1
  6. package/dist/{agent-CaS_2Sce.js → agent-CatUEo5h.js} +21 -6
  7. package/dist/{agent-CaS_2Sce.js.map → agent-CatUEo5h.js.map} +1 -1
  8. package/dist/{assemble-B9Alds-z.js → assemble-CF063ms6.js} +19 -17
  9. package/dist/assemble-CF063ms6.js.map +1 -0
  10. package/dist/assemble-CJoD_Rzr.js +1 -0
  11. package/dist/bridge/index.mjs +15 -7
  12. package/dist/{capture-CNb9SuU5.js → capture-BiD7lVaM.js} +26 -18
  13. package/dist/{capture-CNb9SuU5.js.map → capture-BiD7lVaM.js.map} +1 -1
  14. package/dist/capture-Dp3q7K7Y.js +1 -0
  15. package/dist/{cli-D303Vj5N.js → cli-B5zQCR2r.js} +266 -547
  16. package/dist/cli-B5zQCR2r.js.map +1 -0
  17. package/dist/{cli-spec-BPZbQG2p.js → cli-spec-BXIBUlaK.js} +46 -18
  18. package/dist/cli-spec-BXIBUlaK.js.map +1 -0
  19. package/dist/cli.js +2 -2
  20. package/dist/{command-BT9a37ZR.js → command-BMHXHqMT.js} +17 -14
  21. package/dist/command-BMHXHqMT.js.map +1 -0
  22. package/dist/command-C94CQNh8.js +91 -0
  23. package/dist/command-C94CQNh8.js.map +1 -0
  24. package/dist/command-CVtgyqlM.js +335 -0
  25. package/dist/command-CVtgyqlM.js.map +1 -0
  26. package/dist/{command-BLfT7vnQ.js → command-CaZgCTIw.js} +13 -17
  27. package/dist/command-CaZgCTIw.js.map +1 -0
  28. package/dist/{command-CMJtHKRa.js → command-DTgBZR0k.js} +6 -6
  29. package/dist/{command-CMJtHKRa.js.map → command-DTgBZR0k.js.map} +1 -1
  30. package/dist/{commands-1p-bIWhN.js → commands-BXzIDB3X.js} +1 -1
  31. package/dist/commands-CjpGBUWr.js +666 -0
  32. package/dist/commands-CjpGBUWr.js.map +1 -0
  33. package/dist/{config-DEgnUiU-.js → config-Dv5MG7Rp.js} +31 -34
  34. package/dist/config-Dv5MG7Rp.js.map +1 -0
  35. package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
  36. package/dist/context-Dgn48BqT.js.map +1 -0
  37. package/dist/contrasts-CcoMLC_y.js +101 -0
  38. package/dist/contrasts-CcoMLC_y.js.map +1 -0
  39. package/dist/db-BeqRiWLl.js +602 -0
  40. package/dist/db-BeqRiWLl.js.map +1 -0
  41. package/dist/db-CJDRVQal.js +2 -0
  42. package/dist/{dist-B8hJImYt.js → dist-CMjp3qqF.js} +81 -14
  43. package/dist/dist-CMjp3qqF.js.map +1 -0
  44. package/dist/{docker-sZrNrr82.js → docker-BbTlMmYi.js} +2 -2
  45. package/dist/{docker-sZrNrr82.js.map → docker-BbTlMmYi.js.map} +1 -1
  46. package/dist/{docker-7b_2SaH7.js → docker-CCXdbREk.js} +20 -4
  47. package/dist/{docker-7b_2SaH7.js.map → docker-CCXdbREk.js.map} +1 -1
  48. package/dist/{docker-yauK-9X8.js → docker-DC69dKxB.js} +1 -1
  49. package/dist/{doctor-BYNok4UO.js → doctor-CqttrZcs.js} +56 -22
  50. package/dist/doctor-CqttrZcs.js.map +1 -0
  51. package/dist/{egress-C4PZTSSe.js → egress-BfK_O9ce.js} +435 -31
  52. package/dist/egress-BfK_O9ce.js.map +1 -0
  53. package/dist/{environment-DNjRk0nU.js → environment-BBz1Yes9.js} +225 -12
  54. package/dist/environment-BBz1Yes9.js.map +1 -0
  55. package/dist/{evaluate-D4zeRGBF.js → evaluate-CXQ1o-pd.js} +539 -562
  56. package/dist/evaluate-CXQ1o-pd.js.map +1 -0
  57. package/dist/{evaluate-C1UVL21l.d.ts → evaluate-yjZKUexW.d.ts} +2 -2
  58. package/dist/facts-DtENlf9s.js +898 -0
  59. package/dist/facts-DtENlf9s.js.map +1 -0
  60. package/dist/{files-BXUdY8tr.js → files-B-eUpCZ1.js} +30 -7
  61. package/dist/files-B-eUpCZ1.js.map +1 -0
  62. package/dist/files-BsQbYz2i.js +65 -0
  63. package/dist/files-BsQbYz2i.js.map +1 -0
  64. package/dist/{files-DQmHE7pb.js → files-COHQLEHE.js} +6 -17
  65. package/dist/files-COHQLEHE.js.map +1 -0
  66. package/dist/files-DqCBW7i8.js +1 -0
  67. package/dist/files-Ha-jsQXf.js +1 -0
  68. package/dist/generate-Cs2TMH_k.js +1647 -0
  69. package/dist/generate-Cs2TMH_k.js.map +1 -0
  70. package/dist/{git-DfG-YJ1u.js → git-DhykwgKF.js} +2 -2
  71. package/dist/{git-DfG-YJ1u.js.map → git-DhykwgKF.js.map} +1 -1
  72. package/dist/{harness-B8QC9u0O.js → harness-BAjw1fcr.js} +3 -3
  73. package/dist/{harness-B8QC9u0O.js.map → harness-BAjw1fcr.js.map} +1 -1
  74. package/dist/harness.d.ts +1 -1
  75. package/dist/harness.js +1 -1
  76. package/dist/{header-hK-Z_Po9.js → header-kSmWatcO.js} +10 -3
  77. package/dist/{header-hK-Z_Po9.js.map → header-kSmWatcO.js.map} +1 -1
  78. package/dist/{images-0On0cztu.js → images-BmJRuTpm.js} +61 -13
  79. package/dist/images-BmJRuTpm.js.map +1 -0
  80. package/dist/index.d.ts +3 -3
  81. package/dist/index.js +4 -4
  82. package/dist/init-Bwc9byQr.js +543 -0
  83. package/dist/init-Bwc9byQr.js.map +1 -0
  84. package/dist/init-D7Y1ny1z.js +1 -0
  85. package/dist/insights-B2Xmhz9o.js +64 -0
  86. package/dist/insights-B2Xmhz9o.js.map +1 -0
  87. package/dist/{invocations-DbGfBAA_.js → invocations-CQTbP092.js} +3 -3
  88. package/dist/{invocations-DbGfBAA_.js.map → invocations-CQTbP092.js.map} +1 -1
  89. package/dist/{judge-DW_GDOmB.js → judge-Dt6KW6_O.js} +5 -3
  90. package/dist/judge-Dt6KW6_O.js.map +1 -0
  91. package/dist/judge.d.ts +7 -6
  92. package/dist/judge.js +8 -7
  93. package/dist/judge.js.map +1 -1
  94. package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
  95. package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
  96. package/dist/{model-h_cDtcRr.js → model-B-mel-Gv.js} +46 -20
  97. package/dist/model-B-mel-Gv.js.map +1 -0
  98. package/dist/model-BGKYVpoj.js +1 -0
  99. package/dist/{model-DaVCY3rb.js → model-C7tSwT7f.js} +2 -2
  100. package/dist/{model-DaVCY3rb.js.map → model-C7tSwT7f.js.map} +1 -1
  101. package/dist/{model-oqcDplJG.js → model-CWlAqmbU.js} +150 -46
  102. package/dist/model-CWlAqmbU.js.map +1 -0
  103. package/dist/model-DHY-dfoO.js +1 -0
  104. package/dist/{node-B3ydHo6t.js → node-D0mtjRAO.js} +3 -3
  105. package/dist/{node-B3ydHo6t.js.map → node-D0mtjRAO.js.map} +1 -1
  106. package/dist/{options-Bh2W63dK.js → options-CPUW97_7.js} +9 -12
  107. package/dist/options-CPUW97_7.js.map +1 -0
  108. package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
  109. package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
  110. package/dist/{patch-Zac5aIRM.js → patch-D4oluWzH.js} +2 -2
  111. package/dist/{patch-Zac5aIRM.js.map → patch-D4oluWzH.js.map} +1 -1
  112. package/dist/{plan-C9Cy27Ay.js → plan-OkwUcJQ9.js} +31 -12
  113. package/dist/plan-OkwUcJQ9.js.map +1 -0
  114. package/dist/plugins-CUWMnSNb.js +654 -0
  115. package/dist/plugins-CUWMnSNb.js.map +1 -0
  116. package/dist/{preflight-CPWpQeBI.js → preflight-B6pY89bF.js} +1 -1
  117. package/dist/{preflight-D7iFPKeK.js → preflight-Bjm7_ylE.js} +14 -10
  118. package/dist/preflight-Bjm7_ylE.js.map +1 -0
  119. package/dist/{prepare-doGxaAGR.js → prepare-CQmK3SBn.js} +71 -24
  120. package/dist/prepare-CQmK3SBn.js.map +1 -0
  121. package/dist/prepare-DbdgtZKe.js +2 -0
  122. package/dist/{provenance-DmE9uPVt.js → provenance-B3Y17oCC.js} +2 -2
  123. package/dist/{provenance-DmE9uPVt.js.map → provenance-B3Y17oCC.js.map} +1 -1
  124. package/dist/providers-CXN2RFz-.js +1 -0
  125. package/dist/{providers-tAOD1NQN.js → providers-eoniqK6w.js} +24 -10
  126. package/dist/providers-eoniqK6w.js.map +1 -0
  127. package/dist/query-CLRZmWBT.js +139 -0
  128. package/dist/query-CLRZmWBT.js.map +1 -0
  129. package/dist/query-CmBDYt0_.js +1 -0
  130. package/dist/{questions-DjAwMxZ3.js → questions-1XOulevV.js} +6 -6
  131. package/dist/{questions-DjAwMxZ3.js.map → questions-1XOulevV.js.map} +1 -1
  132. package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
  133. package/dist/record-kk9M1hj-.js.map +1 -0
  134. package/dist/remarks-1521zwfW.js +38 -0
  135. package/dist/remarks-1521zwfW.js.map +1 -0
  136. package/dist/remarks-BhAV1H4V.js +1 -0
  137. package/dist/remarks-DlJCqWRs.js +278 -0
  138. package/dist/remarks-DlJCqWRs.js.map +1 -0
  139. package/dist/{remote-HDRt16ew.js → remote-cE2VWfkJ.js} +3 -3
  140. package/dist/{remote-HDRt16ew.js.map → remote-cE2VWfkJ.js.map} +1 -1
  141. package/dist/resolve-C4zeccCH.js +724 -0
  142. package/dist/resolve-C4zeccCH.js.map +1 -0
  143. package/dist/resolve-D30yZYmB.js +1 -0
  144. package/dist/{results-DuauQI3Z.js → results-Drtt0uFl.js} +33 -7
  145. package/dist/results-Drtt0uFl.js.map +1 -0
  146. package/dist/{resume-BRfa8E_s.js → resume-BEFazUfy.js} +4 -4
  147. package/dist/{resume-BRfa8E_s.js.map → resume-BEFazUfy.js.map} +1 -1
  148. package/dist/rules-BFzQqPIm.js +317 -0
  149. package/dist/rules-BFzQqPIm.js.map +1 -0
  150. package/dist/run-BeMy92Us.js +88 -0
  151. package/dist/run-BeMy92Us.js.map +1 -0
  152. package/dist/{sandbox-D3A8oUb7.js → sandbox-CQaJj7n9.js} +2 -2
  153. package/dist/{sandbox-D3A8oUb7.js.map → sandbox-CQaJj7n9.js.map} +1 -1
  154. package/dist/sandbox.d.ts +1 -1
  155. package/dist/sandbox.js +1 -1
  156. package/dist/server-V4-2w0l8.js +1 -0
  157. package/dist/{server-XDleKaF_.js → server-xK0les4f.js} +8 -8
  158. package/dist/{server-XDleKaF_.js.map → server-xK0les4f.js.map} +1 -1
  159. package/dist/{shared-DYpIb1BI.js → shared-CA61BuPJ.js} +25 -3
  160. package/dist/shared-CA61BuPJ.js.map +1 -0
  161. package/dist/source-BDow_oW8.js +1 -0
  162. package/dist/{source-C8xumIWj.js → source-Q1hEKbCs.js} +2 -2
  163. package/dist/{source-C8xumIWj.js.map → source-Q1hEKbCs.js.map} +1 -1
  164. package/dist/src-B9L9yGKI.js +1 -0
  165. package/dist/{src-ofUaYbuY.js → src-Bcah6ZkT.js} +1 -1
  166. package/dist/{src-DvCg0NBs.js → src-BhmaorOU.js} +28 -6
  167. package/dist/{src-DvCg0NBs.js.map → src-BhmaorOU.js.map} +1 -1
  168. package/dist/{src-CF17Ug08.js → src-C0CeKiLU.js} +19 -4
  169. package/dist/{src-CF17Ug08.js.map → src-C0CeKiLU.js.map} +1 -1
  170. package/dist/src-C0xowZ3C.js +2 -0
  171. package/dist/src-CHIfIKUu.js +2 -0
  172. package/dist/src-DLtyz4w5.js +2 -0
  173. package/dist/src-DPIjmReZ.js +2 -0
  174. package/dist/{src-C_lPtowT.js → src-DXNh5mTr.js} +1 -1
  175. package/dist/{src-FGXhkEkH.js → src-DiLMkIr9.js} +142 -13
  176. package/dist/src-DiLMkIr9.js.map +1 -0
  177. package/dist/{src-B7treWa8.js → src-LekQrr_S.js} +324 -32
  178. package/dist/src-LekQrr_S.js.map +1 -0
  179. package/dist/src-bCnsA6Vp.js +2 -0
  180. package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
  181. package/dist/src-cbCb-MPy.js.map +1 -0
  182. package/dist/{src-DvK0EIZx.js → src-qGoFkuJF.js} +55 -6
  183. package/dist/{src-DvK0EIZx.js.map → src-qGoFkuJF.js.map} +1 -1
  184. package/dist/{src-jzagbuqH.js → src-ynBVosfX.js} +1 -1
  185. package/dist/state-BQR_BCm4.js +1 -0
  186. package/dist/{state-C__9swoG.js → state-BmZ8QVZ8.js} +12 -12
  187. package/dist/{state-C__9swoG.js.map → state-BmZ8QVZ8.js.map} +1 -1
  188. package/dist/studio-app/assets/index-CnYJijyI.js +58 -0
  189. package/dist/studio-app/index.html +1 -1
  190. package/dist/suite-BaHPmAGy.js +1 -0
  191. package/dist/suite-C8sw2pox.js +481 -0
  192. package/dist/suite-C8sw2pox.js.map +1 -0
  193. package/dist/summary-0oQNGskv.js +837 -0
  194. package/dist/summary-0oQNGskv.js.map +1 -0
  195. package/dist/testing.d.ts +2 -2
  196. package/dist/testing.js +2 -2
  197. package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
  198. package/dist/text-CrVy5ioL.js.map +1 -0
  199. package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
  200. package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
  201. package/dist/types-C5vI3g1C.js.map +1 -1
  202. package/dist/{types-g17bRAzt.d.ts → types-GraZtfHN.d.ts} +858 -39
  203. package/dist/usage-BDo2q_yu.js +1 -0
  204. package/dist/{command-Bge8F7Ko.js → validate-BdoXUuL_.js} +35 -383
  205. package/dist/validate-BdoXUuL_.js.map +1 -0
  206. package/dist/view/index.d.ts +20 -9
  207. package/dist/view/index.js +7 -6
  208. package/dist/views-BoUoX4_A.js +125 -0
  209. package/dist/views-BoUoX4_A.js.map +1 -0
  210. package/dist/views-noVQNCUP.js +2 -0
  211. package/dist/{worker-entry-yOchGYYv.js → worker-entry-D0-GErmU.js} +2 -2
  212. package/dist/{worker-entry-yOchGYYv.js.map → worker-entry-D0-GErmU.js.map} +1 -1
  213. package/dist/{workspace-D8sSgpiy.js → workspace-B90YDU_a.js} +1 -1
  214. package/dist/{workspace-CgyHEM0l.js → workspace-tjZFkjxC.js} +4 -4
  215. package/dist/{workspace-CgyHEM0l.js.map → workspace-tjZFkjxC.js.map} +1 -1
  216. package/package.json +10 -8
  217. package/skills/eval-rubric/SKILL.md +130 -0
  218. package/dist/agent-CURAwx_q.js +0 -334
  219. package/dist/agent-CURAwx_q.js.map +0 -1
  220. package/dist/assemble-B9Alds-z.js.map +0 -1
  221. package/dist/assemble-J5MukZFY.js +0 -1
  222. package/dist/capture-jquXZBKK.js +0 -1
  223. package/dist/cli-D303Vj5N.js.map +0 -1
  224. package/dist/cli-spec-BPZbQG2p.js.map +0 -1
  225. package/dist/command-BLfT7vnQ.js.map +0 -1
  226. package/dist/command-BT9a37ZR.js.map +0 -1
  227. package/dist/command-Bge8F7Ko.js.map +0 -1
  228. package/dist/command-BkFjijN2.js +0 -1
  229. package/dist/commands-BFx16WB8.js +0 -225
  230. package/dist/commands-BFx16WB8.js.map +0 -1
  231. package/dist/config-DEgnUiU-.js.map +0 -1
  232. package/dist/context-C1mxXh80.js.map +0 -1
  233. package/dist/db-CdHizc4_.js +0 -1406
  234. package/dist/db-CdHizc4_.js.map +0 -1
  235. package/dist/db-Dm1cRJJP.js +0 -2
  236. package/dist/dist-B8hJImYt.js.map +0 -1
  237. package/dist/doctor-BYNok4UO.js.map +0 -1
  238. package/dist/duration-CEOQww97.js +0 -26
  239. package/dist/duration-CEOQww97.js.map +0 -1
  240. package/dist/egress-C4PZTSSe.js.map +0 -1
  241. package/dist/environment-DNjRk0nU.js.map +0 -1
  242. package/dist/evaluate-D4zeRGBF.js.map +0 -1
  243. package/dist/family-D2b7WD10.js +0 -67
  244. package/dist/family-D2b7WD10.js.map +0 -1
  245. package/dist/files-BXUdY8tr.js.map +0 -1
  246. package/dist/files-BhyltlDB.js +0 -1
  247. package/dist/files-DQmHE7pb.js.map +0 -1
  248. package/dist/files-ZZPqfAo6.js +0 -1
  249. package/dist/images-0On0cztu.js.map +0 -1
  250. package/dist/init-B77Rpcqc.js +0 -360
  251. package/dist/init-B77Rpcqc.js.map +0 -1
  252. package/dist/init-BrOWin3W.js +0 -1
  253. package/dist/judge-DW_GDOmB.js.map +0 -1
  254. package/dist/model-NM3ID0uR.js +0 -1
  255. package/dist/model-h_cDtcRr.js.map +0 -1
  256. package/dist/model-nwWJvaUR.js +0 -1
  257. package/dist/model-oqcDplJG.js.map +0 -1
  258. package/dist/options-Bh2W63dK.js.map +0 -1
  259. package/dist/plan-C9Cy27Ay.js.map +0 -1
  260. package/dist/preflight-D7iFPKeK.js.map +0 -1
  261. package/dist/prepare-BGjePFQl.js +0 -2
  262. package/dist/prepare-doGxaAGR.js.map +0 -1
  263. package/dist/process-CSVO_jsc.js +0 -119
  264. package/dist/process-CSVO_jsc.js.map +0 -1
  265. package/dist/providers-gDMko8fl.js +0 -1
  266. package/dist/providers-tAOD1NQN.js.map +0 -1
  267. package/dist/query-Bes9Kh6Y.js +0 -91
  268. package/dist/query-Bes9Kh6Y.js.map +0 -1
  269. package/dist/query-C_G_svLU.js +0 -1
  270. package/dist/record-BKmMvZ6O.js.map +0 -1
  271. package/dist/results-DuauQI3Z.js.map +0 -1
  272. package/dist/server-C7sg1ndo.js +0 -1
  273. package/dist/shared-DYpIb1BI.js.map +0 -1
  274. package/dist/source-fGd0SaKP.js +0 -1
  275. package/dist/src-B7treWa8.js.map +0 -1
  276. package/dist/src-DNnG4e4R.js +0 -2
  277. package/dist/src-DTbrY1hi.js +0 -2
  278. package/dist/src-DdyJEh2v.js +0 -2
  279. package/dist/src-Dj9PAroc.js +0 -2
  280. package/dist/src-Du8H85Qq.js +0 -2
  281. package/dist/src-FGXhkEkH.js.map +0 -1
  282. package/dist/src-pJZOrYR9.js +0 -1
  283. package/dist/src-u8_ixn_F.js.map +0 -1
  284. package/dist/state-CgjQo29K.js +0 -1
  285. package/dist/studio-app/assets/index-DrQc2Yxd.js +0 -58
  286. package/dist/summary-BLAVLySU.js +0 -385
  287. package/dist/summary-BLAVLySU.js.map +0 -1
  288. package/dist/summary-DgyjUh_l.js +0 -192
  289. package/dist/summary-DgyjUh_l.js.map +0 -1
  290. package/dist/text-gEcKjAyp.js.map +0 -1
  291. package/dist/tools-GCyNYSc1.js +0 -249
  292. package/dist/tools-GCyNYSc1.js.map +0 -1
  293. package/dist/views-BW6oCDUQ.js +0 -2
  294. package/dist/views-BmQF4UCI.js +0 -225
  295. package/dist/views-BmQF4UCI.js.map +0 -1
@@ -1,249 +0,0 @@
1
- import { t as isObjectLike } from "./object-CLf2-tNq.js";
2
- import { s as recordFileName } from "./ids-Bp6ut7ZD.js";
3
- import { n as clip } from "./text-gEcKjAyp.js";
4
- import { C as parseTranscript } from "./model-oqcDplJG.js";
5
- import { s as mergeOutcome } from "./assemble-B9Alds-z.js";
6
- import { join } from "node:path";
7
- import { readFile } from "node:fs/promises";
8
- //#region src/analysis/agent/tools.ts
9
- const INPUT_KEYS = [
10
- "command",
11
- "cmd",
12
- "path",
13
- "file_path",
14
- "filePath",
15
- "target_file",
16
- "pattern",
17
- "query",
18
- "url"
19
- ];
20
- /** A tool call's input in a few words: its command or path when it has one. */
21
- function inputSummary(input) {
22
- if (typeof input === "string") return clip(input.replace(/\s+/g, " "), 120);
23
- if (!isObjectLike(input)) return "";
24
- for (const key of INPUT_KEYS) {
25
- const value = input[key];
26
- if (typeof value === "string" && value) return clip(value.replace(/\s+/g, " "), 120);
27
- if (Array.isArray(value) && value.every((v) => typeof v === "string")) return clip(value.join(" "), 120);
28
- }
29
- return clip(JSON.stringify(input), 120);
30
- }
31
- /** One transcript event as a step, or null for text and reasoning (a turn's text is kept whole). */
32
- function stepOf(event) {
33
- switch (event.type) {
34
- case "tool": {
35
- const input = inputSummary(event.input);
36
- return `${event.tool}${input ? `: ${input}` : ""}${event.ok ? "" : " (failed)"}`;
37
- }
38
- case "file-edit": return `edit (${event.kind}): ${event.path}`;
39
- case "web-search": return `web-search: ${clip(event.query, 120)}${event.ok === false ? " (failed)" : ""}`;
40
- case "web-fetch": return `web-fetch: ${event.url}${event.ok ? "" : " (failed)"}`;
41
- case "error": return `error: ${clip(event.message, 200)}`;
42
- case "retry": return `retry: ${clip(event.message, 200)}`;
43
- default: return null;
44
- }
45
- }
46
- const steps = (events) => events.flatMap((e) => stepOf(e) ?? []);
47
- const tail = (text, max) => text.length <= max ? text : `…${text.slice(-max)}`;
48
- const head = (text, max) => text.length <= max ? text : `${text.slice(0, max)}\n… ${text.length - max} more characters`;
49
- /** A worker's staged record, read the way the run will assemble it. */
50
- function fromStaged(result, record) {
51
- const attempt = result.attempt;
52
- if (!attempt) return null;
53
- const { outcome, error } = mergeOutcome(result, record);
54
- return {
55
- id: `${attempt.cell.key}#${attempt.n}`,
56
- cell: attempt.cell.key,
57
- n: attempt.n,
58
- outcome,
59
- error: error ? {
60
- kind: error.kind,
61
- message: error.message
62
- } : null,
63
- checks: (record?.checks ?? []).map((c) => ({
64
- command: c.command,
65
- exitCode: c.exitCode,
66
- output: tail(`${c.stdout}\n${c.stderr}`.trim(), 600)
67
- })),
68
- judgements: (record?.judgements ?? []).map((j) => ({
69
- question: j.question,
70
- verdict: j.verdict,
71
- score: j.score
72
- })),
73
- turns: (record?.turns ?? []).map((t) => ({
74
- prompt: t.prompt,
75
- text: t.text,
76
- status: t.status,
77
- steps: steps(t.transcript)
78
- })),
79
- files: (record?.diff?.files ?? []).map((f) => f.path),
80
- patch: record?.diff?.patch ?? ""
81
- };
82
- }
83
- /** The staged attempts of one eval on one harness, from `.reeval/staging/<run>/evals`. */
84
- async function stagedAttempts(stagingDir, results) {
85
- const views = [];
86
- for (const result of results) {
87
- const path = join(stagingDir, "evals", recordFileName(result.key));
88
- let record = null;
89
- try {
90
- record = JSON.parse(await readFile(path, "utf8"));
91
- } catch {}
92
- const view = fromStaged(result, record);
93
- if (view) views.push(view);
94
- }
95
- return views;
96
- }
97
- /** A recorded attempt, read from its run's artifact directory (`<history>/<run>/`, or `.reeval/runs/<run>/`). */
98
- async function fromRecorded(runDir, attempt) {
99
- const read = (path) => path ? readFile(join(runDir, path), "utf8").catch(() => "") : Promise.resolve("");
100
- const lines = parseTranscript(await read(attempt.files.transcript?.path));
101
- return {
102
- id: attempt.id,
103
- cell: attempt.cell,
104
- n: attempt.n,
105
- outcome: attempt.outcome,
106
- error: attempt.error ? {
107
- kind: attempt.error.kind,
108
- message: attempt.error.message
109
- } : null,
110
- checks: await Promise.all(attempt.checks.map(async (c) => ({
111
- command: c.command,
112
- exitCode: c.exitCode,
113
- output: tail((await read(c.log?.path)).trim(), 600)
114
- }))),
115
- judgements: attempt.judgements.map((j) => ({
116
- question: j.question,
117
- verdict: j.verdict,
118
- score: j.score
119
- })),
120
- turns: attempt.turns.map((t, i) => ({
121
- prompt: t.prompt,
122
- text: t.text,
123
- status: t.status,
124
- steps: steps(lines.filter((l) => l.turn === i && l.type !== "prompt" && l.type !== "turn-end"))
125
- })),
126
- files: attempt.changedFiles.map((f) => f.path),
127
- patch: await read(attempt.files.diff?.path)
128
- };
129
- }
130
- /** Each failed attempt beside the nearest passing run of its cell, else of another cell. */
131
- function failedVsPassed(attempts) {
132
- const passed = attempts.filter((a) => a.outcome === "pass");
133
- const near = (a) => (b, c) => Math.abs(b.n - a.n) - Math.abs(c.n - a.n);
134
- return attempts.filter((a) => a.outcome === "fail").flatMap((a) => {
135
- const sameCell = passed.filter((p) => p.cell === a.cell).sort(near(a))[0];
136
- const other = passed.filter((p) => p.cell !== a.cell).sort(near(a))[0];
137
- const match = sameCell ?? other;
138
- return match ? [{
139
- failed: a.id,
140
- passed: match.id,
141
- match: sameCell ? "cell" : "harness"
142
- }] : [];
143
- });
144
- }
145
- const stepCount = (a) => a.turns.reduce((n, t) => n + t.steps.length, 0);
146
- /** `list_attempts`: every attempt's outcome in a line, and the failed-vs-passed pairs to open. */
147
- function listOutcomes(attempts) {
148
- return {
149
- attempts: attempts.map((a) => ({
150
- id: a.id,
151
- outcome: a.outcome,
152
- error: a.error ? `${a.error.kind}: ${clip(a.error.message, 300)}` : null,
153
- failedChecks: a.checks.filter((c) => c.exitCode !== 0).map((c) => c.command),
154
- judgements: a.judgements.map((j) => `${j.verdict} ${j.score.toFixed(2)}: ${clip(j.question, 120)}`),
155
- turns: a.turns.length,
156
- steps: stepCount(a),
157
- files: a.files.length
158
- })),
159
- pairs: failedVsPassed(attempts)
160
- };
161
- }
162
- /** `open_attempt`: one attempt's turns, steps (the first 40 and last 20), checks, verdicts and diff. */
163
- function attemptSummary(a) {
164
- return {
165
- id: a.id,
166
- outcome: a.outcome,
167
- error: a.error ? {
168
- kind: a.error.kind,
169
- message: clip(a.error.message, 1e3)
170
- } : null,
171
- turns: a.turns.map((t, i) => ({
172
- turn: i + 1,
173
- prompt: clip(t.prompt, 400),
174
- status: t.status,
175
- steps: t.steps.length > 60 ? [
176
- ...t.steps.slice(0, 40),
177
- `… ${t.steps.length - 60} steps …`,
178
- ...t.steps.slice(-20)
179
- ] : t.steps,
180
- text: clip(t.text, 800)
181
- })),
182
- checks: a.checks.map((c) => ({
183
- command: c.command,
184
- exitCode: c.exitCode,
185
- ...c.exitCode !== 0 ? { output: c.output } : {}
186
- })),
187
- judgements: a.judgements,
188
- files: a.files.slice(0, 50),
189
- diff: head(a.patch, 3e3)
190
- };
191
- }
192
- /**
193
- * `compare_attempts`: where a failed attempt's steps first differ from a passing one's, a few
194
- * steps either side, the checks, verdicts and files that differ, and the start of each diff.
195
- */
196
- function divergence(failed, passed, window = 6) {
197
- const a = failed.turns.flatMap((t) => t.steps);
198
- const b = passed.turns.flatMap((t) => t.steps);
199
- let same = 0;
200
- while (same < a.length && same < b.length && a[same] === b[same]) same++;
201
- const diverged = same < a.length || same < b.length;
202
- const from = Math.max(0, same - 2);
203
- const commands = [...new Set([...failed.checks, ...passed.checks].map((c) => c.command))];
204
- const exit = (v, command) => v.checks.find((c) => c.command === command)?.exitCode ?? null;
205
- const verdict = (v, question) => v.judgements.find((j) => j.question === question)?.verdict ?? null;
206
- const questions = [...new Set([...failed.judgements, ...passed.judgements].map((j) => j.question))];
207
- const last = (v) => clip(v.turns.at(-1)?.text ?? "", 600);
208
- return {
209
- failed: failed.id,
210
- passed: passed.id,
211
- error: failed.error ? `${failed.error.kind}: ${clip(failed.error.message, 600)}` : null,
212
- stepsInCommon: same,
213
- /** The first step (from 1) where they differ; null when the steps are the same. */
214
- divergedAt: diverged ? same + 1 : null,
215
- steps: {
216
- failed: a.length,
217
- passed: b.length
218
- },
219
- failedSteps: a.slice(from, same + window),
220
- passedSteps: b.slice(from, same + window),
221
- checks: commands.filter((c) => exit(failed, c) !== exit(passed, c)).map((c) => ({
222
- command: c,
223
- failed: exit(failed, c),
224
- passed: exit(passed, c),
225
- failedOutput: failed.checks.find((x) => x.command === c)?.output ?? null
226
- })),
227
- judgements: questions.filter((q) => verdict(failed, q) !== verdict(passed, q)).map((q) => ({
228
- question: clip(q, 200),
229
- failed: verdict(failed, q),
230
- passed: verdict(passed, q)
231
- })),
232
- files: {
233
- onlyFailed: failed.files.filter((f) => !passed.files.includes(f)).slice(0, 30),
234
- onlyPassed: passed.files.filter((f) => !failed.files.includes(f)).slice(0, 30)
235
- },
236
- finalText: {
237
- failed: last(failed),
238
- passed: last(passed)
239
- },
240
- diff: {
241
- failed: head(failed.patch, 1500),
242
- passed: head(passed.patch, 1500)
243
- }
244
- };
245
- }
246
- //#endregion
247
- export { stagedAttempts as a, listOutcomes as i, divergence as n, fromRecorded as r, attemptSummary as t };
248
-
249
- //# sourceMappingURL=tools-GCyNYSc1.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools-GCyNYSc1.js","names":[],"sources":["../src/analysis/agent/tools.ts"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import "./model-oqcDplJG.js";
2
- export { c as resolveRun } from "./views-BmQF4UCI.js";
@@ -1,225 +0,0 @@
1
- import { r as formatDuration } from "./text-gEcKjAyp.js";
2
- import { V as labelledJudgements, et as effortChangeLabel, vt as cellsChanged, xt as stackChanges } from "./model-oqcDplJG.js";
3
- import { o as warnings } from "./state-C__9swoG.js";
4
- import { a as contrastLines, d as summaryCounts, l as repeatsVerdict, r as cellCounts, t as OUTCOME_MARK, u as stateRows } from "./summary-BLAVLySU.js";
5
- //#region src/history/views.ts
6
- var RefError = class extends Error {
7
- name = "RefError";
8
- };
9
- /**
10
- * `latest`, `latest~N`, a run id or unique prefix of one, or a git SHA prefix (the newest run
11
- * at that commit). `entries` are sorted oldest first.
12
- */
13
- function resolveRun(entries, ref = "latest") {
14
- if (entries.length === 0) throw new RefError("No runs yet. Run reeval run.");
15
- const back = /^latest(?:~(\d+))?$/.exec(ref);
16
- if (back) {
17
- const entry = entries[entries.length - 1 - Number(back[1] ?? 0)];
18
- if (!entry) throw new RefError(`There ${entries.length === 1 ? "is only 1 run" : `are only ${entries.length} runs`}, so ${ref} names none. reeval history lists them.`);
19
- return entry;
20
- }
21
- const exact = entries.find((e) => e.runId === ref);
22
- if (exact) return exact;
23
- const byId = entries.filter((e) => e.runId.startsWith(ref));
24
- if (byId.length === 1 && byId[0]) return byId[0];
25
- if (byId.length > 1) throw new RefError(`"${ref}" matches ${byId.length} runs: use more of the id`);
26
- if (/^[0-9a-f]{4,40}$/i.test(ref)) {
27
- const atSha = entries.filter((e) => e.git?.sha.startsWith(ref.toLowerCase()));
28
- const newest = atSha[atSha.length - 1];
29
- if (newest) return newest;
30
- }
31
- throw new RefError(`No run matches "${ref}". Pass latest, latest~N, a run id or a git SHA; reeval history lists them.`);
32
- }
33
- /**
34
- * The run to compare `head` against: a complete, earlier run on the first commit of `ancestry` that
35
- * has one, newest run first; otherwise the previous complete run by time. `ancestry` is `git
36
- * rev-list <head's commit>`: head's own commit first, then every ancestor through all parents
37
- * (merged branches too, not only first parents), newest commit first. Ancestry beats wall-clock
38
- * time, which can be skewed.
39
- */
40
- function pickBaseline(entries, head, ancestry) {
41
- const earlier = entries.filter((e) => e.runId < head.runId && e.status === "complete");
42
- if (ancestry && ancestry.length > 0) {
43
- const rank = new Map(ancestry.map((sha, i) => [sha, i]));
44
- let best = null;
45
- let bestRank = Number.POSITIVE_INFINITY;
46
- for (const e of earlier) {
47
- const r = e.git ? rank.get(e.git.sha) : void 0;
48
- if (r !== void 0 && (r < bestRank || r === bestRank && best && e.runId > best.runId)) {
49
- best = e;
50
- bestRank = r;
51
- }
52
- }
53
- if (best) return best;
54
- }
55
- return earlier[earlier.length - 1] ?? null;
56
- }
57
- const shortSha = (e) => e.git ? e.git.sha.slice(0, 7) : "no-git";
58
- const unreachable = (entry, reach) => !!reach && !!entry.git && !reach.has(entry.git.sha);
59
- function history(entries, options = {}) {
60
- const runs = entries.slice(-(options.limit ?? 20));
61
- const ids = [];
62
- for (const run of [...runs].reverse()) for (const e of run.evals) if (!ids.includes(e.id)) ids.push(e.id);
63
- const needle = options.filter?.toLowerCase();
64
- return {
65
- runs,
66
- rows: ids.filter((id) => !needle || id.toLowerCase().includes(needle)).map((id) => {
67
- const row = {
68
- id,
69
- outcomes: [],
70
- drift: [],
71
- pass: 0,
72
- counted: 0
73
- };
74
- const seen = /* @__PURE__ */ new Map();
75
- runs.forEach((run, i) => {
76
- const e = run.evals.find((x) => x.id === id);
77
- row.outcomes.push(e?.outcome ?? null);
78
- if (!e) return;
79
- if (cellsChanged(seen, id, e.cells)) row.drift.push(i);
80
- if (e.outcome === "pass" || e.outcome === "fail") row.counted++;
81
- if (e.outcome === "pass") row.pass++;
82
- });
83
- return row;
84
- }),
85
- orphaned: runs.filter((r) => unreachable(r, options.reach ?? null)).map((r) => r.runId)
86
- };
87
- }
88
- function formatHistory({ runs, rows, orphaned }) {
89
- if (runs.length === 0) return "No recorded runs yet. Run reeval run --record, or reeval record latest.";
90
- const first = runs[0];
91
- const last = runs[runs.length - 1];
92
- const lines = [`${runs.length} run${runs.length === 1 ? "" : "s"}, oldest → newest: ${first.runId} (${shortSha(first)}) … ${last.runId} (${shortSha(last)})`, ""];
93
- const width = Math.max(...rows.map((r) => r.outcomes.length + r.drift.length), 0);
94
- for (const row of rows) {
95
- const strip = row.outcomes.map((o, i) => `${row.drift.includes(i) ? "¦" : ""}${o ? OUTCOME_MARK[o] : "·"}`).join("");
96
- const rate = row.counted ? `${row.pass}/${row.counted}` : "–";
97
- lines.push(` ${strip.padEnd(width)} ${rate.padStart(5)} ${row.id}`);
98
- }
99
- lines.push("", "✓ pass ✗ fail ! infra error ↓ skipped · not run ¦ eval or stack changed");
100
- if (orphaned.length > 0) lines.push("", `${orphaned.length} run${orphaned.length === 1 ? " was" : "s were"} recorded on commits that aren't in HEAD's history (rebased or dropped?):`, ...orphaned.map((id) => ` ${id}`));
101
- return lines.join("\n");
102
- }
103
- const STATUS_LABEL = {
104
- regressed: "regressed",
105
- fixed: "fixed",
106
- same: "same",
107
- drift: "changed (not comparable)",
108
- added: "new",
109
- removed: "removed",
110
- infra: "infra error"
111
- };
112
- /**
113
- * `: evals/helpers.ts changed, harness config changed` for a row that isn't comparable, and
114
- * ` · cells removed: …` when the runs ran different cells of the eval.
115
- */
116
- const why = (r) => [
117
- r.changes?.length ? `: ${r.changes.join(", ")}` : "",
118
- r.cells?.added.length ? ` · cells added: ${r.cells.added.join(", ")}` : "",
119
- r.cells?.removed.length ? ` · cells removed: ${r.cells.removed.join(", ")}` : ""
120
- ].join("");
121
- const ORDER = [
122
- "regressed",
123
- "fixed",
124
- "drift",
125
- "infra",
126
- "added",
127
- "removed",
128
- "same"
129
- ];
130
- const describeRun = (e, reach) => `${e.runId} (${shortSha(e)}${e.recorded ? "" : ", not recorded"}${unreachable(e, reach) ? ", commit not in HEAD's history" : ""})`;
131
- function formatCompare(base, head, rows, md, reach = null) {
132
- const sorted = [...rows].sort((a, b) => ORDER.indexOf(a.status) - ORDER.indexOf(b.status));
133
- const mark = (o) => o ? OUTCOME_MARK[o] : "·";
134
- const count = (s) => rows.filter((r) => r.status === s).length;
135
- const tally = `${count("regressed")} regressed · ${count("fixed")} fixed · ${count("drift")} not comparable · ${count("same")} same`;
136
- const changes = stackChanges(base, head);
137
- const changeText = changes.map((c) => `${c.label} ${c.base} → ${c.head}`).join("; ");
138
- const esc = (s) => s.replace(/\|/g, "\\|");
139
- const cells = sorted.flatMap((r) => (r.perCell ?? []).map((c) => ({
140
- row: r,
141
- cell: c
142
- })));
143
- if (md) return [
144
- `### reeval: ${head.runId} vs ${base.runId}`,
145
- "",
146
- `Base ${describeRun(base, reach)} → head ${describeRun(head, reach)}. ${tally}.`,
147
- "",
148
- ...changes.length ? [`**Stack changed:** ${changeText}.`, ""] : [],
149
- "| Eval | Base | Head | Change |",
150
- "|---|---|---|---|",
151
- ...sorted.map((r) => `| ${esc(r.id)} | ${mark(r.base)} | ${mark(r.head)} | ${STATUS_LABEL[r.status]}${why(r)} |`),
152
- "",
153
- ...cells.length ? [
154
- "| Eval | Cell | Lift, base → head | Effort, base → head |",
155
- "|---|---|---|---|",
156
- ...cells.map(({ row, cell }) => `| ${esc(row.id)} | ${esc(cell.key)} | ${liftChange(cell)} | ${effortChange(cell)} |`),
157
- ""
158
- ] : []
159
- ].join("\n");
160
- return [
161
- `base ${describeRun(base, reach)} → head ${describeRun(head, reach)}`,
162
- tally,
163
- ...changes.length ? [`stack changed: ${changeText}`] : [],
164
- "",
165
- ...sorted.flatMap((r) => [` ${mark(r.base)} → ${mark(r.head)} ${STATUS_LABEL[r.status].padEnd(24)} ${r.id}${why(r)}`, ...(r.perCell ?? []).map((c) => ` ${c.key} ${[c.base.lift || c.head.lift ? `lift ${liftChange(c)}` : "", effortChange(c)].filter(Boolean).join(" · ")}`)])
166
- ].join("\n");
167
- }
168
- /** `reeval compare` when head has no earlier recorded run: every eval is new. */
169
- function formatNoBaseline(head, rows, md) {
170
- const failing = rows.filter((r) => r.head === "fail").length;
171
- const note = `No earlier recorded run to compare ${head.runId} with: every eval is new${failing ? `, and ${failing} fail${failing === 1 ? "s" : ""}` : ""}.`;
172
- const mark = (o) => o ? OUTCOME_MARK[o] : "·";
173
- if (md) return [
174
- `### reeval: ${head.runId}`,
175
- "",
176
- note,
177
- "",
178
- "| Eval | Head |",
179
- "|---|---|",
180
- ...rows.map((r) => `| ${r.id.replace(/\|/g, "\\|")} | ${mark(r.head)} |`),
181
- ""
182
- ].join("\n");
183
- return [
184
- note,
185
- "",
186
- ...rows.map((r) => ` ${mark(r.head)} new ${r.id}`)
187
- ].join("\n");
188
- }
189
- const liftShort = (l) => l ? `${signed(l.points)} (${signed(l.lo)}…${signed(l.hi)})${l.withinNoise ? " noise" : ""}` : "–";
190
- const signed = (x) => `${x >= 0 ? "+" : "−"}${Math.round(Math.abs(x) * 100)}`;
191
- const liftChange = (c) => `${liftShort(c.base.lift)} → ${liftShort(c.head.lift)}`;
192
- const effortChange = (c) => c.base.effort && c.head.effort ? effortChangeLabel(c.base.effort, c.head.effort) : "effort –";
193
- function formatShow(run) {
194
- const rows = stateRows(run);
195
- const width = Math.max(...rows.map(([k]) => k.length));
196
- const lines = [
197
- `run ${run.runId} ${summaryCounts(run.summary)}${run.status === "interrupted" ? " (interrupted)" : ""}`,
198
- ` started ${run.startedAt} (${formatDuration(run.durationMs)}) · artifacts ${run.artifacts}`,
199
- "",
200
- ...rows.map(([k, v]) => ` ${k.padEnd(width)} ${v}`),
201
- ...warnings(run).map((w) => ` ! ${w}`),
202
- ""
203
- ];
204
- for (const e of run.evals) {
205
- const single = e.attempts.length === 1;
206
- const first = e.attempts[0];
207
- lines.push(` ${OUTCOME_MARK[e.outcome]} ${e.id}${single && first ? ` ${formatDuration(first.durationMs)}` : ` ${cellCounts(e)}`}`);
208
- const contrasts = contrastLines(e);
209
- if (contrasts.length) {
210
- lines.push(" contrasts (each pair of arms, same harness)");
211
- for (const line of contrasts) lines.push(` ${line}`);
212
- }
213
- for (const t of e.attempts) {
214
- const indent = single ? " " : " ";
215
- if (!single) lines.push(` ${OUTCOME_MARK[t.outcome]} ${t.id} ${formatDuration(t.durationMs)}`);
216
- for (const { judgement: j, label, labelled } of labelledJudgements(t)) lines.push(`${indent}judge ${j.verdict} ${j.score.toFixed(2)} (≥ ${j.threshold}) ${labelled ? `${label}: ` : ""}${j.question}`);
217
- if (t.error && !repeatsVerdict(t)) lines.push(`${indent}${t.error.kind}: ${t.error.message.split("\n")[0]}`);
218
- }
219
- }
220
- return lines.join("\n");
221
- }
222
- //#endregion
223
- export { formatShow as a, resolveRun as c, formatNoBaseline as i, unreachable as l, formatCompare as n, history as o, formatHistory as r, pickBaseline as s, RefError as t };
224
-
225
- //# sourceMappingURL=views-BmQF4UCI.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"views-BmQF4UCI.js","names":[],"sources":["../src/history/views.ts"],"mappings":";;;;;AA6BA,IAAa,WAAb,cAA8B,MAAM;CAClC,OAAgB;AAClB;;;;;AAMA,SAAgB,WAAW,SAAyB,MAAM,UAAwB;CAChF,IAAI,QAAQ,WAAW,GAAG,MAAM,IAAI,SAAS,8BAA8B;CAC3E,MAAM,OAAO,sBAAsB,KAAK,GAAG;CAC3C,IAAI,MAAM;EACR,MAAM,QAAQ,QAAQ,QAAQ,SAAS,IAAI,OAAO,KAAK,MAAM,CAAC;EAC9D,IAAI,CAAC,OACH,MAAM,IAAI,SACR,SAAS,QAAQ,WAAW,IAAI,kBAAkB,YAAY,QAAQ,OAAO,OAAO,OAAO,IAAI,wCACjG;EAEF,OAAO;CACT;CACA,MAAM,QAAQ,QAAQ,MAAM,MAAM,EAAE,UAAU,GAAG;CACjD,IAAI,OAAO,OAAO;CAClB,MAAM,OAAO,QAAQ,QAAQ,MAAM,EAAE,MAAM,WAAW,GAAG,CAAC;CAC1D,IAAI,KAAK,WAAW,KAAK,KAAK,IAAI,OAAO,KAAK;CAC9C,IAAI,KAAK,SAAS,GAChB,MAAM,IAAI,SAAS,IAAI,IAAI,YAAY,KAAK,OAAO,0BAA0B;CAC/E,IAAI,oBAAoB,KAAK,GAAG,GAAG;EACjC,MAAM,QAAQ,QAAQ,QAAQ,MAAM,EAAE,KAAK,IAAI,WAAW,IAAI,YAAY,CAAC,CAAC;EAC5E,MAAM,SAAS,MAAM,MAAM,SAAS;EACpC,IAAI,QAAQ,OAAO;CACrB;CACA,MAAM,IAAI,SACR,mBAAmB,IAAI,4EACzB;AACF;;;;;;;;AASA,SAAgB,aACd,SACA,MACA,UACqB;CACrB,MAAM,UAAU,QAAQ,QAAQ,MAAM,EAAE,QAAQ,KAAK,SAAS,EAAE,WAAW,UAAU;CACrF,IAAI,YAAY,SAAS,SAAS,GAAG;EACnC,MAAM,OAAO,IAAI,IAAI,SAAS,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;EACvD,IAAI,OAA4B;EAChC,IAAI,WAAW,OAAO;EACtB,KAAK,MAAM,KAAK,SAAS;GACvB,MAAM,IAAI,EAAE,MAAM,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,KAAA;GACxC,IAAI,MAAM,KAAA,MAAc,IAAI,YAAa,MAAM,YAAY,QAAQ,EAAE,QAAQ,KAAK,QAAS;IACzF,OAAO;IACP,WAAW;GACb;EACF;EACA,IAAI,MAAM,OAAO;CACnB;CACA,OAAO,QAAQ,QAAQ,SAAS,MAAM;AACxC;AAEA,MAAM,YAAY,MAAqB,EAAE,MAAM,EAAE,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI;AAkBvE,MAAa,eAAe,OAAqB,UAC/C,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,GAAG;AAEpD,SAAgB,QACd,SACA,UAAqE,CAAC,GACtE;CACA,MAAM,OAAO,QAAQ,MAAM,EAAE,QAAQ,SAAS,GAAG;CACjD,MAAM,MAAgB,CAAC;CACvB,KAAK,MAAM,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,QAAQ,GAClC,KAAK,MAAM,KAAK,IAAI,OAAO,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,GAAG,IAAI,KAAK,EAAE,EAAE;CAEnE,MAAM,SAAS,QAAQ,QAAQ,YAAY;CAiB3C,OAAO;EAAE;EAAM,MAhBY,IACxB,QAAQ,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,CAC5D,KAAK,OAAO;GACX,MAAM,MAAkB;IAAE;IAAI,UAAU,CAAC;IAAG,OAAO,CAAC;IAAG,MAAM;IAAG,SAAS;GAAE;GAC3E,MAAM,uBAAO,IAAI,IAAoB;GACrC,KAAK,SAAS,KAAK,MAAM;IACvB,MAAM,IAAI,IAAI,MAAM,MAAM,MAAM,EAAE,OAAO,EAAE;IAC3C,IAAI,SAAS,KAAK,GAAG,WAAW,IAAI;IACpC,IAAI,CAAC,GAAG;IACR,IAAI,aAAa,MAAM,IAAI,EAAE,KAAK,GAAG,IAAI,MAAM,KAAK,CAAC;IACrD,IAAI,EAAE,YAAY,UAAU,EAAE,YAAY,QAAQ,IAAI;IACtD,IAAI,EAAE,YAAY,QAAQ,IAAI;GAChC,CAAC;GACD,OAAO;EACT,CAEgB;EAAG,UADJ,KAAK,QAAQ,MAAM,YAAY,GAAG,QAAQ,SAAS,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,KAC5D;CAAE;AAChC;AAEA,SAAgB,cAAc,EAAE,MAAM,MAAM,YAAgD;CAC1F,IAAI,KAAK,WAAW,GAClB,OAAO;CACT,MAAM,QAAQ,KAAK;CACnB,MAAM,OAAO,KAAK,KAAK,SAAS;CAChC,MAAM,QAAQ,CACZ,GAAG,KAAK,OAAO,MAAM,KAAK,WAAW,IAAI,KAAK,IAAI,qBAAqB,MAAM,MAAM,IAAI,SAAS,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,SAAS,IAAI,EAAE,IAC3I,EACF;CACA,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,MAAM,EAAE,SAAS,SAAS,EAAE,MAAM,MAAM,GAAG,CAAC;CAChF,KAAK,MAAM,OAAO,MAAM;EACtB,MAAM,QAAQ,IAAI,SACf,KAAK,GAAG,MAAM,GAAG,IAAI,MAAM,SAAS,CAAC,IAAI,MAAM,KAAK,IAAI,aAAa,KAAK,KAAK,CAAC,CAChF,KAAK,EAAE;EACV,MAAM,OAAO,IAAI,UAAU,GAAG,IAAI,KAAK,GAAG,IAAI,YAAY;EAC1D,MAAM,KAAK,KAAK,MAAM,OAAO,KAAK,EAAE,IAAI,KAAK,SAAS,CAAC,EAAE,IAAI,IAAI,IAAI;CACvE;CACA,MAAM,KAAK,IAAI,8EAA8E;CAC7F,IAAI,SAAS,SAAS,GACpB,MAAM,KACJ,IACA,GAAG,SAAS,OAAO,MAAM,SAAS,WAAW,IAAI,SAAS,SAAS,4EACnE,GAAG,SAAS,KAAK,OAAO,KAAK,IAAI,CACnC;CAEF,OAAO,MAAM,KAAK,IAAI;AACxB;AAEA,MAAM,eAA8C;CAClD,WAAW;CACX,OAAO;CACP,MAAM;CACN,OAAO;CACP,OAAO;CACP,SAAS;CACT,OAAO;AACT;;;;;AAMA,MAAM,OAAO,MACX;CACE,EAAE,SAAS,SAAS,KAAK,EAAE,QAAQ,KAAK,IAAI,MAAM;CAClD,EAAE,OAAO,MAAM,SAAS,mBAAmB,EAAE,MAAM,MAAM,KAAK,IAAI,MAAM;CACxE,EAAE,OAAO,QAAQ,SAAS,qBAAqB,EAAE,MAAM,QAAQ,KAAK,IAAI,MAAM;AAChF,CAAC,CAAC,KAAK,EAAE;AAEX,MAAM,QAAyB;CAAC;CAAa;CAAS;CAAS;CAAS;CAAS;CAAW;AAAM;AAElG,MAAM,eAAe,GAAiB,UACpC,GAAG,EAAE,MAAM,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,KAAK,mBAAmB,YAAY,GAAG,KAAK,IAAI,mCAAmC,GAAG;AAElI,SAAgB,cACd,MACA,MACA,MACA,IACA,QAAsB,MACtB;CACA,MAAM,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,MAAM,QAAQ,EAAE,MAAM,IAAI,MAAM,QAAQ,EAAE,MAAM,CAAC;CACzF,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,MAAM,SAAS,MAAqB,KAAK,QAAQ,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;CACvE,MAAM,QAAQ,GAAG,MAAM,WAAW,EAAE,eAAe,MAAM,OAAO,EAAE,WAAW,MAAM,OAAO,EAAE,oBAAoB,MAAM,MAAM,EAAE;CAC9H,MAAM,UAAU,aAAa,MAAM,IAAI;CACvC,MAAM,aAAa,QAAQ,KAAK,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,KAAK,KAAK,EAAE,MAAM,CAAC,CAAC,KAAK,IAAI;CACnF,MAAM,OAAO,MAAc,EAAE,QAAQ,OAAO,KAAK;CACjD,MAAM,QAAQ,OAAO,SAAS,OAAO,EAAE,WAAW,CAAC,EAAA,CAAG,KAAK,OAAO;EAAE,KAAK;EAAG,MAAM;CAAE,EAAE,CAAC;CACvF,IAAI,IACF,OAAO;EACL,eAAe,KAAK,MAAM,MAAM,KAAK;EACrC;EACA,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK,EAAE,IAAI,MAAM;EAC9E;EACA,GAAI,QAAQ,SAAS,CAAC,sBAAsB,WAAW,IAAI,EAAE,IAAI,CAAC;EAClE;EACA;EACA,GAAG,OAAO,KACP,MACC,KAAK,IAAI,EAAE,EAAE,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,aAAa,EAAE,UAAU,IAAI,CAAC,EAAE,GAC5F;EACA;EACA,GAAI,MAAM,SACN;GACE;GACA;GACA,GAAG,MAAM,KACN,EAAE,KAAK,WACN,KAAK,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI,KAAK,GAAG,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,aAAa,IAAI,EAAE,GACtF;GACA;EACF,IACA,CAAC;CACP,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EACL,QAAQ,YAAY,MAAM,KAAK,EAAE,UAAU,YAAY,MAAM,KAAK;EAClE;EACA,GAAI,QAAQ,SAAS,CAAC,kBAAkB,YAAY,IAAI,CAAC;EACzD;EACA,GAAG,OAAO,SAAS,MAAM,CACvB,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,KAC1F,IAAI,EAAE,WAAW,CAAC,EAAA,CAAG,KAClB,MACC,SAAS,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,KAAK,OAAO,QAAQ,WAAW,CAAC,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,GAC9H,CACF,CAAC;CACH,CAAC,CAAC,KAAK,IAAI;AACb;;AAGA,SAAgB,iBAAiB,MAAoB,MAAoB,IAAqB;CAC5F,MAAM,UAAU,KAAK,QAAQ,MAAM,EAAE,SAAS,MAAM,CAAC,CAAC;CACtD,MAAM,OAAO,sCAAsC,KAAK,MAAM,0BAA0B,UAAU,SAAS,QAAQ,OAAO,YAAY,IAAI,MAAM,OAAO,GAAG;CAC1J,MAAM,QAAQ,MAAuB,IAAI,aAAa,KAAK;CAC3D,IAAI,IACF,OAAO;EACL,eAAe,KAAK;EACpB;EACA;EACA;EACA;EACA;EACA,GAAG,KAAK,KAAK,MAAM,KAAK,EAAE,GAAG,QAAQ,OAAO,KAAK,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,GAAG;EACxE;CACF,CAAC,CAAC,KAAK,IAAI;CAEb,OAAO;EAAC;EAAM;EAAI,GAAG,KAAK,KAAK,MAAM,KAAK,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI;CAAC,CAAC,CAAC,KAAK,IAAI;AACpF;AAEA,MAAM,aAAa,MACjB,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,cAAc,WAAW,OAAO;AAChG,MAAM,UAAU,MAAc,GAAG,KAAK,IAAI,MAAM,MAAM,KAAK,MAAM,KAAK,IAAI,CAAC,IAAI,GAAG;AAClF,MAAM,cAAc,MAAmB,GAAG,UAAU,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,KAAK,IAAI;AAC3F,MAAM,gBAAgB,MACpB,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,kBAAkB,EAAE,KAAK,QAAQ,EAAE,KAAK,MAAM,IAAI;AAErF,SAAgB,WAAW,KAAwB;CACjD,MAAM,OAAO,UAAU,GAAG;CAC1B,MAAM,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC;CACrD,MAAM,QAAQ;EACZ,OAAO,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,IAAI,WAAW,gBAAgB,oBAAoB;EACrG,aAAa,IAAI,UAAU,KAAK,eAAe,IAAI,UAAU,EAAE,gBAAgB,IAAI;EACnF;EACA,GAAG,KAAK,KAAK,CAAC,GAAG,OAAO,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,GAAG;EACpD,GAAG,SAAS,GAAG,CAAC,CAAC,KAAK,MAAM,OAAO,GAAG;EACtC;CACF;CACA,KAAK,MAAM,KAAK,IAAI,OAAO;EACzB,MAAM,SAAS,EAAE,SAAS,WAAW;EACrC,MAAM,QAAQ,EAAE,SAAS;EACzB,MAAM,KACJ,KAAK,aAAa,EAAE,SAAS,GAAG,EAAE,KAAK,UAAU,QAAQ,KAAK,eAAe,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC,KACtH;EACA,MAAM,YAAY,cAAc,CAAC;EACjC,IAAI,UAAU,QAAQ;GACpB,MAAM,KAAK,mDAAmD;GAC9D,KAAK,MAAM,QAAQ,WAAW,MAAM,KAAK,WAAW,MAAM;EAC5D;EACA,KAAK,MAAM,KAAK,EAAE,UAAU;GAC1B,MAAM,SAAS,SAAS,WAAW;GACnC,IAAI,CAAC,QACH,MAAM,KAAK,SAAS,aAAa,EAAE,SAAS,GAAG,EAAE,GAAG,IAAI,eAAe,EAAE,UAAU,GAAG;GAExF,KAAK,MAAM,EAAE,WAAW,GAAG,OAAO,cAAc,mBAAmB,CAAC,GAClE,MAAM,KACJ,GAAG,OAAO,QAAQ,EAAE,QAAQ,GAAG,EAAE,MAAM,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,KAAK,WAAW,GAAG,MAAM,MAAM,KAAK,EAAE,UAC5G;GAEF,IAAI,EAAE,SAAS,CAAC,eAAe,CAAC,GAC9B,MAAM,KAAK,GAAG,SAAS,EAAE,MAAM,KAAK,IAAI,EAAE,MAAM,QAAQ,MAAM,IAAI,CAAC,CAAC,IAAI;EAE5E;CACF;CACA,OAAO,MAAM,KAAK,IAAI;AACxB"}