openpond 0.2.46 → 0.2.48

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 (212) hide show
  1. package/dist/app-server.d.ts +157 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{actions-command-I3NI75P2.js → actions-command-DSO6YOEE.js} +1 -1
  4. package/dist/chunks/{app-layer-B3SMVO4B.js → app-layer-RRFI27N4.js} +1 -1
  5. package/dist/chunks/app-server-runtime-RWO4KGPU.js +2 -0
  6. package/dist/chunks/{apps-OA2VX34V.js → apps-NELJL377.js} +1 -1
  7. package/dist/chunks/{chunk-4UTIEH5H.js → chunk-2SPZYBDN.js} +1 -1
  8. package/dist/chunks/{chunk-LL4QP2IM.js → chunk-2ZJJFBIA.js} +1 -1
  9. package/dist/chunks/{chunk-HP2D3W2B.js → chunk-42GOV5ZU.js} +3 -3
  10. package/dist/chunks/{chunk-PGKEDR3S.js → chunk-5CMKGD43.js} +1 -1
  11. package/dist/chunks/{chunk-D6MQTNJ3.js → chunk-7K72KS5C.js} +6 -6
  12. package/dist/chunks/{chunk-JBHAU7PH.js → chunk-7MXZJQS7.js} +137 -137
  13. package/dist/chunks/{chunk-YSYXIJ46.js → chunk-7QEE4PBI.js} +1 -1
  14. package/dist/chunks/{chunk-F2AG46CV.js → chunk-7YR6CBNU.js} +1 -1
  15. package/dist/chunks/{chunk-UWO34HP6.js → chunk-DALJMSJG.js} +2 -2
  16. package/dist/chunks/chunk-DFM5JTS2.js +2 -0
  17. package/dist/chunks/{chunk-33AO3P6X.js → chunk-DLZP22WV.js} +1 -1
  18. package/dist/chunks/{chunk-BKMGBIBT.js → chunk-EMKZVP7Z.js} +1 -1
  19. package/dist/chunks/chunk-EPY7M5XS.js +2 -0
  20. package/dist/chunks/{chunk-ZJY2L43W.js → chunk-HA7EFTPF.js} +1 -1
  21. package/dist/chunks/{chunk-HK3WGUKK.js → chunk-IKWDL3RB.js} +1 -1
  22. package/dist/chunks/chunk-IOQUF34U.js +2 -0
  23. package/dist/chunks/chunk-JCCU3VFK.js +2 -0
  24. package/dist/chunks/{chunk-ZC57DX6D.js → chunk-JDLAHVAJ.js} +1 -1
  25. package/dist/chunks/{chunk-WWABOVRW.js → chunk-LVL4TIAO.js} +2 -2
  26. package/dist/chunks/{chunk-IV7F74JJ.js → chunk-MASJQWA2.js} +1 -1
  27. package/dist/chunks/{chunk-XLDW5NN3.js → chunk-N3DEA6PG.js} +1 -1
  28. package/dist/chunks/{chunk-F5DUN73H.js → chunk-N5QNXMIS.js} +1 -1
  29. package/dist/chunks/{chunk-MCRA6ZGJ.js → chunk-NAZ26IZL.js} +1 -1
  30. package/dist/chunks/chunk-NHJ26KXF.js +518 -0
  31. package/dist/chunks/chunk-NNF6KCHD.js +3 -0
  32. package/dist/chunks/{chunk-5OGRWWEH.js → chunk-O7VGFMDO.js} +1 -1
  33. package/dist/chunks/{chunk-USWZ3KUC.js → chunk-PA7XP42P.js} +1 -1
  34. package/dist/chunks/{chunk-BQNK2NMB.js → chunk-PJM2G7SG.js} +1 -1
  35. package/dist/chunks/chunk-PNE3IETM.js +190 -0
  36. package/dist/chunks/chunk-PYABBF53.js +53 -0
  37. package/dist/chunks/{chunk-TYWBEJOA.js → chunk-Q4H3NUVW.js} +2 -2
  38. package/dist/chunks/{chunk-HO5L2FUU.js → chunk-QJRXTIOC.js} +1 -1
  39. package/dist/chunks/chunk-QRWPEW3Z.js +24 -0
  40. package/dist/chunks/{chunk-LZSY5IM3.js → chunk-QXVIIM4T.js} +1 -1
  41. package/dist/chunks/{chunk-6SJZXZNA.js → chunk-R3XFY7VL.js} +1 -1
  42. package/dist/chunks/{chunk-EWS7MXTM.js → chunk-RLZPX4YP.js} +1 -1
  43. package/dist/chunks/{chunk-VW7D3DRM.js → chunk-SDEDAHV6.js} +72 -67
  44. package/dist/chunks/{chunk-BUFQKDAW.js → chunk-T5LE6R5S.js} +1 -1
  45. package/dist/chunks/{chunk-L4BYPZ4U.js → chunk-TGIB24K4.js} +1 -1
  46. package/dist/chunks/{chunk-D6E7JBBQ.js → chunk-TIUSKRBP.js} +4 -4
  47. package/dist/chunks/{chunk-6WLJWRMF.js → chunk-UJ5EFSEC.js} +1 -1
  48. package/dist/chunks/chunk-VOIH2BQA.js +2162 -0
  49. package/dist/chunks/{chunk-KE5RH6JA.js → chunk-WITSXYEW.js} +1 -1
  50. package/dist/chunks/chunk-WV2APYWG.js +2 -0
  51. package/dist/chunks/chunk-XBCIBAXD.js +4 -0
  52. package/dist/chunks/chunk-XDMUD4FW.js +5 -0
  53. package/dist/chunks/{chunk-DNXKIIV7.js → chunk-XM26DGML.js} +1 -1
  54. package/dist/chunks/{chunk-OGXSE57Z.js → chunk-YIB3J4RC.js} +1 -1
  55. package/dist/chunks/{chunk-H6W55CQG.js → chunk-YL6VFJ4P.js} +1 -1
  56. package/dist/chunks/cli-ZLDLOKPL.js +2 -0
  57. package/dist/chunks/{configuration-command-MVZS625X.js → configuration-command-SA56RV5B.js} +1 -1
  58. package/dist/chunks/{connected-evidence-7LHUZ2UI.js → connected-evidence-IVSQZYIB.js} +1 -1
  59. package/dist/chunks/{continual-K5JNHNQH.js → continual-PKK2BOTB.js} +1 -1
  60. package/dist/chunks/core-commands-W5IGIITV.js +2 -0
  61. package/dist/chunks/{datasets-KDN2EXHE.js → datasets-KSO2UG6R.js} +1 -1
  62. package/dist/chunks/{desktop-test-WIOEKMPR.js → desktop-test-6HXFM7PO.js} +1 -1
  63. package/dist/chunks/{dist-JBE7DPFZ.js → dist-4HV2W6V4.js} +1 -1
  64. package/dist/chunks/{dist-3MTJ7VM6.js → dist-BLBZENVB.js} +1 -1
  65. package/dist/chunks/{evaluation-coordination-NGYHL7HG.js → evaluation-coordination-MOFBXRXN.js} +1 -1
  66. package/dist/chunks/{experiment-improvements-2M7GRGWS.js → experiment-improvements-TDHM6NEA.js} +1 -1
  67. package/dist/chunks/{experiments-B6CRZ3GI.js → experiments-HFPDFD4I.js} +1 -1
  68. package/dist/chunks/{extension-RZTMK3ON.js → extension-R373LYIB.js} +1 -1
  69. package/dist/chunks/{help-EISFHH2F.js → help-PEFQDDTA.js} +1 -1
  70. package/dist/chunks/{hosted-experiment-improvement-6CHH65DX.js → hosted-experiment-improvement-MGMZWTZY.js} +1 -1
  71. package/dist/chunks/hosted-harness-runtime-FZZLWLBR.js +2 -0
  72. package/dist/chunks/{hosted-profile-candidate-HYEISIAC.js → hosted-profile-candidate-LVNKOTKJ.js} +1 -1
  73. package/dist/chunks/hosted-profile-compiler-PQFIWO5B.js +2 -0
  74. package/dist/chunks/{hosted-profile-evaluation-control-LV6YXOG7.js → hosted-profile-evaluation-control-7B3RAZU2.js} +1 -1
  75. package/dist/chunks/{hosted-profile-evaluation-inspection-A62UYFEP.js → hosted-profile-evaluation-inspection-FPCV42DD.js} +1 -1
  76. package/dist/chunks/hosted-profile-evaluation-preparation-JROREZH3.js +3 -0
  77. package/dist/chunks/{human-review-J6JGNRBR.js → human-review-HRGGACEM.js} +1 -1
  78. package/dist/chunks/import-RSAQ44GG.js +4 -0
  79. package/dist/chunks/{learning-REL6GGNA.js → learning-FNBEIAY6.js} +1 -1
  80. package/dist/chunks/{opchat-CUZUU2WM.js → opchat-I7ZWJ5XK.js} +1 -1
  81. package/dist/chunks/{organizations-VT27V4B2.js → organizations-LFCZIH7E.js} +1 -1
  82. package/dist/chunks/{profile-N2E5ASHQ.js → profile-EPIX5QVK.js} +1 -1
  83. package/dist/chunks/{project-agent-XMXOBJSC.js → project-agent-DGOPMECP.js} +1 -1
  84. package/dist/chunks/{sandbox-command-NC665ZZ5.js → sandbox-command-Q5F6VUOS.js} +1 -1
  85. package/dist/chunks/{sandbox-template-OTP6S3RU.js → sandbox-template-7GICPIKJ.js} +1 -1
  86. package/dist/chunks/{src-WM35IF4W.js → src-DH5AQ4Z7.js} +1 -1
  87. package/dist/chunks/src-GKWEQK2T.js +329 -0
  88. package/dist/chunks/{taskset-COAPMTT3.js → taskset-LUG3ZU6J.js} +1 -1
  89. package/dist/chunks/{teams-bot-ACWJ7PJP.js → teams-bot-Z6RJGHME.js} +1 -1
  90. package/dist/chunks/{training-4JUK7YQV.js → training-XHE6FVII.js} +1 -1
  91. package/dist/chunks/{workspaces-WTPFRJMS.js → workspaces-XIQNPAP7.js} +1 -1
  92. package/dist/cli.js +1 -1
  93. package/dist/index.js +1 -1
  94. package/dist/web/agent-sources/SOURCES.md +11 -0
  95. package/dist/web/agent-sources/claude-code.svg +1 -0
  96. package/dist/web/agent-sources/codex.svg +1 -0
  97. package/dist/web/agent-sources/grok-build.svg +3 -0
  98. package/dist/web/agent-sources/hermes.png +0 -0
  99. package/dist/web/agent-sources/oh-my-pi.svg +11 -0
  100. package/dist/web/agent-sources/openclaw.svg +54 -0
  101. package/dist/web/agent-sources/opencode.svg +4 -0
  102. package/dist/web/agent-sources/pi.svg +6 -0
  103. package/dist/web/assets/App-BI-uOpnP.js +234 -0
  104. package/dist/web/assets/App-DkH8CeoI.css +1 -0
  105. package/dist/web/assets/{AppDialog-CaxeNfsu.js → AppDialog-1iGodoot.js} +1 -1
  106. package/dist/web/assets/{AppTerminalPanel-dtK0ZPer.js → AppTerminalPanel-udtBdWFn.js} +2 -2
  107. package/dist/web/assets/AppsView-BonAGiS8.css +1 -0
  108. package/dist/web/assets/AppsView-DhKsU4yi.js +1 -0
  109. package/dist/web/assets/BrowserSidebar-BnOyqIQT.js +1 -0
  110. package/dist/web/assets/{CartesianChart-Drfk6jTn.js → CartesianChart-C24DAywn.js} +1 -1
  111. package/dist/web/assets/{CollaborationTabs-Czh2noeb.js → CollaborationTabs-DgmOF5Fe.js} +1 -1
  112. package/dist/web/assets/{CommandMenu-D-M-xomh.js → CommandMenu-CUNGtHwS.js} +1 -1
  113. package/dist/web/assets/{CommunityView-BrdxUI5Z.js → CommunityView-CE7qeJnr.js} +1 -1
  114. package/dist/web/assets/{ComposerCreateImproveStrip-CJ8nkYJf.js → ComposerCreateImproveStrip-BixNsg2a.js} +1 -1
  115. package/dist/web/assets/{GetStartedView-u7Jw7YA1.js → GetStartedView-B8gCwmBX.js} +1 -1
  116. package/dist/web/assets/{HostedModelLearningReview-D0a2nwse.js → HostedModelLearningReview-CitgUNfC.js} +1 -1
  117. package/dist/web/assets/{HostedModelLearningSettings-CQQGyjxi.js → HostedModelLearningSettings-WUaqzNsa.js} +1 -1
  118. package/dist/web/assets/{LabModelVersionDetailPage-Cxlc4sSC.js → LabModelVersionDetailPage-Cx0kL69J.js} +1 -1
  119. package/dist/web/assets/{LabSkillSidebar-BnJkDb0c.js → LabSkillSidebar-DRggqZ1j.js} +1 -1
  120. package/dist/web/assets/LabsRoute-BujTZhqC.js +99 -0
  121. package/dist/web/assets/{MainChatThread-r_TYiTnW.js → MainChatThread-CyA_644R.js} +2 -2
  122. package/dist/web/assets/MainPane-LaEtxydD.js +19 -0
  123. package/dist/web/assets/{MarkdownText-BxPHz4je.js → MarkdownText-DJI5LwT0.js} +19 -19
  124. package/dist/web/assets/{NativeSkillSidebar-CCHK6kMG.js → NativeSkillSidebar-CkFpWxjd.js} +1 -1
  125. package/dist/web/assets/{NewExperienceSwitcher-CuKWTDZj.js → NewExperienceSwitcher-DXcRHHsu.js} +1 -1
  126. package/dist/web/assets/{NewProjectDialog-CS6sw2oD.js → NewProjectDialog-gDzX_ZIJ.js} +1 -1
  127. package/dist/web/assets/{OutputsPage-JDM5bfLJ.js → OutputsPage-J_k-_N82.js} +1 -1
  128. package/dist/web/assets/{ProjectsPage-B3zTBHOA.js → ProjectsPage-BsyZmvlg.js} +1 -1
  129. package/dist/web/assets/{RightChatPanelStack-L8S3yj1u.js → RightChatPanelStack-Bz8puMUB.js} +1 -1
  130. package/dist/web/assets/{RightSidebarHomePanel-BWJQKFUp.js → RightSidebarHomePanel-DmorYb6p.js} +1 -1
  131. package/dist/web/assets/ScheduledWorkPage-BFDzQUyL.js +1 -0
  132. package/dist/web/assets/SettingsView-BB7wCdbr.js +5 -0
  133. package/dist/web/assets/SettingsView-BnANbPLS.css +1 -0
  134. package/dist/web/assets/{TeamChatView-DakXCNQE.js → TeamChatView-CZ3b7rq2.js} +2 -2
  135. package/dist/web/assets/{TerminalOverlay-DaonK5C0.js → TerminalOverlay-Ck43Qri3.js} +1 -1
  136. package/dist/web/assets/{TrainingCreationPanel-CUvSsSwp.js → TrainingCreationPanel-ejqPZm3g.js} +1 -1
  137. package/dist/web/assets/{TrainingDraftPanel-DNivtVwd.js → TrainingDraftPanel-Cy2AQxxL.js} +1 -1
  138. package/dist/web/assets/{UsageSettingsSection-rbmuoPoE.js → UsageSettingsSection-B7nyMItm.js} +1 -1
  139. package/dist/web/assets/{WorkSidebarPanel-DrYt9xzv.js → WorkSidebarPanel-BfjAc097.js} +1 -1
  140. package/dist/web/assets/{WorkspaceDiffPanel-CThoTqe4.js → WorkspaceDiffPanel-D9hAV8l7.js} +5 -5
  141. package/dist/web/assets/{WorkspaceEnvironmentMenu-DeODKxvW.js → WorkspaceEnvironmentMenu-B-K9XgFB.js} +3 -3
  142. package/dist/web/assets/{WorkspaceGitDialogs-CBarJYF-.js → WorkspaceGitDialogs-BJVFx_L3.js} +1 -1
  143. package/dist/web/assets/{WorkspaceMonacoEditor-Hmu5m_sO.js → WorkspaceMonacoEditor-p-FWMXoZ.js} +3 -3
  144. package/dist/web/assets/{arrow-up-right-BV2IHfb9.js → arrow-up-right-CFGI2YSt.js} +1 -1
  145. package/dist/web/assets/{chunk-YTGRET2L-PKzEfYnf.js → chunk-UHVJOMWN-BAlur2vw.js} +1 -1
  146. package/dist/web/assets/{clipboard-DDIvAWKp.js → clipboard-DIIxBort.js} +1 -1
  147. package/dist/web/assets/{cloud-upload-Dv6kFnfC.js → cloud-upload-BaQFNCTp.js} +1 -1
  148. package/dist/web/assets/{cssMode-BK0jFqWW.js → cssMode-6LOkSggB.js} +1 -1
  149. package/dist/web/assets/{folder-open-B9ixJQJX.js → folder-open-DZSxfPtr.js} +1 -1
  150. package/dist/web/assets/{folder-plus-DqSKvtNB.js → folder-plus-21v4D_Vx.js} +1 -1
  151. package/dist/web/assets/{git-commit-horizontal-C1lQvfxe.js → git-commit-horizontal-CgGixL64.js} +1 -1
  152. package/dist/web/assets/{htmlMode-CCV301b6.js → htmlMode-B5uRraNd.js} +1 -1
  153. package/dist/web/assets/index-DJcUXSsN.css +1 -0
  154. package/dist/web/assets/{index-DIaKfM8a.js → index-DOMrqhcz.js} +2 -2
  155. package/dist/web/assets/{info-BEvaynAD.js → info-BGTcmow7.js} +1 -1
  156. package/dist/web/assets/{jsonMode-Co4pyN4F.js → jsonMode-D3m8N4Gi.js} +1 -1
  157. package/dist/web/assets/{lspLanguageFeatures-CSU0G5da.js → lspLanguageFeatures-DoyipLsB.js} +1 -1
  158. package/dist/web/assets/{minimize-2-DT8t8wwP.js → minimize-2-B01qSko4.js} +1 -1
  159. package/dist/web/assets/{monaco.contribution-Cr0AaHCD.js → monaco.contribution--U8v3jpa.js} +2 -2
  160. package/dist/web/assets/{monaco.contribution-DSBAb_PC.js → monaco.contribution-BJyfaGX2.js} +2 -2
  161. package/dist/web/assets/{monaco.contribution-CBwGIQY1.js → monaco.contribution-Bc22foTx.js} +2 -2
  162. package/dist/web/assets/{monaco.contribution-DUZrs1D-.js → monaco.contribution-DuRhJ6zU.js} +2 -2
  163. package/dist/web/assets/{monitor-DGqnfsK9.js → monitor-eZP8ZTHe.js} +1 -1
  164. package/dist/web/assets/{play-C1XWyKh6.js → play-CGsWFR_B.js} +1 -1
  165. package/dist/web/assets/{python-Z1foxLdf.js → python-BNrLZWud.js} +1 -1
  166. package/dist/web/assets/{save-CX2kF74j.js → save-BLgjrccP.js} +1 -1
  167. package/dist/web/assets/{square-DMkXeYeV.js → square-CI1qNtvE.js} +1 -1
  168. package/dist/web/assets/{toggleHighContrast-CRMVp779.js → toggleHighContrast-B_GcTCnw.js} +1 -1
  169. package/dist/web/assets/{tsMode-Czu8YAqh.js → tsMode-CmruH_ys.js} +1 -1
  170. package/dist/web/assets/{upload-giKOPnl1.js → upload-DnlgGS2x.js} +1 -1
  171. package/dist/web/assets/useLocalAgentSchedules-BBhGUfK-.js +1 -0
  172. package/dist/web/assets/useProviderSettings-Bw-csWbH.css +1 -0
  173. package/dist/web/assets/useProviderSettings-DfhdkKdC.js +5 -0
  174. package/dist/web/assets/{useSessionTurnCache-CUYFsu_W.js → useSessionTurnCache-BwscKl5i.js} +1 -1
  175. package/dist/web/assets/{wifi-off-DbDXaV1N.js → wifi-off-Dz-4EDCc.js} +1 -1
  176. package/dist/web/assets/{workers-Cno4XklJ.js → workers-Bi9u46cp.js} +1 -1
  177. package/dist/web/assets/{yaml-C28t_C6h.js → yaml-DVTkiRnh.js} +1 -1
  178. package/dist/web/index.html +2 -2
  179. package/package.json +1 -1
  180. package/dist/chunks/app-server-runtime-FL2CHQU2.js +0 -2
  181. package/dist/chunks/chunk-4VKNBADF.js +0 -2
  182. package/dist/chunks/chunk-5ZZM3TUN.js +0 -24
  183. package/dist/chunks/chunk-6JBWHR6T.js +0 -5
  184. package/dist/chunks/chunk-FKCWOASO.js +0 -49
  185. package/dist/chunks/chunk-FOEUDMME.js +0 -2678
  186. package/dist/chunks/chunk-ICZEOMPO.js +0 -2
  187. package/dist/chunks/chunk-JO7GRBOG.js +0 -2
  188. package/dist/chunks/chunk-KUKOZJIR.js +0 -2
  189. package/dist/chunks/chunk-M7PBDRKC.js +0 -2
  190. package/dist/chunks/chunk-P653BXMY.js +0 -3
  191. package/dist/chunks/chunk-PMZH2TKS.js +0 -4
  192. package/dist/chunks/chunk-W4IL6TWB.js +0 -186
  193. package/dist/chunks/chunk-WVNN3RB2.js +0 -2
  194. package/dist/chunks/cli-5QR7QNQJ.js +0 -2
  195. package/dist/chunks/core-commands-J2SJM5I5.js +0 -2
  196. package/dist/chunks/hosted-harness-runtime-PAYMAXH7.js +0 -2
  197. package/dist/chunks/hosted-profile-compiler-KQREWJA5.js +0 -2
  198. package/dist/chunks/hosted-profile-evaluation-preparation-OR4OLYEX.js +0 -3
  199. package/dist/chunks/import-YHSX6SBZ.js +0 -4
  200. package/dist/chunks/src-TNWF3IC5.js +0 -329
  201. package/dist/web/assets/App-CdDQ-lXE.css +0 -1
  202. package/dist/web/assets/App-D2f8_mGk.js +0 -235
  203. package/dist/web/assets/AppsView-CzbB5pXp.css +0 -1
  204. package/dist/web/assets/AppsView-DwK1UBJP.js +0 -1
  205. package/dist/web/assets/BrowserSidebar-Cj9VnkgU.js +0 -1
  206. package/dist/web/assets/LabsRoute-hHwZNbqN.js +0 -99
  207. package/dist/web/assets/MainPane-DJcd4tPk.js +0 -19
  208. package/dist/web/assets/ScheduledWorkPage-qX12p4B0.js +0 -1
  209. package/dist/web/assets/SettingsView-0KMs-r2I.js +0 -9
  210. package/dist/web/assets/SettingsView-CVsuQeCZ.css +0 -1
  211. package/dist/web/assets/index-1cMIFBxZ.css +0 -1
  212. package/dist/web/assets/useLocalAgentSchedules-BHxWmOeC.js +0 -1
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{Fa as j}from"./chunk-XDMUD4FW.js";import{n as _,o as k,r as U,u as L,w as O,x as V}from"./chunk-WV2APYWG.js";import{Y as C,h as b,i as x}from"./chunk-PJM2G7SG.js";import{i as M,m as p,n as T}from"./chunk-NNF6KCHD.js";import{b as v}from"./chunk-ES2ISFJC.js";import{a as I}from"./chunk-FTQLQJQV.js";var y=v.object({sessionId:v.string().trim().min(1).max(500),turnId:v.string().trim().min(1).max(500)}).strict();async function Q(e){L(e.manifest,e.taskset,e.catalog),V(e.taskset,e.metricSource);let o=e.manifest.profileEvaluation,t=e.catalog.definitions.find(a=>a.id===o.definitionId),d=new Map(e.taskset.tasks.map(a=>[a.id,a])),h=[],r=[];for(let a of e.manifest.population){e.signal?.throwIfAborted();let l=d.get(a.taskId),s=await e.loadCompletedMember?.(a)??null;if(s){let{receipt:m,grade:u}=s,{contentHash:H,...g}=b.parse(u);if(!k(m)||H!==p(g)||m.id!==a.receiptId||m.runManifest.id!==e.manifest.id||m.runManifest.contentHash!==e.manifest.contentHash||m.taskId!==a.taskId||m.seed!==a.seed||m.graderEvidenceRefs.length!==1||m.graderEvidenceRefs[0]?.contentHash!==H||u.taskHash!==p(l)||u.graderSetHash!==p(e.taskset.graders)||m.metadata.score!==u.score||m.metadata.passed!==u.passed)throw new Error(`Retained Profile evaluation member ${a.receiptId} differs from its admitted evidence.`);r.push(u),h.push(m);continue}let n=await e.execute({task:C(l),seed:a.seed,source:o,...e.signal?{signal:e.signal}:{}});e.signal?.throwIfAborted();let c=await x({task:l,evidence:n.evidence,graders:e.taskset.graders,...e.modelJudge?{modelJudge:e.modelJudge}:{},...e.customVerifier?{customVerifier:e.customVerifier}:{},...e.signal?{signal:e.signal}:{}}),E=M.parse(await e.saveGrade(c));if(E.contentHash!==c.contentHash)throw new Error("Stored Profile evaluation grade differs from its graded evidence.");let w=n.failureClass??c.failureClass,P=_({schemaVersion:"openpond.attemptReceipt.v1",id:a.receiptId,runManifest:{id:e.manifest.id,contentHash:e.manifest.contentHash},taskId:a.taskId,seed:a.seed,terminal:n.terminal,failureClass:w,outputHash:n.evidence.infrastructureError?null:p(n.evidence.output),traceHash:n.traceHash,artifactRefs:n.artifactRefs,graderEvidenceRefs:[E],startedAt:n.startedAt,completedAt:n.completedAt,latencyMs:n.latencyMs,costUsd:n.costUsd,metadata:{gradingRole:"evaluation",score:c.score,passed:c.passed,rewardEligible:c.rewardEligible,sourceRevision:o.sourceRevision,definitionHash:o.definitionHash,environmentHash:o.environmentHash,...n.retainedEvidenceRef?{retainedEvidenceRef:y.parse(n.retainedEvidenceRef)}:{}}});await e.saveReceipt(P),r.push(c),h.push(P)}let i=await O({manifest:e.manifest,taskset:e.taskset,receipts:h,...e.metricSource!==void 0?{source:e.metricSource}:{},...e.signal?{signal:e.signal}:{}},e.metricExecutor),R=r.filter(a=>a.passed).length/r.length;return{receipts:h,grades:r,metric:i,passRate:R,passed:R>=t.criterion.minimumPassRate&&(!t.criterion.requireComplete||h.every(a=>a.terminal))}}I(Q,"executeProfileEvaluationRun");function q(e,o){if(o==="agent_action"){let t=e.find(d=>d.name==="workspace_action_result"&&d.action==="profile_workflow_action")?.output;if(typeof t!="string")throw new Error("Profile Agent action evaluation did not produce a released action result.");return t}return e.filter(t=>t.name==="assistant.delta"&&typeof t.output=="string").map(t=>t.output??"").join("")}I(q,"profileEvaluationOutput");async function z(e){let{store:o,manifest:t,receipt:d}=e;if(!d.metadata.retainedEvidenceRef)return null;let h=y.parse(d.metadata.retainedEvidenceRef),[r,i]=await Promise.all([o.getSession(h.sessionId),o.getTurn(h.turnId)]),R=r?.metadata?.profileEvaluationRun,a=t.profileEvaluation;if(!r||!i||i.sessionId!==r.id||!a||!r.currentProfile||p(r.currentProfile)!==p(e.profileRef)||p(R)!==p({id:t.id,contentHash:t.contentHash})||r.metadata?.taskId!==d.taskId||r.metadata?.seed!==d.seed||!i.completedAt||i.completedAt!==d.completedAt||i.startedAt!==d.startedAt||!i.harnessSnapshot||i.harnessSnapshot.harnessRelease.id!==a.harnessRelease.id||i.harnessSnapshot.harnessRelease.contentHash!==a.harnessRelease.contentHash||t.policy.kind!=="model"||!i.modelRef||i.modelRef.providerId!==t.policy.model.provider||i.modelRef.modelId!==t.policy.model.model)throw new Error("Retained Profile policy turn differs from its admitted case.");let l=await o.runtimeEventsForTurn(i.id);if(l.some(u=>u.turnId!==i.id)||p(l)!==d.traceHash)throw new Error("Retained Profile policy trace differs from its immutable receipt.");let s=q(l,a.target.kind);if(d.outputHash!==null&&p({text:s})!==d.outputHash)throw new Error("Retained Profile output differs from its immutable receipt.");let n=d.artifactRefs.flatMap(u=>{let H=l.filter(f=>(f.action==="work_output_save"||f.action==="sandbox_save_output")&&f.status==="completed").flatMap(f=>{let $=f.data&&typeof f.data=="object"?f.data:{},A=j.safeParse($.outputRef);return A.success?[A.data]:[]}).filter(f=>f.sourceTaskId===r.id&&f.sourceTurnId===i.id&&`${r.id}/${f.id}/${f.revision}/${f.title}`===u.id&&f.sha256===u.contentHash&&f.sizeBytes===u.sizeBytes&&f.contentType===u.mediaType);if(H.length!==1)throw new Error("The case output has no unique sealed saved-file identity.");let g=H[0];if(g.location.kind!=="managed")return[];let S=`/api/work/outputs/${encodeURIComponent(g.location.fileId)}`;if(g.location.downloadPath!==S)throw new Error("The saved output has no canonical managed download route.");return[{id:g.id,title:g.title,revision:g.revision,contentType:g.contentType,sizeBytes:g.sizeBytes,sha256:g.sha256,downloadPath:S}]}),c=await o.listModelUsageRecords({sessionId:r.id,turnId:i.id,limit:1e4}),E=e.eventAfterId?l.findIndex(u=>u.id===e.eventAfterId):-1;if(e.eventAfterId&&E<0)throw new Error("Profile trace cursor is unavailable in this case.");let w=E+1,P=Math.max(1,Math.min(250,e.eventLimit??100)),m=l.slice(w,w+P);return{ref:h,prompt:i.prompt,output:d.outputHash===null?null:{text:s},partialOutput:d.outputHash===null&&s?{text:s}:null,error:i.error,events:m,eventCount:l.length,nextEventCursor:w+m.length<l.length?m.at(-1).id:null,files:n,usage:c,usageCoverage:c.length===1e4?"partial":"complete"}}I(z,"readProfileEvaluationPolicyEvidence");var ne=v.object({runId:v.string().trim().min(1).max(240),receiptId:v.string().trim().min(1).max(500).optional(),eventAfterId:v.string().trim().min(1).max(500).optional(),eventLimit:v.number().int().min(1).max(250).optional(),manifest:U.optional()}).strict().refine(e=>e.receiptId||!e.eventAfterId&&!e.eventLimit,"Select a case before requesting its trace page.").refine(e=>!e.manifest||e.receiptId,"Interrupted-run inspection requires one exact case.");async function de(e){let o=await e.store.getProfileEvaluationRun(e.runId);if(o&&p(o.profileRef)!==p(e.profileRef))throw new Error("Profile evaluation run is unavailable in the selected Profile.");let t=o?.manifest??e.manifest;if(!t||!o&&!e.receiptId)throw new Error("Profile evaluation run is unavailable in the selected Profile.");if(o){if(e.manifest&&e.manifest.contentHash!==o.manifest.contentHash)throw new Error("Profile evaluation run differs from its pinned manifest.")}else if(T(t,"Interrupted Profile evaluation manifest"),t.id!==e.runId||t.profileEvaluation?.profileId!==e.profileRef.profileId||e.profileRef.source==="openpond_git"&&t.metadata.profileRepositoryId!==e.profileRef.repositoryId)throw new Error("Profile evaluation run is unavailable in the selected Profile.");let d=t.population.map((r,i)=>({member:r,index:i})).filter(({member:r})=>!e.receiptId||r.receiptId===e.receiptId);if(e.receiptId&&d.length!==1)throw new Error("Profile evaluation case is unavailable in the selected run.");let h=await Promise.all(d.map(async({member:r,index:i})=>{let R=o?null:await e.store.getProfileEvaluationReceipt(r.receiptId),a=o?.receiptRefs[i]??(R?{id:R.id,contentHash:R.contentHash}:null),l=o?.gradeRefs[i]??R?.graderEvidenceRefs[0];if(!a||!l)throw new Error("Profile evaluation run has incomplete case evidence.");let[s,n]=await Promise.all([e.store.getProfileEvaluationReceipt(a.id),e.store.getProfileEvaluationGrade(l.contentHash)]);if(!s||!o&&!k(s)||s.contentHash!==a.contentHash||s.id!==r.receiptId||s.taskId!==r.taskId||s.seed!==r.seed||s.runManifest.id!==t.id||s.runManifest.contentHash!==t.contentHash||!n||n.contentHash!==l.contentHash||!s.graderEvidenceRefs.some(c=>c.id===l.id&&c.contentHash===l.contentHash))throw new Error("Profile evaluation case evidence differs from its retained run.");return{taskId:r.taskId,seed:r.seed,receiptId:s.id,receiptHash:s.contentHash,traceHash:s.traceHash,outputHash:s.outputHash,score:n.score,passed:n.passed,gradingStatus:n.gradingStatus,failureClass:n.failureClass,artifactCount:s.artifactRefs.length,latencyMs:s.latencyMs,costUsd:s.costUsd,terminal:s.terminal,feedback:n.components.map(c=>({graderId:c.graderId,graderVersion:c.graderVersion,score:c.score,passed:c.passed,feedback:c.feedback})),...e.receiptId?{receipt:s,evidence:await z({store:e.store,profileRef:e.profileRef,manifest:t,receipt:s,eventAfterId:e.eventAfterId,eventLimit:e.eventLimit})}:{}}}));return{runId:t.id,sourceRevision:t.profileEvaluation?.sourceRevision??null,cases:h}}I(de,"inspectProfileEvaluationRun");export{Q as a,q as b,ne as c,de as d};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as Et,b as Se}from"./chunk-L3KS6MOV.js";import{w as vt}from"./chunk-HK3WGUKK.js";import{b as j,d as we,e as Pe}from"./chunk-Z3D4C7BG.js";import{E as Ne,F as je,P as It,Q as Ct,_ as De,f as ye}from"./chunk-UWO34HP6.js";import{f as L,h as ge,p as Le,r as bt}from"./chunk-H7IWJN7L.js";import{a}from"./chunk-FTQLQJQV.js";import{createRequire as Po}from"node:module";import{createHash as po,randomUUID as ho}from"node:crypto";import{spawn as Pr}from"node:child_process";import{existsSync as U}from"node:fs";import{cp as Sr,mkdir as F,readFile as So,readdir as Ao,rename as at,rm as it,symlink as Ar,writeFile as ie}from"node:fs/promises";import d from"node:path";import Sn from"node:path";var Ae="default",Rt=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}a(W,"hasOwn");function z(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}a(z,"normalizeHandle");function _(e){if(typeof e!="string")return null;let t=e.trim();return t?t.replace(/\/$/,""):null}a(_,"normalizeBaseUrl");function Bt(e){let t=z(e);if(!t)throw new Error("profile handle must be non-empty");return t}a(Bt,"requireHandle");function An(e){if(typeof e!="string")throw new Error("apiKey must be a non-empty string");let t=e.trim();if(!t)throw new Error("apiKey must be a non-empty string");return t}a(An,"requireApiKey");function de(e,t){let o=z(e),n=z(t);return!!(o&&n&&o.toLowerCase()===n.toLowerCase())}a(de,"handleEquals");function qe(e,t,o){let n=_(o);return e.findIndex(r=>de(r.handle,t)?n?_(r.baseUrl)===n:!0:!1)}a(qe,"findAccountIndex");function ne(e){let t=z(e.handle)??Ae,o=_(e.baseUrl);return o?{handle:t,baseUrl:o}:{handle:t}}a(ne,"selectorFromAccount");function oe(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n=_(typeof t.baseUrl=="string"?t.baseUrl:void 0);return n?{handle:o,baseUrl:n}:{handle:o}}a(oe,"sanitizeActiveProfile");function Fe(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o=typeof t.repoPath=="string"?t.repoPath.trim():"",n=typeof t.profile=="string"&&t.profile.trim()?t.profile.trim():"default";if(!o)return;let r={repoPath:o,profile:n,mode:"local"};if(t.lastCheck&&typeof t.lastCheck=="object"&&!Array.isArray(t.lastCheck)){let s=t.lastCheck,i=s.command,c=s.status,l=s.checkedAt;(i==="inspect"||i==="build"||i==="validate"||i==="eval"||i==="run")&&(c==="passed"||c==="failed")&&typeof l=="string"&&(r.lastCheck={command:i,status:c,checkedAt:l,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(t.lastPush&&typeof t.lastPush=="object"&&!Array.isArray(t.lastPush)){let s=t.lastPush,i=s.status,c=s.pushedAt;(i==="pushed"||i==="failed")&&typeof c=="string"&&(r.lastPush={status:i,pushedAt:c,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},..._t(s.hostedSourceMaterialization)?{hostedSourceMaterialization:_t(s.hostedSourceMaterialization)}:{},...$t(s.hostedSourceCheck)?{hostedSourceCheck:$t(s.hostedSourceCheck)}:{},...Ot(s.hostedPublish)?{hostedPublish:Ot(s.hostedPublish)}:{},...Tt(s.hostedRun)?{hostedRun:Tt(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(t.profiles)){let s=t.profiles.flatMap(i=>{let c=Fe(i);if(!c)return[];let l=i,u=l.source==="github"||l.source==="openpond_git"?l.source:"local",p=typeof l.repositoryId=="string"&&l.repositoryId.trim()?l.repositoryId.trim():Sn.resolve(c.repoPath);return[{source:u,repositoryId:p,repoPath:c.repoPath,profile:c.profile,...c.lastCheck?{lastCheck:c.lastCheck}:{},...c.lastPush?{lastPush:c.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}a(Fe,"sanitizeLocalOpenPondProfile");function _t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runtimeAgentId"),...m(t,"projectId"),...m(t,"sourceRoot"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"manifestSyncedAt"),...Ut(t,"fileCount"),...Ut(t,"totalBytes"),...m(t,"generatedManifestPath"),...He(t,"synthesizedOpenPondYaml"),...m(t,"uploadMetadataPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...m(t,"materializedAt"),...m(t,"error")}:null}a(_t,"sanitizeHostedMaterializationStatus");function $t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"deployPlanStatus"),...He(t,"canRun"),...He(t,"canDeploy"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...O(t,"requiredChecks"),...O(t,"evalNames"),...O(t,"blockedReasons"),...O(t,"staleReasons"),...m(t,"runtimeId"),...m(t,"sandboxId"),...O(t,"traceArtifactRefs"),...O(t,"evalResultArtifactRefs"),...O(t,"validatorArtifactRefs"),...m(t,"checkedAt"),...m(t,"error")}:null}a($t,"sanitizeHostedSourceCheckStatus");function Ot(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"snapshotId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"buildStatus"),...m(t,"validationStatus"),...m(t,"evalStatus"),...m(t,"publishedAt"),...m(t,"error")}:null}a(Ot,"sanitizeHostedPublishStatus");function Tt(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runId"),...m(t,"runtimeId"),...m(t,"sandboxId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"setupGateStatus"),...O(t,"setupRequirementRefs"),...O(t,"artifactRefs"),...O(t,"traceArtifactRefs"),...O(t,"evalArtifactRefs"),...m(t,"startedAt"),...m(t,"completedAt"),...m(t,"error")}:null}a(Tt,"sanitizeHostedRunSummary");function m(e,t){let o=e[t];return typeof o=="string"||o===null?{[t]:o}:{}}a(m,"nullableStringProp");function He(e,t){let o=e[t];return typeof o=="boolean"||o===null?{[t]:o}:{}}a(He,"nullableBooleanProp");function Ut(e,t){let o=e[t];return typeof o=="number"||o===null?{[t]:o}:{}}a(Ut,"nullableNumberProp");function O(e,t){let o=e[t];if(!Array.isArray(o))return{};let n=o.filter(r=>typeof r=="string");return{[t]:n}}a(O,"stringArrayProp");function xe(e){return typeof e=="string"&&e.trim()?e.trim():null}a(xe,"stringField");function Lt(e,t){if(!de(e.handle,t.handle))return!1;let o=_(t.baseUrl);return o?_(e.baseUrl)===o:!_(e.baseUrl)}a(Lt,"accountMatchesSelector");function Ge(e,t,o={}){let n=_(t.baseUrl);if(n)return qe(e,t.handle,n);let r=e.findIndex(i=>Lt(i,t));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>de(i.handle,t.handle));if(s.length>1&&o.requireUnambiguous)throw new Error(`multiple profiles found for ${t.handle}; pass --base-url to select one`);return s[0]?.index??-1}a(Ge,"findAccountIndexForSelector");function xn(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o={};return typeof t.token=="string"&&(o.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(o.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(o.conversationId=t.conversationId),Object.keys(o).length>0?o:void 0}a(xn,"sanitizeSession");function kn(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n={handle:o};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl),typeof t.environment=="string"&&(n.environment=t.environment);let r=xn(t.session);return r&&(n.session=r),n}a(kn,"sanitizeAccount");function bn(e){let t={};return typeof e.token=="string"&&(t.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(t.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(t.conversationId=e.conversationId),Object.keys(t).length>0?t:void 0}a(bn,"extractLegacySession");function In(e,t){let o={handle:t};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl);let n=bn(e);return n&&(o.session=n),o}a(In,"extractLegacyAccount");function Nt(e){let t={};typeof e.lspEnabled=="boolean"&&(t.lspEnabled=e.lspEnabled),(e.executionMode==="local"||e.executionMode==="hosted")&&(t.executionMode=e.executionMode),(e.mode==="general"||e.mode==="builder")&&(t.mode=e.mode);let o=Fe(e.openpondProfile);o&&(t.openpondProfile=o);let n=[],r=Array.isArray(e.accounts)?e.accounts:[];for(let l of r){let u=kn(l);u&&qe(n,u.handle,u.baseUrl)===-1&&n.push(u)}if(n.length===0){let l=oe(e.activeProfile)?.handle||Ae;n.push(In(e,l))}let s=oe(e.activeProfile),i=s?Ge(n,s):-1,c=n[i===-1?0:i];return t.accounts=n,t.activeProfile=ne(c),t}a(Nt,"normalizeGlobalConfig");function Cn(e,t,o){let n=e.accounts??[],r=_(o??process.env.OPENPOND_BASE_URL),s=z(t);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let i=z(process.env.OPENPOND_ACCOUNT);if(i)return r?{handle:i,baseUrl:r}:{handle:i};let c=oe(e.activeProfile);return c?r?{handle:c.handle,baseUrl:r}:c:n[0]?ne(n[0]):{handle:Ae}}a(Cn,"resolveRequestedProfile");function jt(e,t,o){let n=_(o);if(n){let s=qe(e,t,n);if(s!==-1)return e[s]}else{let s=e.filter(i=>de(i.handle,t));if(s.length>1)throw new Error(`multiple profiles found for ${t}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:t};return n&&(r.baseUrl=n),e.push(r),r}a(jt,"ensureAccount");function Mt(e){e.session&&Object.keys(e.session).length===0&&delete e.session}a(Mt,"cleanupAccount");function vn(e,t,o,n){let r=o===null||o===void 0&&n.undefinedDeletes;switch(t){case"apiKey":{if(r){delete e.apiKey;return}typeof o=="string"&&(e.apiKey=o);return}case"baseUrl":{if(r){delete e.baseUrl;return}typeof o=="string"&&(e.baseUrl=o);return}case"apiBaseUrl":{if(r){delete e.apiBaseUrl;return}typeof o=="string"&&(e.apiBaseUrl=o);return}case"chatApiBaseUrl":{if(r){delete e.chatApiBaseUrl;return}typeof o=="string"&&(e.chatApiBaseUrl=o);return}case"token":case"appId":case"conversationId":{if(e.session||(e.session={}),r){delete e.session[t],Mt(e);return}(typeof o=="string"||o===null)&&(e.session[t]=o),Mt(e);return}}}a(vn,"applyScopedKey");function En(e,t,o){if(!Rt.some(l=>W(t,l)))return!1;let r=e.accounts??[],s=oe(t.activeProfile)??Cn(e),i=_(W(t,"baseUrl")?t.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),c=jt(r,s.handle,i);for(let l of Rt)W(t,l)&&vn(c,l,t[l],o);return e.accounts=r,e.activeProfile=ne(c),!0}a(En,"applyAccountPatch");function Rn(e,t){if(W(t,"lspEnabled")&&(typeof t.lspEnabled=="boolean"?e.lspEnabled=t.lspEnabled:t.lspEnabled===null&&delete e.lspEnabled),W(t,"executionMode")&&(t.executionMode==="local"||t.executionMode==="hosted"?e.executionMode=t.executionMode:t.executionMode===null&&delete e.executionMode),W(t,"mode")&&(t.mode==="general"||t.mode==="builder"?e.mode=t.mode:t.mode===null&&delete e.mode),W(t,"activeProfile")){let o=oe(t.activeProfile);if(o){let n=Ge(e.accounts??[],o);e.activeProfile=n===-1?o:ne((e.accounts??[])[n])}else t.activeProfile===null&&delete e.activeProfile}if(W(t,"openpondProfile")){let o=Fe(t.openpondProfile);o?e.openpondProfile=o:t.openpondProfile===null&&delete e.openpondProfile}}a(Rn,"applyTopLevelPatch");async function ke(e){let t=L();return await De(t),await Ct(t,o=>{let n=Nt(o);return e(n),n})}a(ke,"updateGlobalConfig");async function T(){let e=L();return await De(e),Nt(await It(e))}a(T,"loadGlobalConfig");async function ze(){let e=await T(),t=oe(e.activeProfile);return(e.accounts??[]).map(o=>{let n=z(o.handle)??Ae;return{handle:n,baseUrl:_(o.baseUrl),apiBaseUrl:_(o.apiBaseUrl),chatApiBaseUrl:_(o.chatApiBaseUrl),environment:o.environment?.trim()||null,isActive:!!(t&&Lt({...o,handle:n},t)),hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!o.session?.token?.trim(),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null}})}a(ze,"listConfiguredProfiles");async function _n(e,t={}){let o=Bt(e),n=_(t.baseUrl),r=-1;await ke(i=>{let c=i.accounts??[];if(r=Ge(c,n?{handle:o,baseUrl:n}:{handle:o},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${o}`);i.activeProfile=ne(c[r])});let s=await ze();return s.find(i=>i.isActive)??s[r]}a(_n,"setActiveProfile");async function $n(e){let t=Bt(e.handle),o=An(e.apiKey),n=_(e.baseUrl),r=_(e.apiBaseUrl),s=_(e.chatApiBaseUrl),i={handle:t};await ke(u=>{let p=u.accounts??[],h=jt(p,t,n);h.apiKey=o,n&&(h.baseUrl=n),r?h.apiBaseUrl=r:e.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:e.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,e.environment===null?delete h.environment:typeof e.environment=="string"&&e.environment.trim()&&(h.environment=e.environment.trim()),u.accounts=p,i=ne(h),e.setActive!==!1&&(u.activeProfile=i)});let l=(await ze()).find(u=>de(u.handle,i.handle)?n?_(u.baseUrl)===n:!0:!1);if(!l)throw new Error(`failed to save profile: ${t}`);return l}a($n,"saveProfileApiKey");async function H(e){await ke(t=>{Rn(t,e),En(t,e,{undefinedDeletes:!1})})}a(H,"saveGlobalConfig");function Je(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}a(Je,"emptyProfileCatalogState");function Ke(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}a(Ke,"emptyProfileSkillCatalogState");function We(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}a(We,"emptyProfileSetupGate");function be(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}a(be,"emptyProfileDiffSummary");function Ve(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}a(Ve,"emptyProfileSummary");import{existsSync as re}from"node:fs";import{readFile as On,stat as Tn}from"node:fs/promises";import Ie from"node:path";var Dt=".openpond/agent-manifest.json",Ht=".openpond/action-registry.json",Un=".openpond/source-upload-metadata.json",Mn=".openpond/agent-package-origin.json";async function Gt(e){return Jt({agentId:"default",sourcePath:e,preferred:!0})}a(Gt,"loadProfileActionCatalog");async function zt(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!1,error:null},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(c=>c.preferred),...e.filter(c=>!c.preferred)],o=await Promise.all(t.map(Jt)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let u=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=u===l.id?l:{...l,id:u};n.set(u,p),r.push(p)}let s=Ln(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:s,manifestPath:o.find(c=>c.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:o.find(c=>c.catalog.registryPath)?.catalog.registryPath??null,stale:o.some(c=>c.catalog.stale),error:i.length>0?i.join("; "):null},actionCatalog:r,sourceSetupRequirements:o.flatMap(c=>c.sourceSetupRequirements)}}a(zt,"loadProfileActionCatalogForSources");async function Jt(e){let t=e.sourcePath,o=Ie.join(t,Dt),n=Ie.join(t,Ht),r=Ie.join(t,Un),s=Ie.join(t,Mn);try{let i=await Ce(o),c=await Ce(n),l=await Ce(r),u=$(await Ce(s)),p=$($(i)?.inputSchemas),h=Ft($(l)?.setupRequirements)??[],k=Nn(h),C=new Map;for(let f of[...Ye($(i)?.actionCatalog),...Ye($(c)?.actions),...Ye($(i)?.actions)]){let y=b(f.id)??b(f.name);if(!y)continue;let x=C.get(y),v=jn({sourceRequirementsByAction:k,actionId:y,actionName:b(f.name)}),B=Dn(Ft(f.setupRequirements)??x?.setupRequirements??[],v),K={id:y,agentId:e.agentId,sourcePath:t,sourceActionId:y,name:b(f.name)??x?.name??y,label:b(f.label)??x?.label??zn(y),description:b(f.description)??x?.description??null,visibility:b(f.visibility)??x?.visibility??"default",inputSchema:Gn(f.inputSchema,p)??x?.inputSchema??null,outputSchema:Kt(f.outputSchema)??x?.outputSchema??null,approvalPolicy:$(f.approvalPolicy)??x?.approvalPolicy??null,artifactPolicy:$(f.artifactPolicy)??x?.artifactPolicy??null,setupRequirements:B,mcp:$(f.mcp)??x?.mcp??null,schedulePolicy:$(f.schedulePolicy)??x?.schedulePolicy??null,trace:Bn($(f.trace)??x?.trace??null,u),implementation:$(f.implementation)??x?.implementation??null,invokesModel:typeof f.invokesModel=="boolean"?f.invokesModel:x?.invokesModel};C.set(y,K)}let P=Array.from(C.values()).filter(f=>f.visibility!=="internal"&&f.visibility!=="debug"),g=[...i?[]:[Dt],...c?[]:[Ht]],S=await Fn([o,n]);return{catalog:{actionCount:P.length,generatedAt:S,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:g.length>0,error:g.length>0?qn(e,g):null},actionCatalog:P,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}a(Jt,"loadProfileActionCatalogSource");function Bn(e,t){if(!t)return e;let o=b(t.versionId),n=b(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:qt(t.validationReceiptIds),evalReceiptIds:qt(t.evalReceiptIds)}}a(Bn,"mergeAgentPackageTrace");function qt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(qt,"stringArray");function Ln(e){let t=0;for(let o of e){if(!o)continue;let n=Date.parse(o);Number.isFinite(n)&&(t=Math.max(t,n))}return t>0?new Date(t).toISOString():null}a(Ln,"latestIso");function Nn(e){let t=new Map;for(let o of e){let n=[b(o.actionId),b(o.sourceActionId),b(o.actionName)].filter(r=>!!r);for(let r of n){let s=t.get(r)??[];s.push(o),t.set(r,s)}}return t}a(Nn,"sourceSetupRequirementsByAction");function jn(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(o=>({...o,source:"source_upload_metadata"}))}a(jn,"setupRequirementsForActionSource");function Dn(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let s=Hn(r);n.has(s)||(n.add(s),o.push(r))}return o}a(Dn,"mergeSetupRequirements");function Hn(e){return[b(e.actionId)??b(e.sourceActionId)??b(e.actionName)??"",b(e.kind)??b(e.type)??"",b(e.name)??b(e.key)??b(e.provider)??b(e.tool)??b(e.command)??b(e.packageName)??b(e.path)??b(e.repo)??b(e.url)??b(e.id)??""].join(":")}a(Hn,"setupRequirementIdentity");function qn(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}a(qn,"missingSourceArtifactsMessage");async function Ce(e){return re(e)?JSON.parse(await On(e,"utf8")):null}a(Ce,"readJsonIfExists");async function Fn(e){let t=0;for(let o of e){if(!re(o))continue;let n=await Tn(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}a(Fn,"latestMtime");function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a($,"asRecord");function Ye(e){return Array.isArray(e)?e.filter(t=>!!$(t)):[]}a(Ye,"records");function Ft(e){return Array.isArray(e)?e.filter(t=>!!$(t)):null}a(Ft,"recordArray");function b(e){return typeof e=="string"&&e.trim()?e.trim():null}a(b,"text");function Kt(e){return b(e)??$(e)}a(Kt,"schemaValue");function Gn(e,t){let o=Kt(e);return typeof o!="string"?o:$(t?.[o])??o}a(Gn,"resolvedSchemaValue");function zn(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}a(zn,"titleFromActionId");var ve=class extends Error{static{a(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,o){let n=o.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,n.length?`Missing setup: ${n.join(", ")}`:""].filter(Boolean).join(`
2
+ import{a as Et,b as Se}from"./chunk-L3KS6MOV.js";import{w as vt}from"./chunk-IKWDL3RB.js";import{b as j,d as we,e as Pe}from"./chunk-Z3D4C7BG.js";import{E as Ne,F as je,P as It,Q as Ct,_ as De,f as ye}from"./chunk-DALJMSJG.js";import{f as L,h as ge,p as Le,r as bt}from"./chunk-H7IWJN7L.js";import{a}from"./chunk-FTQLQJQV.js";import{createRequire as Po}from"node:module";import{createHash as po,randomUUID as ho}from"node:crypto";import{spawn as Pr}from"node:child_process";import{existsSync as U}from"node:fs";import{cp as Sr,mkdir as F,readFile as So,readdir as Ao,rename as at,rm as it,symlink as Ar,writeFile as ie}from"node:fs/promises";import d from"node:path";import Sn from"node:path";var Ae="default",Rt=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}a(W,"hasOwn");function z(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}a(z,"normalizeHandle");function _(e){if(typeof e!="string")return null;let t=e.trim();return t?t.replace(/\/$/,""):null}a(_,"normalizeBaseUrl");function Bt(e){let t=z(e);if(!t)throw new Error("profile handle must be non-empty");return t}a(Bt,"requireHandle");function An(e){if(typeof e!="string")throw new Error("apiKey must be a non-empty string");let t=e.trim();if(!t)throw new Error("apiKey must be a non-empty string");return t}a(An,"requireApiKey");function de(e,t){let o=z(e),n=z(t);return!!(o&&n&&o.toLowerCase()===n.toLowerCase())}a(de,"handleEquals");function qe(e,t,o){let n=_(o);return e.findIndex(r=>de(r.handle,t)?n?_(r.baseUrl)===n:!0:!1)}a(qe,"findAccountIndex");function ne(e){let t=z(e.handle)??Ae,o=_(e.baseUrl);return o?{handle:t,baseUrl:o}:{handle:t}}a(ne,"selectorFromAccount");function oe(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n=_(typeof t.baseUrl=="string"?t.baseUrl:void 0);return n?{handle:o,baseUrl:n}:{handle:o}}a(oe,"sanitizeActiveProfile");function Fe(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o=typeof t.repoPath=="string"?t.repoPath.trim():"",n=typeof t.profile=="string"&&t.profile.trim()?t.profile.trim():"default";if(!o)return;let r={repoPath:o,profile:n,mode:"local"};if(t.lastCheck&&typeof t.lastCheck=="object"&&!Array.isArray(t.lastCheck)){let s=t.lastCheck,i=s.command,c=s.status,l=s.checkedAt;(i==="inspect"||i==="build"||i==="validate"||i==="eval"||i==="run")&&(c==="passed"||c==="failed")&&typeof l=="string"&&(r.lastCheck={command:i,status:c,checkedAt:l,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(t.lastPush&&typeof t.lastPush=="object"&&!Array.isArray(t.lastPush)){let s=t.lastPush,i=s.status,c=s.pushedAt;(i==="pushed"||i==="failed")&&typeof c=="string"&&(r.lastPush={status:i,pushedAt:c,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},..._t(s.hostedSourceMaterialization)?{hostedSourceMaterialization:_t(s.hostedSourceMaterialization)}:{},...$t(s.hostedSourceCheck)?{hostedSourceCheck:$t(s.hostedSourceCheck)}:{},...Ot(s.hostedPublish)?{hostedPublish:Ot(s.hostedPublish)}:{},...Tt(s.hostedRun)?{hostedRun:Tt(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(t.profiles)){let s=t.profiles.flatMap(i=>{let c=Fe(i);if(!c)return[];let l=i,u=l.source==="github"||l.source==="openpond_git"?l.source:"local",p=typeof l.repositoryId=="string"&&l.repositoryId.trim()?l.repositoryId.trim():Sn.resolve(c.repoPath);return[{source:u,repositoryId:p,repoPath:c.repoPath,profile:c.profile,...c.lastCheck?{lastCheck:c.lastCheck}:{},...c.lastPush?{lastPush:c.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}a(Fe,"sanitizeLocalOpenPondProfile");function _t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runtimeAgentId"),...m(t,"projectId"),...m(t,"sourceRoot"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"manifestSyncedAt"),...Ut(t,"fileCount"),...Ut(t,"totalBytes"),...m(t,"generatedManifestPath"),...He(t,"synthesizedOpenPondYaml"),...m(t,"uploadMetadataPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...m(t,"materializedAt"),...m(t,"error")}:null}a(_t,"sanitizeHostedMaterializationStatus");function $t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"deployPlanStatus"),...He(t,"canRun"),...He(t,"canDeploy"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...O(t,"requiredChecks"),...O(t,"evalNames"),...O(t,"blockedReasons"),...O(t,"staleReasons"),...m(t,"runtimeId"),...m(t,"sandboxId"),...O(t,"traceArtifactRefs"),...O(t,"evalResultArtifactRefs"),...O(t,"validatorArtifactRefs"),...m(t,"checkedAt"),...m(t,"error")}:null}a($t,"sanitizeHostedSourceCheckStatus");function Ot(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"snapshotId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"buildStatus"),...m(t,"validationStatus"),...m(t,"evalStatus"),...m(t,"publishedAt"),...m(t,"error")}:null}a(Ot,"sanitizeHostedPublishStatus");function Tt(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runId"),...m(t,"runtimeId"),...m(t,"sandboxId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"setupGateStatus"),...O(t,"setupRequirementRefs"),...O(t,"artifactRefs"),...O(t,"traceArtifactRefs"),...O(t,"evalArtifactRefs"),...m(t,"startedAt"),...m(t,"completedAt"),...m(t,"error")}:null}a(Tt,"sanitizeHostedRunSummary");function m(e,t){let o=e[t];return typeof o=="string"||o===null?{[t]:o}:{}}a(m,"nullableStringProp");function He(e,t){let o=e[t];return typeof o=="boolean"||o===null?{[t]:o}:{}}a(He,"nullableBooleanProp");function Ut(e,t){let o=e[t];return typeof o=="number"||o===null?{[t]:o}:{}}a(Ut,"nullableNumberProp");function O(e,t){let o=e[t];if(!Array.isArray(o))return{};let n=o.filter(r=>typeof r=="string");return{[t]:n}}a(O,"stringArrayProp");function xe(e){return typeof e=="string"&&e.trim()?e.trim():null}a(xe,"stringField");function Lt(e,t){if(!de(e.handle,t.handle))return!1;let o=_(t.baseUrl);return o?_(e.baseUrl)===o:!_(e.baseUrl)}a(Lt,"accountMatchesSelector");function Ge(e,t,o={}){let n=_(t.baseUrl);if(n)return qe(e,t.handle,n);let r=e.findIndex(i=>Lt(i,t));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>de(i.handle,t.handle));if(s.length>1&&o.requireUnambiguous)throw new Error(`multiple profiles found for ${t.handle}; pass --base-url to select one`);return s[0]?.index??-1}a(Ge,"findAccountIndexForSelector");function xn(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o={};return typeof t.token=="string"&&(o.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(o.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(o.conversationId=t.conversationId),Object.keys(o).length>0?o:void 0}a(xn,"sanitizeSession");function kn(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n={handle:o};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl),typeof t.environment=="string"&&(n.environment=t.environment);let r=xn(t.session);return r&&(n.session=r),n}a(kn,"sanitizeAccount");function bn(e){let t={};return typeof e.token=="string"&&(t.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(t.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(t.conversationId=e.conversationId),Object.keys(t).length>0?t:void 0}a(bn,"extractLegacySession");function In(e,t){let o={handle:t};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl);let n=bn(e);return n&&(o.session=n),o}a(In,"extractLegacyAccount");function Nt(e){let t={};typeof e.lspEnabled=="boolean"&&(t.lspEnabled=e.lspEnabled),(e.executionMode==="local"||e.executionMode==="hosted")&&(t.executionMode=e.executionMode),(e.mode==="general"||e.mode==="builder")&&(t.mode=e.mode);let o=Fe(e.openpondProfile);o&&(t.openpondProfile=o);let n=[],r=Array.isArray(e.accounts)?e.accounts:[];for(let l of r){let u=kn(l);u&&qe(n,u.handle,u.baseUrl)===-1&&n.push(u)}if(n.length===0){let l=oe(e.activeProfile)?.handle||Ae;n.push(In(e,l))}let s=oe(e.activeProfile),i=s?Ge(n,s):-1,c=n[i===-1?0:i];return t.accounts=n,t.activeProfile=ne(c),t}a(Nt,"normalizeGlobalConfig");function Cn(e,t,o){let n=e.accounts??[],r=_(o??process.env.OPENPOND_BASE_URL),s=z(t);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let i=z(process.env.OPENPOND_ACCOUNT);if(i)return r?{handle:i,baseUrl:r}:{handle:i};let c=oe(e.activeProfile);return c?r?{handle:c.handle,baseUrl:r}:c:n[0]?ne(n[0]):{handle:Ae}}a(Cn,"resolveRequestedProfile");function jt(e,t,o){let n=_(o);if(n){let s=qe(e,t,n);if(s!==-1)return e[s]}else{let s=e.filter(i=>de(i.handle,t));if(s.length>1)throw new Error(`multiple profiles found for ${t}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:t};return n&&(r.baseUrl=n),e.push(r),r}a(jt,"ensureAccount");function Mt(e){e.session&&Object.keys(e.session).length===0&&delete e.session}a(Mt,"cleanupAccount");function vn(e,t,o,n){let r=o===null||o===void 0&&n.undefinedDeletes;switch(t){case"apiKey":{if(r){delete e.apiKey;return}typeof o=="string"&&(e.apiKey=o);return}case"baseUrl":{if(r){delete e.baseUrl;return}typeof o=="string"&&(e.baseUrl=o);return}case"apiBaseUrl":{if(r){delete e.apiBaseUrl;return}typeof o=="string"&&(e.apiBaseUrl=o);return}case"chatApiBaseUrl":{if(r){delete e.chatApiBaseUrl;return}typeof o=="string"&&(e.chatApiBaseUrl=o);return}case"token":case"appId":case"conversationId":{if(e.session||(e.session={}),r){delete e.session[t],Mt(e);return}(typeof o=="string"||o===null)&&(e.session[t]=o),Mt(e);return}}}a(vn,"applyScopedKey");function En(e,t,o){if(!Rt.some(l=>W(t,l)))return!1;let r=e.accounts??[],s=oe(t.activeProfile)??Cn(e),i=_(W(t,"baseUrl")?t.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),c=jt(r,s.handle,i);for(let l of Rt)W(t,l)&&vn(c,l,t[l],o);return e.accounts=r,e.activeProfile=ne(c),!0}a(En,"applyAccountPatch");function Rn(e,t){if(W(t,"lspEnabled")&&(typeof t.lspEnabled=="boolean"?e.lspEnabled=t.lspEnabled:t.lspEnabled===null&&delete e.lspEnabled),W(t,"executionMode")&&(t.executionMode==="local"||t.executionMode==="hosted"?e.executionMode=t.executionMode:t.executionMode===null&&delete e.executionMode),W(t,"mode")&&(t.mode==="general"||t.mode==="builder"?e.mode=t.mode:t.mode===null&&delete e.mode),W(t,"activeProfile")){let o=oe(t.activeProfile);if(o){let n=Ge(e.accounts??[],o);e.activeProfile=n===-1?o:ne((e.accounts??[])[n])}else t.activeProfile===null&&delete e.activeProfile}if(W(t,"openpondProfile")){let o=Fe(t.openpondProfile);o?e.openpondProfile=o:t.openpondProfile===null&&delete e.openpondProfile}}a(Rn,"applyTopLevelPatch");async function ke(e){let t=L();return await De(t),await Ct(t,o=>{let n=Nt(o);return e(n),n})}a(ke,"updateGlobalConfig");async function T(){let e=L();return await De(e),Nt(await It(e))}a(T,"loadGlobalConfig");async function ze(){let e=await T(),t=oe(e.activeProfile);return(e.accounts??[]).map(o=>{let n=z(o.handle)??Ae;return{handle:n,baseUrl:_(o.baseUrl),apiBaseUrl:_(o.apiBaseUrl),chatApiBaseUrl:_(o.chatApiBaseUrl),environment:o.environment?.trim()||null,isActive:!!(t&&Lt({...o,handle:n},t)),hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!o.session?.token?.trim(),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null}})}a(ze,"listConfiguredProfiles");async function _n(e,t={}){let o=Bt(e),n=_(t.baseUrl),r=-1;await ke(i=>{let c=i.accounts??[];if(r=Ge(c,n?{handle:o,baseUrl:n}:{handle:o},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${o}`);i.activeProfile=ne(c[r])});let s=await ze();return s.find(i=>i.isActive)??s[r]}a(_n,"setActiveProfile");async function $n(e){let t=Bt(e.handle),o=An(e.apiKey),n=_(e.baseUrl),r=_(e.apiBaseUrl),s=_(e.chatApiBaseUrl),i={handle:t};await ke(u=>{let p=u.accounts??[],h=jt(p,t,n);h.apiKey=o,n&&(h.baseUrl=n),r?h.apiBaseUrl=r:e.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:e.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,e.environment===null?delete h.environment:typeof e.environment=="string"&&e.environment.trim()&&(h.environment=e.environment.trim()),u.accounts=p,i=ne(h),e.setActive!==!1&&(u.activeProfile=i)});let l=(await ze()).find(u=>de(u.handle,i.handle)?n?_(u.baseUrl)===n:!0:!1);if(!l)throw new Error(`failed to save profile: ${t}`);return l}a($n,"saveProfileApiKey");async function H(e){await ke(t=>{Rn(t,e),En(t,e,{undefinedDeletes:!1})})}a(H,"saveGlobalConfig");function Je(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}a(Je,"emptyProfileCatalogState");function Ke(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}a(Ke,"emptyProfileSkillCatalogState");function We(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}a(We,"emptyProfileSetupGate");function be(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}a(be,"emptyProfileDiffSummary");function Ve(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}a(Ve,"emptyProfileSummary");import{existsSync as re}from"node:fs";import{readFile as On,stat as Tn}from"node:fs/promises";import Ie from"node:path";var Dt=".openpond/agent-manifest.json",Ht=".openpond/action-registry.json",Un=".openpond/source-upload-metadata.json",Mn=".openpond/agent-package-origin.json";async function Gt(e){return Jt({agentId:"default",sourcePath:e,preferred:!0})}a(Gt,"loadProfileActionCatalog");async function zt(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!1,error:null},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(c=>c.preferred),...e.filter(c=>!c.preferred)],o=await Promise.all(t.map(Jt)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let u=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=u===l.id?l:{...l,id:u};n.set(u,p),r.push(p)}let s=Ln(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:s,manifestPath:o.find(c=>c.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:o.find(c=>c.catalog.registryPath)?.catalog.registryPath??null,stale:o.some(c=>c.catalog.stale),error:i.length>0?i.join("; "):null},actionCatalog:r,sourceSetupRequirements:o.flatMap(c=>c.sourceSetupRequirements)}}a(zt,"loadProfileActionCatalogForSources");async function Jt(e){let t=e.sourcePath,o=Ie.join(t,Dt),n=Ie.join(t,Ht),r=Ie.join(t,Un),s=Ie.join(t,Mn);try{let i=await Ce(o),c=await Ce(n),l=await Ce(r),u=$(await Ce(s)),p=$($(i)?.inputSchemas),h=Ft($(l)?.setupRequirements)??[],k=Nn(h),C=new Map;for(let f of[...Ye($(i)?.actionCatalog),...Ye($(c)?.actions),...Ye($(i)?.actions)]){let y=b(f.id)??b(f.name);if(!y)continue;let x=C.get(y),v=jn({sourceRequirementsByAction:k,actionId:y,actionName:b(f.name)}),B=Dn(Ft(f.setupRequirements)??x?.setupRequirements??[],v),K={id:y,agentId:e.agentId,sourcePath:t,sourceActionId:y,name:b(f.name)??x?.name??y,label:b(f.label)??x?.label??zn(y),description:b(f.description)??x?.description??null,visibility:b(f.visibility)??x?.visibility??"default",inputSchema:Gn(f.inputSchema,p)??x?.inputSchema??null,outputSchema:Kt(f.outputSchema)??x?.outputSchema??null,approvalPolicy:$(f.approvalPolicy)??x?.approvalPolicy??null,artifactPolicy:$(f.artifactPolicy)??x?.artifactPolicy??null,setupRequirements:B,mcp:$(f.mcp)??x?.mcp??null,schedulePolicy:$(f.schedulePolicy)??x?.schedulePolicy??null,trace:Bn($(f.trace)??x?.trace??null,u),implementation:$(f.implementation)??x?.implementation??null,invokesModel:typeof f.invokesModel=="boolean"?f.invokesModel:x?.invokesModel};C.set(y,K)}let P=Array.from(C.values()).filter(f=>f.visibility!=="internal"&&f.visibility!=="debug"),g=[...i?[]:[Dt],...c?[]:[Ht]],S=await Fn([o,n]);return{catalog:{actionCount:P.length,generatedAt:S,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:g.length>0,error:g.length>0?qn(e,g):null},actionCatalog:P,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}a(Jt,"loadProfileActionCatalogSource");function Bn(e,t){if(!t)return e;let o=b(t.versionId),n=b(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:qt(t.validationReceiptIds),evalReceiptIds:qt(t.evalReceiptIds)}}a(Bn,"mergeAgentPackageTrace");function qt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(qt,"stringArray");function Ln(e){let t=0;for(let o of e){if(!o)continue;let n=Date.parse(o);Number.isFinite(n)&&(t=Math.max(t,n))}return t>0?new Date(t).toISOString():null}a(Ln,"latestIso");function Nn(e){let t=new Map;for(let o of e){let n=[b(o.actionId),b(o.sourceActionId),b(o.actionName)].filter(r=>!!r);for(let r of n){let s=t.get(r)??[];s.push(o),t.set(r,s)}}return t}a(Nn,"sourceSetupRequirementsByAction");function jn(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(o=>({...o,source:"source_upload_metadata"}))}a(jn,"setupRequirementsForActionSource");function Dn(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let s=Hn(r);n.has(s)||(n.add(s),o.push(r))}return o}a(Dn,"mergeSetupRequirements");function Hn(e){return[b(e.actionId)??b(e.sourceActionId)??b(e.actionName)??"",b(e.kind)??b(e.type)??"",b(e.name)??b(e.key)??b(e.provider)??b(e.tool)??b(e.command)??b(e.packageName)??b(e.path)??b(e.repo)??b(e.url)??b(e.id)??""].join(":")}a(Hn,"setupRequirementIdentity");function qn(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}a(qn,"missingSourceArtifactsMessage");async function Ce(e){return re(e)?JSON.parse(await On(e,"utf8")):null}a(Ce,"readJsonIfExists");async function Fn(e){let t=0;for(let o of e){if(!re(o))continue;let n=await Tn(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}a(Fn,"latestMtime");function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a($,"asRecord");function Ye(e){return Array.isArray(e)?e.filter(t=>!!$(t)):[]}a(Ye,"records");function Ft(e){return Array.isArray(e)?e.filter(t=>!!$(t)):null}a(Ft,"recordArray");function b(e){return typeof e=="string"&&e.trim()?e.trim():null}a(b,"text");function Kt(e){return b(e)??$(e)}a(Kt,"schemaValue");function Gn(e,t){let o=Kt(e);return typeof o!="string"?o:$(t?.[o])??o}a(Gn,"resolvedSchemaValue");function zn(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}a(zn,"titleFromActionId");var ve=class extends Error{static{a(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,o){let n=o.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,n.length?`Missing setup: ${n.join(", ")}`:""].filter(Boolean).join(`
3
3
  `)),this.name="OpenPondProfileSetupRequiredError",this.details={error:"agent_source_setup_required",actionId:t,setupGate:o,missing:n,blockingSetupRequirements:o.blockingRequirements,setupRequirements:o.requirements}}};function Ee(e){let t=new Map;for(let i of e.sourceSetupRequirements??[]){let c=Kn(i);if(e.actionId&&c&&c!==e.actionId&&E(i.actionName)!==e.actionId&&E(i.sourceActionId)!==e.actionId)continue;let l=Wt({record:i,source:"source_upload_metadata",actionId:c});l&&t.set(l.ref,l)}for(let i of e.actionCatalog)if(!(e.actionId&&i.id!==e.actionId&&i.name!==e.actionId))for(let c of i.setupRequirements??[]){let l=Wt({record:c,source:"action_catalog",actionId:i.id});l&&t.set(l.ref,l)}let o=Array.from(t.values()),n=o.filter(i=>i.blocking),r=o.filter(i=>!i.required&&!Xe(i.status)).length,s=o.filter(i=>Xe(i.status)).length;return{status:Vn(n),requirementCount:o.length,blockingCount:n.length,optionalMissingCount:r,readyCount:s,requirements:o,blockingRequirements:n}}a(Ee,"buildOpenPondProfileSetupGate");function Ze(e,t){if(t.blockingRequirements.length>0)throw new ve(e,t)}a(Ze,"assertOpenPondProfileActionReady");function Jn(e){let t=e.actionId?`${e.actionId}: `:"",o=e.required?"required":"optional";return`${t}${e.label} (${o}, ${e.status})`}a(Jn,"formatOpenPondProfileSetupRequirement");function Wt(e){let t=e.source==="action_catalog"&&E(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,o=E(e.record.kind)??E(e.record.type),n=E(e.record.label)??E(e.record.name)??E(e.record.key)??E(e.record.provider)??E(e.record.tool)??E(e.record.command)??E(e.record.packageName)??E(e.record.path)??E(e.record.repo)??E(e.record.url)??E(e.record.id)??o??"setup requirement",r=e.record.required!==!1,s=Wn(e.record);return{ref:[t,e.actionId??"source",o??"requirement",n].join(":"),source:t,actionId:e.actionId,kind:o,label:n,status:s,required:r,blocking:r&&!Xe(s)}}a(Wt,"setupRequirementFromRecord");function Kn(e){return E(e.actionId)??E(e.sourceActionId)??E(e.actionName)}a(Kn,"setupRequirementActionId");function Wn(e){let t=E(e.status)??E(e.state);return t?t==="satisfied"||t==="connected"||t==="provided"?"ready":t:typeof e.satisfied=="boolean"?e.satisfied?"ready":"setup_required":typeof e.ready=="boolean"&&e.ready?"ready":"setup_required"}a(Wn,"setupStatus");function Vn(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}a(Vn,"gateStatus");function Xe(e){return e==="ready"||e==="disabled"}a(Xe,"isReadyStatus");function E(e){return typeof e=="string"&&e.trim()?e.trim():null}a(E,"text");import{spawn as Yn}from"node:child_process";import{randomUUID as Xn}from"node:crypto";import{existsSync as Qe}from"node:fs";import{readFile as Zn,rm as Qn,writeFile as Xt}from"node:fs/promises";import Re from"node:path";var Zt=["**/node_modules/","**/.bun/","**/.env","**/.env.*","**/.openpond/traces/","**/.openpond/vendor/","**/.openpond/eval-results.json","**/.openpond/artifact-index.json","**/.openpond/source-upload-cache.json",""].join(`
4
4
  `);async function Qt(e){if(!Qe(Re.join(e,".git"))){let s=await M(e,["init","-b","main"]);if(s.code!==0)throw new Error(Y("git init",s))}let t=Re.join(e,".gitignore");if(Qe(t)?await er(t):await Xt(t,Zt,"utf8"),await or(e))return;let o=await X(e);if(!o.dirty&&o.files.length===0)return;let n=await M(e,["add","-A"]);if(n.code!==0)throw new Error(Y("git add",n));let r=await M(e,["commit","-m","Initialize OpenPond profile"],{env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}});if(r.code!==0&&!/nothing to commit/i.test(r.stdout+r.stderr))throw new Error(Y("git commit",r))}a(Qt,"ensureProfileGitRepo");async function er(e){let t=await Zn(e,"utf8").catch(()=>""),o=Zt.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(s=>s.trim()===r));if(o.length===0)return;let n=t.endsWith(`
5
5
  `)||t.length===0?"":`
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{$b as Ue,A as M,B as O,C as we,Ca as Bt,Cb as le,D as u,E as ye,F as X,Fb as ze,G as l,Gb as $e,Hb as Le,I as Dt,Ib as Be,J as Ot,Jb as Ne,K as Mt,M as qt,N as zt,O as $t,Qa as Re,Ta as ke,Ua as Nt,Va as G,Zb as Ie,_ as qe,_b as Ee,ac as Ge,bc as Ve,cc as Fe,dc as Ke,ec as We,f as Ht,g as jt,mc as Wt,nc as Jt,oc as Xt,sb as Ut,tb as Gt,wa as Lt,wb as Vt,xb as Ft,zb as de}from"./chunk-5ZZM3TUN.js";import{a as Kt}from"./chunk-6FA3GG5B.js";import{B as Rt,C as Me,E as kt,F as It,G as Et,H as Tt,N as Pt,ja as Ct,k as bt,la as At,o as St,oa as _t,r as xt}from"./chunk-JO7GRBOG.js";import{Ia as ne,Ja as se,Kb as wt,Lb as yt,Ma as $,Na as be,Oa as Oe,Q as pt,Ya as Se,aa as ut,ga as ft,l as mt,la as ae,na as re,oa as J,ra as ht,sa as gt,vb as xe,ya as vt}from"./chunk-BQNK2NMB.js";import{a as lt}from"./chunk-VW7D3DRM.js";import{a as K,b as U,c as W,d as ce,e as E,h as De,l as ge,n as ve}from"./chunk-P653BXMY.js";import{b as t}from"./chunk-ES2ISFJC.js";import{a as c}from"./chunk-FTQLQJQV.js";var Fa=t.string().trim().min(1).max(1e5),Ka=t.enum(["no_training","sft","preference","rl"]),Wa=t.object({kind:t.enum(["none","demonstrations","chosen_rejected","scalar_reward"]),strength:t.enum(["absent","weak","usable"]),calibrated:t.boolean(),confounded:t.boolean(),variance:t.number().finite().nonnegative().nullable(),evidenceRefs:t.array(E).max(1e5)}).strict(),Yt=t.object({schemaVersion:t.literal("openpond.modelImprovementQualificationReceipt.v1"),id:K,review:E,harnessRelease:E,tasksetRelease:E.nullable(),baselineEvaluation:E.nullable(),model:ve,environmentHash:U.nullable(),toolContractHash:U.nullable(),permissionContractHash:U.nullable(),policyHash:U.nullable(),verifierRef:E.nullable(),sourcePolicies:t.array(lt).max(1e4),trainingEvidenceRefs:t.array(E).max(1e5),frozenEvaluationEvidenceRefs:t.array(E).max(1e5),privacyApproval:E.nullable(),budgetApproval:E.nullable(),maximumCostUsd:t.number().finite().nonnegative(),signal:Wa,decision:Ka,reasons:t.array(Fa).min(1).max(100),createdAt:W,metadata:ce}).strict().superRefine((e,a)=>{let r=new Set(e.trainingEvidenceRefs.map(Zt));if(e.frozenEvaluationEvidenceRefs.some(n=>r.has(Zt(n)))&&a.addIssue({code:"custom",message:"frozen Evaluation evidence cannot be used as training evidence",path:["frozenEvaluationEvidenceRefs"]}),e.decision==="no_training")return;(!e.tasksetRelease||!e.baselineEvaluation||!e.environmentHash||!e.toolContractHash||!e.permissionContractHash||!e.policyHash||!e.verifierRef||!e.privacyApproval||!e.budgetApproval||e.sourcePolicies.length===0||e.sourcePolicies.some(n=>n.state!=="authorized")||e.trainingEvidenceRefs.length===0||e.signal.strength!=="usable"||!e.signal.calibrated||e.signal.confounded)&&a.addIssue({code:"custom",message:"qualified model improvement requires frozen lineage, authorized signal, privacy, and budget gates"}),e.decision==="sft"&&e.signal.kind!=="demonstrations"&&a.addIssue({code:"custom",message:"SFT qualification requires demonstration signal",path:["signal","kind"]}),e.decision==="preference"&&e.signal.kind!=="chosen_rejected"&&a.addIssue({code:"custom",message:"preference qualification requires chosen/rejected signal",path:["signal","kind"]}),e.decision==="rl"&&(e.signal.kind!=="scalar_reward"||e.signal.variance===null||e.signal.variance<=0)&&a.addIssue({code:"custom",message:"RL qualification requires a usable scalar reward with variance",path:["signal"]})}),Ja=Yt.extend({contentHash:U}).strict();function Cn(e){let a=Yt.parse(e);return Ja.parse({...a,contentHash:ge(a)})}c(Cn,"createModelImprovementQualificationReceipt");function Zt(e){return`${e.id}:${e.contentHash}`}c(Zt,"refKey");var Xa=t.object({schemaVersion:t.literal("openpond.optimizerTrainingSample.v1"),tokenIds:t.array(t.number().int().nonnegative()).min(2).max(32768),mask:t.array(t.boolean()).min(2).max(32768),logprobs:t.array(t.number().finite()).min(2).max(32768),temperatures:t.array(t.number().positive().finite()).min(2).max(32768),envName:t.string().trim().min(1).max(200),modelRequestId:t.string().trim().min(1).max(1e3),promptTokenCount:t.number().int().positive(),completionTokenCount:t.number().int().positive(),servedPolicyVersion:t.number().int().nonnegative()}).strict().superRefine((e,a)=>{let r=e.tokenIds.length;for(let[s,n]of[["mask",e.mask],["logprobs",e.logprobs],["temperatures",e.temperatures]])n.length!==r&&a.addIssue({code:"custom",path:[s],message:`${s} must align with tokenIds`});e.promptTokenCount+e.completionTokenCount!==r&&a.addIssue({code:"custom",path:["completionTokenCount"],message:"prompt and completion token counts must span tokenIds"}),e.mask.filter(s=>!s).length!==e.promptTokenCount&&a.addIssue({code:"custom",path:["mask"],message:"promptTokenCount must equal the non-trainable mask count"}),e.mask.filter(Boolean).length!==e.completionTokenCount&&a.addIssue({code:"custom",path:["mask"],message:"completionTokenCount must equal the trainable mask count"})}),Za=t.object({id:K,environmentRelease:E,status:t.enum(["completed","failed","timed_out","cancelled"]),startedAt:W,completedAt:W,traceRefs:t.array(De).max(1e4),metadata:ce}).strict(),Ya=t.object({receiptRef:E,status:It,value:t.number().min(0).max(1).nullable(),learningEligible:t.boolean(),passed:t.boolean(),outcomeClass:Tt,failureOwner:Et.nullable(),components:t.record(K,t.number().min(0).max(1).nullable())}).strict(),Qt=t.object({schemaVersion:t.literal("openpond.canonicalRolloutRecord.v1"),id:K,attemptRef:E,artifactManifestRef:E,tasksetRelease:E,environmentRelease:E,verifierSetRelease:E,harnessRelease:E,taskId:K,split:pt,model:ve,seed:t.string().trim().min(1).max(500),reward:Ya,traceRef:De,optimizerSample:Xa.nullable(),environmentExecutions:t.array(Za).min(1).max(1e5),startedAt:W,completedAt:W,metadata:ce}).strict();function ea(e,a){e.reward.status==="scored"&&(e.reward.value===null||!e.reward.learningEligible)&&a.addIssue({code:"custom",path:["reward","status"],message:"A scored rollout requires a numeric, learning-eligible reward."}),e.reward.status==="unscorable"&&(e.reward.value!==null||e.reward.learningEligible)&&a.addIssue({code:"custom",path:["reward","status"],message:"An unscorable rollout has no reward and cannot be learning-eligible."})}c(ea,"validateCanonicalRolloutRecord");var Qa=Qt.superRefine(ea),er=t.object({...Qt.shape,contentHash:U}).strict().superRefine(ea);function qn(e){let a=bt.parse(e.attemptReceipt);if(!St(a))throw new Error("Rollout Attempt Receipt failed content-hash verification.");let r=Pt.parse(e.rewardReceipt);if(r.attemptRef.id!==a.id||r.attemptRef.contentHash!==a.contentHash)throw new Error("Rollout Attempt Receipt does not match its Reward Receipt.");if(r.artifactManifestRef.id!==e.artifactManifestRef.id||r.artifactManifestRef.contentHash!==e.artifactManifestRef.contentHash)throw new Error("Rollout Artifact Manifest does not match its Reward Receipt.");if(e.environmentExecutions.some(n=>n.environmentRelease.id!==e.environmentRelease.id||n.environmentRelease.contentHash!==e.environmentRelease.contentHash))throw new Error("Rollout Environment execution does not match its admitted Environment Release.");let s=Qa.parse({schemaVersion:"openpond.canonicalRolloutRecord.v1",id:e.id,attemptRef:r.attemptRef,artifactManifestRef:e.artifactManifestRef,tasksetRelease:e.tasksetRelease,environmentRelease:e.environmentRelease,verifierSetRelease:r.verifierSetRef,harnessRelease:e.harnessRelease,taskId:e.taskId,split:e.split,model:e.model,seed:e.seed,reward:{receiptRef:{id:r.id,contentHash:r.contentHash},status:r.status,value:r.reward,learningEligible:r.learningEligible,passed:r.passed,outcomeClass:r.outcomeClass,failureOwner:r.failureOwner,components:Object.fromEntries(r.components.map(n=>[n.verifierId,n.rewardContribution]))},traceRef:e.traceRef,optimizerSample:e.optimizerSample,environmentExecutions:e.environmentExecutions,startedAt:e.startedAt,completedAt:e.completedAt,metadata:e.metadata??{}});return er.parse({...s,contentHash:ge(s)})}c(qn,"createCanonicalRolloutRecord");var me=t.string().trim().min(1).max(200),Z=t.object({operationId:me,execution:u,executionKind:t.literal("recorded_evidence").optional(),graders:t.array(ut).min(1).max(100),maximumCostUsd:t.number().finite().min(1e-6).max(1e4),mappings:t.array(t.object({graderId:me,fields:de}).strict()).max(100).optional()}).strict().superRefine((e,a)=>{new Set(e.graders.map(r=>r.id)).size!==e.graders.length&&a.addIssue({code:"custom",path:["graders"],message:"Select each grader once."}),e.mappings&&(new Set(e.mappings.map(r=>r.graderId)).size!==e.mappings.length||e.mappings.some(r=>!e.graders.some(s=>s.id===r.graderId)))&&a.addIssue({code:"custom",path:["mappings"],message:"Map each selected grader at most once."})}),tr=t.object({schemaVersion:t.literal("openpond.experimentScoringPass.v1"),id:me,teamId:me,revision:t.number().int().positive(),request:Z,graders:t.array(le).min(1).max(100),status:t.enum(["queued","running","cancelling","completed","failed","cancelled"]),totalCount:t.number().int().min(1).max(1e4),counts:t.object({pending:t.number().int().nonnegative(),running:t.number().int().nonnegative(),scored:t.number().int().nonnegative(),unavailable:t.number().int().nonnegative(),failed:t.number().int().nonnegative(),cancelled:t.number().int().nonnegative()}).strict(),resultAvailable:t.boolean(),createdAt:t.iso.datetime(),startedAt:t.iso.datetime().nullable(),completedAt:t.iso.datetime().nullable(),error:t.object({code:me,message:t.string().max(2e3)}).strict().nullable()}).strict(),ta=tr.extend({contentHash:t.string().regex(/^[a-f0-9]{64}$/)});function Te(e){let a=ta.parse(e),{contentHash:r,...s}=a;if(l(s)!==r||Object.values(a.counts).reduce((o,i)=>o+i,0)!==a.totalCount)throw new Error("Scoring pass integrity or population accounting failed.");let n=["completed","failed","cancelled"].includes(a.status);if(n&&(!a.completedAt||a.counts.pending||a.counts.running)||!n&&(a.completedAt!==null||a.resultAvailable)||a.status==="completed"&&!a.resultAvailable)throw new Error("Scoring pass lifecycle differs from its retained result.");if(a.graders.length!==a.request.graders.length||new Set(a.graders.map(o=>o.feedbackKey)).size!==a.graders.length||a.graders.some((o,i)=>l(o.release)!==l(a.request.graders[i])||l(o.mappings??[])!==l(a.request.mappings?.find(d=>d.graderId===o.release?.id)?.fields??[])))throw new Error("Scoring pass graders differ from their exact admission.");return a}c(Te,"verifyExperimentScoringPass");var aa=8388608;async function Je(e,a,r,s){let n=new AbortController,o=r.signal,i=c(()=>n.abort(o?.reason),"forward");o?.aborted?i():o?.addEventListener("abort",i,{once:!0});let d=setTimeout(()=>n.abort(new Error("Connected evidence request timed out.")),6e4),m,f=c(()=>{m&&m.cancel(n.signal.reason).catch(()=>{})},"abortReader");n.signal.addEventListener("abort",f,{once:!0});let h=new Promise((p,g)=>{let x=c(()=>g(n.signal.reason??new DOMException("Request aborted","AbortError")),"abort");n.signal.aborted?x():n.signal.addEventListener("abort",x,{once:!0})});try{let p=e(a,{...r,signal:n.signal}).then(I=>{if(n.signal.aborted)throw I.body?.cancel(n.signal.reason).catch(()=>{}),n.signal.reason;return I}),g=await Promise.race([p,h]),x=g.headers.get("content-length");if(m=g.body?.getReader(),n.signal.aborted)throw await m?.cancel(n.signal.reason),n.signal.reason;if(x&&Number(x)>aa)throw await m?.cancel(),s(502,"connected_response_too_large","Connected evidence response exceeds 8 MiB.");let k=[],T=0;if(m)for(;;){let I=await Promise.race([m.read(),h]);if(I.done)break;if(T+=I.value.byteLength,T>aa)throw await m.cancel(),s(502,"connected_response_too_large","Connected evidence response exceeds 8 MiB.");k.push(I.value)}let H=new Uint8Array(T),j=0;for(let I of k)H.set(I,j),j+=I.byteLength;let C;try{C=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(H))}catch{throw s(502,"connected_response_invalid","Connected evidence response is not valid JSON.")}return{response:g,value:C}}finally{clearTimeout(d),o?.removeEventListener("abort",i),n.signal.removeEventListener("abort",f),m?.releaseLock()}}c(Je,"fetchConnectedJson");var ra=t.string().regex(/^[a-f0-9]{64}$/),na=t.object({request:Ut,maximumCostUsd:t.number().finite().positive().max(1e4),graders:t.array(le).min(1).max(100),admissionRequestHash:ra.optional(),sourceExperimentId:t.string().trim().min(1).max(200).optional()}).strict(),sa=na.extend({configurationHash:ra}).strict(),oa=Gt.extend({configuration:sa}).strict();function oe(e){return e.policy.kind==="hosted_harness"?{...e,population:e.population.map(({receiptId:a,...r})=>r)}:e}c(oe,"experimentConfigurationRequest");function ia(e){let a=na.parse(e);return l({...a,request:oe(a.request)})}c(ia,"experimentRunConfigurationHash");async function ca(e){let a=oa.parse(e),{configuration:r,...s}=a,n=await Ft(s),{configurationHash:o,...i}=r;if(o!==ia(i)||l(oe(r.request))!==l(oe(n.request))||r.maximumCostUsd!==n.manifest.limits.maximumSpendUsd)throw new Error("Experiment configuration differs from its retained run.");if(n.manifest.metadata.experimentDefinition===null){let d=$e.parse({definition:null,configurationHash:r.configurationHash,maximumCostUsd:r.maximumCostUsd,graders:r.graders,...r.admissionRequestHash?{admissionRequestHash:r.admissionRequestHash}:{},...r.sourceExperimentId?{sourceExperimentId:r.sourceExperimentId}:{}});if(n.manifest.metadata.experimentConfigurationHash!==l(d))throw new Error("Experiment configuration differs from its admitted manifest.")}return{...n,configuration:r}}c(ca,"verifyExperimentRunDetails");var da=t.object({teamId:t.string().trim().min(1).max(240),items:t.array(t.object({name:t.string().trim().min(1).max(500),source:vt,ready:t.boolean(),reason:t.string().min(1).max(2e3).nullable()}).strict()).max(8),nextCursor:t.string().min(1).max(8192).nullable()}).strict(),_=t.string().trim().min(1).max(200),la=class extends Error{static{c(this,"OpenPondExperimentError")}constructor(e,a,r){super(r),this.status=e,this.code=a,this.name="OpenPondExperimentError"}status;code},ar=class{static{c(this,"OpenPondExperimentsClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=a.toString().replace(/\/+$/,"")}options;baseUrl;async harnessSources(e={}){let a=e.cursor===void 0?void 0:t.string().min(1).max(8192).parse(e.cursor),r=new URLSearchParams(a?{cursor:a}:{}),s=da.parse(await this.request(`/harness-sources?${r}`,"GET",void 0,e.signal));if(s.teamId!==this.options.teamId||new Set(s.items.map(n=>l(n.source))).size!==s.items.length||s.nextCursor!==null&&s.nextCursor===a||s.items.some(n=>n.ready!==(n.reason===null)))throw new Error("Harness catalog differs from its workspace, readiness or continuation.");return s}async prepareHarness(e,a){let r=Le.parse(e),s=Be.parse(await this.request("/harness-setup","POST",r,a));Vt(s.request,s.manifest);let n=s.request.policy;if(s.request.teamId!==this.options.teamId||s.request.operationId!==r.operationId||n.kind!=="hosted_harness"||n.profileRepositoryId!==r.profileRepositoryId||n.source.definitionId!==r.definitionId||n.modelId!==r.modelId||n.reasoningEffort!==r.reasoningEffort||s.maximumCostUsd!==r.maximumCostUsd||s.manifest.limits.maximumSpendUsd!==r.maximumCostUsd)throw new Error("Harness preparation differs from its requested scope or configuration.");return s}async run(e,a){let r=Ne.parse(e);if(r.request.teamId!==this.options.teamId)throw new Error("Experiment workspace mismatch.");let s=await this.details(await this.request("","POST",r,a));if(l(oe(s.request))!==l(oe(r.request))||s.configuration.maximumCostUsd!==r.maximumCostUsd||s.configuration.sourceExperimentId!==r.sourceExperimentId||s.configuration.admissionRequestHash!==l(r))throw new Error("Experiment admission differs from its submitted configuration.");if(r.graders&&l(r.graders)!==l(s.configuration.graders.map(n=>({id:n.id,version:n.version,contentHash:n.contentHash,mappings:n.mappings??[]}))))throw new Error("Experiment admission differs from its selected graders or mappings.");return s}async get(e,a={}){return this.details(await this.request(`/${encodeURIComponent(_.parse(e))}`,"GET",void 0,a.signal),e)}async list(e={},a){let r=ze.parse(e),s=new URLSearchParams(Object.entries(r).filter(([,i])=>i!==void 0).map(([i,d])=>[i,String(d)])),n=t.object({items:t.array(t.unknown()).max(100),nextCursor:_.nullable()}).strict().parse(await this.request(`?${s}`,"GET",void 0,a)),o=await Promise.all(n.items.map(i=>this.details(i)));if(o.length>r.limit||new Set(o.map(i=>i.summary.id)).size!==o.length||n.nextCursor!==null&&n.nextCursor!==o.at(-1)?.summary.id||o.some(i=>r.projectId&&i.request.project?.id!==r.projectId||r.datasetHash&&i.request.taskset.contentHash!==r.datasetHash||r.status&&i.summary.status!==r.status))throw new Error("Experiment page differs from its selected scope.");return{items:o,nextCursor:n.nextCursor}}async result(e,a){let r=t.object({executionId:_,passId:_.nullable(),manifest:t.unknown(),result:t.unknown()}).strict().parse(await this.request(`/${encodeURIComponent(_.parse(e))}/result`,"GET",void 0,a)),s=$(r);if(r.executionId!==e||s.manifest.teamId!==this.options.teamId||s.manifest.lineage?.execution.id!==e||s.manifest.lineage.scoringPassId!==r.passId)throw new Error("Experiment result identity mismatch.");return{...s,executionId:e,passId:r.passId}}async cancel(e,a){return this.details(await this.request(`/${encodeURIComponent(_.parse(e))}/cancel`,"POST",{},a),e)}async duplicate(e,a,r){let s=await this.details(await this.request(`/${encodeURIComponent(_.parse(e))}/duplicate`,"POST",{operationId:_.parse(a)},r));if(s.request.operationId!==a||s.configuration.sourceExperimentId!==e||s.summary.id===e)throw new Error("Duplicate Experiment admission differs from its source or operation.");return s}async score(e,a){let r=Z.parse(e),s=this.pass(await this.request(`/${encodeURIComponent(r.execution.id)}/scoring-passes`,"POST",r,a));if(l(s.request)!==l(r))throw new Error("Scoring admission differs from its submitted inputs.");return s}async scoringPass(e,a){return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}`,"GET",void 0,a),e)}async scoringPasses(e,a={}){let r=new URLSearchParams(a.afterId?{afterId:_.parse(a.afterId)}:{});a.executionKind&&r.set("executionKind",t.literal("recorded_evidence").parse(a.executionKind));let s=t.object({items:t.array(t.unknown()).max(30),nextCursor:_.nullable()}).strict().parse(await this.request(`/${encodeURIComponent(_.parse(e))}/scoring-passes?${r}`,"GET",void 0,a.signal)),n=s.items.map(o=>this.pass(o));if(n.some(o=>o.request.execution.id!==e||o.request.executionKind!==a.executionKind)||new Set(n.map(o=>o.id)).size!==n.length)throw new Error("Scoring pass page differs from its execution ownership.");return{items:n,nextCursor:s.nextCursor}}async cancelScoringPass(e,a){return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}/cancel`,"POST",{},a),e)}async scoringResult(e,a){let r=t.object({executionId:_,passId:_,manifest:t.unknown(),result:t.unknown()}).strict().parse(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}/result`,"GET",void 0,a)),s=$(r);if(r.passId!==e||s.manifest.teamId!==this.options.teamId||s.manifest.id!==e||s.manifest.lineage?.execution.id!==r.executionId||s.manifest.lineage.scoringPassId!==e)throw new Error("Scoring result identity mismatch.");return{...s,executionId:r.executionId,passId:e}}async compare(e,a,r){let s=c(i=>i.startsWith("score_")?this.scoringResult(i,r):this.result(i,r),"read"),[n,o]=await Promise.all([s(e),s(a)]);return{baseline:n,candidate:o,comparison:be(n,o)}}async details(e,a){let r=await ca(e);if(r.summary.teamId!==this.options.teamId||a&&r.summary.id!==a)throw new Error("Experiment identity mismatch.");return r}pass(e,a){let r=Te(e);if(r.teamId!==this.options.teamId||a&&r.id!==a)throw new Error("Scoring pass identity mismatch.");return r}async request(e,a,r,s){let n=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/experiments${e}`,{method:a,signal:s,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,"Content-Type":"application/json",Accept:"application/json"},...r===void 0?{}:{body:JSON.stringify(r)}}),o=await n.json();if(!n.ok){let i=t.object({code:t.string(),message:t.string()}).safeParse(o);throw new la(n.status,i.success?i.data.code:"experiment_request_failed",i.success?i.data.message:"Experiment request failed.")}return o}},V=t.string().trim().min(1).max(500),ma=t.string().regex(/^[a-f0-9]{64}$/),rr=t.object({schemaVersion:t.literal("openpond.experimentCaseInspection.v1"),teamId:V,executionId:V,manifestHash:ma,receiptId:V,taskId:V,seed:t.string().min(1),input:t.record(t.string(),t.unknown()).nullable(),output:t.unknown().nullable(),error:t.string().nullable(),events:t.array(t.record(t.string(),t.unknown())).max(25),nextEventCursor:V.nullable(),eventCount:t.number().int().nonnegative()}).strict(),pa=rr.extend({contentHash:ma}).strict(),nr=class{static{c(this,"OpenPondExperimentInspectionClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=a.toString().replace(/\/+$/,"")}options;baseUrl;async case(e,a,r={}){let s=new URLSearchParams(r.afterId?{afterId:V.parse(r.afterId)}:{}),n=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/experiments/${encodeURIComponent(V.parse(e))}/cases/${encodeURIComponent(V.parse(a))}?${s}`,{signal:r.signal,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,Accept:"application/json"}}),o=await n.json();if(!n.ok)throw new Error(t.object({message:t.string()}).parse(o).message);let i=pa.parse(o),{contentHash:d,...m}=i;if(l(m)!==d||i.teamId!==this.options.teamId||i.executionId!==e||i.receiptId!==a||r.manifestHash&&i.manifestHash!==r.manifestHash||i.events.length>i.eventCount)throw new Error("Case inspection differs from its requested workspace, execution or retained content.");return i}};function ua(e){return JSON.stringify(e.release?["reward",e.release.id,e.release.revision,e.release.contentHash,e.feedbackKey]:["dataset",e.id,e.version,e.contentHash,e.feedbackKey])}c(ua,"datasetGraderIdentity");function fa(e){let a=new Map;for(let r of e){let s=ua(r),n=a.get(s);n?n.aliases.push(r):a.set(s,{key:s,grader:r,aliases:[r]})}return[...a.values()]}c(fa,"groupDatasetGraders");function sr(e){let a=fa(e),r=new Map;for(let s of a){let n=r.get(s.grader.feedbackKey);if(n&&n!==s.key)throw new Error(`Different selected grader releases use feedback key "${s.grader.feedbackKey}". Select one, or publish graders with distinct feedback keys.`);r.set(s.grader.feedbackKey,s.key);let o=JSON.stringify(s.grader.mappings??[]);if(s.aliases.some(i=>JSON.stringify(i.mappings??[])!==o))throw new Error(`Aliases of grader "${s.grader.feedbackKey}" have different field mappings. Select one alias and review its mappings.`)}return a.map(s=>s.grader)}c(sr,"canonicalDatasetGraderSelection");function or(e){let a=J(e.binding),r=Bt(e.packageValue),s=r.taskset;if(s.id!==a.dataset.id||s.revision!==a.dataset.revision||s.contentHash!==a.dataset.contentHash||r.contentHash!==a.packageHash||l(s.environment)!==a.environmentHash||l(r.files.filter(n=>n.asset.visibility!=="policy").map(n=>n.asset))!==a.privateDatasetClosureHash)throw new Error("The selected Dataset package, environment or protected closure changed.");if(a.population.length>500)throw new Error("Select at most 500 exact Dataset cases before starting this bounded Profile evaluation.");for(let n of a.population){let o=s.tasks.find(i=>i.id===n.taskId);if(!o||o.split!==a.split)throw new Error("The selected ordered population is outside its exact Dataset split.");if(n.fixtureId!==null)throw new Error("This recorded cutoff needs an admitted replay fixture before executing the Profile target.")}if(a.gradingSource){if(!e.actualGrading)throw new Error("The actual selected scoring owner is required for this recipe.");let n=Te(e.actualGrading.pass),o=$(t.object({manifest:t.unknown(),result:t.unknown()}).strict().parse(e.actualGrading.evidence));if(n.status!=="completed"||n.id!==a.gradingSource.pass.id||n.contentHash!==a.gradingSource.pass.contentHash||o.manifest.id!==a.gradingSource.evidence.id||o.result.contentHash!==a.gradingSource.evidence.contentHash||o.manifest.lineage?.scoringPassId!==n.id||l(o.manifest.dataset)!==l(a.dataset)||l(o.manifest.evaluators)!==l(a.evaluators)||l(a.fieldMappings)!==l(n.graders.map(m=>({graderId:m.id,fields:m.mappings??[]}))))throw new Error("The selected scoring owner changed its exact Dataset, measurements or mappings.");let i=o.manifest.population,d=a.recordedOrigin?a.recordedOrigin.members.map(m=>({caseId:m.caseId,seed:m.seed,fixtureId:m.fixtureId})):a.population.map(m=>({caseId:m.taskId,seed:m.seed,fixtureId:m.fixtureId}));if(i.length!==d.length||i.some((m,f)=>l(m)!==l(d[f])))throw new Error("The selected scoring population differs from the exact ordered original cases and cutoffs.")}else{if(a.fieldMappings.some(i=>!s.graders.some(d=>d.id===i.graderId)))throw new Error("The field mappings name a grader outside the selected release.");for(let i of a.fieldMappings)de.parse(i.fields);let n=a.evaluators.map(i=>{let d=e.graders.find(m=>m.feedbackKey===i.feedbackKey&&l(m.release??{id:m.id,revision:m.version,contentHash:m.contentHash})===l(i.release));if(!d)throw new Error("Select an exact released Dataset grader for this external recipe.");return d});if(a.fieldMappings.some(i=>!n.some(d=>d.id===i.graderId)))throw new Error("Field mappings refer to an unselected grader.");let o=n.map(i=>({release:i.release??{id:i.id,revision:i.version,contentHash:i.contentHash},feedbackKey:i.feedbackKey,configurationHash:l({graderHash:i.contentHash,mappings:a.fieldMappings.find(d=>d.graderId===i.id)?.fields??[]}),output:"score",categories:[]}));if(l(o)!==l(a.evaluators))throw new Error("The external recipe's graders or mappings differ from the current exact released grading settings.");for(let i of e.graders)if(!s.graders.some(d=>d.id===i.id&&d.version===i.version&&l(d)===i.contentHash))throw new Error("External grader pins differ from the actual Dataset implementation.")}for(let n of e.graders)if(!s.graders.some(o=>o.id===n.id&&o.version===n.version&&l(o)===n.contentHash))throw new Error("Dataset-native grader pins differ from their actual implementation.");return r}c(or,"verifyExternalDatasetPackage");var Y=t.string().trim().min(1).max(240),ha=t.object({profileRef:t.object({source:t.enum(["local","github","openpond_git"]),repositoryId:Y,profileId:Y}).strict(),sourceRevision:t.string().min(1).max(500),harnessRelease:u,catalogHash:t.string().regex(/^[a-f0-9]{64}$/).nullable(),definitions:t.array(ht).max(1e3),suites:t.array(gt).max(100),runs:t.array(t.object({profileRef:t.object({source:t.enum(["local","github","openpond_git"]),repositoryId:Y,profileId:Y}).strict(),manifest:xt,metric:mt,gradeRefs:t.array(u),receiptRefs:t.array(u),passRate:t.number().min(0).max(1),passed:t.boolean(),completedAt:t.iso.datetime(),contentHash:t.string().regex(/^[a-f0-9]{64}$/)}).strict()).max(1e3),comparisons:t.array(Ct).max(1e3),suiteRuns:t.array(_t).max(1e3),reports:t.array(At).max(1e3)}).strict(),ga=t.object({teamId:Y,profileRepositoryId:Y,trainingProjectId:Y.optional()}).strict(),ir=class{static{c(this,"OpenPondProfileEvaluationDiscoveryClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("Profile discovery requires a scoped HTTP endpoint and owner credential.")}options;async read(e,a){let r=ga.parse({...e,teamId:this.options.teamId}),{response:s,value:n}=await Je(this.options.fetch??fetch,`${this.options.baseUrl.replace(/\/$/,"")}/v1/profile-evaluation-discovery`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,"Content-Type":"application/json"},body:JSON.stringify(r),signal:a},(i,d,m)=>new Error(m));if(!s.ok)throw new Error("The released Profile evaluation owner is unavailable to this account and workspace.");let o=ha.parse(n);if(o.profileRef.repositoryId!==r.profileRepositoryId)throw new Error("Profile discovery returned another source owner.");return o}};var L=G.shape.id,z=t.number().int().positive(),Q=t.string().regex(/^[a-f0-9]{64}$/),ee={teamId:L,modelId:L},pc=t.object({schemaVersion:t.literal("openpond.tasksetDraftCreate.v1"),operationId:L,modelId:L,expectedModelRevision:z,name:G.shape.name}).strict(),uc=t.object({schemaVersion:t.literal("openpond.tasksetDraftSourceDescriptor.v1"),...ee,expectedModelRevision:z,sourcePackageHash:Q}).strict(),fc=t.object({schemaVersion:t.literal("openpond.tasksetDraftReadback.v1"),...ee,draft:G,workspaceHash:Q,projectEtag:Q}).strict().refine(e=>e.draft.profileId===e.teamId&&e.draft.modelScope?.modelId===e.modelId,"The hosted draft must belong to its declared workspace and Model."),cr=t.object({id:L,revision:z,name:G.shape.name,status:Nt,updatedAt:G.shape.updatedAt,sourceTasksetRef:Se.nullable()}).strict(),hc=t.object({schemaVersion:t.literal("openpond.tasksetDraftList.v1"),...ee,drafts:t.array(cr).max(100),nextCursor:t.string().min(1).max(2e3).nullable()}).strict(),gc=t.object({expectedDraftRevision:z,draft:G}).strict(),vc=t.object({expectedDraftRevision:z,expectedModelRevision:z}).strict(),dr=t.object({expectedDraftRevision:z,expectedWorkspaceHash:Q}).strict(),bc=t.object({schemaVersion:t.literal("openpond.tasksetDraftValidation.v1"),...ee,draftId:L,draftRevision:z,workspaceHash:Q,valid:t.boolean(),issues:t.array(t.object({code:t.string().min(1),severity:t.enum(["warning","error"]),message:t.string(),path:t.string().nullable()}).strict()),packageHash:Q.nullable(),tasksetRef:Se.nullable()}).strict().refine(e=>e.valid?e.packageHash!==null&&e.tasksetRef!==null&&e.issues.every(a=>a.severity!=="error"):e.packageHash===null&&e.tasksetRef===null&&e.issues.some(a=>a.severity==="error"),"Validation must retain either a compiled package or publication errors."),Sc=dr.extend({operationId:L,expectedPackageHash:Q,expectedTasksetRef:Se}).strict(),xc=t.object({schemaVersion:t.literal("openpond.tasksetDraftFileList.v1"),...ee,draftId:L,draftRevision:z,files:t.array(Ht).max(10020)}).strict(),wc=t.object({schemaVersion:t.literal("openpond.tasksetDraftFileReadback.v1"),...ee,draftId:L,draftRevision:z,file:jt}).strict(),yc=t.object({schemaVersion:t.literal("openpond.tasksetDraftDeletion.v1"),...ee,draftId:L,revision:z,deleted:t.literal(!0)}).strict(),kc=G.shape.id,Ic=t.number().int().positive();var N=t.string().trim().min(1).max(500),Tc=t.object({projectId:N.optional(),tasksetId:N.optional(),draftId:N.optional(),taskId:N.optional(),query:t.string().trim().max(1e3).default(""),split:t.enum(["train","validation","test","frozen_eval"]).optional(),after:t.string().min(1).max(2e3).optional(),limit:t.number().int().min(1).max(100).default(30)}).strict(),lr=t.object({id:N,method:t.enum(["code","judge","human"]),required:t.boolean()}),mr=t.object({tasksetId:N,tasksetName:t.string(),tasksetRevision:t.number().int().positive(),tasksetHash:t.string(),taskId:N,ordinal:t.number().int().nonnegative(),title:t.string(),description:t.string(),split:t.string(),scoring:t.array(lr),configuration:t.enum(["configured","needs_reward","needs_checks"]),draftId:N.nullable().default(null),modelId:N.nullable().default(null)}),Pc=t.object({items:t.array(mr).max(100),nextCursor:t.string().nullable()});function Cc(e,a){let r=[e.instruction,e.prompt,e.request,e.question,e.message].find(o=>typeof o=="string"&&o.trim().length>0),s=typeof e.title=="string"?e.title.trim():"",n=r?.trim()??"";return{title:(s||n||a).slice(0,180),description:n.slice(0,2e3)}}c(Cc,"describeTaskInput");function Ac(e){return e.map(a=>({id:a.id,method:a.kind==="model_judge"?"judge":a.kind==="human"?"human":"code",required:a.hardGate}))}c(Ac,"summarizeTaskScoring");function _c(e){return e.some(a=>a.kind!=="human")?e.some(a=>a.kind==="model_judge"&&a.calibrationStatus!=="passed")?"needs_checks":"configured":"needs_reward"}c(_c,"taskConfiguration");var Qe=3e3,et=9999,Pe="openpond.yaml",Mc="openpond-template-plan.json",pr="openpond.sandboxTemplate.buildPlan.v1",ur=["google","github","x"],tt=new Set([22,2222,2375,2376,3108,5900,5901,6080,7818]),va=t.array(t.string().trim().min(1).max(1e3)).max(50),pe=t.string().trim().min(1).max(4096).refine(Ra,{message:"path must be a relative workspace path"}),fr=t.string().trim().min(1).max(500).refine(e=>!e.includes("\0")&&!/\s/.test(e),"image ref must be a single OCI reference"),hr=t.string().trim().regex(/^sha256:[0-9a-f]{64}$/i),Sa=t.string().trim().min(1).max(500).refine(e=>e.startsWith("/")&&!e.includes("\0"),"workspaceRoot must be an absolute guest path"),gr=t.object({ref:fr,digest:hr.optional(),registrySecretRef:t.string().trim().min(1).max(500).optional(),platform:t.literal("linux/amd64").optional(),workspaceRoot:Sa.optional()}).strict(),vr=t.object({context:pe.default("."),path:pe.default("Dockerfile"),target:t.string().trim().min(1).max(191).optional(),buildArgs:t.record(t.string().max(191),t.string().max(500)).optional(),registrySecretRefs:t.array(t.string().trim().min(1).max(500)).max(10).optional(),platform:t.literal("linux/amd64").optional(),workspaceRoot:Sa.optional()}).strict(),br=t.object({base:t.string().trim().min(1).max(120).optional(),snapshot:t.string().trim().min(1).max(191).optional(),image:gr.optional(),dockerfile:vr.optional()}).strict().superRefine((e,a)=>{[e.base,e.snapshot,e.image,e.dockerfile].filter(Boolean).length!==1&&a.addIssue({code:t.ZodIssueCode.custom,message:"runtime must declare exactly one of base, snapshot, image, or dockerfile"})}),xa=t.object({cpu:t.number().positive().max(8).optional(),memoryGb:t.number().positive().max(32).optional(),diskGb:t.number().positive().max(100).optional()}).strict(),Sr=t.object({provider:t.enum(ur),scopes:t.array(t.string().trim().min(1).max(200)).max(100).default([]),capabilities:t.array(t.string().trim().min(1).max(200)).max(100).default([])}).strict(),xr=t.object({models:t.array(t.string().trim().min(1).max(200)).max(100).default([]),scopes:t.array(t.string().trim().min(1).max(200)).max(100).default([])}).strict(),wr=t.object({opchat:xr.optional()}).catchall(t.record(t.string(),t.unknown())).default({}),yr=t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/).max(63).optional(),mountPath:t.string().trim().min(1).max(256).optional(),storageGb:t.number().int().positive().max(100).optional(),deleteOnSandboxDelete:t.boolean().optional()}).strict(),Rr=t.object({port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"preview port is reserved"}),protocol:t.literal("http").default("http"),label:t.string().trim().min(1).max(80).optional(),access:t.enum(["private","public"]).default("private"),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"preview path must start with /"}).default("/")}).strict(),wa=t.object({command:t.string().trim().min(1).max(1e3),cwd:pe.optional(),timeoutSeconds:t.number().int().positive().max(86400).optional(),requiresStart:t.boolean().default(!1),ports:t.array(Rr).max(20).default([]),artifactPaths:t.array(pe).max(100).default([])}).strict(),ba=wa.extend({name:t.string().trim().min(1).max(80)}).strict(),kr=t.object({name:t.string().trim().min(1).max(80).optional(),service:t.string().trim().min(1).max(80).optional(),port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"app MCP port is reserved"}),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"app MCP path must start with /"}).default("/mcp")}).strict(),Ir=t.object({name:t.string().trim().min(1).max(80).optional(),port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"validation probe port is reserved"}),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"validation probe path must start with /"}).default("/"),expectedStatus:t.number().int().min(100).max(599).default(200)}).strict(),Er=t.record(t.string(),t.unknown()).refine(e=>e.type==="object","input schema must be a JSON schema object"),Tr=t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),required:t.boolean().default(!1),secret:t.boolean().default(!0),description:t.string().trim().max(500).optional()}).strict(),Xe=t.string().trim().min(1).max(120),Pr=t.object({name:t.string().trim().min(1).max(120),description:t.string().trim().max(500).optional(),cron:t.string().trim().min(1).max(500).optional(),rate:t.string().trim().min(1).max(500).optional(),once:Xe.optional(),scheduleType:t.enum(["rate","cron","once"]).optional(),scheduleExpression:t.string().trim().min(1).max(500).optional(),timezone:t.string().trim().min(1).max(100).optional(),enabled:t.boolean().default(!0),startAt:Xe.optional(),endAt:Xe.optional(),maxRuns:t.number().int().positive().nullable().optional(),runtimePolicy:t.enum(["run_and_stop","run_and_archive","run_and_delete","use_existing_running"]).default("run_and_stop"),action:t.string().trim().min(1).max(120).optional(),actionName:t.string().trim().min(1).max(120).optional(),command:t.string().trim().min(1).max(2e3).optional(),target:t.object({kind:t.enum(["start","action","service","command"]).optional(),name:t.string().trim().min(1).max(120).optional(),actionName:t.string().trim().min(1).max(120).optional(),command:t.string().trim().min(1).max(2e3).optional(),requiresStart:t.boolean().optional()}).strict().optional(),requiresStart:t.boolean().optional(),budget:t.object({maxUsd:t.string().trim().min(1).max(40).optional()}).strict().optional(),resources:xa.optional(),quotas:t.record(t.string(),t.unknown()).optional(),lifecycle:t.record(t.string(),t.unknown()).optional(),retentionPolicy:t.record(t.string(),t.unknown()).optional(),env:t.array(t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),value:t.string().optional(),secretRef:t.string().optional()}).strict()).max(100).optional(),integrationLeases:t.array(t.record(t.string(),t.unknown())).max(20).optional(),metadata:t.record(t.string(),t.unknown()).optional()}).strict().superRefine((e,a)=>{[e.cron,e.rate,e.once,e.scheduleExpression].filter(d=>typeof d=="string"&&d.trim()).length!==1&&a.addIssue({code:t.ZodIssueCode.custom,path:["scheduleExpression"],message:"schedule must declare exactly one of cron, rate, once, or scheduleExpression"}),e.scheduleExpression&&!e.scheduleType&&a.addIssue({code:t.ZodIssueCode.custom,path:["scheduleType"],message:"scheduleType is required with scheduleExpression"});let s=e.command??e.target?.command??null,n=e.target?.name??null,o=e.actionName??e.action??e.target?.actionName??(e.target?.kind==="action"?n:null),i=e.target?.kind??(s?"command":"action");i==="action"&&!o&&a.addIssue({code:t.ZodIssueCode.custom,path:["action"],message:"schedule action target is required"}),i==="service"&&!n&&a.addIssue({code:t.ZodIssueCode.custom,path:["target","name"],message:"schedule service target name is required"}),i==="command"&&!s&&a.addIssue({code:t.ZodIssueCode.custom,path:["command"],message:"schedule command target is required"})}),Cr=t.object({schemaVersion:t.literal(1),name:t.string().trim().min(1).max(80).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/),version:t.string().trim().min(1).max(40),useCase:t.string().trim().min(1).max(80),description:t.string().trim().min(1).max(500),runtime:br,resources:xa.optional(),setup:t.object({commands:va.default([])}).strict().default({commands:[]}),validation:t.object({commands:va.min(1),probes:t.array(Ir).max(20).default([])}).strict(),start:wa,actions:t.array(ba).max(20).default([]),services:t.array(ba).max(20).default([]),schedules:t.array(Pr).max(20).default([]),mcp:t.object({endpoints:t.array(kr).max(10).default([])}).strict().default({endpoints:[]}),volumes:t.array(yr).max(5).default([]),integrations:t.object({requiredLeases:t.array(Sr).max(20).default([])}).strict().default({requiredLeases:[]}),permissions:wr,inputs:t.object({schema:Er.default({type:"object"}),env:t.array(Tr).max(100).default([])}).strict().default({schema:{type:"object"},env:[]}),artifacts:t.object({paths:t.array(pe).max(100).default([])}).strict().default({paths:[]}),network:t.object({egress:t.enum(["restricted","allow","block"]).default("restricted")}).strict().default({egress:"restricted"})}).strict().superRefine((e,a)=>{jr(e,a),at(a,e.volumes.flatMap(r=>r.name?[r.name]:[]),"volume names must be unique","volumes"),Dr(e,a),Or(e,a),Mr(e,a),qr(e,a)}),qc=t.object({path:t.string(),message:t.string(),code:t.string()});function zc(e){let a;try{a=Kt.load(e)}catch(r){return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_yaml",message:r instanceof Error?r.message:"Invalid YAML"}]}}return Ar(a)}c(zc,"validateSandboxTemplateYaml");function Ar(e){if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_type",message:`${Pe} must be an object`}]};if(Object.prototype.hasOwnProperty.call(e,"databases"))return{ok:!1,manifest:null,diagnostics:[{path:"$.databases",code:"database_resources_removed",message:"managed database requests are unsupported for Firecracker sandbox templates; use a durable volume with SQLite or files instead"}]};let a=Cr.safeParse(e);return a.success?{ok:!0,manifest:a.data,diagnostics:[]}:{ok:!1,manifest:null,diagnostics:a.error.issues.map(r=>({path:Hr(r.path),code:r.code,message:r.message}))}}c(Ar,"validateSandboxTemplateManifest");function $c(e){return e.map(a=>`${a.path}: ${a.message}`).join(`
2
+ import{$b as Ue,A as M,B as O,C as we,Ca as Bt,Cb as le,D as u,E as ye,F as X,Fb as ze,G as l,Gb as $e,Hb as Le,I as Dt,Ib as Be,J as Ot,Jb as Ne,K as Mt,M as qt,N as zt,O as $t,Qa as Re,Ta as ke,Ua as Nt,Va as G,Zb as Ie,_ as qe,_b as Ee,ac as Ge,bc as Ve,cc as Fe,dc as Ke,ec as We,f as Ht,g as jt,mc as Wt,nc as Jt,oc as Xt,sb as Ut,tb as Gt,wa as Lt,wb as Vt,xb as Ft,zb as de}from"./chunk-QRWPEW3Z.js";import{a as Kt}from"./chunk-6FA3GG5B.js";import{B as Rt,C as Me,E as kt,F as It,G as Et,H as Tt,N as Pt,ja as Ct,k as bt,la as At,o as St,oa as _t,r as xt}from"./chunk-WV2APYWG.js";import{Ia as ne,Ja as se,Kb as wt,Lb as yt,Ma as $,Na as be,Oa as Oe,Q as pt,Ya as Se,aa as ut,ga as ft,l as mt,la as ae,na as re,oa as J,ra as ht,sa as gt,vb as xe,ya as vt}from"./chunk-PJM2G7SG.js";import{b as lt}from"./chunk-SDEDAHV6.js";import{b as K,c as U,d as W,e as ce,f as E,i as De,m as ge,o as ve}from"./chunk-NNF6KCHD.js";import{b as t}from"./chunk-ES2ISFJC.js";import{a as c}from"./chunk-FTQLQJQV.js";var Fa=t.string().trim().min(1).max(1e5),Ka=t.enum(["no_training","sft","preference","rl"]),Wa=t.object({kind:t.enum(["none","demonstrations","chosen_rejected","scalar_reward"]),strength:t.enum(["absent","weak","usable"]),calibrated:t.boolean(),confounded:t.boolean(),variance:t.number().finite().nonnegative().nullable(),evidenceRefs:t.array(E).max(1e5)}).strict(),Yt=t.object({schemaVersion:t.literal("openpond.modelImprovementQualificationReceipt.v1"),id:K,review:E,harnessRelease:E,tasksetRelease:E.nullable(),baselineEvaluation:E.nullable(),model:ve,environmentHash:U.nullable(),toolContractHash:U.nullable(),permissionContractHash:U.nullable(),policyHash:U.nullable(),verifierRef:E.nullable(),sourcePolicies:t.array(lt).max(1e4),trainingEvidenceRefs:t.array(E).max(1e5),frozenEvaluationEvidenceRefs:t.array(E).max(1e5),privacyApproval:E.nullable(),budgetApproval:E.nullable(),maximumCostUsd:t.number().finite().nonnegative(),signal:Wa,decision:Ka,reasons:t.array(Fa).min(1).max(100),createdAt:W,metadata:ce}).strict().superRefine((e,a)=>{let r=new Set(e.trainingEvidenceRefs.map(Zt));if(e.frozenEvaluationEvidenceRefs.some(n=>r.has(Zt(n)))&&a.addIssue({code:"custom",message:"frozen Evaluation evidence cannot be used as training evidence",path:["frozenEvaluationEvidenceRefs"]}),e.decision==="no_training")return;(!e.tasksetRelease||!e.baselineEvaluation||!e.environmentHash||!e.toolContractHash||!e.permissionContractHash||!e.policyHash||!e.verifierRef||!e.privacyApproval||!e.budgetApproval||e.sourcePolicies.length===0||e.sourcePolicies.some(n=>n.state!=="authorized")||e.trainingEvidenceRefs.length===0||e.signal.strength!=="usable"||!e.signal.calibrated||e.signal.confounded)&&a.addIssue({code:"custom",message:"qualified model improvement requires frozen lineage, authorized signal, privacy, and budget gates"}),e.decision==="sft"&&e.signal.kind!=="demonstrations"&&a.addIssue({code:"custom",message:"SFT qualification requires demonstration signal",path:["signal","kind"]}),e.decision==="preference"&&e.signal.kind!=="chosen_rejected"&&a.addIssue({code:"custom",message:"preference qualification requires chosen/rejected signal",path:["signal","kind"]}),e.decision==="rl"&&(e.signal.kind!=="scalar_reward"||e.signal.variance===null||e.signal.variance<=0)&&a.addIssue({code:"custom",message:"RL qualification requires a usable scalar reward with variance",path:["signal"]})}),Ja=Yt.extend({contentHash:U}).strict();function Cn(e){let a=Yt.parse(e);return Ja.parse({...a,contentHash:ge(a)})}c(Cn,"createModelImprovementQualificationReceipt");function Zt(e){return`${e.id}:${e.contentHash}`}c(Zt,"refKey");var Xa=t.object({schemaVersion:t.literal("openpond.optimizerTrainingSample.v1"),tokenIds:t.array(t.number().int().nonnegative()).min(2).max(32768),mask:t.array(t.boolean()).min(2).max(32768),logprobs:t.array(t.number().finite()).min(2).max(32768),temperatures:t.array(t.number().positive().finite()).min(2).max(32768),envName:t.string().trim().min(1).max(200),modelRequestId:t.string().trim().min(1).max(1e3),promptTokenCount:t.number().int().positive(),completionTokenCount:t.number().int().positive(),servedPolicyVersion:t.number().int().nonnegative()}).strict().superRefine((e,a)=>{let r=e.tokenIds.length;for(let[s,n]of[["mask",e.mask],["logprobs",e.logprobs],["temperatures",e.temperatures]])n.length!==r&&a.addIssue({code:"custom",path:[s],message:`${s} must align with tokenIds`});e.promptTokenCount+e.completionTokenCount!==r&&a.addIssue({code:"custom",path:["completionTokenCount"],message:"prompt and completion token counts must span tokenIds"}),e.mask.filter(s=>!s).length!==e.promptTokenCount&&a.addIssue({code:"custom",path:["mask"],message:"promptTokenCount must equal the non-trainable mask count"}),e.mask.filter(Boolean).length!==e.completionTokenCount&&a.addIssue({code:"custom",path:["mask"],message:"completionTokenCount must equal the trainable mask count"})}),Za=t.object({id:K,environmentRelease:E,status:t.enum(["completed","failed","timed_out","cancelled"]),startedAt:W,completedAt:W,traceRefs:t.array(De).max(1e4),metadata:ce}).strict(),Ya=t.object({receiptRef:E,status:It,value:t.number().min(0).max(1).nullable(),learningEligible:t.boolean(),passed:t.boolean(),outcomeClass:Tt,failureOwner:Et.nullable(),components:t.record(K,t.number().min(0).max(1).nullable())}).strict(),Qt=t.object({schemaVersion:t.literal("openpond.canonicalRolloutRecord.v1"),id:K,attemptRef:E,artifactManifestRef:E,tasksetRelease:E,environmentRelease:E,verifierSetRelease:E,harnessRelease:E,taskId:K,split:pt,model:ve,seed:t.string().trim().min(1).max(500),reward:Ya,traceRef:De,optimizerSample:Xa.nullable(),environmentExecutions:t.array(Za).min(1).max(1e5),startedAt:W,completedAt:W,metadata:ce}).strict();function ea(e,a){e.reward.status==="scored"&&(e.reward.value===null||!e.reward.learningEligible)&&a.addIssue({code:"custom",path:["reward","status"],message:"A scored rollout requires a numeric, learning-eligible reward."}),e.reward.status==="unscorable"&&(e.reward.value!==null||e.reward.learningEligible)&&a.addIssue({code:"custom",path:["reward","status"],message:"An unscorable rollout has no reward and cannot be learning-eligible."})}c(ea,"validateCanonicalRolloutRecord");var Qa=Qt.superRefine(ea),er=t.object({...Qt.shape,contentHash:U}).strict().superRefine(ea);function qn(e){let a=bt.parse(e.attemptReceipt);if(!St(a))throw new Error("Rollout Attempt Receipt failed content-hash verification.");let r=Pt.parse(e.rewardReceipt);if(r.attemptRef.id!==a.id||r.attemptRef.contentHash!==a.contentHash)throw new Error("Rollout Attempt Receipt does not match its Reward Receipt.");if(r.artifactManifestRef.id!==e.artifactManifestRef.id||r.artifactManifestRef.contentHash!==e.artifactManifestRef.contentHash)throw new Error("Rollout Artifact Manifest does not match its Reward Receipt.");if(e.environmentExecutions.some(n=>n.environmentRelease.id!==e.environmentRelease.id||n.environmentRelease.contentHash!==e.environmentRelease.contentHash))throw new Error("Rollout Environment execution does not match its admitted Environment Release.");let s=Qa.parse({schemaVersion:"openpond.canonicalRolloutRecord.v1",id:e.id,attemptRef:r.attemptRef,artifactManifestRef:e.artifactManifestRef,tasksetRelease:e.tasksetRelease,environmentRelease:e.environmentRelease,verifierSetRelease:r.verifierSetRef,harnessRelease:e.harnessRelease,taskId:e.taskId,split:e.split,model:e.model,seed:e.seed,reward:{receiptRef:{id:r.id,contentHash:r.contentHash},status:r.status,value:r.reward,learningEligible:r.learningEligible,passed:r.passed,outcomeClass:r.outcomeClass,failureOwner:r.failureOwner,components:Object.fromEntries(r.components.map(n=>[n.verifierId,n.rewardContribution]))},traceRef:e.traceRef,optimizerSample:e.optimizerSample,environmentExecutions:e.environmentExecutions,startedAt:e.startedAt,completedAt:e.completedAt,metadata:e.metadata??{}});return er.parse({...s,contentHash:ge(s)})}c(qn,"createCanonicalRolloutRecord");var me=t.string().trim().min(1).max(200),Z=t.object({operationId:me,execution:u,executionKind:t.literal("recorded_evidence").optional(),graders:t.array(ut).min(1).max(100),maximumCostUsd:t.number().finite().min(1e-6).max(1e4),mappings:t.array(t.object({graderId:me,fields:de}).strict()).max(100).optional()}).strict().superRefine((e,a)=>{new Set(e.graders.map(r=>r.id)).size!==e.graders.length&&a.addIssue({code:"custom",path:["graders"],message:"Select each grader once."}),e.mappings&&(new Set(e.mappings.map(r=>r.graderId)).size!==e.mappings.length||e.mappings.some(r=>!e.graders.some(s=>s.id===r.graderId)))&&a.addIssue({code:"custom",path:["mappings"],message:"Map each selected grader at most once."})}),tr=t.object({schemaVersion:t.literal("openpond.experimentScoringPass.v1"),id:me,teamId:me,revision:t.number().int().positive(),request:Z,graders:t.array(le).min(1).max(100),status:t.enum(["queued","running","cancelling","completed","failed","cancelled"]),totalCount:t.number().int().min(1).max(1e4),counts:t.object({pending:t.number().int().nonnegative(),running:t.number().int().nonnegative(),scored:t.number().int().nonnegative(),unavailable:t.number().int().nonnegative(),failed:t.number().int().nonnegative(),cancelled:t.number().int().nonnegative()}).strict(),resultAvailable:t.boolean(),createdAt:t.iso.datetime(),startedAt:t.iso.datetime().nullable(),completedAt:t.iso.datetime().nullable(),error:t.object({code:me,message:t.string().max(2e3)}).strict().nullable()}).strict(),ta=tr.extend({contentHash:t.string().regex(/^[a-f0-9]{64}$/)});function Te(e){let a=ta.parse(e),{contentHash:r,...s}=a;if(l(s)!==r||Object.values(a.counts).reduce((o,i)=>o+i,0)!==a.totalCount)throw new Error("Scoring pass integrity or population accounting failed.");let n=["completed","failed","cancelled"].includes(a.status);if(n&&(!a.completedAt||a.counts.pending||a.counts.running)||!n&&(a.completedAt!==null||a.resultAvailable)||a.status==="completed"&&!a.resultAvailable)throw new Error("Scoring pass lifecycle differs from its retained result.");if(a.graders.length!==a.request.graders.length||new Set(a.graders.map(o=>o.feedbackKey)).size!==a.graders.length||a.graders.some((o,i)=>l(o.release)!==l(a.request.graders[i])||l(o.mappings??[])!==l(a.request.mappings?.find(d=>d.graderId===o.release?.id)?.fields??[])))throw new Error("Scoring pass graders differ from their exact admission.");return a}c(Te,"verifyExperimentScoringPass");var aa=8388608;async function Je(e,a,r,s){let n=new AbortController,o=r.signal,i=c(()=>n.abort(o?.reason),"forward");o?.aborted?i():o?.addEventListener("abort",i,{once:!0});let d=setTimeout(()=>n.abort(new Error("Connected evidence request timed out.")),6e4),m,f=c(()=>{m&&m.cancel(n.signal.reason).catch(()=>{})},"abortReader");n.signal.addEventListener("abort",f,{once:!0});let h=new Promise((p,g)=>{let x=c(()=>g(n.signal.reason??new DOMException("Request aborted","AbortError")),"abort");n.signal.aborted?x():n.signal.addEventListener("abort",x,{once:!0})});try{let p=e(a,{...r,signal:n.signal}).then(I=>{if(n.signal.aborted)throw I.body?.cancel(n.signal.reason).catch(()=>{}),n.signal.reason;return I}),g=await Promise.race([p,h]),x=g.headers.get("content-length");if(m=g.body?.getReader(),n.signal.aborted)throw await m?.cancel(n.signal.reason),n.signal.reason;if(x&&Number(x)>aa)throw await m?.cancel(),s(502,"connected_response_too_large","Connected evidence response exceeds 8 MiB.");let k=[],T=0;if(m)for(;;){let I=await Promise.race([m.read(),h]);if(I.done)break;if(T+=I.value.byteLength,T>aa)throw await m.cancel(),s(502,"connected_response_too_large","Connected evidence response exceeds 8 MiB.");k.push(I.value)}let H=new Uint8Array(T),j=0;for(let I of k)H.set(I,j),j+=I.byteLength;let C;try{C=JSON.parse(new TextDecoder("utf-8",{fatal:!0}).decode(H))}catch{throw s(502,"connected_response_invalid","Connected evidence response is not valid JSON.")}return{response:g,value:C}}finally{clearTimeout(d),o?.removeEventListener("abort",i),n.signal.removeEventListener("abort",f),m?.releaseLock()}}c(Je,"fetchConnectedJson");var ra=t.string().regex(/^[a-f0-9]{64}$/),na=t.object({request:Ut,maximumCostUsd:t.number().finite().positive().max(1e4),graders:t.array(le).min(1).max(100),admissionRequestHash:ra.optional(),sourceExperimentId:t.string().trim().min(1).max(200).optional()}).strict(),sa=na.extend({configurationHash:ra}).strict(),oa=Gt.extend({configuration:sa}).strict();function oe(e){return e.policy.kind==="hosted_harness"?{...e,population:e.population.map(({receiptId:a,...r})=>r)}:e}c(oe,"experimentConfigurationRequest");function ia(e){let a=na.parse(e);return l({...a,request:oe(a.request)})}c(ia,"experimentRunConfigurationHash");async function ca(e){let a=oa.parse(e),{configuration:r,...s}=a,n=await Ft(s),{configurationHash:o,...i}=r;if(o!==ia(i)||l(oe(r.request))!==l(oe(n.request))||r.maximumCostUsd!==n.manifest.limits.maximumSpendUsd)throw new Error("Experiment configuration differs from its retained run.");if(n.manifest.metadata.experimentDefinition===null){let d=$e.parse({definition:null,configurationHash:r.configurationHash,maximumCostUsd:r.maximumCostUsd,graders:r.graders,...r.admissionRequestHash?{admissionRequestHash:r.admissionRequestHash}:{},...r.sourceExperimentId?{sourceExperimentId:r.sourceExperimentId}:{}});if(n.manifest.metadata.experimentConfigurationHash!==l(d))throw new Error("Experiment configuration differs from its admitted manifest.")}return{...n,configuration:r}}c(ca,"verifyExperimentRunDetails");var da=t.object({teamId:t.string().trim().min(1).max(240),items:t.array(t.object({name:t.string().trim().min(1).max(500),source:vt,ready:t.boolean(),reason:t.string().min(1).max(2e3).nullable()}).strict()).max(8),nextCursor:t.string().min(1).max(8192).nullable()}).strict(),_=t.string().trim().min(1).max(200),la=class extends Error{static{c(this,"OpenPondExperimentError")}constructor(e,a,r){super(r),this.status=e,this.code=a,this.name="OpenPondExperimentError"}status;code},ar=class{static{c(this,"OpenPondExperimentsClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=a.toString().replace(/\/+$/,"")}options;baseUrl;async harnessSources(e={}){let a=e.cursor===void 0?void 0:t.string().min(1).max(8192).parse(e.cursor),r=new URLSearchParams(a?{cursor:a}:{}),s=da.parse(await this.request(`/harness-sources?${r}`,"GET",void 0,e.signal));if(s.teamId!==this.options.teamId||new Set(s.items.map(n=>l(n.source))).size!==s.items.length||s.nextCursor!==null&&s.nextCursor===a||s.items.some(n=>n.ready!==(n.reason===null)))throw new Error("Harness catalog differs from its workspace, readiness or continuation.");return s}async prepareHarness(e,a){let r=Le.parse(e),s=Be.parse(await this.request("/harness-setup","POST",r,a));Vt(s.request,s.manifest);let n=s.request.policy;if(s.request.teamId!==this.options.teamId||s.request.operationId!==r.operationId||n.kind!=="hosted_harness"||n.profileRepositoryId!==r.profileRepositoryId||n.source.definitionId!==r.definitionId||n.modelId!==r.modelId||n.reasoningEffort!==r.reasoningEffort||s.maximumCostUsd!==r.maximumCostUsd||s.manifest.limits.maximumSpendUsd!==r.maximumCostUsd)throw new Error("Harness preparation differs from its requested scope or configuration.");return s}async run(e,a){let r=Ne.parse(e);if(r.request.teamId!==this.options.teamId)throw new Error("Experiment workspace mismatch.");let s=await this.details(await this.request("","POST",r,a));if(l(oe(s.request))!==l(oe(r.request))||s.configuration.maximumCostUsd!==r.maximumCostUsd||s.configuration.sourceExperimentId!==r.sourceExperimentId||s.configuration.admissionRequestHash!==l(r))throw new Error("Experiment admission differs from its submitted configuration.");if(r.graders&&l(r.graders)!==l(s.configuration.graders.map(n=>({id:n.id,version:n.version,contentHash:n.contentHash,mappings:n.mappings??[]}))))throw new Error("Experiment admission differs from its selected graders or mappings.");return s}async get(e,a={}){return this.details(await this.request(`/${encodeURIComponent(_.parse(e))}`,"GET",void 0,a.signal),e)}async list(e={},a){let r=ze.parse(e),s=new URLSearchParams(Object.entries(r).filter(([,i])=>i!==void 0).map(([i,d])=>[i,String(d)])),n=t.object({items:t.array(t.unknown()).max(100),nextCursor:_.nullable()}).strict().parse(await this.request(`?${s}`,"GET",void 0,a)),o=await Promise.all(n.items.map(i=>this.details(i)));if(o.length>r.limit||new Set(o.map(i=>i.summary.id)).size!==o.length||n.nextCursor!==null&&n.nextCursor!==o.at(-1)?.summary.id||o.some(i=>r.projectId&&i.request.project?.id!==r.projectId||r.datasetHash&&i.request.taskset.contentHash!==r.datasetHash||r.status&&i.summary.status!==r.status))throw new Error("Experiment page differs from its selected scope.");return{items:o,nextCursor:n.nextCursor}}async result(e,a){let r=t.object({executionId:_,passId:_.nullable(),manifest:t.unknown(),result:t.unknown()}).strict().parse(await this.request(`/${encodeURIComponent(_.parse(e))}/result`,"GET",void 0,a)),s=$(r);if(r.executionId!==e||s.manifest.teamId!==this.options.teamId||s.manifest.lineage?.execution.id!==e||s.manifest.lineage.scoringPassId!==r.passId)throw new Error("Experiment result identity mismatch.");return{...s,executionId:e,passId:r.passId}}async cancel(e,a){return this.details(await this.request(`/${encodeURIComponent(_.parse(e))}/cancel`,"POST",{},a),e)}async duplicate(e,a,r){let s=await this.details(await this.request(`/${encodeURIComponent(_.parse(e))}/duplicate`,"POST",{operationId:_.parse(a)},r));if(s.request.operationId!==a||s.configuration.sourceExperimentId!==e||s.summary.id===e)throw new Error("Duplicate Experiment admission differs from its source or operation.");return s}async score(e,a){let r=Z.parse(e),s=this.pass(await this.request(`/${encodeURIComponent(r.execution.id)}/scoring-passes`,"POST",r,a));if(l(s.request)!==l(r))throw new Error("Scoring admission differs from its submitted inputs.");return s}async scoringPass(e,a){return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}`,"GET",void 0,a),e)}async scoringPasses(e,a={}){let r=new URLSearchParams(a.afterId?{afterId:_.parse(a.afterId)}:{});a.executionKind&&r.set("executionKind",t.literal("recorded_evidence").parse(a.executionKind));let s=t.object({items:t.array(t.unknown()).max(30),nextCursor:_.nullable()}).strict().parse(await this.request(`/${encodeURIComponent(_.parse(e))}/scoring-passes?${r}`,"GET",void 0,a.signal)),n=s.items.map(o=>this.pass(o));if(n.some(o=>o.request.execution.id!==e||o.request.executionKind!==a.executionKind)||new Set(n.map(o=>o.id)).size!==n.length)throw new Error("Scoring pass page differs from its execution ownership.");return{items:n,nextCursor:s.nextCursor}}async cancelScoringPass(e,a){return this.pass(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}/cancel`,"POST",{},a),e)}async scoringResult(e,a){let r=t.object({executionId:_,passId:_,manifest:t.unknown(),result:t.unknown()}).strict().parse(await this.request(`/scoring-passes/${encodeURIComponent(_.parse(e))}/result`,"GET",void 0,a)),s=$(r);if(r.passId!==e||s.manifest.teamId!==this.options.teamId||s.manifest.id!==e||s.manifest.lineage?.execution.id!==r.executionId||s.manifest.lineage.scoringPassId!==e)throw new Error("Scoring result identity mismatch.");return{...s,executionId:r.executionId,passId:e}}async compare(e,a,r){let s=c(i=>i.startsWith("score_")?this.scoringResult(i,r):this.result(i,r),"read"),[n,o]=await Promise.all([s(e),s(a)]);return{baseline:n,candidate:o,comparison:be(n,o)}}async details(e,a){let r=await ca(e);if(r.summary.teamId!==this.options.teamId||a&&r.summary.id!==a)throw new Error("Experiment identity mismatch.");return r}pass(e,a){let r=Te(e);if(r.teamId!==this.options.teamId||a&&r.id!==a)throw new Error("Scoring pass identity mismatch.");return r}async request(e,a,r,s){let n=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/experiments${e}`,{method:a,signal:s,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,"Content-Type":"application/json",Accept:"application/json"},...r===void 0?{}:{body:JSON.stringify(r)}}),o=await n.json();if(!n.ok){let i=t.object({code:t.string(),message:t.string()}).safeParse(o);throw new la(n.status,i.success?i.data.code:"experiment_request_failed",i.success?i.data.message:"Experiment request failed.")}return o}},V=t.string().trim().min(1).max(500),ma=t.string().regex(/^[a-f0-9]{64}$/),rr=t.object({schemaVersion:t.literal("openpond.experimentCaseInspection.v1"),teamId:V,executionId:V,manifestHash:ma,receiptId:V,taskId:V,seed:t.string().min(1),input:t.record(t.string(),t.unknown()).nullable(),output:t.unknown().nullable(),error:t.string().nullable(),events:t.array(t.record(t.string(),t.unknown())).max(25),nextEventCursor:V.nullable(),eventCount:t.number().int().nonnegative()}).strict(),pa=rr.extend({contentHash:ma}).strict(),nr=class{static{c(this,"OpenPondExperimentInspectionClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("A clean API origin and workspace credentials are required.");this.baseUrl=a.toString().replace(/\/+$/,"")}options;baseUrl;async case(e,a,r={}){let s=new URLSearchParams(r.afterId?{afterId:V.parse(r.afterId)}:{}),n=await(this.options.fetch??fetch)(`${this.baseUrl}/v1/experiments/${encodeURIComponent(V.parse(e))}/cases/${encodeURIComponent(V.parse(a))}?${s}`,{signal:r.signal,redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,Accept:"application/json"}}),o=await n.json();if(!n.ok)throw new Error(t.object({message:t.string()}).parse(o).message);let i=pa.parse(o),{contentHash:d,...m}=i;if(l(m)!==d||i.teamId!==this.options.teamId||i.executionId!==e||i.receiptId!==a||r.manifestHash&&i.manifestHash!==r.manifestHash||i.events.length>i.eventCount)throw new Error("Case inspection differs from its requested workspace, execution or retained content.");return i}};function ua(e){return JSON.stringify(e.release?["reward",e.release.id,e.release.revision,e.release.contentHash,e.feedbackKey]:["dataset",e.id,e.version,e.contentHash,e.feedbackKey])}c(ua,"datasetGraderIdentity");function fa(e){let a=new Map;for(let r of e){let s=ua(r),n=a.get(s);n?n.aliases.push(r):a.set(s,{key:s,grader:r,aliases:[r]})}return[...a.values()]}c(fa,"groupDatasetGraders");function sr(e){let a=fa(e),r=new Map;for(let s of a){let n=r.get(s.grader.feedbackKey);if(n&&n!==s.key)throw new Error(`Different selected grader releases use feedback key "${s.grader.feedbackKey}". Select one, or publish graders with distinct feedback keys.`);r.set(s.grader.feedbackKey,s.key);let o=JSON.stringify(s.grader.mappings??[]);if(s.aliases.some(i=>JSON.stringify(i.mappings??[])!==o))throw new Error(`Aliases of grader "${s.grader.feedbackKey}" have different field mappings. Select one alias and review its mappings.`)}return a.map(s=>s.grader)}c(sr,"canonicalDatasetGraderSelection");function or(e){let a=J(e.binding),r=Bt(e.packageValue),s=r.taskset;if(s.id!==a.dataset.id||s.revision!==a.dataset.revision||s.contentHash!==a.dataset.contentHash||r.contentHash!==a.packageHash||l(s.environment)!==a.environmentHash||l(r.files.filter(n=>n.asset.visibility!=="policy").map(n=>n.asset))!==a.privateDatasetClosureHash)throw new Error("The selected Dataset package, environment or protected closure changed.");if(a.population.length>500)throw new Error("Select at most 500 exact Dataset cases before starting this bounded Profile evaluation.");for(let n of a.population){let o=s.tasks.find(i=>i.id===n.taskId);if(!o||o.split!==a.split)throw new Error("The selected ordered population is outside its exact Dataset split.");if(n.fixtureId!==null)throw new Error("This recorded cutoff needs an admitted replay fixture before executing the Profile target.")}if(a.gradingSource){if(!e.actualGrading)throw new Error("The actual selected scoring owner is required for this recipe.");let n=Te(e.actualGrading.pass),o=$(t.object({manifest:t.unknown(),result:t.unknown()}).strict().parse(e.actualGrading.evidence));if(n.status!=="completed"||n.id!==a.gradingSource.pass.id||n.contentHash!==a.gradingSource.pass.contentHash||o.manifest.id!==a.gradingSource.evidence.id||o.result.contentHash!==a.gradingSource.evidence.contentHash||o.manifest.lineage?.scoringPassId!==n.id||l(o.manifest.dataset)!==l(a.dataset)||l(o.manifest.evaluators)!==l(a.evaluators)||l(a.fieldMappings)!==l(n.graders.map(m=>({graderId:m.id,fields:m.mappings??[]}))))throw new Error("The selected scoring owner changed its exact Dataset, measurements or mappings.");let i=o.manifest.population,d=a.recordedOrigin?a.recordedOrigin.members.map(m=>({caseId:m.caseId,seed:m.seed,fixtureId:m.fixtureId})):a.population.map(m=>({caseId:m.taskId,seed:m.seed,fixtureId:m.fixtureId}));if(i.length!==d.length||i.some((m,f)=>l(m)!==l(d[f])))throw new Error("The selected scoring population differs from the exact ordered original cases and cutoffs.")}else{if(a.fieldMappings.some(i=>!s.graders.some(d=>d.id===i.graderId)))throw new Error("The field mappings name a grader outside the selected release.");for(let i of a.fieldMappings)de.parse(i.fields);let n=a.evaluators.map(i=>{let d=e.graders.find(m=>m.feedbackKey===i.feedbackKey&&l(m.release??{id:m.id,revision:m.version,contentHash:m.contentHash})===l(i.release));if(!d)throw new Error("Select an exact released Dataset grader for this external recipe.");return d});if(a.fieldMappings.some(i=>!n.some(d=>d.id===i.graderId)))throw new Error("Field mappings refer to an unselected grader.");let o=n.map(i=>({release:i.release??{id:i.id,revision:i.version,contentHash:i.contentHash},feedbackKey:i.feedbackKey,configurationHash:l({graderHash:i.contentHash,mappings:a.fieldMappings.find(d=>d.graderId===i.id)?.fields??[]}),output:"score",categories:[]}));if(l(o)!==l(a.evaluators))throw new Error("The external recipe's graders or mappings differ from the current exact released grading settings.");for(let i of e.graders)if(!s.graders.some(d=>d.id===i.id&&d.version===i.version&&l(d)===i.contentHash))throw new Error("External grader pins differ from the actual Dataset implementation.")}for(let n of e.graders)if(!s.graders.some(o=>o.id===n.id&&o.version===n.version&&l(o)===n.contentHash))throw new Error("Dataset-native grader pins differ from their actual implementation.");return r}c(or,"verifyExternalDatasetPackage");var Y=t.string().trim().min(1).max(240),ha=t.object({profileRef:t.object({source:t.enum(["local","github","openpond_git"]),repositoryId:Y,profileId:Y}).strict(),sourceRevision:t.string().min(1).max(500),harnessRelease:u,catalogHash:t.string().regex(/^[a-f0-9]{64}$/).nullable(),definitions:t.array(ht).max(1e3),suites:t.array(gt).max(100),runs:t.array(t.object({profileRef:t.object({source:t.enum(["local","github","openpond_git"]),repositoryId:Y,profileId:Y}).strict(),manifest:xt,metric:mt,gradeRefs:t.array(u),receiptRefs:t.array(u),passRate:t.number().min(0).max(1),passed:t.boolean(),completedAt:t.iso.datetime(),contentHash:t.string().regex(/^[a-f0-9]{64}$/)}).strict()).max(1e3),comparisons:t.array(Ct).max(1e3),suiteRuns:t.array(_t).max(1e3),reports:t.array(At).max(1e3)}).strict(),ga=t.object({teamId:Y,profileRepositoryId:Y,trainingProjectId:Y.optional()}).strict(),ir=class{static{c(this,"OpenPondProfileEvaluationDiscoveryClient")}constructor(e){this.options=e;let a=new URL(e.baseUrl);if(!["http:","https:"].includes(a.protocol)||a.username||a.password||a.search||a.hash||!e.apiKey.trim()||!e.teamId.trim())throw new Error("Profile discovery requires a scoped HTTP endpoint and owner credential.")}options;async read(e,a){let r=ga.parse({...e,teamId:this.options.teamId}),{response:s,value:n}=await Je(this.options.fetch??fetch,`${this.options.baseUrl.replace(/\/$/,"")}/v1/profile-evaluation-discovery`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"X-OpenPond-Team-Id":this.options.teamId,"Content-Type":"application/json"},body:JSON.stringify(r),signal:a},(i,d,m)=>new Error(m));if(!s.ok)throw new Error("The released Profile evaluation owner is unavailable to this account and workspace.");let o=ha.parse(n);if(o.profileRef.repositoryId!==r.profileRepositoryId)throw new Error("Profile discovery returned another source owner.");return o}};var L=G.shape.id,z=t.number().int().positive(),Q=t.string().regex(/^[a-f0-9]{64}$/),ee={teamId:L,modelId:L},pc=t.object({schemaVersion:t.literal("openpond.tasksetDraftCreate.v1"),operationId:L,modelId:L,expectedModelRevision:z,name:G.shape.name}).strict(),uc=t.object({schemaVersion:t.literal("openpond.tasksetDraftSourceDescriptor.v1"),...ee,expectedModelRevision:z,sourcePackageHash:Q}).strict(),fc=t.object({schemaVersion:t.literal("openpond.tasksetDraftReadback.v1"),...ee,draft:G,workspaceHash:Q,projectEtag:Q}).strict().refine(e=>e.draft.profileId===e.teamId&&e.draft.modelScope?.modelId===e.modelId,"The hosted draft must belong to its declared workspace and Model."),cr=t.object({id:L,revision:z,name:G.shape.name,status:Nt,updatedAt:G.shape.updatedAt,sourceTasksetRef:Se.nullable()}).strict(),hc=t.object({schemaVersion:t.literal("openpond.tasksetDraftList.v1"),...ee,drafts:t.array(cr).max(100),nextCursor:t.string().min(1).max(2e3).nullable()}).strict(),gc=t.object({expectedDraftRevision:z,draft:G}).strict(),vc=t.object({expectedDraftRevision:z,expectedModelRevision:z}).strict(),dr=t.object({expectedDraftRevision:z,expectedWorkspaceHash:Q}).strict(),bc=t.object({schemaVersion:t.literal("openpond.tasksetDraftValidation.v1"),...ee,draftId:L,draftRevision:z,workspaceHash:Q,valid:t.boolean(),issues:t.array(t.object({code:t.string().min(1),severity:t.enum(["warning","error"]),message:t.string(),path:t.string().nullable()}).strict()),packageHash:Q.nullable(),tasksetRef:Se.nullable()}).strict().refine(e=>e.valid?e.packageHash!==null&&e.tasksetRef!==null&&e.issues.every(a=>a.severity!=="error"):e.packageHash===null&&e.tasksetRef===null&&e.issues.some(a=>a.severity==="error"),"Validation must retain either a compiled package or publication errors."),Sc=dr.extend({operationId:L,expectedPackageHash:Q,expectedTasksetRef:Se}).strict(),xc=t.object({schemaVersion:t.literal("openpond.tasksetDraftFileList.v1"),...ee,draftId:L,draftRevision:z,files:t.array(Ht).max(10020)}).strict(),wc=t.object({schemaVersion:t.literal("openpond.tasksetDraftFileReadback.v1"),...ee,draftId:L,draftRevision:z,file:jt}).strict(),yc=t.object({schemaVersion:t.literal("openpond.tasksetDraftDeletion.v1"),...ee,draftId:L,revision:z,deleted:t.literal(!0)}).strict(),kc=G.shape.id,Ic=t.number().int().positive();var N=t.string().trim().min(1).max(500),Tc=t.object({projectId:N.optional(),tasksetId:N.optional(),draftId:N.optional(),taskId:N.optional(),query:t.string().trim().max(1e3).default(""),split:t.enum(["train","validation","test","frozen_eval"]).optional(),after:t.string().min(1).max(2e3).optional(),limit:t.number().int().min(1).max(100).default(30)}).strict(),lr=t.object({id:N,method:t.enum(["code","judge","human"]),required:t.boolean()}),mr=t.object({tasksetId:N,tasksetName:t.string(),tasksetRevision:t.number().int().positive(),tasksetHash:t.string(),taskId:N,ordinal:t.number().int().nonnegative(),title:t.string(),description:t.string(),split:t.string(),scoring:t.array(lr),configuration:t.enum(["configured","needs_reward","needs_checks"]),draftId:N.nullable().default(null),modelId:N.nullable().default(null)}),Pc=t.object({items:t.array(mr).max(100),nextCursor:t.string().nullable()});function Cc(e,a){let r=[e.instruction,e.prompt,e.request,e.question,e.message].find(o=>typeof o=="string"&&o.trim().length>0),s=typeof e.title=="string"?e.title.trim():"",n=r?.trim()??"";return{title:(s||n||a).slice(0,180),description:n.slice(0,2e3)}}c(Cc,"describeTaskInput");function Ac(e){return e.map(a=>({id:a.id,method:a.kind==="model_judge"?"judge":a.kind==="human"?"human":"code",required:a.hardGate}))}c(Ac,"summarizeTaskScoring");function _c(e){return e.some(a=>a.kind!=="human")?e.some(a=>a.kind==="model_judge"&&a.calibrationStatus!=="passed")?"needs_checks":"configured":"needs_reward"}c(_c,"taskConfiguration");var Qe=3e3,et=9999,Pe="openpond.yaml",Mc="openpond-template-plan.json",pr="openpond.sandboxTemplate.buildPlan.v1",ur=["google","github","x"],tt=new Set([22,2222,2375,2376,3108,5900,5901,6080,7818]),va=t.array(t.string().trim().min(1).max(1e3)).max(50),pe=t.string().trim().min(1).max(4096).refine(Ra,{message:"path must be a relative workspace path"}),fr=t.string().trim().min(1).max(500).refine(e=>!e.includes("\0")&&!/\s/.test(e),"image ref must be a single OCI reference"),hr=t.string().trim().regex(/^sha256:[0-9a-f]{64}$/i),Sa=t.string().trim().min(1).max(500).refine(e=>e.startsWith("/")&&!e.includes("\0"),"workspaceRoot must be an absolute guest path"),gr=t.object({ref:fr,digest:hr.optional(),registrySecretRef:t.string().trim().min(1).max(500).optional(),platform:t.literal("linux/amd64").optional(),workspaceRoot:Sa.optional()}).strict(),vr=t.object({context:pe.default("."),path:pe.default("Dockerfile"),target:t.string().trim().min(1).max(191).optional(),buildArgs:t.record(t.string().max(191),t.string().max(500)).optional(),registrySecretRefs:t.array(t.string().trim().min(1).max(500)).max(10).optional(),platform:t.literal("linux/amd64").optional(),workspaceRoot:Sa.optional()}).strict(),br=t.object({base:t.string().trim().min(1).max(120).optional(),snapshot:t.string().trim().min(1).max(191).optional(),image:gr.optional(),dockerfile:vr.optional()}).strict().superRefine((e,a)=>{[e.base,e.snapshot,e.image,e.dockerfile].filter(Boolean).length!==1&&a.addIssue({code:t.ZodIssueCode.custom,message:"runtime must declare exactly one of base, snapshot, image, or dockerfile"})}),xa=t.object({cpu:t.number().positive().max(8).optional(),memoryGb:t.number().positive().max(32).optional(),diskGb:t.number().positive().max(100).optional()}).strict(),Sr=t.object({provider:t.enum(ur),scopes:t.array(t.string().trim().min(1).max(200)).max(100).default([]),capabilities:t.array(t.string().trim().min(1).max(200)).max(100).default([])}).strict(),xr=t.object({models:t.array(t.string().trim().min(1).max(200)).max(100).default([]),scopes:t.array(t.string().trim().min(1).max(200)).max(100).default([])}).strict(),wr=t.object({opchat:xr.optional()}).catchall(t.record(t.string(),t.unknown())).default({}),yr=t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/).max(63).optional(),mountPath:t.string().trim().min(1).max(256).optional(),storageGb:t.number().int().positive().max(100).optional(),deleteOnSandboxDelete:t.boolean().optional()}).strict(),Rr=t.object({port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"preview port is reserved"}),protocol:t.literal("http").default("http"),label:t.string().trim().min(1).max(80).optional(),access:t.enum(["private","public"]).default("private"),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"preview path must start with /"}).default("/")}).strict(),wa=t.object({command:t.string().trim().min(1).max(1e3),cwd:pe.optional(),timeoutSeconds:t.number().int().positive().max(86400).optional(),requiresStart:t.boolean().default(!1),ports:t.array(Rr).max(20).default([]),artifactPaths:t.array(pe).max(100).default([])}).strict(),ba=wa.extend({name:t.string().trim().min(1).max(80)}).strict(),kr=t.object({name:t.string().trim().min(1).max(80).optional(),service:t.string().trim().min(1).max(80).optional(),port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"app MCP port is reserved"}),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"app MCP path must start with /"}).default("/mcp")}).strict(),Ir=t.object({name:t.string().trim().min(1).max(80).optional(),port:t.number().int().min(Qe).max(et).refine(e=>!tt.has(e),{message:"validation probe port is reserved"}),path:t.string().trim().min(1).max(512).refine(e=>e.startsWith("/"),{message:"validation probe path must start with /"}).default("/"),expectedStatus:t.number().int().min(100).max(599).default(200)}).strict(),Er=t.record(t.string(),t.unknown()).refine(e=>e.type==="object","input schema must be a JSON schema object"),Tr=t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),required:t.boolean().default(!1),secret:t.boolean().default(!0),description:t.string().trim().max(500).optional()}).strict(),Xe=t.string().trim().min(1).max(120),Pr=t.object({name:t.string().trim().min(1).max(120),description:t.string().trim().max(500).optional(),cron:t.string().trim().min(1).max(500).optional(),rate:t.string().trim().min(1).max(500).optional(),once:Xe.optional(),scheduleType:t.enum(["rate","cron","once"]).optional(),scheduleExpression:t.string().trim().min(1).max(500).optional(),timezone:t.string().trim().min(1).max(100).optional(),enabled:t.boolean().default(!0),startAt:Xe.optional(),endAt:Xe.optional(),maxRuns:t.number().int().positive().nullable().optional(),runtimePolicy:t.enum(["run_and_stop","run_and_archive","run_and_delete","use_existing_running"]).default("run_and_stop"),action:t.string().trim().min(1).max(120).optional(),actionName:t.string().trim().min(1).max(120).optional(),command:t.string().trim().min(1).max(2e3).optional(),target:t.object({kind:t.enum(["start","action","service","command"]).optional(),name:t.string().trim().min(1).max(120).optional(),actionName:t.string().trim().min(1).max(120).optional(),command:t.string().trim().min(1).max(2e3).optional(),requiresStart:t.boolean().optional()}).strict().optional(),requiresStart:t.boolean().optional(),budget:t.object({maxUsd:t.string().trim().min(1).max(40).optional()}).strict().optional(),resources:xa.optional(),quotas:t.record(t.string(),t.unknown()).optional(),lifecycle:t.record(t.string(),t.unknown()).optional(),retentionPolicy:t.record(t.string(),t.unknown()).optional(),env:t.array(t.object({name:t.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),value:t.string().optional(),secretRef:t.string().optional()}).strict()).max(100).optional(),integrationLeases:t.array(t.record(t.string(),t.unknown())).max(20).optional(),metadata:t.record(t.string(),t.unknown()).optional()}).strict().superRefine((e,a)=>{[e.cron,e.rate,e.once,e.scheduleExpression].filter(d=>typeof d=="string"&&d.trim()).length!==1&&a.addIssue({code:t.ZodIssueCode.custom,path:["scheduleExpression"],message:"schedule must declare exactly one of cron, rate, once, or scheduleExpression"}),e.scheduleExpression&&!e.scheduleType&&a.addIssue({code:t.ZodIssueCode.custom,path:["scheduleType"],message:"scheduleType is required with scheduleExpression"});let s=e.command??e.target?.command??null,n=e.target?.name??null,o=e.actionName??e.action??e.target?.actionName??(e.target?.kind==="action"?n:null),i=e.target?.kind??(s?"command":"action");i==="action"&&!o&&a.addIssue({code:t.ZodIssueCode.custom,path:["action"],message:"schedule action target is required"}),i==="service"&&!n&&a.addIssue({code:t.ZodIssueCode.custom,path:["target","name"],message:"schedule service target name is required"}),i==="command"&&!s&&a.addIssue({code:t.ZodIssueCode.custom,path:["command"],message:"schedule command target is required"})}),Cr=t.object({schemaVersion:t.literal(1),name:t.string().trim().min(1).max(80).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/),version:t.string().trim().min(1).max(40),useCase:t.string().trim().min(1).max(80),description:t.string().trim().min(1).max(500),runtime:br,resources:xa.optional(),setup:t.object({commands:va.default([])}).strict().default({commands:[]}),validation:t.object({commands:va.min(1),probes:t.array(Ir).max(20).default([])}).strict(),start:wa,actions:t.array(ba).max(20).default([]),services:t.array(ba).max(20).default([]),schedules:t.array(Pr).max(20).default([]),mcp:t.object({endpoints:t.array(kr).max(10).default([])}).strict().default({endpoints:[]}),volumes:t.array(yr).max(5).default([]),integrations:t.object({requiredLeases:t.array(Sr).max(20).default([])}).strict().default({requiredLeases:[]}),permissions:wr,inputs:t.object({schema:Er.default({type:"object"}),env:t.array(Tr).max(100).default([])}).strict().default({schema:{type:"object"},env:[]}),artifacts:t.object({paths:t.array(pe).max(100).default([])}).strict().default({paths:[]}),network:t.object({egress:t.enum(["restricted","allow","block"]).default("restricted")}).strict().default({egress:"restricted"})}).strict().superRefine((e,a)=>{jr(e,a),at(a,e.volumes.flatMap(r=>r.name?[r.name]:[]),"volume names must be unique","volumes"),Dr(e,a),Or(e,a),Mr(e,a),qr(e,a)}),qc=t.object({path:t.string(),message:t.string(),code:t.string()});function zc(e){let a;try{a=Kt.load(e)}catch(r){return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_yaml",message:r instanceof Error?r.message:"Invalid YAML"}]}}return Ar(a)}c(zc,"validateSandboxTemplateYaml");function Ar(e){if(!e||typeof e!="object"||Array.isArray(e))return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_type",message:`${Pe} must be an object`}]};if(Object.prototype.hasOwnProperty.call(e,"databases"))return{ok:!1,manifest:null,diagnostics:[{path:"$.databases",code:"database_resources_removed",message:"managed database requests are unsupported for Firecracker sandbox templates; use a durable volume with SQLite or files instead"}]};let a=Cr.safeParse(e);return a.success?{ok:!0,manifest:a.data,diagnostics:[]}:{ok:!1,manifest:null,diagnostics:a.error.issues.map(r=>({path:Hr(r.path),code:r.code,message:r.message}))}}c(Ar,"validateSandboxTemplateManifest");function $c(e){return e.map(a=>`${a.path}: ${a.message}`).join(`
3
3
  `)}c($c,"formatSandboxTemplateDiagnostics");function ya(e){return[{kind:"start",name:"start",...e.start,artifactPaths:Ye(e.start,e)},...e.actions.map(a=>({kind:"action",name:a.name,command:a.command,cwd:a.cwd,timeoutSeconds:a.timeoutSeconds,requiresStart:a.requiresStart,ports:a.ports,artifactPaths:Ye(a,e)})),...e.services.map(a=>({kind:"service",name:a.name,command:a.command,cwd:a.cwd,timeoutSeconds:a.timeoutSeconds,requiresStart:a.requiresStart,ports:a.ports,artifactPaths:Ye(a,e)}))]}c(ya,"sandboxTemplateExecutableEntries");function _r(e){let a=ya(e);return{template:{name:e.name,version:e.version,useCase:e.useCase,runtime:e.runtime},resources:e.resources??null,volumes:e.volumes,executables:a.map(r=>({kind:r.kind,name:r.name,command:r.command,cwd:r.cwd??null,timeoutSeconds:r.timeoutSeconds??null,requiresStart:r.requiresStart,ports:r.ports.map(s=>s.port),artifactPaths:r.artifactPaths})),ports:a.flatMap(r=>r.ports.map(s=>({executable:r.name,kind:r.kind,port:s.port,access:s.access,label:s.label??null}))),appMcpEndpoints:e.mcp.endpoints.map(r=>({name:r.name??null,service:r.service??null,port:r.port,path:r.path})),validation:{commands:e.validation.commands,probes:e.validation.probes},schedules:e.schedules}}c(_r,"sandboxTemplateBuildMetadata");function Lc(e){return{kind:pr,schemaVersion:1,manifestFile:e.manifestFile,projectRoot:e.projectRoot,manifest:e.manifest,metadata:_r(e.manifest),executables:ya(e.manifest)}}c(Lc,"sandboxTemplateBuildPlan");function Bc(e){let a=e.name.trim()||"Sandbox Template",r=zr(a),s=e.description?.trim()||`Local scaffold for ${a}.`;return{".gitignore":["node_modules","artifacts",".DS_Store",""].join(`
4
4
  `),"README.md":[`# ${a}`,"","Local sandbox template scaffold.","","## Commands","","- `pnpm dev` starts the preview service on port 3000.","- `pnpm process` writes a sample artifact.",`- \`pnpm validate\` validates ${Pe}.`,""].join(`
5
5
  `),"package.json":`${JSON.stringify({private:!0,type:"module",scripts:{dev:"node src/server.ts",process:"node scripts/process.ts",validate:`openpond sandbox-template validate --file ${Pe}`}},null,2)}
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{k as H,na as R}from"./chunk-7MXZJQS7.js";import{J as I,N as C}from"./chunk-HA7EFTPF.js";import{l as k,m as b}from"./chunk-NNF6KCHD.js";import{a as h}from"./chunk-FTQLQJQV.js";import{promises as s}from"node:fs";import n from"node:path";import{execFile as O}from"node:child_process";import{promisify as A}from"node:util";var T=A(O);async function v(e,i,a={}){return(await T("git",["-C",e,...i],{encoding:"utf8",timeout:3e4,maxBuffer:8388608,env:{...process.env,...a}})).stdout.trim()}h(v,"candidateGit");async function j(e,i=I,a=!1){if(e.profileRef.source!=="local"&&!a)throw new Error("This Git adapter requires the actual installed local Profile owner; hosted adoption needs its published-source owner.");let r=await i(e.profileRef);if(r.error||r.mode!=="local"||r.activeProfile!==e.profileRef.profileId||!r.repoPath||!r.sourcePath)throw new Error("The original Profile owner is unavailable.");let l=await s.realpath(r.repoPath),p=await s.realpath(r.sourcePath),f=n.relative(l,p);if(f.startsWith("..")||n.isAbsolute(f))throw new Error("Profile source escapes its actual Git owner.");return{profile:r,repo:l,source:p,sourceRelative:f}}h(j,"originalCandidateProfile");async function Pe(e,i,a=!0){if(!/^[a-f0-9]{40}$/.test(i)||await v(e,["rev-parse","HEAD"])!==i)throw new Error("The original Profile Git revision changed.");if(a&&await v(e,["status","--porcelain","--untracked-files=all"]))throw new Error("Commit or reconcile changes in the original Profile before this operation.")}h(Pe,"assertCandidateGitHead");async function ye(e,i){let a=await j(e.state,e.loadProfile,e.allowRemoteSnapshot),r=n.join(e.storeDir,"library","harnesses","profile-candidate-staging");await s.mkdir(r,{recursive:!0,mode:448});let l=await s.mkdtemp(n.join(r,"source-"));await s.rmdir(l),await v(a.repo,["worktree","add","--detach",l,e.commit]);try{let p=await C({repoPath:l,profileId:e.state.profileRef.profileId});if(p.error||!p.sourcePath)throw new Error("The staged original Profile cannot be loaded.");return await i({root:l,profile:p,repo:a.repo,source:p.sourcePath})}finally{await v(a.repo,["worktree","remove","--force",l]).catch(()=>{}),await s.rm(l,{recursive:!0,force:!0})}}h(ye,"withCandidateProfileWorktree");function y(e){if(!e||n.isAbsolute(e)||e.includes("\\")||e.split("/").some(i=>!i||i==="."||i===".."))throw new Error("Original Profile patch path is not contained.");return e}h(y,"portable");async function ve(e){let i=e.base.manifest.metadata.profileSourceBindings;if(!Array.isArray(i))throw new Error("The original release needs compiler source bindings before candidate adoption.");let a=e.state.component.path,r=e.state.component,l=new Map(i.map(t=>{if(!t||typeof t!="object"||typeof t.releasedPath!="string"||typeof t.profileRelativePath!="string")throw new Error("Original Profile source binding is invalid.");return[y(t.releasedPath),y(t.profileRelativePath)]})),p=r.kind==="instruction"&&a==="instructions/system.md"&&e.base.manifest.metadata.profileInstructionSourcePath==="instructions/system.md"&&!l.has(a),f=l.get(a)??(p?"instructions/system.md":void 0),S=r.kind==="workflow"?`workflows/${r.workflowId}/`:r.kind==="agent"?a.split("/").slice(0,2).join("/")+"/":n.posix.dirname(a)+"/",w=f?n.posix.dirname(f)+"/":null;if(r.kind==="workflow"&&!f&&(w=S),r.kind==="agent"){let t=e.profile.agents.find(o=>a.startsWith(`agents/${o.id}/`));if(!t)throw new Error("The selected Agent original source is unavailable.");let c=y(t.path);w=((await s.lstat(n.join(e.source,c))).isDirectory()?c:n.posix.dirname(c))+"/"}let E=new Map(e.base.sourceFiles.map(t=>[t.path,t])),x=new Map(e.candidate.sourceFiles.map(t=>[t.path,t])),g=new Map;for(let t of new Set([...E.keys(),...x.keys()])){let c=E.get(t),m=x.get(t);if(c?.asset.contentHash===m?.asset.contentHash)continue;if(c&&c.asset.visibility!=="policy"||m&&m.asset.visibility!=="policy")throw new Error("A candidate cannot change protected Profile source.");let o=l.get(t)??(p&&t===a?f:void 0);if(!o&&t.startsWith(S)&&w&&(o=w+t.slice(S.length)),!o&&t==="workflows/catalog.json"&&[...l.keys()].some(P=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(P))||!o&&t==="dependency-lock/profile-import.json")continue;if(!o)throw new Error(`The selected component has no original Profile source mapping: ${t}`);if(o=y(o),o!==f&&!(r.kind!=="instruction"&&w&&o.startsWith(w)))throw new Error("Candidate patch changes a different original Profile component.");if(H(o))throw new Error("Candidate patch crosses the protected Profile evaluation closure.");let u=g.get(o),d=m?.bytes??null;if(u&&(u.before!==(c?.asset.contentHash??null)||b(u.bytes===null?null:Array.from(u.bytes))!==b(d===null?null:Array.from(d))))throw new Error("Public component aliases disagree on the original source edit.");g.set(o,{before:p&&t===a?null:c?.asset.contentHash??null,bytes:d})}for(let[t,c]of g){let m=n.join(e.source,...t.split("/")),o=n.dirname(m);for(;!await s.stat(o).catch(()=>null);)o=n.dirname(o);let u=n.relative(await s.realpath(e.source),await s.realpath(o));if(u.startsWith("..")||n.isAbsolute(u))throw new Error("Candidate patch escapes the staged Profile source.");let d=await s.lstat(m).catch(()=>null);if(d?.isSymbolicLink()||d&&!d.isFile())throw new Error("Original source patch needs a regular file.");let P=d?await s.readFile(m):null;if((P?k(P):null)!==c.before)throw new Error("Original source bytes differ from the exact candidate baseline.");c.bytes===null?await s.rm(m):(await s.mkdir(n.dirname(m),{recursive:!0}),await s.writeFile(m,c.bytes,{mode:d?.mode??384}))}return[...g.keys()]}h(ve,"applyCandidateProfileSource");function Se(e){let i=e.base.manifest.metadata.profileRepositoryId;return R({storeDir:e.storeDir,workspaceId:e.state.ownerWorkspaceId,name:e.base.manifest.name,profile:e.profile,sourceRevision:e.sourceRevision,...typeof i=="string"?{repositoryId:i}:{}})}h(Se,"compileOriginalCandidateProfile");export{v as a,j as b,Pe as c,ye as d,ve as e,Se as f};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{b as H}from"./chunk-O7VGFMDO.js";import{a as L}from"./chunk-T5LE6R5S.js";import{F as g,K as N,L as B}from"./chunk-7K72KS5C.js";import{qa as _}from"./chunk-7MXZJQS7.js";import{O as x,R as V,S as F,Y as R}from"./chunk-XDMUD4FW.js";import{ta as I}from"./chunk-IKWDL3RB.js";import{Ca as b}from"./chunk-QRWPEW3Z.js";import{ma as E,na as C,oa as y}from"./chunk-PJM2G7SG.js";import{Ga as A}from"./chunk-SDEDAHV6.js";import{c as D,e as v,f as U,g as M,i as O,qa as T}from"./chunk-DALJMSJG.js";import{m as p}from"./chunk-NNF6KCHD.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as w,c as P,f as j,h as c}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import h from"node:path";import{AsyncLocalStorage as ee}from"node:async_hooks";import{promises as z}from"node:fs";var J=new ee;function fe(r,e=!1){let t=J.getStore();t&&(e&&(t.length=0),t.push(r))}i(fe,"onStartupFailure");async function ge(r,e){await T(r);let t;try{t=await M(h.join(c(r).runtime,"server-owner"),100)}catch(n){if(n instanceof P&&n.issue.code==="STORAGE_BUSY"){let a=await O(h.join(c(r).runtime,"endpoint.json"),()=>null);throw new P({code:"RUNTIME_ALREADY_RUNNING",path:r,message:"An OpenPond runtime already owns this home.",action:a?.url?`Connect to the existing runtime at ${a.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw n}let s=[];try{let n=await w(r,()=>J.run(s,e)),a=n.close.bind(n);s.length=0;let d;return{...n,close:i(()=>d??=(async()=>{try{await w(r,a)}finally{await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(n){try{for(let a of s.reverse())await Promise.resolve().then(()=>w(r,a)).catch(()=>{});await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw n}}i(ge,"ownHomeRuntime");async function he(r,e,t){await v(h.join(c(r).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}i(he,"publishRuntimeEndpoint");function ye(r){return te({runtime:B(r.ports),close:r.close})}i(ye,"createAppServer");function te(r){let e=!1;return{runtime:r.runtime,close:i(async()=>{e||(e=!0,await r.close?.())},"close")}}i(te,"attachAppServer");async function Pe(r){let e=typeof r.appServer=="function"?null:r.appServer;try{await N({host:e?.runtime??(async()=>(e=await r.appServer(),e.runtime)),readable:r.readable,writable:r.writable,hostStorageClient:r.hostStorageClient})}finally{await e?.close()}}i(Pe,"runAppServerJsonl");import S from"node:path";import{lstat as re,readFile as oe,realpath as $}from"node:fs/promises";import{randomUUID as se}from"node:crypto";var ne=o.object({id:o.string(),version:o.string(),contentHash:o.string().regex(/^[a-f0-9]{64}$/),feedbackKey:o.string(),release:o.object({id:o.string(),revision:o.union([o.string(),o.number()]),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict(),G=o.object({binding:C,packageValue:o.unknown(),graders:o.array(ne).max(100),actualGrading:o.object({pass:o.unknown(),evidence:o.unknown()}).strict().optional(),sourceCandidate:E.optional()}).strict();async function Me(r,e){let t=await $(e),s=S.resolve(r);if(S.dirname(s)!==t||await $(s)!==s)throw new Error("External Dataset package escaped its private owner home.");let n=await re(s);if(!n.isFile()||n.isSymbolicLink()||n.size>32*1024*1024)throw new Error("External Dataset package is not a bounded regular file.");let a=G.parse(JSON.parse(new TextDecoder("utf8",{fatal:!0}).decode(await oe(s))));return a.binding=y(a.binding),a.packageValue=I({...a,packageValue:b(a.packageValue)}),a}i(Me,"readHostProfileExternalDataset");async function Oe(r){let e=G.parse(r.value),t=y(e.binding),s=r.release,n={id:s.harnessRelease.id,contentHash:s.harnessRelease.contentHash};if(t.protectedProfileClosureHash!==p(s.harnessRelease.files.filter(l=>l.visibility!=="policy").map(l=>({path:l.path,asset:l}))))throw new Error("The external Dataset protected Profile closure changed.");if(e.sourceCandidate){let l=await _({workspaceId:typeof s.agentSnapshot.metadata.workspaceId=="string"?s.agentSnapshot.metadata.workspaceId:s.workspaceId,sourceDir:S.join(s.bundlePath,"source")});if(p(e.sourceCandidate.harnessRelease)!==p(n)||L(l).protectedClosureHash!==e.sourceCandidate.protectedClosureHash)throw new Error("The external Dataset candidate differs from its retained frozen compiled source.")}let a=i(async l=>{if(o.object({authorized:o.literal(!0),bindingHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(await r.client.request({contractVersion:1,requestId:se(),operation:"profile.externalDataset.authorize",params:{...l,bindingHash:t.contentHash}})).bindingHash!==t.contentHash)throw new Error("The host authorized another external Dataset binding.")},"authorize");return{authorize:a,resolveExternalDataset:i(async(l,m)=>{if(await a(),p(l)!==p(t)||m.profileRef.profileId!==t.profileId||m.sourceRevision!==r.sourceRevision||p(m.harnessRelease)!==p(n))throw new Error("External Dataset requested another actual Profile source or recipe.");let f=I({...e,binding:l,packageValue:b(e.packageValue)});return{binding:t,packageValue:f,authorize:a}},"resolveExternalDataset"),sourceCandidate:e.sourceCandidate}}i(Oe,"createHostProfileExternalDataset");import{randomBytes as ae}from"node:crypto";function Ne(){return j()}i(Ne,"appDataDir");function Be(r){return c(r).config}i(Be,"providersConfigPath");function Le(r){return c(r).credentials}i(Le,"providerSecretsConfigPath");function ze(r){return c(r).key}i(ze,"providerSecretsKeyPath");async function Je(r){let e=c(r).token;return U(e,async()=>{let t=(await D(e))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||ae(32).toString("base64url");return s!==t&&await v(e,s),{token:s,tokenFile:e}})}i(Je,"ensureCapabilityToken");import u from"node:path";import{readFile as W}from"node:fs/promises";var q=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),hostExecution:o.object({conversationId:o.string().min(1),turnId:o.string().min(1)}).strict().optional(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(u.isAbsolute)}).strict();async function Ze(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile release changed after admission.");let n=s.release.harnessRelease.metadata.profile;if(!n||typeof n!="object"||n.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");return{profile:F(),profileLibrary:V()}}i(Ze,"loadHostedProfileStateAndLibrary");async function et(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile workflow release is unavailable.");let n=s.release.harnessRelease.metadata.profile;if(n?.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let a=t.harnessRelease,d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!s.release.harnessRelease.files.some(f=>f.path==="workflows/catalog.json"))return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:[]};let l=u.join(s.release.bundlePath,"source","workflows"),m=A({agentSnapshot:s.release.agentSnapshot,harnessRelease:s.release.harnessRelease,catalogBytes:await W(u.join(l,"catalog.json")),actionBytes:await W(u.join(l,"actions.json"))});return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:m.catalog.workflows.map(f=>({workflow:f,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:a,catalogHash:m.catalogHash,workflowId:f.id}}))}}i(et,"listHostedProfileWorkflows");import{createHash as ie,randomUUID as k}from"node:crypto";var K=o.object({approval:x,revision:o.number().int().positive()}).strict(),Q=o.object({record:R}).strict(),le=o.object({startedAt:o.string().min(1),requestOrdinal:o.number().int().nonnegative(),id:o.string().min(1)}).strict(),ce=o.object({records:o.array(R).max(200),nextBefore:le.nullable()}).strict(),Y=1e4,X=class{constructor(e){this.client=e}client;static{i(this,"HostedApprovalStorage")}async readApproval(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"approval/get",params:{approvalId:e}});return t===null?null:K.parse(t)}async getApproval(e){return(await this.readApproval(e))?.approval??null}async putApproval(e){let t=x.parse(e.approval);if(!e.requestId.trim())throw new Error("Approval mutation requires a stable request ID.");return K.parse(await this.client.request({contractVersion:g,requestId:e.requestId,operation:"approval/upsert",params:{approval:t,expectedRevision:e.expectedRevision}}))}},Z=class{constructor(e){this.client=e}client;static{i(this,"HostedModelUsageStorage")}async upsertModelUsageRecord(e){let t=R.parse(e),s=ie("sha256").update(JSON.stringify(t)).digest("hex"),n=await this.client.request({contractVersion:g,requestId:`usage:${s}`,operation:"usage/upsert",params:{record:t}}),a=Q.parse(n).record;if(a.requestId!==t.requestId)throw new Error("Host usage upsert changed request identity.");return a}async getModelUsageRecordByRequestId(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"usage/getByRequestId",params:{requestId:e}});return t===null?null:Q.parse(t).record}async listModelUsageRecords(e={}){let t=e.limit===void 0||e.limit>=Y,s=e.limit===void 0?Y:Math.max(1,Math.min(1e4,Math.trunc(e.limit))),n={...e.sessionId?{sessionId:e.sessionId}:{},...e.turnId?{turnId:e.turnId}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.startedAtFrom?{startedAtFrom:e.startedAtFrom}:{},...e.startedAtTo?{startedAtTo:e.startedAtTo}:{},...e.visibility&&e.visibility!=="all"?{visibility:e.visibility}:{},...e.status&&e.status!=="all"?{status:e.status}:{}},a=[],d=null;for(;a.length<s+(t?1:0);){let l=ce.parse(await this.client.request({contractVersion:g,requestId:k(),operation:"usage/page",params:{query:n,before:d,limit:Math.min(200,s+(t?1:0)-a.length)}}));if(a.push(...l.records),a.length>s)throw new Error(`Hosted usage query exceeds ${s} rows; narrow its filters or use a streamed aggregation.`);if(l.nextBefore===null)break;if(l.records.length===0||JSON.stringify(l.nextBefore)===JSON.stringify(d))throw new Error("Host usage cursor did not advance.");d=l.nextBefore}return a}async listModelUsageRecordsComplete(e={}){return this.listModelUsageRecords(e)}};export{fe as a,ge as b,he as c,ye as d,Pe as e,Me as f,Oe as g,Ne as h,Be as i,Le as j,ze as k,Je as l,q as m,Ze as n,et as o,X as p,Z as q};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{E as u,F as h}from"./chunk-UWO34HP6.js";import{f as c}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createHash as i}from"node:crypto";import{readFile as m}from"node:fs/promises";import y from"node:path";var U=".openpond/source-upload-cache.json",d="openpond.source-upload-cache.v1";async function E(e){try{let a=(await u(c(),"source-upload.v1",l(e)))?.payload;if(!a)return new Map;if(a.schema!==d||!a.entries)return new Map;let t=new Map;for(let[o,n]of Object.entries(a.entries))!f(n)||o!==p(n)||t.set(o,n);return t}catch{return new Map}}s(E,"readSourceUploadCache");async function b(e,r){let a=await m(e.absolutePath),t=i("sha256").update(a).digest("hex"),o=p({...e,sha256:t}),n=r.get(o);return n&&n.sha256===t&&i("sha256").update(Buffer.from(n.contentsBase64,"base64")).digest("hex")===t?{file:e,entry:{path:e.path,type:"file",contentsBase64:n.contentsBase64},sha256:n.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:a.toString("base64")},sha256:t}}s(b,"materializeSourceUploadFile");async function A(e,r){let a={};for(let t of r){let o={path:t.file.path,size:t.file.size,mtimeMs:t.file.mtimeMs,ctimeMs:t.file.ctimeMs,sha256:t.sha256,contentsBase64:t.entry.contentsBase64};a[p(o)]=o}await h(c(),"source-upload.v1",l(e),{schema:d,generatedAt:new Date().toISOString(),entries:a})}s(A,"writeSourceUploadCache");function p(e){return`${e.path}\0${e.sha256}`}s(p,"cacheKeyForFile");function f(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.path=="string"&&typeof r.size=="number"&&typeof r.mtimeMs=="number"&&typeof r.ctimeMs=="number"&&typeof r.sha256=="string"&&typeof r.contentsBase64=="string"}s(f,"isCacheEntry");function l(e){return i("sha256").update(y.resolve(e)).digest("hex")}s(l,"sourceScope");export{U as a,E as b,b as c,A as d};
2
+ import{E as u,F as h}from"./chunk-DALJMSJG.js";import{f as c}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createHash as i}from"node:crypto";import{readFile as m}from"node:fs/promises";import y from"node:path";var U=".openpond/source-upload-cache.json",d="openpond.source-upload-cache.v1";async function E(e){try{let a=(await u(c(),"source-upload.v1",l(e)))?.payload;if(!a)return new Map;if(a.schema!==d||!a.entries)return new Map;let t=new Map;for(let[o,n]of Object.entries(a.entries))!f(n)||o!==p(n)||t.set(o,n);return t}catch{return new Map}}s(E,"readSourceUploadCache");async function b(e,r){let a=await m(e.absolutePath),t=i("sha256").update(a).digest("hex"),o=p({...e,sha256:t}),n=r.get(o);return n&&n.sha256===t&&i("sha256").update(Buffer.from(n.contentsBase64,"base64")).digest("hex")===t?{file:e,entry:{path:e.path,type:"file",contentsBase64:n.contentsBase64},sha256:n.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:a.toString("base64")},sha256:t}}s(b,"materializeSourceUploadFile");async function A(e,r){let a={};for(let t of r){let o={path:t.file.path,size:t.file.size,mtimeMs:t.file.mtimeMs,ctimeMs:t.file.ctimeMs,sha256:t.sha256,contentsBase64:t.entry.contentsBase64};a[p(o)]=o}await h(c(),"source-upload.v1",l(e),{schema:d,generatedAt:new Date().toISOString(),entries:a})}s(A,"writeSourceUploadCache");function p(e){return`${e.path}\0${e.sha256}`}s(p,"cacheKeyForFile");function f(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.path=="string"&&typeof r.size=="number"&&typeof r.mtimeMs=="number"&&typeof r.ctimeMs=="number"&&typeof r.sha256=="string"&&typeof r.contentsBase64=="string"}s(f,"isCacheEntry");function l(e){return i("sha256").update(y.resolve(e)).digest("hex")}s(l,"sourceScope");export{U as a,E as b,b as c,A as d};
@@ -1,3 +1,3 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{la as l,pa as c}from"./chunk-JBHAU7PH.js";import{N as n}from"./chunk-ZJY2L43W.js";import{a as t}from"./chunk-FTQLQJQV.js";import{mkdir as f}from"node:fs/promises";import p from"node:path";import a from"node:path";function d(e,o){let i=a.resolve(e),r=a.resolve(o);return r===i||r.startsWith(`${i}${a.sep}`)}t(d,"isHostedProfileSourceWithinRepo");async function u(e){if(!p.isAbsolute(e.repoPath)||!p.isAbsolute(e.outputDir)||!/^[a-f0-9]{40,64}$/.test(e.sourceRevision)||!e.workspaceId.trim()||!e.repositoryId.trim()||!e.profileId.trim())throw new Error("Hosted Profile compile request is invalid.");let o=await n({repoPath:e.repoPath,profileId:e.profileId});if(o.error||o.mode!=="local"||o.activeProfile!==e.profileId||!o.sourcePath||!d(e.repoPath,o.sourcePath))throw new Error("Hosted Profile source is unavailable.");await f(e.outputDir,{recursive:!0});let i=await l({storeDir:e.outputDir,workspaceId:e.workspaceId,name:e.profileId,profile:o,sourceRevision:e.sourceRevision,repositoryId:e.repositoryId}),r=i.harnessRelease.metadata.profile;if(!r||typeof r!="object"||r.id!==e.profileId||r.sourceRevision!==e.sourceRevision||r.repositoryId!==e.repositoryId)throw new Error("Hosted Profile release provenance is invalid.");let s=await c({storeDir:e.outputDir,workspaceId:e.workspaceId,compiled:i,createdAt:new Date().toISOString()});return{workspaceId:e.workspaceId,sourceRevision:s.sourceRevision,harnessRelease:s.harnessRelease,agentSnapshot:s.agentSnapshot,bundlePath:s.bundlePath}}t(u,"compileHostedProfileRelease");async function H(e){if(e.length!==1||e[0].length>16e3||!/^[A-Za-z0-9_-]+$/.test(e[0]))throw new Error("Hosted Profile compile argument is invalid.");let o=JSON.parse(Buffer.from(e[0],"base64url").toString("utf8")),i=await u(o);process.stdout.write(`${JSON.stringify(i)}
3
- `)}t(H,"runHostedProfileCompilerCli");async function y(e){await(await import("./hosted-profile-evaluation-preparation-OR4OLYEX.js")).runHostedProfileEvaluationCli(e)}t(y,"runHostedProfileEvaluationCli");async function k(e){await(await import("./hosted-profile-evaluation-inspection-A62UYFEP.js")).runHostedProfileInspectionCli(e)}t(k,"runHostedProfileInspectionCli");export{u as a,H as b,y as c,k as d};
2
+ import{na as l,ra as c}from"./chunk-7MXZJQS7.js";import{N as n}from"./chunk-HA7EFTPF.js";import{a as t}from"./chunk-FTQLQJQV.js";import{mkdir as f}from"node:fs/promises";import p from"node:path";import a from"node:path";function d(e,o){let i=a.resolve(e),r=a.resolve(o);return r===i||r.startsWith(`${i}${a.sep}`)}t(d,"isHostedProfileSourceWithinRepo");async function u(e){if(!p.isAbsolute(e.repoPath)||!p.isAbsolute(e.outputDir)||!/^[a-f0-9]{40,64}$/.test(e.sourceRevision)||!e.workspaceId.trim()||!e.repositoryId.trim()||!e.profileId.trim())throw new Error("Hosted Profile compile request is invalid.");let o=await n({repoPath:e.repoPath,profileId:e.profileId});if(o.error||o.mode!=="local"||o.activeProfile!==e.profileId||!o.sourcePath||!d(e.repoPath,o.sourcePath))throw new Error("Hosted Profile source is unavailable.");await f(e.outputDir,{recursive:!0});let i=await l({storeDir:e.outputDir,workspaceId:e.workspaceId,name:e.profileId,profile:o,sourceRevision:e.sourceRevision,repositoryId:e.repositoryId}),r=i.harnessRelease.metadata.profile;if(!r||typeof r!="object"||r.id!==e.profileId||r.sourceRevision!==e.sourceRevision||r.repositoryId!==e.repositoryId)throw new Error("Hosted Profile release provenance is invalid.");let s=await c({storeDir:e.outputDir,workspaceId:e.workspaceId,compiled:i,createdAt:new Date().toISOString()});return{workspaceId:e.workspaceId,sourceRevision:s.sourceRevision,harnessRelease:s.harnessRelease,agentSnapshot:s.agentSnapshot,bundlePath:s.bundlePath}}t(u,"compileHostedProfileRelease");async function H(e){if(e.length!==1||e[0].length>16e3||!/^[A-Za-z0-9_-]+$/.test(e[0]))throw new Error("Hosted Profile compile argument is invalid.");let o=JSON.parse(Buffer.from(e[0],"base64url").toString("utf8")),i=await u(o);process.stdout.write(`${JSON.stringify(i)}
3
+ `)}t(H,"runHostedProfileCompilerCli");async function y(e){await(await import("./hosted-profile-evaluation-preparation-JROREZH3.js")).runHostedProfileEvaluationCli(e)}t(y,"runHostedProfileEvaluationCli");async function k(e){await(await import("./hosted-profile-evaluation-inspection-FPCV42DD.js")).runHostedProfileInspectionCli(e)}t(k,"runHostedProfileInspectionCli");export{u as a,H as b,y as c,k as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as me,b as D,c as G,d as j,e as z,g as ye,i as T,j as we,k as S,l as he,v as B,x as F}from"./chunk-XLDW5NN3.js";import{a as re,b as L,c as R}from"./chunk-USWZ3KUC.js";import{b as H,c as be,d as ve,f as w,h as P,i as Re}from"./chunk-BSHAIAXY.js";import{a as Z,b as ee,c as te}from"./chunk-TYWBEJOA.js";import{a as M,f as v,k as X}from"./chunk-3M53YXEI.js";import{M as pe,N as ue,R as ge,V as fe,h as $,i as ie,l as ae,n as se,o as ce,p as le,q as de}from"./chunk-LZSY5IM3.js";import{d as y,e as ne,f as oe,g as C}from"./chunk-6SJZXZNA.js";import{a as g}from"./chunk-FTQLQJQV.js";import{promises as V,existsSync as W}from"node:fs";import U from"node:path";import{stdin as $e}from"node:process";async function Ge(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await ce(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(Ge,"runTemplateStatus");async function je(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await le(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(je,"runTemplateBranches");async function ze(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.env=="string"?e.env:typeof e.environment=="string"?e.environment:void 0,f=X(s),c=await de(n,i,a.id,{environment:f});console.log(JSON.stringify(c,null,2))}g(ze,"runTemplateUpdate");async function He(e){let o=await y(),t=w(o),r=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,n=r?r.trim():await L();if(!n)throw new Error("API key is required");n.startsWith("opk_")||console.log("warning: API keys usually start with opk_."),await C({handle:o.activeProfile?.handle||"default",apiKey:n,baseUrl:t,apiBaseUrl:o.apiBaseUrl,chatApiBaseUrl:o.chatApiBaseUrl,setActive:!0}),console.log("Saved account credentials to the encrypted OpenPond credential store.")}g(He,"runLogin");async function Fe(e,o){let t=o[0]||"list";if(t==="list"){let r=await ne();console.log(JSON.stringify({profiles:r},null,2));return}if(t==="use"){let r=o[1];if(!r)throw new Error("usage: profiles use <name> [--base-url <url>]");let n=await oe(r,{baseUrl:H(e)});console.log(JSON.stringify({profile:n},null,2));return}if(t==="save"){let r=o[1];if(!r)throw new Error("usage: profiles save <name> --api-key <key> [--base-url <url>] [--api-base-url <url>] [--chat-api-base-url <url>]");let n=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,i=n?n.trim():await L(),a=typeof e.environment=="string"?e.environment:typeof e.env=="string"?e.env:void 0,s=await C({handle:r,apiKey:i,baseUrl:H(e),apiBaseUrl:be(e),chatApiBaseUrl:ve(e),environment:a,setActive:!0});console.log(JSON.stringify({profile:s},null,2));return}throw new Error("usage: profiles <list|use|save> [args]")}g(Fe,"runProfiles");async function Ve(){let e=await y(),o=w(e),t=P(e),r=await R(e,o),n=await pe(t,r);console.log(JSON.stringify(n,null,2))}g(Ve,"runAccount");async function We(e){let o=await y(),t=P(o),r=re(o),n=await ue(t,r);console.log(JSON.stringify(n,null,2))}g(We,"runHealth");async function qe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.branch=="string"?String(e.branch):void 0,f=await $(n,i,a.id,{branch:s});if(!f?.id){console.log("no deployments found");return}let c=await ie(n,i,f.id),d=(c&&Array.isArray(c.toolsJson)?c.toolsJson:null)||(c&&typeof c.metadataJson=="object"&&c.metadataJson?c.metadataJson.tools:null),u=Array.isArray(d)?d:[];if(u.length===0){console.log("no tools found");return}for(let l of u){let m=l,h=m.profile||m.function,I=m.name||h?.name||"unknown",p=m.description||h?.description||"";console.log(p?`${I} - ${p}`:I)}}g(qe,"runToolList");async function Ye(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=await $(i,a,s.id,{branch:f});if(!c?.id)throw new Error("no deployments found");let d;if(typeof e.body=="string")try{d=JSON.parse(e.body)}catch{throw new Error("tool body must be valid JSON")}let u=typeof e.method=="string"?String(e.method).toUpperCase():"POST",l=await fe(n,a,{appId:s.id,deploymentId:c.id,toolName:t,method:u,body:d,headers:a?{"openpond-api-key":a}:void 0});if(!l.ok)throw new Error(l.error||`tool failed (${l.status})`);let m=l.data??{ok:!0};console.log(JSON.stringify(m,null,2))}g(Ye,"runToolRun");async function Qe(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,d=c?{id:c}:await $(i,a,s.id,{branch:f});if(!d?.id)throw new Error("no deployments found");let u=typeof e.body=="string"?M(String(e.body),"body"):{};if(!u||typeof u!="object"||Array.isArray(u))throw new Error("body must be a JSON object");let l=typeof e.method=="string"?String(e.method).toUpperCase():"POST",m={...u,appId:s.id,deploymentId:d.id,toolName:t,method:l},h=await ge(i,a,m);console.log(JSON.stringify(h,null,2))}g(Qe,"runBacktestRun");async function Xe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a,handle:s,repo:f}=await T(n,i,o),c=typeof e.branch=="string"?String(e.branch):void 0,d=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,u=d?{id:d}:await $(n,i,a.id,{branch:c});if(!u?.id){console.log("no deployments found");return}await we({baseUrl:n,apiKey:i,deploymentId:u.id,prefix:`[${s}/${f}] `,intervalMs:e.interval?Number(e.interval):void 0,timeoutMs:e.timeout?Number(e.timeout):void 0})}g(Xe,"runDeployWatch");async function Ze(e,o){let r=((typeof e.name=="string"?e.name:null)||o.join(" ")).trim();if(!r)throw new Error("usage: repo create --name <name> [--team-id <id>] [--path <dir>] [--template <owner/repo|url>] [--template-branch <branch>] [--empty|--opentool] [--sandbox] [--token] [--auto-schedule-migration <true|false>]");let n=await y(),i=w(n),a=await R(n,i),s=P(n),f=typeof e.teamId=="string"&&e.teamId.trim()?e.teamId.trim():void 0,c=typeof e.template=="string"?e.template.trim():"";if(c&&(e.empty==="true"||e.opentool==="true"))throw new Error("choose one: --template or --empty/--opentool");if(e.empty==="true"&&e.opentool==="true")throw new Error("choose one: --empty or --opentool");let d=typeof e.description=="string"?e.description.trim():void 0,u=typeof e.templateBranch=="string"&&e.templateBranch.trim().length>0?e.templateBranch.trim():void 0,l=typeof e.env=="string"?M(e.env,"env"):void 0;if(l){if(typeof l!="object"||Array.isArray(l))throw new Error("env must be a JSON object");for(let[b,A]of Object.entries(l))if(typeof A!="string")throw new Error(`env value for ${b} must be a string`)}if(c){e.deployOnPush!==void 0&&console.warn("deploy-on-push is not used for template create (auto deploys)");let b=Re(c,i),k=(await se(s,a,[{name:r,...d?{description:d}:{},templateRepoUrl:b,...u?{templateBranch:u}:{},...l?{envVars:l}:{}}],f)).items?.[0];if(!k||k.status!=="ok"||!k.appId)throw new Error(k?.error||"Template create failed");console.log(`app_id: ${k.appId}`),k.deploymentId&&console.log(`deployment_id: ${k.deploymentId}`),k.conversationId&&console.log(`conversation_id: ${k.conversationId}`);return}let m=process.cwd(),h=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,I=h&&h.trim().length>0?h.trim():$e.isTTY?await he(m):m,p=U.resolve(I);if(W(p)){if(!(await V.stat(p)).isDirectory())throw new Error(`path is not a directory: ${p}`)}else await V.mkdir(p,{recursive:!0});let Pe=(await V.readdir(p)).filter(b=>b!==".git").length===0,x=v(e.yes)||v(e.force);if(!Pe&&!x&&!await S(`Directory is not empty (${p}). Continue?`,!1)){console.log("aborted");return}let ke=U.join(p,".git");if(!W(ke)){if(!(x?!0:await S("Initialize git repository here?",!0))){console.log("aborted");return}let A=await B("git",["init"],{cwd:p});if(A.code!==0)throw new Error(`git init failed: ${A.stderr.trim()||A.stdout.trim()||"unknown error"}`)}let K=await F(p,"origin");if(K&&!x&&!await S(`Remote "origin" already set (${K}). Replace it?`,!1)){console.log("aborted");return}let q=e.opentool==="true"?"opentool":"empty",Te=v(e.sandbox),Be=v(e.deployOnPush),N=e.autoScheduleMigration,Y=typeof N=="string"||typeof N=="boolean",Ee=Y?v(N):void 0,E=await ae(s,a,{name:r,...f?{teamId:f}:{},...d?{description:d}:{},...q?{repoInit:q}:{},...Te?{sandbox:!0}:{},...l?{envVars:l}:{},...Be?{deployOnPush:!0}:{},...Y?{autoScheduleMigration:Ee}:{}}),O=me(E);z(O);let J=v(e.token)||v(e.setRemoteToken),Oe=D(O,a),Q=J?Oe:O,_=await B("git",K?["remote","set-url","origin",Q]:["remote","add","origin",Q],{cwd:p});if(_.code!==0)throw new Error(`git remote failed: ${j(_.stderr.trim()||_.stdout.trim()||"unknown error")}`);let Ae=J?G(O):O;console.log(`app_id: ${E.appId}`),E.gitOwner&&E.gitRepo&&console.log(`repo: ${E.gitOwner}/${E.gitRepo}`),console.log(`remote: ${Ae}`),console.log('next: git add . && git commit -m "init"');let Ie=E.defaultBranch||"master";console.log(`next: openpond repo push --path ${p} --branch ${Ie}`),J||console.log(`token-remote (non-interactive): git -C ${p} remote set-url origin ${G(O)}`);try{await ye({apiBase:s,apiKey:a,forceRefresh:!0})}catch(b){console.warn("cache refresh failed",b)}}g(Ze,"runRepoCreate");async function Se(e){let o=await B("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e});if(o.code!==0)return null;let t=o.stdout.trim();return t.length>0?t:null}g(Se,"resolveGitBranch");async function et(e){let o=await y(),t=w(o),r=await R(o,t),n=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,i=U.resolve(n&&n.trim().length>0?n.trim():"."),a=U.join(i,".git");if(!W(a))throw new Error(`git repo not found at ${i} (missing .git)`);let s=await F(i,"origin");if(!s)throw new Error("origin remote not set; run `openpond repo create` first");z(s);let c=(typeof e.branch=="string"?e.branch.trim():"")||await Se(i);if(!c)throw new Error("unable to resolve git branch; pass --branch");let d;try{d=D(s,r)}catch{throw new Error("origin remote must be https for tokenized pushes")}let u=v(e.keepTokenRemote)||v(e.token)||v(e.setRemoteToken),l=s.includes("x-access-token:"),m=!u&&!l?s:null,h=process.env.GIT_TERMINAL_PROMPT;process.env.GIT_TERMINAL_PROMPT="0";try{if(!l){let p=await B("git",["remote","set-url","origin",d],{cwd:i});if(p.code!==0)throw new Error(`git remote set-url failed: ${j(p.stderr.trim()||p.stdout.trim()||"unknown error")}`)}if((await B("git",["push","-u","origin",c],{cwd:i,inherit:!0})).code!==0)throw new Error("git push failed")}finally{m&&await B("git",["remote","set-url","origin",m],{cwd:i}).catch(()=>null),h===void 0?delete process.env.GIT_TERMINAL_PROMPT:process.env.GIT_TERMINAL_PROMPT=h}}g(et,"runRepoPush");async function tt(e){if(e.length===0)throw new Error("usage: opentool <init|validate|build> [args]");let o=process.platform==="win32"?"npx.cmd":"npx";if((await B(o,["opentool",...e],{inherit:!0})).code!==0)throw new Error("opentool command failed")}g(tt,"runOpentool");async function nt(){let e="openpond",o=Z(),t=await te(e),r=`npm i -g ${e}@${t}`,n=ee(o,t);if(n===0){console.log(`${e} is up to date (${o})`);return}if(n===-1){console.log(`Update available: ${o} -> ${t}`),console.log(`Run: ${r}`);return}if(n===1){console.log(`Installed version (${o}) is newer than npm latest (${t}).`);return}if(o===t){console.log(`${e} is up to date (${o})`);return}console.log(`Installed: ${o}`),console.log(`Latest: ${t}`),console.log(`Run: ${r}`)}g(nt,"runCheckUpdate");export{Ge as a,je as b,ze as c,He as d,Fe as e,Ve as f,We as g,qe as h,Ye as i,Qe as j,Xe as k,Ze as l,Se as m,et as n,tt as o,nt as p};
2
+ import{a as me,b as D,c as G,d as j,e as z,g as ye,i as T,j as we,k as S,l as he,v as B,x as F}from"./chunk-N3DEA6PG.js";import{a as re,b as L,c as R}from"./chunk-PA7XP42P.js";import{b as H,c as be,d as ve,f as w,h as P,i as Re}from"./chunk-BSHAIAXY.js";import{a as Z,b as ee,c as te}from"./chunk-Q4H3NUVW.js";import{a as M,f as v,k as X}from"./chunk-3M53YXEI.js";import{M as pe,N as ue,R as ge,V as fe,h as $,i as ie,l as ae,n as se,o as ce,p as le,q as de}from"./chunk-QXVIIM4T.js";import{d as y,e as ne,f as oe,g as C}from"./chunk-R3XFY7VL.js";import{a as g}from"./chunk-FTQLQJQV.js";import{promises as V,existsSync as W}from"node:fs";import U from"node:path";import{stdin as $e}from"node:process";async function Ge(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await ce(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(Ge,"runTemplateStatus");async function je(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=await le(n,i,a.id);console.log(JSON.stringify(s,null,2))}g(je,"runTemplateBranches");async function ze(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.env=="string"?e.env:typeof e.environment=="string"?e.environment:void 0,f=X(s),c=await de(n,i,a.id,{environment:f});console.log(JSON.stringify(c,null,2))}g(ze,"runTemplateUpdate");async function He(e){let o=await y(),t=w(o),r=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,n=r?r.trim():await L();if(!n)throw new Error("API key is required");n.startsWith("opk_")||console.log("warning: API keys usually start with opk_."),await C({handle:o.activeProfile?.handle||"default",apiKey:n,baseUrl:t,apiBaseUrl:o.apiBaseUrl,chatApiBaseUrl:o.chatApiBaseUrl,setActive:!0}),console.log("Saved account credentials to the encrypted OpenPond credential store.")}g(He,"runLogin");async function Fe(e,o){let t=o[0]||"list";if(t==="list"){let r=await ne();console.log(JSON.stringify({profiles:r},null,2));return}if(t==="use"){let r=o[1];if(!r)throw new Error("usage: profiles use <name> [--base-url <url>]");let n=await oe(r,{baseUrl:H(e)});console.log(JSON.stringify({profile:n},null,2));return}if(t==="save"){let r=o[1];if(!r)throw new Error("usage: profiles save <name> --api-key <key> [--base-url <url>] [--api-base-url <url>] [--chat-api-base-url <url>]");let n=typeof e.apiKey=="string"?e.apiKey:typeof e.key=="string"?e.key:null,i=n?n.trim():await L(),a=typeof e.environment=="string"?e.environment:typeof e.env=="string"?e.env:void 0,s=await C({handle:r,apiKey:i,baseUrl:H(e),apiBaseUrl:be(e),chatApiBaseUrl:ve(e),environment:a,setActive:!0});console.log(JSON.stringify({profile:s},null,2));return}throw new Error("usage: profiles <list|use|save> [args]")}g(Fe,"runProfiles");async function Ve(){let e=await y(),o=w(e),t=P(e),r=await R(e,o),n=await pe(t,r);console.log(JSON.stringify(n,null,2))}g(Ve,"runAccount");async function We(e){let o=await y(),t=P(o),r=re(o),n=await ue(t,r);console.log(JSON.stringify(n,null,2))}g(We,"runHealth");async function qe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a}=await T(n,i,o),s=typeof e.branch=="string"?String(e.branch):void 0,f=await $(n,i,a.id,{branch:s});if(!f?.id){console.log("no deployments found");return}let c=await ie(n,i,f.id),d=(c&&Array.isArray(c.toolsJson)?c.toolsJson:null)||(c&&typeof c.metadataJson=="object"&&c.metadataJson?c.metadataJson.tools:null),u=Array.isArray(d)?d:[];if(u.length===0){console.log("no tools found");return}for(let l of u){let m=l,h=m.profile||m.function,I=m.name||h?.name||"unknown",p=m.description||h?.description||"";console.log(p?`${I} - ${p}`:I)}}g(qe,"runToolList");async function Ye(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=await $(i,a,s.id,{branch:f});if(!c?.id)throw new Error("no deployments found");let d;if(typeof e.body=="string")try{d=JSON.parse(e.body)}catch{throw new Error("tool body must be valid JSON")}let u=typeof e.method=="string"?String(e.method).toUpperCase():"POST",l=await fe(n,a,{appId:s.id,deploymentId:c.id,toolName:t,method:u,body:d,headers:a?{"openpond-api-key":a}:void 0});if(!l.ok)throw new Error(l.error||`tool failed (${l.status})`);let m=l.data??{ok:!0};console.log(JSON.stringify(m,null,2))}g(Ye,"runToolRun");async function Qe(e,o,t){let r=await y(),n=w(r),i=P(r),a=await R(r,n),{app:s}=await T(i,a,o),f=typeof e.branch=="string"?String(e.branch):void 0,c=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,d=c?{id:c}:await $(i,a,s.id,{branch:f});if(!d?.id)throw new Error("no deployments found");let u=typeof e.body=="string"?M(String(e.body),"body"):{};if(!u||typeof u!="object"||Array.isArray(u))throw new Error("body must be a JSON object");let l=typeof e.method=="string"?String(e.method).toUpperCase():"POST",m={...u,appId:s.id,deploymentId:d.id,toolName:t,method:l},h=await ge(i,a,m);console.log(JSON.stringify(h,null,2))}g(Qe,"runBacktestRun");async function Xe(e,o){let t=await y(),r=w(t),n=P(t),i=await R(t,r),{app:a,handle:s,repo:f}=await T(n,i,o),c=typeof e.branch=="string"?String(e.branch):void 0,d=typeof e.deploymentId=="string"?String(e.deploymentId):void 0,u=d?{id:d}:await $(n,i,a.id,{branch:c});if(!u?.id){console.log("no deployments found");return}await we({baseUrl:n,apiKey:i,deploymentId:u.id,prefix:`[${s}/${f}] `,intervalMs:e.interval?Number(e.interval):void 0,timeoutMs:e.timeout?Number(e.timeout):void 0})}g(Xe,"runDeployWatch");async function Ze(e,o){let r=((typeof e.name=="string"?e.name:null)||o.join(" ")).trim();if(!r)throw new Error("usage: repo create --name <name> [--team-id <id>] [--path <dir>] [--template <owner/repo|url>] [--template-branch <branch>] [--empty|--opentool] [--sandbox] [--token] [--auto-schedule-migration <true|false>]");let n=await y(),i=w(n),a=await R(n,i),s=P(n),f=typeof e.teamId=="string"&&e.teamId.trim()?e.teamId.trim():void 0,c=typeof e.template=="string"?e.template.trim():"";if(c&&(e.empty==="true"||e.opentool==="true"))throw new Error("choose one: --template or --empty/--opentool");if(e.empty==="true"&&e.opentool==="true")throw new Error("choose one: --empty or --opentool");let d=typeof e.description=="string"?e.description.trim():void 0,u=typeof e.templateBranch=="string"&&e.templateBranch.trim().length>0?e.templateBranch.trim():void 0,l=typeof e.env=="string"?M(e.env,"env"):void 0;if(l){if(typeof l!="object"||Array.isArray(l))throw new Error("env must be a JSON object");for(let[b,A]of Object.entries(l))if(typeof A!="string")throw new Error(`env value for ${b} must be a string`)}if(c){e.deployOnPush!==void 0&&console.warn("deploy-on-push is not used for template create (auto deploys)");let b=Re(c,i),k=(await se(s,a,[{name:r,...d?{description:d}:{},templateRepoUrl:b,...u?{templateBranch:u}:{},...l?{envVars:l}:{}}],f)).items?.[0];if(!k||k.status!=="ok"||!k.appId)throw new Error(k?.error||"Template create failed");console.log(`app_id: ${k.appId}`),k.deploymentId&&console.log(`deployment_id: ${k.deploymentId}`),k.conversationId&&console.log(`conversation_id: ${k.conversationId}`);return}let m=process.cwd(),h=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,I=h&&h.trim().length>0?h.trim():$e.isTTY?await he(m):m,p=U.resolve(I);if(W(p)){if(!(await V.stat(p)).isDirectory())throw new Error(`path is not a directory: ${p}`)}else await V.mkdir(p,{recursive:!0});let Pe=(await V.readdir(p)).filter(b=>b!==".git").length===0,x=v(e.yes)||v(e.force);if(!Pe&&!x&&!await S(`Directory is not empty (${p}). Continue?`,!1)){console.log("aborted");return}let ke=U.join(p,".git");if(!W(ke)){if(!(x?!0:await S("Initialize git repository here?",!0))){console.log("aborted");return}let A=await B("git",["init"],{cwd:p});if(A.code!==0)throw new Error(`git init failed: ${A.stderr.trim()||A.stdout.trim()||"unknown error"}`)}let K=await F(p,"origin");if(K&&!x&&!await S(`Remote "origin" already set (${K}). Replace it?`,!1)){console.log("aborted");return}let q=e.opentool==="true"?"opentool":"empty",Te=v(e.sandbox),Be=v(e.deployOnPush),N=e.autoScheduleMigration,Y=typeof N=="string"||typeof N=="boolean",Ee=Y?v(N):void 0,E=await ae(s,a,{name:r,...f?{teamId:f}:{},...d?{description:d}:{},...q?{repoInit:q}:{},...Te?{sandbox:!0}:{},...l?{envVars:l}:{},...Be?{deployOnPush:!0}:{},...Y?{autoScheduleMigration:Ee}:{}}),O=me(E);z(O);let J=v(e.token)||v(e.setRemoteToken),Oe=D(O,a),Q=J?Oe:O,_=await B("git",K?["remote","set-url","origin",Q]:["remote","add","origin",Q],{cwd:p});if(_.code!==0)throw new Error(`git remote failed: ${j(_.stderr.trim()||_.stdout.trim()||"unknown error")}`);let Ae=J?G(O):O;console.log(`app_id: ${E.appId}`),E.gitOwner&&E.gitRepo&&console.log(`repo: ${E.gitOwner}/${E.gitRepo}`),console.log(`remote: ${Ae}`),console.log('next: git add . && git commit -m "init"');let Ie=E.defaultBranch||"master";console.log(`next: openpond repo push --path ${p} --branch ${Ie}`),J||console.log(`token-remote (non-interactive): git -C ${p} remote set-url origin ${G(O)}`);try{await ye({apiBase:s,apiKey:a,forceRefresh:!0})}catch(b){console.warn("cache refresh failed",b)}}g(Ze,"runRepoCreate");async function Se(e){let o=await B("git",["rev-parse","--abbrev-ref","HEAD"],{cwd:e});if(o.code!==0)return null;let t=o.stdout.trim();return t.length>0?t:null}g(Se,"resolveGitBranch");async function et(e){let o=await y(),t=w(o),r=await R(o,t),n=typeof e.path=="string"?e.path:typeof e.dir=="string"?e.dir:null,i=U.resolve(n&&n.trim().length>0?n.trim():"."),a=U.join(i,".git");if(!W(a))throw new Error(`git repo not found at ${i} (missing .git)`);let s=await F(i,"origin");if(!s)throw new Error("origin remote not set; run `openpond repo create` first");z(s);let c=(typeof e.branch=="string"?e.branch.trim():"")||await Se(i);if(!c)throw new Error("unable to resolve git branch; pass --branch");let d;try{d=D(s,r)}catch{throw new Error("origin remote must be https for tokenized pushes")}let u=v(e.keepTokenRemote)||v(e.token)||v(e.setRemoteToken),l=s.includes("x-access-token:"),m=!u&&!l?s:null,h=process.env.GIT_TERMINAL_PROMPT;process.env.GIT_TERMINAL_PROMPT="0";try{if(!l){let p=await B("git",["remote","set-url","origin",d],{cwd:i});if(p.code!==0)throw new Error(`git remote set-url failed: ${j(p.stderr.trim()||p.stdout.trim()||"unknown error")}`)}if((await B("git",["push","-u","origin",c],{cwd:i,inherit:!0})).code!==0)throw new Error("git push failed")}finally{m&&await B("git",["remote","set-url","origin",m],{cwd:i}).catch(()=>null),h===void 0?delete process.env.GIT_TERMINAL_PROMPT:process.env.GIT_TERMINAL_PROMPT=h}}g(et,"runRepoPush");async function tt(e){if(e.length===0)throw new Error("usage: opentool <init|validate|build> [args]");let o=process.platform==="win32"?"npx.cmd":"npx";if((await B(o,["opentool",...e],{inherit:!0})).code!==0)throw new Error("opentool command failed")}g(tt,"runOpentool");async function nt(){let e="openpond",o=Z(),t=await te(e),r=`npm i -g ${e}@${t}`,n=ee(o,t);if(n===0){console.log(`${e} is up to date (${o})`);return}if(n===-1){console.log(`Update available: ${o} -> ${t}`),console.log(`Run: ${r}`);return}if(n===1){console.log(`Installed version (${o}) is newer than npm latest (${t}).`);return}if(o===t){console.log(`${e} is up to date (${o})`);return}console.log(`Installed: ${o}`),console.log(`Latest: ${t}`),console.log(`Run: ${r}`)}g(nt,"runCheckUpdate");export{Ge as a,je as b,ze as c,He as d,Fe as e,Ve as f,We as g,qe as h,Ye as i,Qe as j,Xe as k,Ze as l,Se as m,et as n,tt as o,nt as p};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{c as B}from"./chunk-USWZ3KUC.js";import{e as D,f as k,g as K}from"./chunk-BSHAIAXY.js";import{f as w}from"./chunk-3M53YXEI.js";import{$ as N,W as y,X as L,Y as U,Z as M,_ as $,f as T,g as A,j as I,u as _}from"./chunk-LZSY5IM3.js";import{d as O}from"./chunk-6SJZXZNA.js";import{b as v}from"./chunk-GLUWATL5.js";import{h as C}from"./chunk-Z3D4C7BG.js";import{a as o}from"./chunk-FTQLQJQV.js";function ce(e){if(e.repoUrl)return e.repoUrl;if(e.gitHost&&e.gitOwner&&e.gitRepo)return`https://${e.gitHost}/${e.gitOwner}/${e.gitRepo}.git`;throw new Error("repoUrl missing from API response")}o(ce,"resolveRepoUrl");function le(e,t){let n=new URL(e),r=encodeURIComponent(t);return`${n.protocol}//x-access-token:${r}@${n.host}${n.pathname}`}o(le,"formatTokenizedRepoUrl");function fe(e){let t=new URL(e);return`${t.protocol}//x-access-token:$OPENPOND_API_KEY@${t.host}${t.pathname}`}o(fe,"formatTokenizedRepoUrlForPrint");function me(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@")}o(me,"redactToken");function pe(e){let t=process.env.OPENPOND_BASE_URL;if(t)try{let n=new URL(t).hostname,r=new URL(e).hostname;n&&r&&n!==r&&(console.warn(`warning: repo host (${r}) does not match OPENPOND_BASE_URL (${n})`),console.warn("warning: verify your git host configuration matches OPENPOND_BASE_URL."))}catch{}}o(pe,"warnOnRepoHostMismatch");function W(e){let t=e.split("/").filter(Boolean);if(t.length!==2)throw new Error("expected <handle>/<repo>");return{handle:t[0],repo:t[1]}}o(W,"parseHandleRepo");function S(e){return(e||"").trim().toLowerCase()}o(S,"normalizeRepoName");async function ee(e){if(!e.forceRefresh){let n=await L({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:y});if(n)return n}let t=await I(e.apiBase,e.apiKey);return await U({apiBase:e.apiBase,apiKey:e.apiKey,apps:t}),t}o(ee,"fetchAppsWithCache");async function Re(e){if(!e.forceRefresh){let r=await M({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:y});if(r)return r}let t=await _(e.apiBase,e.apiKey),n=Array.isArray(t.tools)?t.tools:[];return await $({apiBase:e.apiBase,apiKey:e.apiKey,tools:n}),n}o(Re,"fetchToolsWithCache");async function Pe(e,t,n){let{handle:r,repo:s}=W(n),i=await ee({apiBase:e,apiKey:t}),a=S(s),d=i.find(u=>u.handle&&u.handle!==r?!1:[u.repo,u.gitRepo,u.id].map(S).includes(a));if(!d)throw new Error(`app not found for ${r}/${s}`);return{app:d,handle:r,repo:s}}o(Pe,"resolveAppTarget");async function Ee(e){let t=e.intervalMs??5e3,n=e.timeoutMs??240*1e3,r=new Set,s=Date.now();for(;Date.now()-s<n;){let a=(await T(e.baseUrl,e.apiKey,e.deploymentId)).filter(u=>!r.has(u.id));for(let u of a)r.add(u.id);for(let u of a)console.log(`${e.prefix}${u.message}`);let d=await A(e.baseUrl,e.apiKey,e.deploymentId);if(d.status==="failed"){console.log(`${e.prefix}deployment failed`);return}if(d.status==="running"||d.status==="deployed"){console.log(`${e.prefix}deployment complete`);return}await new Promise(u=>setTimeout(u,t))}console.log(`${e.prefix}deployment still in progress`)}o(Ee,"pollDeploymentLogs");import{stdin as q,stdout as H}from"node:process";import{createInterface as F}from"node:readline/promises";async function z(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8").replace(/\r?\n$/,"")}o(z,"readAllStdin");function V(e){return new Promise((t,n)=>{let r=process.stdin,s=process.stderr,i="",a=r.isRaw;function d(){r.off("data",u),r.setRawMode&&r.setRawMode(a),r.pause(),s.write(`
2
+ import{c as B}from"./chunk-PA7XP42P.js";import{e as D,f as k,g as K}from"./chunk-BSHAIAXY.js";import{f as w}from"./chunk-3M53YXEI.js";import{$ as N,W as y,X as L,Y as U,Z as M,_ as $,f as T,g as A,j as I,u as _}from"./chunk-QXVIIM4T.js";import{d as O}from"./chunk-R3XFY7VL.js";import{b as v}from"./chunk-GLUWATL5.js";import{h as C}from"./chunk-Z3D4C7BG.js";import{a as o}from"./chunk-FTQLQJQV.js";function ce(e){if(e.repoUrl)return e.repoUrl;if(e.gitHost&&e.gitOwner&&e.gitRepo)return`https://${e.gitHost}/${e.gitOwner}/${e.gitRepo}.git`;throw new Error("repoUrl missing from API response")}o(ce,"resolveRepoUrl");function le(e,t){let n=new URL(e),r=encodeURIComponent(t);return`${n.protocol}//x-access-token:${r}@${n.host}${n.pathname}`}o(le,"formatTokenizedRepoUrl");function fe(e){let t=new URL(e);return`${t.protocol}//x-access-token:$OPENPOND_API_KEY@${t.host}${t.pathname}`}o(fe,"formatTokenizedRepoUrlForPrint");function me(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@")}o(me,"redactToken");function pe(e){let t=process.env.OPENPOND_BASE_URL;if(t)try{let n=new URL(t).hostname,r=new URL(e).hostname;n&&r&&n!==r&&(console.warn(`warning: repo host (${r}) does not match OPENPOND_BASE_URL (${n})`),console.warn("warning: verify your git host configuration matches OPENPOND_BASE_URL."))}catch{}}o(pe,"warnOnRepoHostMismatch");function W(e){let t=e.split("/").filter(Boolean);if(t.length!==2)throw new Error("expected <handle>/<repo>");return{handle:t[0],repo:t[1]}}o(W,"parseHandleRepo");function S(e){return(e||"").trim().toLowerCase()}o(S,"normalizeRepoName");async function ee(e){if(!e.forceRefresh){let n=await L({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:y});if(n)return n}let t=await I(e.apiBase,e.apiKey);return await U({apiBase:e.apiBase,apiKey:e.apiKey,apps:t}),t}o(ee,"fetchAppsWithCache");async function Re(e){if(!e.forceRefresh){let r=await M({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:y});if(r)return r}let t=await _(e.apiBase,e.apiKey),n=Array.isArray(t.tools)?t.tools:[];return await $({apiBase:e.apiBase,apiKey:e.apiKey,tools:n}),n}o(Re,"fetchToolsWithCache");async function Pe(e,t,n){let{handle:r,repo:s}=W(n),i=await ee({apiBase:e,apiKey:t}),a=S(s),d=i.find(u=>u.handle&&u.handle!==r?!1:[u.repo,u.gitRepo,u.id].map(S).includes(a));if(!d)throw new Error(`app not found for ${r}/${s}`);return{app:d,handle:r,repo:s}}o(Pe,"resolveAppTarget");async function Ee(e){let t=e.intervalMs??5e3,n=e.timeoutMs??240*1e3,r=new Set,s=Date.now();for(;Date.now()-s<n;){let a=(await T(e.baseUrl,e.apiKey,e.deploymentId)).filter(u=>!r.has(u.id));for(let u of a)r.add(u.id);for(let u of a)console.log(`${e.prefix}${u.message}`);let d=await A(e.baseUrl,e.apiKey,e.deploymentId);if(d.status==="failed"){console.log(`${e.prefix}deployment failed`);return}if(d.status==="running"||d.status==="deployed"){console.log(`${e.prefix}deployment complete`);return}await new Promise(u=>setTimeout(u,t))}console.log(`${e.prefix}deployment still in progress`)}o(Ee,"pollDeploymentLogs");import{stdin as q,stdout as H}from"node:process";import{createInterface as F}from"node:readline/promises";async function z(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8").replace(/\r?\n$/,"")}o(z,"readAllStdin");function V(e){return new Promise((t,n)=>{let r=process.stdin,s=process.stderr,i="",a=r.isRaw;function d(){r.off("data",u),r.setRawMode&&r.setRawMode(a),r.pause(),s.write(`
3
3
  `)}o(d,"cleanup");function u(m){let f=Buffer.isBuffer(m)?m:Buffer.from(m);for(let c of f){if(c===3){d(),n(new Error("secret prompt cancelled"));return}if(c===13||c===10){d(),t(i);return}if(c===127||c===8){i.length>0&&(i=i.slice(0,-1),s.write("\b \b"));continue}i+=Buffer.from([c]).toString("utf8"),s.write("*")}}o(u,"onData"),s.write(e),r.resume(),r.setRawMode&&r.setRawMode(!0),r.on("data",u)})}o(V,"readMaskedLine");async function Ae(e,t=!1){let n=F({input:q,output:H});try{let r=t?"[Y/n]":"[y/N]",s=(await n.question(`${e} ${r} `)).trim().toLowerCase();return s?s==="y"||s==="yes":t}finally{n.close()}}o(Ae,"promptConfirm");async function Ie(e){let t=F({input:q,output:H});try{return(await t.question(`Local path (default: ${e}): `)).trim()||e}finally{t.close()}}o(Ie,"promptForPath");var X=["readonly","attempt","feature","rollout","replay","template_build","scheduled_run","patch_only","hotfix","multi_feature_batch"],j=["none","manual","auto_after_checks"],G=[...N];function te(e,t){return(process.env.OPENPOND_SANDBOX_BASE_URL||process.env.OPENPOND_API_URL||e.apiBaseUrl||K(process.env.OPENPOND_BASE_URL||e.baseUrl)||v).replace(/\/$/,"")}o(te,"resolveSandboxBaseUrl");async function We(e){let t=await ne(e),n=k(t),r=await B(t,n),s=D(e)||process.env.OPENPOND_SANDBOX_API_URL?.trim()||null,i=te(t,e);return C(s?{apiKey:r,sandboxApiUrl:s}:{apiKey:r,baseUrl:i})}o(We,"resolveSandboxClient");async function ne(e){return O()}o(ne,"loadSandboxConfig");function qe(e){if(e===void 0)return;if(typeof e!="string"||!e.trim())throw new Error("workflow-mode must be a non-empty value");let t=e.trim();if(!X.includes(t))throw new Error(`workflow-mode must be one of ${X.join(", ")}`);return t}o(qe,"parseSandboxWorkflowModeOption");function He(e){if(e===void 0)return;if(typeof e!="string"||!e.trim())throw new Error("runtime-promotion-policy must be a non-empty value");let t=e.trim();if(!j.includes(t))throw new Error(`runtime-promotion-policy must be one of ${j.join(", ")}`);return t}o(He,"parseSandboxRuntimePromotionPolicyOption");function Fe(e){if(typeof e!="string"||!e.trim())return;let t=e.trim();if(!G.includes(t))throw new Error(`runtime-profile-id must be one of ${G.join(", ")}`);return t}o(Fe,"parseSandboxRuntimeProfileIdOption");function re(e){let t=Y(e.envRef,"env-ref").map(({name:i,value:a})=>({name:i,secretRef:a})),n=Y(e.envLiteral,"env-literal").map(({name:i,value:a})=>{if(oe(i)&&!w(e.allowPlainSecretEnv))throw new Error(`refusing plaintext value for secret-like env ${i}; create a sandbox secret and pass --env-ref ${i}=openpond://secret/...`);return{name:i,value:a}}),r=[...t,...n],s=new Set;for(let i of r){if(s.has(i.name))throw new Error(`duplicate sandbox env var: ${i.name}`);s.add(i.name)}return r}o(re,"parseSandboxEnvOptions");function ze(e,t){let n=re(t),r=new Set(n.map(a=>a.name)),s=new Map(n.map(a=>[a.name,a]));for(let a of e.inputs.env)if(s.get(a.name)?.value!==void 0&&a.secret!==!1)throw new Error(`sandbox template env ${a.name} requires a secret ref. Pass --env-ref ${a.name}=openpond://secret/...`);let i=e.inputs.env.filter(a=>a.required&&!r.has(a.name)).map(a=>a.name);if(i.length>0)throw new Error(`missing required sandbox template env refs: ${i.join(", ")}. Pass --env-ref NAME=openpond://secret/...`);return n}o(ze,"parseSandboxTemplateEnvOptions");function Y(e,t){return typeof e!="string"?[]:e.split(",").map(n=>n.trim()).filter(Boolean).map(n=>{let r=n.indexOf("=");if(r<=0)throw new Error(`${t} entries must use NAME=value`);let s=n.slice(0,r).trim(),i=n.slice(r+1).trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(s))throw new Error(`${t} has invalid env name: ${s}`);if(!i)throw new Error(`${t} value is required for ${s}`);return{name:s,value:i}})}o(Y,"parseSandboxEnvAssignments");function oe(e){return/(?:SECRET|TOKEN|KEY|PASSWORD|PASSWD|PRIVATE|CREDENTIAL|DATABASE_URL|DSN)/i.test(e)}o(oe,"isSecretLikeEnvName");async function Ve(e,t){if(typeof e.value=="string"||typeof e.secretValue=="string")throw new Error("sandbox secret values must be provided with --stdin or the masked prompt");if(w(e.stdin)){let s=await z();if(!s)throw new Error(`${t} read no secret value from stdin`);return s}if(!process.stdin.isTTY)throw new Error(`${t} requires --stdin when not running in a TTY`);let r=await V(`${t}: `);if(!r)throw new Error(`${t} cannot be empty`);return r}o(Ve,"readSandboxSecretValue");function Xe(e){return{id:e.id,teamId:e.teamId,name:e.name,scope:e.scope,status:e.status,secretRef:e.secretRef,currentVersion:e.currentVersion,updatedAt:e.updatedAt,lastUsedAt:e.lastUsedAt,attachedDestinations:e.attachments?.length??0}}o(Xe,"summarizeSandboxSecret");import{Buffer as b}from"node:buffer";import{spawn as Q}from"node:child_process";var ie=600*1e3,se=2*1024*1024;function R(e,t=[],n={}){return n.inherit&&n.terminateWhenStdoutIncludes!==void 0?Promise.reject(new Error("terminateWhenStdoutIncludes requires captured stdout")):n.terminateWhenStdoutIncludes===""?Promise.reject(new Error("terminateWhenStdoutIncludes must not be empty")):new Promise((r,s)=>{let i=Q(e,t,{cwd:n.cwd,env:n.env?{...process.env,...n.env}:void 0,shell:n.shell,detached:n.detached??process.platform!=="win32",stdio:n.inherit?"inherit":[n.stdin===void 0?"ignore":"pipe","pipe","pipe"]}),a=new h(J(n)),d=new h(J(n)),u=!1,m=n.timeoutMs??ie,f,c,x=null,g=!1,P=o(()=>{f&&clearTimeout(f),c&&clearTimeout(c)},"clearTimers"),E=o(l=>{x!==null||g||(x=l,u=l==="timeout",f&&(clearTimeout(f),f=void 0),Z(i.pid,"SIGTERM"),c=setTimeout(()=>{i.exitCode===null&&i.signalCode===null&&Z(i.pid,"SIGKILL")},5e3))},"requestTermination");m>0&&(f=setTimeout(()=>{E("timeout")},m)),n.inherit||(i.stdout?.on("data",l=>{a.append(l);let p=n.terminateWhenStdoutIncludes;p!==void 0&&a.text().includes(p)&&E("output")}),i.stderr?.on("data",l=>{d.append(l)})),i.on("error",l=>{P(),g=!0,s(l)}),i.on("close",(l,p)=>{g||(g=!0,P(),r({code:l,signal:p,terminationReason:x??(p?"signal":"exit"),stdout:a.text(),stderr:d.text(),timedOut:u,stdoutTruncated:a.truncated,stderrTruncated:d.truncated}))}),n.stdin!==void 0&&i.stdin?.end(n.stdin)})}o(R,"runProcessCommand");var h=class{static{o(this,"BoundedOutput")}#t=[];#n;#e=0;truncated=!1;constructor(t){this.#n=t}append(t){let n=b.isBuffer(t)?t:b.from(t),r=this.#n-this.#e;if(r<=0){n.byteLength>0&&(this.truncated=!0);return}if(n.byteLength<=r){this.#t.push(n),this.#e+=n.byteLength;return}this.#t.push(n.subarray(0,r)),this.#e+=r,this.truncated=!0}text(){let t=b.concat(this.#t,this.#e).toString("utf8");return this.truncated?`${t}
4
4
  [truncated after ${this.#n} bytes]
5
5
  `:t}};function J(e){let t=e.maxOutputBytes??se;return Math.max(0,Math.floor(t))}o(J,"maxOutputBytes");function Z(e,t){if(e){if(process.platform==="win32"){let n=["/PID",String(e),"/T"];t==="SIGKILL"&&n.push("/F"),Q("taskkill",n,{stdio:"ignore",windowsHide:!0}).unref();return}try{process.kill(-e,t)}catch(n){if(n.code!=="ESRCH")throw n}}}o(Z,"terminateProcessTree");async function ae(e,t,n={}){return R(e,t,{cwd:n.cwd,inherit:n.inherit,timeoutMs:n.timeoutMs,maxOutputBytes:n.maxOutputBytes,terminateWhenStdoutIncludes:n.terminateWhenStdoutIncludes})}o(ae,"runCommand");async function rt(e,t={}){let n=t.timeoutSeconds===void 0?void 0:t.timeoutSeconds*1e3;return R(e,[],{cwd:t.cwd,env:t.env,shell:!0,inherit:t.inherit,timeoutMs:n,maxOutputBytes:t.maxOutputBytes})}o(rt,"runShellCommand");async function ot(e,t){let n=await ae("git",["remote","get-url",t],{cwd:e});if(n.code!==0)return null;let r=n.stdout.trim();return r.length>0?r:null}o(ot,"getGitRemoteUrl");export{ce as a,le as b,fe as c,me as d,pe as e,S as f,ee as g,Re as h,Pe as i,Ee as j,Ae as k,Ie as l,We as m,qe as n,He as o,Fe as p,re as q,ze as r,Ve as s,Xe as t,R as u,ae as v,rt as w,ot as x};