reeval 0.11.0 → 0.13.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 (312) hide show
  1. package/README.md +115 -257
  2. package/assets/package.json +1 -1
  3. package/assets/pnpm-lock.yaml +41 -30
  4. package/bin/mcp-timer.cjs +224 -0
  5. package/dist/{adapter-Bwy3QxAK.js → adapter-IKKo4sZj.js} +4 -4
  6. package/dist/{adapter-Bwy3QxAK.js.map → adapter-IKKo4sZj.js.map} +1 -1
  7. package/dist/{agent-DpE80WPz.js → agent-ClE-g9VL.js} +22 -7
  8. package/dist/{agent-DpE80WPz.js.map → agent-ClE-g9VL.js.map} +1 -1
  9. package/dist/{analysis-Bxub9LMT.js → analysis-B0nOfAzA.js} +3 -3
  10. package/dist/{analysis-Bxub9LMT.js.map → analysis-B0nOfAzA.js.map} +1 -1
  11. package/dist/{assemble-D9GWr-HS.js → assemble-BO93VAk1.js} +22 -20
  12. package/dist/assemble-BO93VAk1.js.map +1 -0
  13. package/dist/assemble-VQxyoDxK.js +1 -0
  14. package/dist/{attempt-CGPV3BZY.js → attempt-jI0OWxlz.js} +2 -2
  15. package/dist/{attempt-CGPV3BZY.js.map → attempt-jI0OWxlz.js.map} +1 -1
  16. package/dist/bridge/index.mjs +2 -1
  17. package/dist/{capture-BQlGHiMC.js → capture-dn2hjSLj.js} +29 -21
  18. package/dist/{capture-BQlGHiMC.js.map → capture-dn2hjSLj.js.map} +1 -1
  19. package/dist/capture-nIJ-7kUE.js +1 -0
  20. package/dist/{cli-ClpPT8kn.js → cli-BCE1xlm4.js} +176 -120
  21. package/dist/cli-BCE1xlm4.js.map +1 -0
  22. package/dist/{cli-spec-qmEnQ25_.js → cli-spec-BXIBUlaK.js} +34 -15
  23. package/dist/cli-spec-BXIBUlaK.js.map +1 -0
  24. package/dist/cli.js +2 -2
  25. package/dist/{command-BlM0y8jN.js → command-Bh3yhN_b.js} +8 -8
  26. package/dist/{command-BlM0y8jN.js.map → command-Bh3yhN_b.js.map} +1 -1
  27. package/dist/command-C6vwmjS7.js +91 -0
  28. package/dist/command-C6vwmjS7.js.map +1 -0
  29. package/dist/{command-DbAe1Rzb.js → command-CANun0m0.js} +16 -19
  30. package/dist/command-CANun0m0.js.map +1 -0
  31. package/dist/command-CBaHukyl.js +335 -0
  32. package/dist/command-CBaHukyl.js.map +1 -0
  33. package/dist/{command-TgbzPizb.js → command-D_kEnYcX.js} +17 -16
  34. package/dist/command-D_kEnYcX.js.map +1 -0
  35. package/dist/commands-7tH3EsVu.js +666 -0
  36. package/dist/commands-7tH3EsVu.js.map +1 -0
  37. package/dist/{commands-CthqwkAn.js → commands-BKGzBMgb.js} +1 -1
  38. package/dist/{config-DrVSEVN0.js → config-D7TFvUpL.js} +40 -55
  39. package/dist/config-D7TFvUpL.js.map +1 -0
  40. package/dist/{context-C1mxXh80.js → context-Dgn48BqT.js} +13 -2
  41. package/dist/context-Dgn48BqT.js.map +1 -0
  42. package/dist/{contrasts-5zsj32gk.js → contrasts-B4nOhn0Z.js} +3 -3
  43. package/dist/{contrasts-5zsj32gk.js.map → contrasts-B4nOhn0Z.js.map} +1 -1
  44. package/dist/db-DJUuFoWQ.js +602 -0
  45. package/dist/db-DJUuFoWQ.js.map +1 -0
  46. package/dist/db-W9EFlXnn.js +2 -0
  47. package/dist/{dist-CuY4ehEk.js → dist-Dp_AJgYN.js} +3 -3
  48. package/dist/{dist-CuY4ehEk.js.map → dist-Dp_AJgYN.js.map} +1 -1
  49. package/dist/{docker-D1HZDS6q.js → docker-CQxucRPe.js} +16 -15
  50. package/dist/docker-CQxucRPe.js.map +1 -0
  51. package/dist/{docker-DNmMPOBb.js → docker-Dac6Zalz.js} +1 -1
  52. package/dist/{docker-DOvjji9I.js → docker-DuHcQidD.js} +3 -3
  53. package/dist/{docker-DOvjji9I.js.map → docker-DuHcQidD.js.map} +1 -1
  54. package/dist/{doctor-D2MbNO8L.js → doctor-De_QlOTM.js} +72 -38
  55. package/dist/doctor-De_QlOTM.js.map +1 -0
  56. package/dist/{egress-2-qzPvGi.js → egress-DEAvq8Fl.js} +453 -31
  57. package/dist/egress-DEAvq8Fl.js.map +1 -0
  58. package/dist/env-BQqj93gu.js +21 -0
  59. package/dist/env-BQqj93gu.js.map +1 -0
  60. package/dist/{environment-Cca6a4wB.js → environment-B4IuURK1.js} +247 -14
  61. package/dist/environment-B4IuURK1.js.map +1 -0
  62. package/dist/{evaluate-DMyaGQEj.d.ts → evaluate-C9-ritA5.d.ts} +2 -2
  63. package/dist/{evaluate-DKIl54Hb.js → evaluate-Djk1YPFL.js} +540 -560
  64. package/dist/evaluate-Djk1YPFL.js.map +1 -0
  65. package/dist/facts-Cfx1H70y.js +898 -0
  66. package/dist/facts-Cfx1H70y.js.map +1 -0
  67. package/dist/files-Bs6H3HiG.js +65 -0
  68. package/dist/files-Bs6H3HiG.js.map +1 -0
  69. package/dist/{files-BpUYBwGu.js → files-CN1QfenC.js} +31 -8
  70. package/dist/files-CN1QfenC.js.map +1 -0
  71. package/dist/files-CtjEXWXm.js +1 -0
  72. package/dist/{files-BXHZFWmx.js → files-D27nUk0K.js} +6 -17
  73. package/dist/files-D27nUk0K.js.map +1 -0
  74. package/dist/files-D3gJa91B.js +1 -0
  75. package/dist/generate-BnrvBAzF.js +1646 -0
  76. package/dist/generate-BnrvBAzF.js.map +1 -0
  77. package/dist/{git-Crl3b87o.js → git-rPfl7AD1.js} +3 -3
  78. package/dist/{git-Crl3b87o.js.map → git-rPfl7AD1.js.map} +1 -1
  79. package/dist/{harness-CEuntrla.js → harness-1OkumOAm.js} +3 -3
  80. package/dist/{harness-CEuntrla.js.map → harness-1OkumOAm.js.map} +1 -1
  81. package/dist/harness.d.ts +1 -1
  82. package/dist/harness.js +1 -1
  83. package/dist/{header-DHQv_ZrF.js → header-BVzbRnNv.js} +10 -3
  84. package/dist/{header-DHQv_ZrF.js.map → header-BVzbRnNv.js.map} +1 -1
  85. package/dist/{images-Bi3aGxb9.js → images-m784ueGK.js} +61 -13
  86. package/dist/images-m784ueGK.js.map +1 -0
  87. package/dist/index.d.ts +3 -3
  88. package/dist/index.js +4 -4
  89. package/dist/init-hiTkiM4L.js +543 -0
  90. package/dist/init-hiTkiM4L.js.map +1 -0
  91. package/dist/init-kMkTgTZc.js +1 -0
  92. package/dist/insights-B2Xmhz9o.js +64 -0
  93. package/dist/insights-B2Xmhz9o.js.map +1 -0
  94. package/dist/{invocations-BYDPe3fV.js → invocations-D_ePcwyL.js} +4 -4
  95. package/dist/{invocations-BYDPe3fV.js.map → invocations-D_ePcwyL.js.map} +1 -1
  96. package/dist/{judge-DW_GDOmB.js → judge-CEDIfRiU.js} +50 -15
  97. package/dist/judge-CEDIfRiU.js.map +1 -0
  98. package/dist/judge.d.ts +7 -6
  99. package/dist/judge.js +8 -7
  100. package/dist/judge.js.map +1 -1
  101. package/dist/{live-jlfszAbb.js → live-DYd2QEyR.js} +2 -2
  102. package/dist/{live-jlfszAbb.js.map → live-DYd2QEyR.js.map} +1 -1
  103. package/dist/model-B8H3gL69.js +1 -0
  104. package/dist/{model-DaVCY3rb.js → model-CTiuzkWw.js} +9 -7
  105. package/dist/model-CTiuzkWw.js.map +1 -0
  106. package/dist/model-DcIbmggK.js +1 -0
  107. package/dist/{model-D0IcOQao.js → model-DpkclE4r.js} +60 -25
  108. package/dist/model-DpkclE4r.js.map +1 -0
  109. package/dist/{model-DaX4bNLZ.js → model-UgHDMhI1.js} +144 -46
  110. package/dist/model-UgHDMhI1.js.map +1 -0
  111. package/dist/{node-B3ydHo6t.js → node-CGZYh4Fj.js} +4 -4
  112. package/dist/{node-B3ydHo6t.js.map → node-CGZYh4Fj.js.map} +1 -1
  113. package/dist/{opencode-providers-J9colP0-.js → opencode-providers-snfeWd6Z.js} +86 -47
  114. package/dist/opencode-providers-snfeWd6Z.js.map +1 -0
  115. package/dist/{options-C0d0AzeR.js → options-CyAyLjgJ.js} +22 -11
  116. package/dist/options-CyAyLjgJ.js.map +1 -0
  117. package/dist/{pairs-CnInRu-G.js → pairs-DP6XOJby.js} +2 -2
  118. package/dist/{pairs-CnInRu-G.js.map → pairs-DP6XOJby.js.map} +1 -1
  119. package/dist/{patch-B1bnfhN-.js → patch-uMq9rCl_.js} +2 -2
  120. package/dist/{patch-B1bnfhN-.js.map → patch-uMq9rCl_.js.map} +1 -1
  121. package/dist/{plan-DgQxp9yy.js → plan-CZYgXnZh.js} +21 -8
  122. package/dist/plan-CZYgXnZh.js.map +1 -0
  123. package/dist/plugins-P-uh54VF.js +654 -0
  124. package/dist/plugins-P-uh54VF.js.map +1 -0
  125. package/dist/{preflight-DlQvbySb.js → preflight-BQlPTHVu.js} +1 -1
  126. package/dist/{preflight-BRzD30L5.js → preflight-D3HvKeAx.js} +14 -10
  127. package/dist/preflight-D3HvKeAx.js.map +1 -0
  128. package/dist/prepare-DCwM2KKD.js +2 -0
  129. package/dist/{prepare-B_y-AFMv.js → prepare-Dx7dOnJB.js} +70 -23
  130. package/dist/prepare-Dx7dOnJB.js.map +1 -0
  131. package/dist/{provenance-DQ0AXn6c.js → provenance-C_-8y-x3.js} +4 -4
  132. package/dist/{provenance-DQ0AXn6c.js.map → provenance-C_-8y-x3.js.map} +1 -1
  133. package/dist/{providers-DoTq1jHW.js → providers-CF5UEaP8.js} +24 -10
  134. package/dist/providers-CF5UEaP8.js.map +1 -0
  135. package/dist/providers-CTBYvMxu.js +1 -0
  136. package/dist/{query-BO-ux7RB.js → query-DXthKmq0.js} +3 -3
  137. package/dist/{query-BO-ux7RB.js.map → query-DXthKmq0.js.map} +1 -1
  138. package/dist/query-D_1ARx5q.js +1 -0
  139. package/dist/{questions-C2dym2ce.js → questions-KENpWnfV.js} +8 -9
  140. package/dist/questions-KENpWnfV.js.map +1 -0
  141. package/dist/{record-BKmMvZ6O.js → record-kk9M1hj-.js} +8 -4
  142. package/dist/record-kk9M1hj-.js.map +1 -0
  143. package/dist/{redact-DJ9JCShu.js → redact-CRGdfV2s.js} +4 -2
  144. package/dist/redact-CRGdfV2s.js.map +1 -0
  145. package/dist/remarks-1521zwfW.js +38 -0
  146. package/dist/remarks-1521zwfW.js.map +1 -0
  147. package/dist/remarks-BhAV1H4V.js +1 -0
  148. package/dist/remarks-Ml6bcSdV.js +278 -0
  149. package/dist/remarks-Ml6bcSdV.js.map +1 -0
  150. package/dist/{remote-CPPW86Q9.js → remote-Dkeghk8k.js} +3 -3
  151. package/dist/{remote-CPPW86Q9.js.map → remote-Dkeghk8k.js.map} +1 -1
  152. package/dist/resolve-CMmhACr6.js +1 -0
  153. package/dist/resolve-DzdWcIL6.js +724 -0
  154. package/dist/resolve-DzdWcIL6.js.map +1 -0
  155. package/dist/{results-BE2f-1XS.js → results-D-naai_Q.js} +33 -8
  156. package/dist/results-D-naai_Q.js.map +1 -0
  157. package/dist/{resume-Ca1c8vix.js → resume-8-nnW8iO.js} +4 -4
  158. package/dist/{resume-Ca1c8vix.js.map → resume-8-nnW8iO.js.map} +1 -1
  159. package/dist/{root-DICDHCtp.js → root-DNuLhaA5.js} +2 -2
  160. package/dist/root-DNuLhaA5.js.map +1 -0
  161. package/dist/rules-CcV3zLDR.js +318 -0
  162. package/dist/rules-CcV3zLDR.js.map +1 -0
  163. package/dist/run-Bel7Vde4.js +88 -0
  164. package/dist/run-Bel7Vde4.js.map +1 -0
  165. package/dist/{sandbox-DLrsvu7U.js → sandbox-YLbk9mO7.js} +2 -2
  166. package/dist/{sandbox-DLrsvu7U.js.map → sandbox-YLbk9mO7.js.map} +1 -1
  167. package/dist/sandbox.d.ts +1 -1
  168. package/dist/sandbox.js +1 -1
  169. package/dist/server-C-ysqkLv.js +1 -0
  170. package/dist/{server-TUY5xA_A.js → server-De8oH3bt.js} +10 -10
  171. package/dist/{server-TUY5xA_A.js.map → server-De8oH3bt.js.map} +1 -1
  172. package/dist/{source-DJGS0a0u.js → source-C686eZpY.js} +2 -2
  173. package/dist/{source-DJGS0a0u.js.map → source-C686eZpY.js.map} +1 -1
  174. package/dist/source-DjgypUHW.js +1 -0
  175. package/dist/src-3mP821Pt.js +2 -0
  176. package/dist/src-B3KCLZVk.js +3 -0
  177. package/dist/src-BAyg6CtQ.js +2 -0
  178. package/dist/{src-CF17Ug08.js → src-BYLM3hEz.js} +22 -6
  179. package/dist/src-BYLM3hEz.js.map +1 -0
  180. package/dist/src-BezgGX4X.js +2 -0
  181. package/dist/{src-DvCg0NBs.js → src-C7W6kg81.js} +40 -10
  182. package/dist/{src-DvCg0NBs.js.map → src-C7W6kg81.js.map} +1 -1
  183. package/dist/{src-ftu5wPSt.js → src-CIpKL45U.js} +782 -169
  184. package/dist/src-CIpKL45U.js.map +1 -0
  185. package/dist/src-ChBhk06Q.js +2 -0
  186. package/dist/{src-BxfCKA3_.js → src-CoqZYspK.js} +1 -1
  187. package/dist/{src-CFp86GtV.js → src-CzQrAcF8.js} +49 -49
  188. package/dist/src-CzQrAcF8.js.map +1 -0
  189. package/dist/src-D9fSTxlc.js +1 -0
  190. package/dist/{src-FGXhkEkH.js → src-DeY52Gyf.js} +182 -23
  191. package/dist/src-DeY52Gyf.js.map +1 -0
  192. package/dist/src-DrJSnoMR.js +2 -0
  193. package/dist/{src-DvK0EIZx.js → src-Xj_BZKbq.js} +112 -13
  194. package/dist/src-Xj_BZKbq.js.map +1 -0
  195. package/dist/{src-u8_ixn_F.js → src-cbCb-MPy.js} +20 -4
  196. package/dist/src-cbCb-MPy.js.map +1 -0
  197. package/dist/src-dhSTRN50.js +2 -0
  198. package/dist/{src-C7_1SqDP.js → src-djNNYIdP.js} +2 -2
  199. package/dist/{src-C7_1SqDP.js.map → src-djNNYIdP.js.map} +1 -1
  200. package/dist/state-BGWGAwdo.js +1 -0
  201. package/dist/{state-DfpHox6b.js → state-C0i_ujQZ.js} +19 -17
  202. package/dist/{state-DfpHox6b.js.map → state-C0i_ujQZ.js.map} +1 -1
  203. package/dist/studio-app/assets/{index-CBkhNAv8.js → index-Bb_cid9k.js} +9 -9
  204. package/dist/studio-app/index.html +1 -1
  205. package/dist/{suite-Cw_7G2RM.js → suite-DmuF_ApO.js} +80 -30
  206. package/dist/suite-DmuF_ApO.js.map +1 -0
  207. package/dist/suite-mn9g4veR.js +2 -0
  208. package/dist/{summary-BUKfU-9l.js → summary-BFMHMTz2.js} +273 -47
  209. package/dist/summary-BFMHMTz2.js.map +1 -0
  210. package/dist/testing.d.ts +2 -2
  211. package/dist/testing.js +2 -2
  212. package/dist/{text-gEcKjAyp.js → text-CrVy5ioL.js} +18 -2
  213. package/dist/text-CrVy5ioL.js.map +1 -0
  214. package/dist/{transcript-BNNANU8A.js → transcript-BTxJpW4R.js} +2 -2
  215. package/dist/{transcript-BNNANU8A.js.map → transcript-BTxJpW4R.js.map} +1 -1
  216. package/dist/{types-BYdlwMwo.d.ts → types-B-9b1MDV.d.ts} +850 -34
  217. package/dist/types-C5vI3g1C.js.map +1 -1
  218. package/dist/usage-BDo2q_yu.js +1 -0
  219. package/dist/{command-Bj39y-Wm.js → validate-DWjkshl1.js} +20 -377
  220. package/dist/validate-DWjkshl1.js.map +1 -0
  221. package/dist/view/index.d.ts +31 -263
  222. package/dist/view/index.js +8 -7
  223. package/dist/views-DE2A1jEX.js +2 -0
  224. package/dist/{views-B8w2J-gD.js → views-Dk8MCQKr.js} +8 -98
  225. package/dist/views-Dk8MCQKr.js.map +1 -0
  226. package/dist/{worker-entry-DNnveLqx.js → worker-entry-CqrzGPF4.js} +2 -2
  227. package/dist/{worker-entry-DNnveLqx.js.map → worker-entry-CqrzGPF4.js.map} +1 -1
  228. package/dist/workspace-B1eGO46M.js +1 -0
  229. package/dist/{workspace-C4RA3srV.js → workspace-CLeOybkr.js} +45 -11
  230. package/dist/workspace-CLeOybkr.js.map +1 -0
  231. package/package.json +5 -1
  232. package/skills/eval-rubric/SKILL.md +130 -0
  233. package/dist/agent-D483ru7D.js +0 -334
  234. package/dist/agent-D483ru7D.js.map +0 -1
  235. package/dist/assemble-D5KGrwnJ.js +0 -1
  236. package/dist/assemble-D9GWr-HS.js.map +0 -1
  237. package/dist/capture-CYGLpWxR.js +0 -1
  238. package/dist/cli-ClpPT8kn.js.map +0 -1
  239. package/dist/cli-spec-qmEnQ25_.js.map +0 -1
  240. package/dist/command-Bj39y-Wm.js.map +0 -1
  241. package/dist/command-C-cVjlny.js +0 -1
  242. package/dist/command-DbAe1Rzb.js.map +0 -1
  243. package/dist/command-TgbzPizb.js.map +0 -1
  244. package/dist/commands-YUwlyTbr.js +0 -228
  245. package/dist/commands-YUwlyTbr.js.map +0 -1
  246. package/dist/config-DrVSEVN0.js.map +0 -1
  247. package/dist/context-C1mxXh80.js.map +0 -1
  248. package/dist/db-CKg5NtiW.js +0 -2
  249. package/dist/db-DfhipHEF.js +0 -1416
  250. package/dist/db-DfhipHEF.js.map +0 -1
  251. package/dist/docker-D1HZDS6q.js.map +0 -1
  252. package/dist/doctor-D2MbNO8L.js.map +0 -1
  253. package/dist/egress-2-qzPvGi.js.map +0 -1
  254. package/dist/environment-Cca6a4wB.js.map +0 -1
  255. package/dist/evaluate-DKIl54Hb.js.map +0 -1
  256. package/dist/files-BXHZFWmx.js.map +0 -1
  257. package/dist/files-BpUYBwGu.js.map +0 -1
  258. package/dist/files-Bw8lWEjg.js +0 -1
  259. package/dist/files-D6J0iSdx.js +0 -1
  260. package/dist/images-Bi3aGxb9.js.map +0 -1
  261. package/dist/init-Cl3f3NBT.js +0 -360
  262. package/dist/init-Cl3f3NBT.js.map +0 -1
  263. package/dist/init-fhOXED8F.js +0 -1
  264. package/dist/judge-DW_GDOmB.js.map +0 -1
  265. package/dist/model-CXhrziBe.js +0 -1
  266. package/dist/model-D0IcOQao.js.map +0 -1
  267. package/dist/model-DaVCY3rb.js.map +0 -1
  268. package/dist/model-DaX4bNLZ.js.map +0 -1
  269. package/dist/model-_bxNrk2h.js +0 -1
  270. package/dist/opencode-providers-J9colP0-.js.map +0 -1
  271. package/dist/options-C0d0AzeR.js.map +0 -1
  272. package/dist/plan-DgQxp9yy.js.map +0 -1
  273. package/dist/preflight-BRzD30L5.js.map +0 -1
  274. package/dist/prepare-B_y-AFMv.js.map +0 -1
  275. package/dist/prepare-DCKTLHN3.js +0 -2
  276. package/dist/providers-B9yTdIqF.js +0 -1
  277. package/dist/providers-DoTq1jHW.js.map +0 -1
  278. package/dist/query-CRQfsw0e.js +0 -1
  279. package/dist/questions-C2dym2ce.js.map +0 -1
  280. package/dist/record-BKmMvZ6O.js.map +0 -1
  281. package/dist/redact-DJ9JCShu.js.map +0 -1
  282. package/dist/results-BE2f-1XS.js.map +0 -1
  283. package/dist/root-DICDHCtp.js.map +0 -1
  284. package/dist/server-Dp8eOeK5.js +0 -1
  285. package/dist/source-DdbLGR1M.js +0 -1
  286. package/dist/src-CF17Ug08.js.map +0 -1
  287. package/dist/src-CFp86GtV.js.map +0 -1
  288. package/dist/src-CLoOMVWI.js +0 -3
  289. package/dist/src-CcrQbpG8.js +0 -2
  290. package/dist/src-DCFtJRp0.js +0 -2
  291. package/dist/src-DSYYPEOj.js +0 -2
  292. package/dist/src-DYO3DdnQ.js +0 -1
  293. package/dist/src-DvK0EIZx.js.map +0 -1
  294. package/dist/src-FGXhkEkH.js.map +0 -1
  295. package/dist/src-WD-zgQYZ.js +0 -2
  296. package/dist/src-_oI9AePb.js +0 -2
  297. package/dist/src-ftu5wPSt.js.map +0 -1
  298. package/dist/src-qsKCqv7a.js +0 -2
  299. package/dist/src-u8_ixn_F.js.map +0 -1
  300. package/dist/state-DpAxYyED.js +0 -1
  301. package/dist/suite-Cw_7G2RM.js.map +0 -1
  302. package/dist/suite-DamAEnNF.js +0 -1
  303. package/dist/summary-BUKfU-9l.js.map +0 -1
  304. package/dist/summary-Baa4rTHS.js +0 -192
  305. package/dist/summary-Baa4rTHS.js.map +0 -1
  306. package/dist/text-gEcKjAyp.js.map +0 -1
  307. package/dist/tools-DLHgetpx.js +0 -249
  308. package/dist/tools-DLHgetpx.js.map +0 -1
  309. package/dist/views-B8w2J-gD.js.map +0 -1
  310. package/dist/views-DblnI3kA.js +0 -2
  311. package/dist/workspace-C4RA3srV.js.map +0 -1
  312. package/dist/workspace-C_X0tdv6.js +0 -1
@@ -42,10 +42,10 @@ function createAntigravityRequestTransformations({ credentials, placeholder, hea
42
42
  //#endregion
43
43
  //#region ../harness-antigravity/src/antigravity-bootstrap.ts
44
44
  /** The CLI build the bootstrap installs. Bump it with both checksums from the release. */
45
- const ANTIGRAVITY_CLI_VERSION = "1.4.2";
45
+ const ANTIGRAVITY_CLI_VERSION = "1.4.5";
46
46
  const ANTIGRAVITY_CLI_SHA256 = {
47
- x64: "6395837ac0e193dd3fe50f1228e1c4aea345ca99636d54404ab7e74397d4091c",
48
- arm64: "08dd4a2ca52d531fef1dfae4ec2fbafcd56342bfa694c8193a60da2b26fb1898"
47
+ x64: "90cc1894b6862510869ad4cf1a6f4c043b7ae7c095bad8d5c355788a0ca935c7",
48
+ arm64: "8826b80c4b013f087734f24c5eadcc38600e74a1af411272d42a840d52ed3ee7"
49
49
  };
50
50
  /** Relative to the harness state directory, `$HOME/.ai-sdk-harness`. */
51
51
  const ANTIGRAVITY_BOOTSTRAP_DIR = ".harness-bootstrap/antigravity";
@@ -117,6 +117,82 @@ function buildAntigravityCommand(o) {
117
117
  return `exec ${[o.cli, ...args].map(shellQuote).join(" ")} -p "$(cat ${shellQuote(o.promptFile)})"`;
118
118
  }
119
119
  //#endregion
120
+ //#region ../harness-antigravity/src/antigravity-plugins.ts
121
+ /** Where `agy plugin install` puts each plugin, under the CLI's home: `<dir>/<manifest name>`. */
122
+ const ANTIGRAVITY_PLUGINS_DIR = ".gemini/config/plugins";
123
+ /** A Claude Code plugin names its own directory with this in a hook command. */
124
+ const PLUGIN_ROOT = "${CLAUDE_PLUGIN_ROOT}";
125
+ /**
126
+ * The Claude Code hook events the CLI runs, by how it takes their handlers: `flat` events take a
127
+ * list of handlers, `grouped` ones a list of `{ matcher, hooks }` groups. Every other Claude Code
128
+ * event has no Antigravity equivalent.
129
+ */
130
+ const ANTIGRAVITY_HOOK_EVENTS = {
131
+ SessionStart: "flat",
132
+ PreToolUse: "grouped",
133
+ PostToolUse: "grouped",
134
+ Stop: "flat"
135
+ };
136
+ const isRecord$1 = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
137
+ /**
138
+ * A Claude Code plugin's `hooks/hooks.json` as the CLI's plugin-root `hooks.json`: one named hook,
139
+ * the plugin's, with each event's handlers in the CLI's shape (a tool event's group without a
140
+ * matcher matches every tool) and `${CLAUDE_PLUGIN_ROOT}` in each command filled in with `root`,
141
+ * since the CLI doesn't set it. `agy plugin install` copies the Claude file there unchanged,
142
+ * where the CLI misreads a grouped `SessionStart` and never runs it.
143
+ */
144
+ function antigravityHooks(name, claude, root) {
145
+ const events = isRecord$1(claude) && isRecord$1(claude.hooks) ? claude.hooks : void 0;
146
+ if (!events) throw new Error(`The ${name} plugin's hooks/hooks.json has no hooks object`);
147
+ const handler = (h) => {
148
+ if (!isRecord$1(h) || typeof h.command !== "string" || (h.type ?? "command") !== "command") throw new Error(`The ${name} plugin has a hook the Antigravity CLI can't run: it runs only command hooks`);
149
+ return {
150
+ type: "command",
151
+ command: h.command.replaceAll(PLUGIN_ROOT, root),
152
+ ...typeof h.timeout === "number" ? { timeout: h.timeout } : {}
153
+ };
154
+ };
155
+ const out = {};
156
+ for (const [event, groups] of Object.entries(events)) {
157
+ const shape = ANTIGRAVITY_HOOK_EVENTS[event];
158
+ if (!shape) throw new Error(`The ${name} plugin has ${event} hooks, which the Antigravity CLI has no event for`);
159
+ const list = (Array.isArray(groups) ? groups : []).filter(isRecord$1);
160
+ out[event] = shape === "flat" ? list.flatMap((g) => (Array.isArray(g.hooks) ? g.hooks : []).map(handler)) : list.map((g) => ({
161
+ matcher: typeof g.matcher === "string" && g.matcher ? g.matcher : "*",
162
+ hooks: (Array.isArray(g.hooks) ? g.hooks : []).map(handler)
163
+ }));
164
+ }
165
+ return { [name]: out };
166
+ }
167
+ /**
168
+ * Installs a Claude Code plugin with `agy plugin install`, which copies and converts it into
169
+ * {@link ANTIGRAVITY_PLUGINS_DIR}. Then, in the installed copy:
170
+ * - each skill without a `name` is named after its directory (the CLI lists a command it
171
+ * converted to a skill as `SKILL` otherwise);
172
+ * - each rule without a `trigger` that has no frontmatter, or Cursor's `alwaysApply: true`, gets
173
+ * `trigger: always_on`, since the CLI leaves a rule without a trigger out.
174
+ */
175
+ function antigravityPluginInstall(cli, dir, installed) {
176
+ const at = shellQuote(installed);
177
+ return `set -eu
178
+ ${shellQuote(cli)} plugin install ${shellQuote(dir)}
179
+ front() { head -n 1 "$1" | grep -q '^---$'; }
180
+ for f in ${at}/skills/*/SKILL.md; do
181
+ [ -f "$f" ] || continue
182
+ grep -q '^name:' "$f" && continue
183
+ skill=$(basename "$(dirname "$f")")
184
+ if front "$f"; then sed -i "1a name: $skill" "$f"; else sed -i "1i ---\\nname: $skill\\n---" "$f"; fi
185
+ done
186
+ for f in ${at}/rules/*.md ${at}/rules/*.mdc; do
187
+ [ -f "$f" ] || continue
188
+ grep -q '^trigger:' "$f" && continue
189
+ if ! front "$f"; then sed -i '1i ---\\ntrigger: always_on\\n---\\n' "$f"
190
+ elif grep -q '^alwaysApply: *true' "$f"; then sed -i '1a trigger: always_on' "$f"; fi
191
+ done`;
192
+ }
193
+ /** Where `agy plugin install` puts the plugin of `name`. */
194
+ const installedPluginDir = (home, name) => posix.join(home, ANTIGRAVITY_PLUGINS_DIR, name);
195
+ //#endregion
120
196
  //#region ../harness-antigravity/src/antigravity-tools.ts
121
197
  const native = (nativeName, title, toolUseKind) => ({
122
198
  ...tool({
@@ -140,7 +216,7 @@ const ANTIGRAVITY_BUILTIN_TOOLS = {
140
216
  },
141
217
  read: {
142
218
  ...commonTool("read", {
143
- nativeName: "view_file",
219
+ nativeName: "read_file",
144
220
  toolUseKind: "readonly",
145
221
  inputSchema: z.looseObject({ file_path: z.string() })
146
222
  }),
@@ -148,7 +224,7 @@ const ANTIGRAVITY_BUILTIN_TOOLS = {
148
224
  },
149
225
  write: {
150
226
  ...commonTool("write", {
151
- nativeName: "write_to_file",
227
+ nativeName: "write_file",
152
228
  toolUseKind: "edit",
153
229
  inputSchema: z.looseObject({
154
230
  file_path: z.string(),
@@ -159,7 +235,7 @@ const ANTIGRAVITY_BUILTIN_TOOLS = {
159
235
  },
160
236
  edit: {
161
237
  ...commonTool("edit", {
162
- nativeName: "replace_file_content",
238
+ nativeName: "edit_file",
163
239
  toolUseKind: "edit",
164
240
  inputSchema: z.looseObject({
165
241
  file_path: z.string(),
@@ -210,6 +286,10 @@ const ANTIGRAVITY_BUILTIN_TOOLS = {
210
286
  call_mcp_tool: native("call_mcp_tool", "Call MCP Tool"),
211
287
  generate_image: native("generate_image", "Generate Image"),
212
288
  invoke_subagent: native("invoke_subagent", "Invoke Subagent"),
289
+ manage_subagents: native("manage_subagents", "Manage Subagents"),
290
+ schedule: native("schedule", "Schedule"),
291
+ wait: native("wait", "Wait"),
292
+ wait_5_seconds: native("wait_5_seconds", "Wait 5 Seconds"),
213
293
  browser_subagent: native("browser_subagent", "Browser Subagent"),
214
294
  notebook_edit: native("notebook_edit", "Edit Notebook", "edit"),
215
295
  ask_question: native("ask_question", "Ask Question"),
@@ -219,10 +299,12 @@ const ANTIGRAVITY_BUILTIN_TOOLS = {
219
299
  const str = (value) => typeof value === "string" ? value : void 0;
220
300
  /** Native edit tools that all surface as `edit`, since the key must be unique. */
221
301
  const EDIT_TOOLS = /* @__PURE__ */ new Set([
302
+ "edit_file",
222
303
  "replace_file_content",
223
304
  "multi_replace_file_content",
224
305
  "sed_file"
225
306
  ]);
307
+ const filePath = (p) => str(p.Path) ?? str(p.TargetFile) ?? str(p.AbsolutePath) ?? "";
226
308
  const BY_NATIVE_NAME = new Map(Object.entries(ANTIGRAVITY_BUILTIN_TOOLS).map(([key, t]) => [t.nativeName ?? key, key]));
227
309
  /** Maps a native tool call to its catalog name, adding the common-schema fields it implies. */
228
310
  function projectToolCall(nativeName, parameters = {}) {
@@ -236,7 +318,7 @@ function projectToolCall(nativeName, parameters = {}) {
236
318
  },
237
319
  dynamic: false
238
320
  });
239
- if (EDIT_TOOLS.has(nativeName)) return common("edit", { file_path: str(p.TargetFile) ?? str(p.AbsolutePath) ?? "" });
321
+ if (EDIT_TOOLS.has(nativeName)) return common("edit", { file_path: filePath(p) });
240
322
  const server = str(p.ServerName);
241
323
  const mcpTool = str(p.ToolName);
242
324
  if (nativeName === "call_mcp_tool" && server && mcpTool) return {
@@ -247,8 +329,10 @@ function projectToolCall(nativeName, parameters = {}) {
247
329
  };
248
330
  switch (nativeName) {
249
331
  case "run_command": return common("bash", { command: str(p.CommandLine) ?? str(p.command) ?? "" });
250
- case "view_file": return common("read", { file_path: str(p.AbsolutePath) ?? str(p.TargetFile) ?? "" });
251
- case "write_to_file": return common("write", { file_path: str(p.TargetFile) ?? "" });
332
+ case "read_file":
333
+ case "view_file": return common("read", { file_path: filePath(p) });
334
+ case "write_file":
335
+ case "write_to_file": return common("write", { file_path: filePath(p) });
252
336
  case "grep_search": return common("grep", {
253
337
  pattern: str(p.Query) ?? str(p.Pattern) ?? str(p.query) ?? "",
254
338
  ...str(p.SearchPath) ? { path: p.SearchPath } : {}
@@ -256,6 +340,23 @@ function projectToolCall(nativeName, parameters = {}) {
256
340
  case "find_by_name": return common("glob", { pattern: str(p.Pattern) ?? str(p.pattern) ?? "" });
257
341
  case "search_web": return common("webSearch", { query: str(p.query) ?? str(p.Query) ?? "" });
258
342
  case "read_url_content": return common("webFetch", { url: str(p.Url) ?? str(p.url) ?? "" });
343
+ case "invoke_subagent": {
344
+ const subagents = Array.isArray(p.Subagents) ? p.Subagents : str(p.TypeName) ? [p] : void 0;
345
+ if (!subagents) break;
346
+ return {
347
+ toolName: "invoke_subagent",
348
+ nativeName,
349
+ input: {
350
+ ...p,
351
+ subagents: subagents.map((a) => ({
352
+ agent: str(a?.TypeName),
353
+ role: str(a?.Role),
354
+ prompt: str(a?.Prompt)
355
+ }))
356
+ },
357
+ dynamic: false
358
+ };
359
+ }
259
360
  }
260
361
  const key = BY_NATIVE_NAME.get(nativeName);
261
362
  return key ? {
@@ -272,6 +373,15 @@ function projectToolCall(nativeName, parameters = {}) {
272
373
  }
273
374
  //#endregion
274
375
  //#region ../harness-antigravity/src/antigravity-stream.ts
376
+ /** A `subagent` step as the tool call it reports, each subagent by the agent it ran. */
377
+ const subagentInfo = (s) => ({
378
+ name: s.tool_name ?? "invoke_subagent",
379
+ parameters: { subagents: (s.subagent_info?.subagents ?? []).map((a) => ({
380
+ agent: a.type_name,
381
+ role: a.role,
382
+ prompt: a.initial_prompt
383
+ })) }
384
+ });
275
385
  /** Maps the CLI's counts onto the AI SDK's usage shape, keeping the original under `raw`. */
276
386
  function toUsage(usage) {
277
387
  const noCache = usage?.input_tokens;
@@ -293,6 +403,18 @@ function toUsage(usage) {
293
403
  ...usage ? { raw: { ...usage } } : {}
294
404
  };
295
405
  }
406
+ const USAGE_KEYS = [
407
+ "input_tokens",
408
+ "output_tokens",
409
+ "thinking_tokens",
410
+ "cache_read_tokens",
411
+ "total_tokens"
412
+ ];
413
+ const addUsage = (a, b) => {
414
+ const sum = { ...a };
415
+ for (const key of USAGE_KEYS) if (b[key] !== void 0) sum[key] = (sum[key] ?? 0) + b[key];
416
+ return sum;
417
+ };
296
418
  const FINISH = {
297
419
  SUCCESS: "stop",
298
420
  ERROR: "error"
@@ -326,10 +448,15 @@ var AntigravityStreamTranslator = class {
326
448
  openTools = /* @__PURE__ */ new Map();
327
449
  pendingStep;
328
450
  stepUsage = false;
451
+ /** The tokens of this turn's steps: the result's usage counts every earlier turn too. */
452
+ turnUsage;
329
453
  turn;
454
+ /** A resumed conversation's result counts turns before this process. */
455
+ resumed;
330
456
  constructor(options) {
331
457
  this.turn = options.turn;
332
458
  this.conversationId = options.conversationId;
459
+ this.resumed = options.conversationId !== void 0;
333
460
  }
334
461
  /** Parts for one stdout line. Lines that aren't JSON events are passed through as raw. */
335
462
  push(line) {
@@ -417,6 +544,7 @@ var AntigravityStreamTranslator = class {
417
544
  }
418
545
  flushStep(parts, next) {
419
546
  if (!this.pendingStep) return;
547
+ this.turnUsage = addUsage(this.turnUsage, this.pendingStep);
420
548
  parts.push({
421
549
  type: "finish-step",
422
550
  finishReason: {
@@ -479,7 +607,10 @@ var AntigravityStreamTranslator = class {
479
607
  this.flushStep(parts, "stop");
480
608
  if (retried) this.retried = true;
481
609
  if (!retried && !f.usage) return;
482
- if (f.usage) this.stepUsage = true;
610
+ if (f.usage) {
611
+ this.stepUsage = true;
612
+ this.turnUsage = addUsage(this.turnUsage, f.usage);
613
+ }
483
614
  parts.push({
484
615
  type: "finish-step",
485
616
  finishReason: {
@@ -509,9 +640,9 @@ var AntigravityStreamTranslator = class {
509
640
  }
510
641
  this.settleReply(parts);
511
642
  if (s.step_type !== "user_input") this.settleFailure(parts, true);
512
- if (s.step_type === "tool") {
643
+ if (s.step_type === "tool" || s.step_type === "subagent") {
513
644
  this.flushStep(parts, "tool-calls");
514
- const info = s.tool_info ?? {};
645
+ const info = s.step_type === "subagent" ? subagentInfo(s) : s.tool_info ?? {};
515
646
  const nativeName = info.name ?? s.tool_name ?? "unknown";
516
647
  let call = this.openTools.get(index);
517
648
  if (!call) {
@@ -557,14 +688,17 @@ var AntigravityStreamTranslator = class {
557
688
  });
558
689
  }
559
690
  this.closeBlocks(parts);
560
- if (!this.stepUsage && r.usage) parts.push({
561
- type: "finish-step",
562
- finishReason: {
563
- unified: "stop",
564
- raw: "result"
565
- },
566
- usage: toUsage(r.usage)
567
- });
691
+ if (!this.stepUsage && r.usage && !this.resumed) {
692
+ this.turnUsage = r.usage;
693
+ parts.push({
694
+ type: "finish-step",
695
+ finishReason: {
696
+ unified: "stop",
697
+ raw: "result"
698
+ },
699
+ usage: toUsage(r.usage)
700
+ });
701
+ }
568
702
  const status = r.status ?? "UNKNOWN";
569
703
  if (status !== "SUCCESS") parts.push({
570
704
  type: "error",
@@ -577,7 +711,7 @@ var AntigravityStreamTranslator = class {
577
711
  unified: FINISH[status] ?? "other",
578
712
  raw: status
579
713
  },
580
- totalUsage: toUsage(r.usage),
714
+ totalUsage: toUsage(this.turnUsage),
581
715
  ...r.structured_output !== void 0 ? { harnessMetadata: { antigravity: { structuredOutput: r.structured_output } } } : {}
582
716
  });
583
717
  }
@@ -619,6 +753,30 @@ async function tail(stream, max = 4e3) {
619
753
  }
620
754
  const canBroker = (sandbox) => "addRequestTransformations" in sandbox && typeof sandbox.addRequestTransformations === "function";
621
755
  /**
756
+ * Installs one plugin, then writes its hooks where and as the CLI reads them, at the installed
757
+ * copy's root. Its MCP servers are the plugin's `.mcp.json` as it stands when installed.
758
+ */
759
+ async function installPlugin(sandbox, cli, home, plugin, abortSignal) {
760
+ const installed = installedPluginDir(home, plugin.name);
761
+ const proc = await sandbox.spawn({
762
+ command: antigravityPluginInstall(cli, plugin.dir, installed),
763
+ ...abortSignal ? { abortSignal } : {}
764
+ });
765
+ const [stdout, stderr] = await Promise.all([tail(proc.stdout), tail(proc.stderr)]);
766
+ const { exitCode } = await proc.wait();
767
+ if (exitCode !== 0) throw new Error(`agy plugin install ${plugin.dir} exited ${exitCode}: ${(stderr || stdout).trim()}`);
768
+ const hooks = await sandbox.readTextFile({
769
+ path: posix.join(plugin.dir, "hooks", "hooks.json"),
770
+ ...abortSignal ? { abortSignal } : {}
771
+ });
772
+ if (hooks === null) return;
773
+ await sandbox.writeTextFile({
774
+ path: posix.join(installed, "hooks.json"),
775
+ content: `${JSON.stringify(antigravityHooks(plugin.name, JSON.parse(hooks), installed), null, 2)}\n`,
776
+ ...abortSignal ? { abortSignal } : {}
777
+ });
778
+ }
779
+ /**
622
780
  * The Antigravity CLI (`agy`) as an AI SDK harness. It has no ACP mode, so each turn is one
623
781
  * `agy -p … --output-format stream-json` process, resumed with `--conversation`, and its NDJSON
624
782
  * is translated into harness stream parts. Only a Gemini API key authenticates it.
@@ -671,6 +829,7 @@ async function startSession(settings, options) {
671
829
  modelProvider: "gemini"
672
830
  }, null, 2)}\n`);
673
831
  if (settings.mcpServers && Object.keys(settings.mcpServers).length > 0) await write(ANTIGRAVITY_MCP_CONFIG_FILE, `${JSON.stringify({ mcpServers: settings.mcpServers }, null, 2)}\n`);
832
+ for (const plugin of settings.plugins ?? []) await installPlugin(sandbox, cli, home, plugin, abortSignal);
674
833
  const env = {
675
834
  ...settings.env,
676
835
  [ANTIGRAVITY_CREDENTIAL_ENV]: sandboxKey,
@@ -795,6 +954,6 @@ async function startSession(settings, options) {
795
954
  };
796
955
  }
797
956
  //#endregion
798
- export { resolveAntigravityCredentials as C, createAntigravityRequestTransformations as S, getAntigravityBootstrap as _, ANTIGRAVITY_SETTINGS_FILE as a, GEMINI_API_KEY_HEADER as b, toUsage as c, buildAntigravityCommand as d, ANTIGRAVITY_BOOTSTRAP_DIR as f, antigravityInstallScript as g, ANTIGRAVITY_CLI_VERSION as h, ANTIGRAVITY_MCP_CONFIG_FILE as i, ANTIGRAVITY_BUILTIN_TOOLS as l, ANTIGRAVITY_CLI_SHA256 as m, ANTIGRAVITY_HOME_SKILLS_DIR as n, createAntigravity as o, ANTIGRAVITY_CLI_PATH as p, ANTIGRAVITY_INSTRUCTIONS_FILE as r, AntigravityStreamTranslator as s, ANTIGRAVITY_HARNESS_ID as t, projectToolCall as u, ANTIGRAVITY_BASE_URL_ENV as v, GEMINI_API_URL as x, ANTIGRAVITY_CREDENTIAL_ENV as y };
957
+ export { ANTIGRAVITY_BASE_URL_ENV as C, createAntigravityRequestTransformations as D, GEMINI_API_URL as E, resolveAntigravityCredentials as O, getAntigravityBootstrap as S, GEMINI_API_KEY_HEADER as T, ANTIGRAVITY_BOOTSTRAP_DIR as _, ANTIGRAVITY_SETTINGS_FILE as a, ANTIGRAVITY_CLI_VERSION as b, toUsage as c, ANTIGRAVITY_HOOK_EVENTS as d, ANTIGRAVITY_PLUGINS_DIR as f, buildAntigravityCommand as g, installedPluginDir as h, ANTIGRAVITY_MCP_CONFIG_FILE as i, ANTIGRAVITY_BUILTIN_TOOLS as l, antigravityPluginInstall as m, ANTIGRAVITY_HOME_SKILLS_DIR as n, createAntigravity as o, antigravityHooks as p, ANTIGRAVITY_INSTRUCTIONS_FILE as r, AntigravityStreamTranslator as s, ANTIGRAVITY_HARNESS_ID as t, projectToolCall as u, ANTIGRAVITY_CLI_PATH as v, ANTIGRAVITY_CREDENTIAL_ENV as w, antigravityInstallScript as x, ANTIGRAVITY_CLI_SHA256 as y };
799
958
 
800
- //# sourceMappingURL=src-FGXhkEkH.js.map
959
+ //# sourceMappingURL=src-DeY52Gyf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"src-DeY52Gyf.js","names":["isRecord"],"sources":["../../harness-antigravity/src/antigravity-auth.ts","../../harness-antigravity/src/antigravity-bootstrap.ts","../../harness-antigravity/src/antigravity-command.ts","../../harness-antigravity/src/antigravity-plugins.ts","../../harness-antigravity/src/antigravity-tools.ts","../../harness-antigravity/src/antigravity-stream.ts","../../harness-antigravity/src/antigravity-harness.ts","../../harness-antigravity/src/index.ts"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import "./state-C0i_ujQZ.js";
2
+ export { r as createCursorSdk } from "./src-BYLM3hEz.js";
@@ -43,6 +43,27 @@ async function getCodexBootstrap() {
43
43
  }
44
44
  //#endregion
45
45
  //#region ../harness-codex/src/codex-stream.ts
46
+ const USAGE_KEYS = [
47
+ "input_tokens",
48
+ "cached_input_tokens",
49
+ "cache_write_input_tokens",
50
+ "output_tokens",
51
+ "reasoning_output_tokens"
52
+ ];
53
+ /**
54
+ * One turn's counts: the thread's running total less the one before the turn. A count that went
55
+ * down (a thread whose total restarted) is the turn's own.
56
+ */
57
+ function turnUsage(total, before) {
58
+ const turn = {};
59
+ for (const key of USAGE_KEYS) {
60
+ const now = total[key];
61
+ if (now === void 0) continue;
62
+ const then = before?.[key] ?? 0;
63
+ turn[key] = now >= then ? now - then : now;
64
+ }
65
+ return turn;
66
+ }
46
67
  /** Codex's counts in the AI SDK's shape. Its `output_tokens` includes the reasoning ones. */
47
68
  function toUsage(usage) {
48
69
  const total = usage?.input_tokens;
@@ -72,7 +93,8 @@ const CHANGE_TOOLS = {
72
93
  };
73
94
  /**
74
95
  * Turns one `codex exec --json` process's NDJSON into harness stream parts. Codex reports a turn,
75
- * not its model calls: `turn.completed` is one `finish-step` with the turn's tokens and the
96
+ * not its model calls: `turn.completed` is one `finish-step` with the turn's tokens (its running
97
+ * total less `threadUsage`, the total the previous turn ended on) and the
76
98
  * `finish`. A top-level `error` before it is a call Codex retries ("Reconnecting... n/5"), so it's
77
99
  * a failed step, not the turn's end, unless `turn.failed` follows it: Codex announces the failure
78
100
  * that ends the turn with an `error` too, and that call wasn't retried.
@@ -88,8 +110,14 @@ var CodexStreamTranslator = class {
88
110
  calls = /* @__PURE__ */ new Set();
89
111
  /** The last top-level `error`, a retry unless the next event is `turn.failed`. */
90
112
  pendingError;
113
+ /** The thread's running total before this turn, from the previous `turn.completed`. */
114
+ before;
115
+ /** The thread's running total once `turn.completed` reports it. */
116
+ threadUsage;
91
117
  constructor(options) {
92
118
  this.workDir = options.workDir;
119
+ this.before = options.threadUsage;
120
+ this.threadUsage = options.threadUsage;
93
121
  }
94
122
  /** Parts for one stdout line. Lines that aren't JSON events are passed through as raw. */
95
123
  push(line) {
@@ -148,19 +176,22 @@ var CodexStreamTranslator = class {
148
176
  this.start(parts);
149
177
  this.pendingError = e.message ?? "error";
150
178
  return;
151
- case "turn.completed":
179
+ case "turn.completed": {
152
180
  this.start(parts);
153
181
  this.closeBlocks(parts);
182
+ const usage = e.usage ? turnUsage(e.usage, this.before) : void 0;
183
+ if (e.usage) this.threadUsage = e.usage;
154
184
  parts.push({
155
185
  type: "finish-step",
156
186
  finishReason: {
157
187
  unified: "stop",
158
188
  raw: "stop"
159
189
  },
160
- usage: toUsage(e.usage)
190
+ usage: toUsage(usage)
161
191
  });
162
- this.finish(parts, "stop", e.usage);
192
+ this.finish(parts, "stop", usage);
163
193
  return;
194
+ }
164
195
  case "turn.failed":
165
196
  this.start(parts);
166
197
  this.closeBlocks(parts);
@@ -374,13 +405,32 @@ new URL(OPENAI_API_URL).hostname;
374
405
  /**
375
406
  * Codex's defaults but for what it sends besides model requests: its analytics (to
376
407
  * `ab.chatgpt.com`), and the plugin sync (the curated list from
377
- * `github.com`, the remote catalogue from `chatgpt.com`), which an eval doesn't use.
408
+ * `github.com`, the remote catalogue from `chatgpt.com`), which an eval doesn't use. A session
409
+ * given plugins turns plugins on, and with them the sync, which nothing else stops.
378
410
  */
379
411
  const CODEX_QUIET_CONFIG = {
380
412
  analytics: { enabled: false },
381
413
  features: { plugins: false }
382
414
  };
383
- const lifecycleData = z.object({ threadId: z.string().optional() });
415
+ /**
416
+ * Codex's home marketplace, under the sandbox home, which lists the session's plugins. Each entry's
417
+ * path is relative to the home directory.
418
+ */
419
+ const CODEX_MARKETPLACE_FILE = ".agents/plugins/marketplace.json";
420
+ /** The name of that marketplace, so a plugin is installed as `<plugin>@reeval`. */
421
+ const CODEX_PLUGIN_MARKETPLACE = "reeval";
422
+ const count = z.number().optional();
423
+ const lifecycleData = z.object({
424
+ threadId: z.string().optional(),
425
+ /** The thread's running total after its last completed turn, which the next turn's is less. */
426
+ usage: z.object({
427
+ input_tokens: count,
428
+ cached_input_tokens: count,
429
+ cache_write_input_tokens: count,
430
+ output_tokens: count,
431
+ reasoning_output_tokens: count
432
+ }).optional()
433
+ });
384
434
  const unsupported = (what) => new HarnessCapabilityUnsupportedError({
385
435
  message: `codex exec has no ${what}`,
386
436
  harnessId: CODEX_HARNESS_ID
@@ -405,12 +455,17 @@ function toml(value) {
405
455
  return `{ ${Object.entries(value).map(([k, v]) => `${JSON.stringify(k)} = ${toml(v)}`).join(", ")} }`;
406
456
  }
407
457
  /**
408
- * Codex's `config.toml`: the quiet settings, reeval's provider as the model provider, and the MCP
409
- * servers. Each top-level key is one line, tables inline, so nothing depends on section order.
458
+ * Codex's `config.toml`: the quiet settings (plugins on when the session has some), reeval's
459
+ * provider as the model provider, and the MCP servers. Each top-level key is one line, tables
460
+ * inline, so nothing depends on section order and `codex plugin add` can append its tables.
410
461
  */
411
462
  function buildCodexConfig(options) {
412
463
  const config = {
413
464
  ...CODEX_QUIET_CONFIG,
465
+ ...options.plugins ? { features: {
466
+ ...CODEX_QUIET_CONFIG.features,
467
+ plugins: true
468
+ } } : {},
414
469
  ...options.effort ? { model_reasoning_effort: options.effort } : {},
415
470
  model_provider: CODEX_PROVIDER_ID,
416
471
  model_providers: { [CODEX_PROVIDER_ID]: {
@@ -424,6 +479,28 @@ function buildCodexConfig(options) {
424
479
  };
425
480
  return `${Object.entries(config).map(([k, v]) => `${JSON.stringify(k)} = ${toml(v)}`).join("\n")}\n`;
426
481
  }
482
+ /** The home marketplace listing the plugins, each by its path relative to `home`. */
483
+ function buildCodexMarketplace(plugins, home) {
484
+ const entries = plugins.map((p) => {
485
+ const path = posix.relative(home, p.dir);
486
+ if (!path || path.startsWith("..") || posix.isAbsolute(path)) throw new Error(`Codex lists plugins in its home marketplace, so the ${p.name} plugin must be under ${home} (it's at ${p.dir})`);
487
+ return {
488
+ name: p.name,
489
+ source: {
490
+ source: "local",
491
+ path: `./${path}`
492
+ }
493
+ };
494
+ });
495
+ return `${JSON.stringify({
496
+ name: CODEX_PLUGIN_MARKETPLACE,
497
+ plugins: entries
498
+ }, null, 2)}\n`;
499
+ }
500
+ /** `codex plugin add <plugin>@reeval` for each plugin, offline from the home marketplace. */
501
+ function buildCodexPluginAdd(binDir, plugins) {
502
+ return plugins.map((p) => `PATH=${shellQuote(binDir)}:"$PATH" codex plugin add ${shellQuote(`${p.name}@${CODEX_PLUGIN_MARKETPLACE}`)} < /dev/null`).join(" && ");
503
+ }
427
504
  const lines = (stream) => createInterface({
428
505
  input: Readable.fromWeb(stream),
429
506
  crlfDelay: Infinity
@@ -492,16 +569,31 @@ async function startSession(settings, key, options) {
492
569
  stateDirectory: stateDir,
493
570
  sessionId: options.sessionId
494
571
  });
572
+ const plugins = settings.plugins ?? [];
495
573
  await sandbox.writeTextFile({
496
574
  path: posix.join(home, CODEX_HOME_DIR, "config.toml"),
497
575
  content: buildCodexConfig({
498
576
  ...settings.mcpServers ? { mcpServers: settings.mcpServers } : {},
499
- ...settings.effort ? { effort: settings.effort } : {}
577
+ ...settings.effort ? { effort: settings.effort } : {},
578
+ ...plugins.length ? { plugins: true } : {}
500
579
  }),
501
580
  abortSignal
502
581
  });
582
+ if (plugins.length) {
583
+ await sandbox.writeTextFile({
584
+ path: posix.join(home, CODEX_MARKETPLACE_FILE),
585
+ content: buildCodexMarketplace(plugins, home),
586
+ abortSignal
587
+ });
588
+ const added = await sandbox.run({
589
+ command: buildCodexPluginAdd(binDir, plugins),
590
+ abortSignal
591
+ });
592
+ if (added.exitCode !== 0) throw new Error(`codex plugin add failed (exit ${added.exitCode}): ${(added.stderr || added.stdout).trim().slice(-2e3)}`);
593
+ }
503
594
  const resumed = lifecycleData.safeParse(options.resumeFrom?.data);
504
595
  let threadId = resumed.success ? resumed.data.threadId : void 0;
596
+ let threadUsage = resumed.success ? resumed.data.usage : void 0;
505
597
  const env = { [CODEX_CREDENTIAL_ENV]: sandboxKey };
506
598
  let turns = 0;
507
599
  let running;
@@ -510,7 +602,10 @@ async function startSession(settings, key, options) {
510
602
  type: "resume-session",
511
603
  harnessId: CODEX_HARNESS_ID,
512
604
  specificationVersion: "harness-v1",
513
- data: threadId ? { threadId } : {}
605
+ data: {
606
+ ...threadId ? { threadId } : {},
607
+ ...threadId && threadUsage ? { usage: threadUsage } : {}
608
+ }
514
609
  });
515
610
  const stop = async () => {
516
611
  ended = true;
@@ -551,7 +646,10 @@ async function startSession(settings, key, options) {
551
646
  model: turn.model,
552
647
  threadId
553
648
  });
554
- const translator = new CodexStreamTranslator({ workDir: sessionWorkDir });
649
+ const translator = new CodexStreamTranslator({
650
+ workDir: sessionWorkDir,
651
+ threadUsage
652
+ });
555
653
  const emit = (parts) => {
556
654
  for (const part of parts) turn.emit(part);
557
655
  };
@@ -571,6 +669,7 @@ async function startSession(settings, key, options) {
571
669
  try {
572
670
  for await (const line of lines(proc.stdout)) emit(translator.push(line));
573
671
  threadId = translator.threadId ?? threadId;
672
+ threadUsage = translator.threadUsage;
574
673
  const { exitCode } = await proc.wait();
575
674
  emit(translator.end({
576
675
  exitCode,
@@ -599,6 +698,6 @@ async function startSession(settings, key, options) {
599
698
  };
600
699
  }
601
700
  //#endregion
602
- export { CODEX_CLI_VERSION as _, CODEX_INSTRUCTIONS_FILE as a, OPENAI_API_URL as c, createCodex as d, CODEX_BUILTIN_TOOLS as f, CODEX_CLI_INTEGRITY as g, CODEX_BOOTSTRAP_DIR as h, CODEX_HOME_SKILLS_DIR as i, buildCodexCommand as l, toUsage as m, CODEX_HARNESS_ID as n, CODEX_PROVIDER_ID as o, CodexStreamTranslator as p, CODEX_HOME_DIR as r, CODEX_QUIET_CONFIG as s, CODEX_CREDENTIAL_ENV as t, buildCodexConfig as u, CODEX_INSTALL_COMMAND as v, getCodexBootstrap as y };
701
+ export { getCodexBootstrap as C, CODEX_INSTALL_COMMAND as S, CodexStreamTranslator as _, CODEX_INSTRUCTIONS_FILE as a, CODEX_CLI_INTEGRITY as b, CODEX_PROVIDER_ID as c, buildCodexCommand as d, buildCodexConfig as f, CODEX_BUILTIN_TOOLS as g, createCodex as h, CODEX_HOME_SKILLS_DIR as i, CODEX_QUIET_CONFIG as l, buildCodexPluginAdd as m, CODEX_HARNESS_ID as n, CODEX_MARKETPLACE_FILE as o, buildCodexMarketplace as p, CODEX_HOME_DIR as r, CODEX_PLUGIN_MARKETPLACE as s, CODEX_CREDENTIAL_ENV as t, OPENAI_API_URL as u, toUsage as v, CODEX_CLI_VERSION as x, CODEX_BOOTSTRAP_DIR as y };
603
702
 
604
- //# sourceMappingURL=src-DvK0EIZx.js.map
703
+ //# sourceMappingURL=src-Xj_BZKbq.js.map