openpond 0.2.58 → 0.2.59

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 (290) hide show
  1. package/dist/app-server.d.ts +1 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{actions-command-QU4H53OG.js → actions-command-JJ3CU7J6.js} +1 -1
  4. package/dist/chunks/{app-layer-NSTE5HIT.js → app-layer-KAUZAHGE.js} +1 -1
  5. package/dist/chunks/{app-server-connected-apps-JHGWLBXT.js → app-server-connected-apps-SXGZOUJJ.js} +1 -1
  6. package/dist/chunks/{app-server-evaluations-K52NAQLP.js → app-server-evaluations-N4OMTPCI.js} +1 -1
  7. package/dist/chunks/{app-server-harness-services-QMUOEYOA.js → app-server-harness-services-DDFUMNYC.js} +1 -1
  8. package/dist/chunks/app-server-runtime-SVB6L26M.js +2 -0
  9. package/dist/chunks/{apps-BKTOR4F7.js → apps-EZB56RHV.js} +1 -1
  10. package/dist/chunks/{chunk-SDXFLO7J.js → chunk-22VMH6JV.js} +1 -1
  11. package/dist/chunks/{chunk-FTEOCCPB.js → chunk-25JDHAZ5.js} +1 -1
  12. package/dist/chunks/{chunk-HDGTHRY7.js → chunk-2G4BEISF.js} +1 -1
  13. package/dist/chunks/{chunk-O72BSKSO.js → chunk-2L5XWJJ5.js} +1 -1
  14. package/dist/chunks/{chunk-QL4OIPEZ.js → chunk-2RNQQNB7.js} +2 -2
  15. package/dist/chunks/{chunk-O6ULLQJ6.js → chunk-2WKUBGIF.js} +1 -1
  16. package/dist/chunks/{chunk-F4KOGISR.js → chunk-37MWETFU.js} +1 -1
  17. package/dist/chunks/{chunk-D74JEERO.js → chunk-3CDEBKSU.js} +1 -1
  18. package/dist/chunks/{chunk-APB4O67E.js → chunk-4EDIRCD3.js} +1 -1
  19. package/dist/chunks/{chunk-JYKRR7E5.js → chunk-4GPXTISD.js} +1 -1
  20. package/dist/chunks/chunk-57TRXBLT.js +3 -0
  21. package/dist/chunks/{chunk-LQQNBVEB.js → chunk-76M2MEHV.js} +1 -1
  22. package/dist/chunks/{chunk-HCYX6RHP.js → chunk-776WNDV2.js} +1 -1
  23. package/dist/chunks/{chunk-RWWE5OXU.js → chunk-7AVNZF36.js} +1 -1
  24. package/dist/chunks/{chunk-65PL62KH.js → chunk-7K7O3CKY.js} +1 -1
  25. package/dist/chunks/chunk-7UH4YDA7.js +3 -0
  26. package/dist/chunks/{chunk-IIZ4CWBX.js → chunk-ABZ2ZOLU.js} +1 -1
  27. package/dist/chunks/{chunk-ZRDGQDZL.js → chunk-ANFDRKUU.js} +1 -1
  28. package/dist/chunks/{chunk-JUHZ5S3R.js → chunk-AQD7K4Z5.js} +1 -1
  29. package/dist/chunks/{chunk-4D7HWVWD.js → chunk-ARLOVWQ3.js} +1 -1
  30. package/dist/chunks/{chunk-7SC46OFC.js → chunk-ATAOHSFR.js} +1 -1
  31. package/dist/chunks/{chunk-TTVS6JMC.js → chunk-BE6SS65L.js} +2 -2
  32. package/dist/chunks/{chunk-Z54O534A.js → chunk-BGJYITVI.js} +1 -1
  33. package/dist/chunks/{chunk-BLXEAZCQ.js → chunk-BL3YH2QU.js} +1 -1
  34. package/dist/chunks/{chunk-2D4Y3HNW.js → chunk-BO5JZYWG.js} +1 -1
  35. package/dist/chunks/{chunk-ZGTOK7ZK.js → chunk-BQS7Z4AP.js} +1 -1
  36. package/dist/chunks/{chunk-NH6UUX5S.js → chunk-BRORSFJX.js} +3 -3
  37. package/dist/chunks/{chunk-HPBQ4VTW.js → chunk-BVQWVIGK.js} +1 -1
  38. package/dist/chunks/{chunk-SWUEFLOH.js → chunk-C37PUHA6.js} +1 -1
  39. package/dist/chunks/{chunk-3VUATFZD.js → chunk-CGWA54LE.js} +1 -1
  40. package/dist/chunks/{chunk-NC27T4AB.js → chunk-CKMSBAI2.js} +1 -1
  41. package/dist/chunks/{chunk-TJ6GVTYB.js → chunk-COHMDT7A.js} +7 -7
  42. package/dist/chunks/{chunk-JDEEWOD7.js → chunk-DPHAN6N3.js} +1 -1
  43. package/dist/chunks/{chunk-YOQRYNLP.js → chunk-DZUN5YWB.js} +1 -1
  44. package/dist/chunks/{chunk-ROGF26KV.js → chunk-E72UU4VX.js} +1 -1
  45. package/dist/chunks/{chunk-ABD5M2D2.js → chunk-EOBHQ3JT.js} +1 -1
  46. package/dist/chunks/chunk-EQOV34UH.js +2 -0
  47. package/dist/chunks/chunk-EUMXMT3S.js +2 -0
  48. package/dist/chunks/{chunk-773TH7FN.js → chunk-EWOSLZDX.js} +1 -1
  49. package/dist/chunks/{chunk-HIOKCIL7.js → chunk-FAYASU7Z.js} +1 -1
  50. package/dist/chunks/{chunk-EIRYMSEG.js → chunk-FKJHEZCW.js} +1 -1
  51. package/dist/chunks/{chunk-Q2QL6UWN.js → chunk-GL3NX3F3.js} +1 -1
  52. package/dist/chunks/{chunk-UKMA4R6X.js → chunk-GOPFFQZU.js} +1 -1
  53. package/dist/chunks/{chunk-RAXOSUSW.js → chunk-GUOLMLZN.js} +1 -1
  54. package/dist/chunks/{chunk-YNH3NMPF.js → chunk-GVZLGS2U.js} +1 -1
  55. package/dist/chunks/chunk-GYJQKCEO.js +5 -0
  56. package/dist/chunks/{chunk-XDQMGUWL.js → chunk-H7ATCPPB.js} +1 -1
  57. package/dist/chunks/{chunk-XX6SMFDY.js → chunk-IFDALGZE.js} +4 -4
  58. package/dist/chunks/{chunk-H4QHIHMK.js → chunk-IRV6GWGG.js} +3 -3
  59. package/dist/chunks/chunk-JFXINDOQ.js +3 -0
  60. package/dist/chunks/{chunk-PRGBLQVH.js → chunk-JMBQYBPI.js} +1 -1
  61. package/dist/chunks/{chunk-DBK66CJP.js → chunk-JQKSXCAJ.js} +1 -1
  62. package/dist/chunks/{chunk-DARVPBZ4.js → chunk-JUQMSHNR.js} +1 -1
  63. package/dist/chunks/{chunk-3Z47M3YY.js → chunk-K44RHALX.js} +1 -1
  64. package/dist/chunks/{chunk-4EPSHPZL.js → chunk-KO3HNMLJ.js} +1 -1
  65. package/dist/chunks/{chunk-4NESNOK5.js → chunk-LNCHFVHT.js} +1 -1
  66. package/dist/chunks/{chunk-7E6T7GP5.js → chunk-LPWBIGKW.js} +1 -1
  67. package/dist/chunks/{chunk-X2HIHF2I.js → chunk-MFMYWZK2.js} +1 -1
  68. package/dist/chunks/{chunk-A6USMRWK.js → chunk-MMQRHR3V.js} +1 -1
  69. package/dist/chunks/{chunk-I7AQMAQI.js → chunk-MNC4YUDI.js} +6 -6
  70. package/dist/chunks/{chunk-RNQF63ZR.js → chunk-N6ENLEMY.js} +2 -2
  71. package/dist/chunks/{chunk-JAJ46T5X.js → chunk-NTB2O4RP.js} +1 -1
  72. package/dist/chunks/{chunk-OQKJGTTO.js → chunk-O3RF72BT.js} +1 -1
  73. package/dist/chunks/{chunk-JE7RJZOA.js → chunk-O4VIXU7A.js} +1 -1
  74. package/dist/chunks/{chunk-5MCNZCVQ.js → chunk-OLDK2LKJ.js} +1 -1
  75. package/dist/chunks/{chunk-VVCKLCF3.js → chunk-OX3XZKGK.js} +2 -2
  76. package/dist/chunks/{chunk-SDAUS5PY.js → chunk-P2RSBSCT.js} +1 -1
  77. package/dist/chunks/{chunk-EKM2D7JU.js → chunk-PFSMXKTI.js} +1 -1
  78. package/dist/chunks/{chunk-FUOEIDMA.js → chunk-PH6IORGZ.js} +1 -1
  79. package/dist/chunks/{chunk-L3KCP52O.js → chunk-PQJTYOR2.js} +1 -1
  80. package/dist/chunks/{chunk-OLLLZVHF.js → chunk-PY6K2JRH.js} +1 -1
  81. package/dist/chunks/{chunk-EYPCBBMS.js → chunk-RBZH6A6M.js} +1 -1
  82. package/dist/chunks/{chunk-6QSSIT62.js → chunk-RZUEVS64.js} +1 -1
  83. package/dist/chunks/{chunk-Q5LEXXJG.js → chunk-SF5HJ7PL.js} +4 -4
  84. package/dist/chunks/{chunk-NHQ36THU.js → chunk-TG7P7BSV.js} +1 -1
  85. package/dist/chunks/{chunk-G3RXYI2L.js → chunk-TIHXUKFD.js} +1 -1
  86. package/dist/chunks/{chunk-QOGJAQDO.js → chunk-TKLBP3MM.js} +1 -1
  87. package/dist/chunks/{chunk-M4JWQSV7.js → chunk-U2MAPON2.js} +1 -1
  88. package/dist/chunks/chunk-U5FKRYJO.js +86 -0
  89. package/dist/chunks/{chunk-QNG27G3T.js → chunk-V34H7Y2T.js} +2 -2
  90. package/dist/chunks/chunk-VGRMAGOK.js +9 -0
  91. package/dist/chunks/chunk-VRODAXFS.js +145 -0
  92. package/dist/chunks/{chunk-EIEZHFIW.js → chunk-WC42WOLG.js} +1 -1
  93. package/dist/chunks/{chunk-OS3LO5J3.js → chunk-WRI4XKSK.js} +1 -1
  94. package/dist/chunks/{chunk-4EQA2M7K.js → chunk-XJZSIXEO.js} +2 -2
  95. package/dist/chunks/{chunk-25MBPJVY.js → chunk-XMKCCLGB.js} +1 -1
  96. package/dist/chunks/{chunk-HZEIRHEB.js → chunk-XMWXH7TS.js} +1 -1
  97. package/dist/chunks/chunk-YCQSVHCD.js +9 -0
  98. package/dist/chunks/{chunk-B7RFL4N2.js → chunk-YHHF4Q7Y.js} +1 -1
  99. package/dist/chunks/{chunk-DMVD2RFZ.js → chunk-ZAN4DYLH.js} +1 -1
  100. package/dist/chunks/{chunk-5IPFI25K.js → chunk-ZH3K7LKQ.js} +1 -1
  101. package/dist/chunks/cli-5DFVQL5Y.js +2 -0
  102. package/dist/chunks/{configuration-command-6C5UO7GE.js → configuration-command-JS6U3RMC.js} +1 -1
  103. package/dist/chunks/connected-app-executor-UBMGMV76.js +2 -0
  104. package/dist/chunks/{connected-evidence-GH2ATNEX.js → connected-evidence-NLAIEVQ3.js} +1 -1
  105. package/dist/chunks/connection-NZSD3U5O.js +2 -0
  106. package/dist/chunks/{continual-6CQAMTTR.js → continual-WFPIDWPH.js} +1 -1
  107. package/dist/chunks/core-commands-U4IBRRY5.js +2 -0
  108. package/dist/chunks/{datasets-7BNMVJOY.js → datasets-UX47DTTB.js} +1 -1
  109. package/dist/chunks/{desktop-test-3CUHVLXV.js → desktop-test-UUU7PD4P.js} +1 -1
  110. package/dist/chunks/{dist-VYC5VMQB.js → dist-OGLX76LL.js} +1 -1
  111. package/dist/chunks/{dist-ZVJPJLXR.js → dist-W5MJYSPF.js} +1 -1
  112. package/dist/chunks/{evaluation-coordination-XEF5L7KZ.js → evaluation-coordination-3YQN5JQW.js} +1 -1
  113. package/dist/chunks/{experiment-improvements-KRX2DP27.js → experiment-improvements-ZRVD2AGY.js} +1 -1
  114. package/dist/chunks/{experiments-DFGQYA4O.js → experiments-JEB5A2N5.js} +1 -1
  115. package/dist/chunks/{extension-XKXXOP5N.js → extension-JCUA3RWV.js} +1 -1
  116. package/dist/chunks/{help-S7THC6IE.js → help-KA4OINP5.js} +1 -1
  117. package/dist/chunks/host-profile-evaluation-tools-2URLU5SG.js +2 -0
  118. package/dist/chunks/host-profile-external-dataset-B2AQNSDR.js +2 -0
  119. package/dist/chunks/{hosted-app-server-composition-T5IWGOTA.js → hosted-app-server-composition-VJQ3FM4I.js} +1 -1
  120. package/dist/chunks/{hosted-experiment-improvement-HVMDGS75.js → hosted-experiment-improvement-42YWXB3P.js} +1 -1
  121. package/dist/chunks/hosted-harness-runtime-BM4WONJN.js +2 -0
  122. package/dist/chunks/{hosted-profile-candidate-EXNN6MVN.js → hosted-profile-candidate-HVVC43XQ.js} +1 -1
  123. package/dist/chunks/hosted-profile-compiler-RKDWHYK3.js +2 -0
  124. package/dist/chunks/{hosted-profile-evaluation-control-TJVER3NW.js → hosted-profile-evaluation-control-57V24UGU.js} +1 -1
  125. package/dist/chunks/{hosted-profile-evaluation-inspection-ZUANDYZ6.js → hosted-profile-evaluation-inspection-BUWLCKCD.js} +1 -1
  126. package/dist/chunks/{hosted-profile-evaluation-preparation-ORVZ6MBD.js → hosted-profile-evaluation-preparation-3XLRR6UH.js} +1 -1
  127. package/dist/chunks/{hosted-tasksets-ANAE2PIW.js → hosted-tasksets-THKM5QY5.js} +1 -1
  128. package/dist/chunks/{human-review-WR777ODH.js → human-review-CSYAW4PC.js} +1 -1
  129. package/dist/chunks/import-CBDJ4DME.js +3 -0
  130. package/dist/chunks/local-harness-improvement-runtime-3T6E7I5Q.js +2 -0
  131. package/dist/chunks/local-harness-taskset-review-LQPQBALH.js +2 -0
  132. package/dist/chunks/{opchat-T4QTNEIY.js → opchat-6ADSONAD.js} +1 -1
  133. package/dist/chunks/{organizations-75L5DZDV.js → organizations-GT24ZTCN.js} +1 -1
  134. package/dist/chunks/{profile-TFZMUEDR.js → profile-Y2MCSOUK.js} +1 -1
  135. package/dist/chunks/project-action-payload-GHSLE7K3.js +2 -0
  136. package/dist/chunks/{project-agent-6RRO233B.js → project-agent-YYSQIHVE.js} +1 -1
  137. package/dist/chunks/{published-experiment-source-HVP5IGRH.js → published-experiment-source-5TMGLKDM.js} +1 -1
  138. package/dist/chunks/refiner-profile-service-ZK7KAFP5.js +2 -0
  139. package/dist/chunks/{runtime-A7OZXM43.js → runtime-QFXCXSVB.js} +2 -2
  140. package/dist/chunks/{sandbox-command-IU5XFTJP.js → sandbox-command-U6346TVJ.js} +1 -1
  141. package/dist/chunks/{sandbox-template-C4V6T36U.js → sandbox-template-XWWPWWNR.js} +1 -1
  142. package/dist/chunks/saved-work-SWHZ4OLO.js +2 -0
  143. package/dist/chunks/{send-turn-XTAIS2JN.js → send-turn-SIXOZUVJ.js} +1 -1
  144. package/dist/chunks/{src-DZL5T2MT.js → src-6SHCCYEN.js} +1 -1
  145. package/dist/chunks/{src-R36AGJY7.js → src-EZAKCCUV.js} +103 -103
  146. package/dist/chunks/standalone-experiment-turn-owner-LIAQWTGI.js +2 -0
  147. package/dist/chunks/{store-continual-support-reviews-LJPNG4SP.js → store-continual-support-reviews-GDX6CSUU.js} +1 -1
  148. package/dist/chunks/{store-conversation-serving-KPC62UEY.js → store-conversation-serving-W55XMDH4.js} +1 -1
  149. package/dist/chunks/{store-create-improve-SW5FTBTL.js → store-create-improve-A7E7CUPZ.js} +1 -1
  150. package/dist/chunks/{store-datasets-WMA7AJKN.js → store-datasets-HKF3EO7B.js} +1 -1
  151. package/dist/chunks/{store-evaluation-results-ZO6R653G.js → store-evaluation-results-645RFBGR.js} +1 -1
  152. package/dist/chunks/{store-human-review-7QQ7ZQ6P.js → store-human-review-F5KESW52.js} +1 -1
  153. package/dist/chunks/{store-learned-preference-migration-validation-NADPXOTG.js → store-learned-preference-migration-validation-V27XD4I7.js} +1 -1
  154. package/dist/chunks/{store-local-experiments-SAULQSBN.js → store-local-experiments-HWQWNTIU.js} +1 -1
  155. package/dist/chunks/{store-model-batch-review-VKLDYGH3.js → store-model-batch-review-TOCSDVAP.js} +1 -1
  156. package/dist/chunks/{store-model-configuration-BYRJUR3C.js → store-model-configuration-6543ASY2.js} +1 -1
  157. package/dist/chunks/{store-sidebar-file-bookmarks-VB5GTLFY.js → store-sidebar-file-bookmarks-53B7QIGS.js} +1 -1
  158. package/dist/chunks/{store-sidebar-preferences-GWIOG2NH.js → store-sidebar-preferences-YXGEJVUO.js} +1 -1
  159. package/dist/chunks/{store-subagents-T7R2Z6TB.js → store-subagents-HRCAK7VZ.js} +1 -1
  160. package/dist/chunks/{store-task-inbox-QPE44OSS.js → store-task-inbox-WF74W4U2.js} +1 -1
  161. package/dist/chunks/{store-task-inventory-I3RDRI52.js → store-task-inventory-KHCTEZVK.js} +1 -1
  162. package/dist/chunks/{store-taskset-drafts-2IULRV2W.js → store-taskset-drafts-3ACG5AVX.js} +1 -1
  163. package/dist/chunks/{store-training-B2TW2MLA.js → store-training-R46WOGXB.js} +1 -1
  164. package/dist/chunks/{store-training-jobs-VBNG23RL.js → store-training-jobs-D4LECE7O.js} +1 -1
  165. package/dist/chunks/{store-training-models-OMV5FIC4.js → store-training-models-EQVNXOVB.js} +1 -1
  166. package/dist/chunks/{taskset-EQRFQBYM.js → taskset-NR2X2UOK.js} +1 -1
  167. package/dist/chunks/{taskset-packages-XC6HEE3K.js → taskset-packages-ONULEIVI.js} +1 -1
  168. package/dist/chunks/{teams-bot-EAPGPTHZ.js → teams-bot-CHUYMD6K.js} +1 -1
  169. package/dist/chunks/{training-UF6RPI4T.js → training-IDSGYGU2.js} +1 -1
  170. package/dist/chunks/{web-search-CZ3NCLPY.js → web-search-BPON7H5N.js} +1 -1
  171. package/dist/chunks/{workspaces-EKKE5NAC.js → workspaces-2TJRDM5K.js} +1 -1
  172. package/dist/cli.js +1 -1
  173. package/dist/index.js +1 -1
  174. package/dist/web/assets/App-pcwmC4IR.js +154 -0
  175. package/dist/web/assets/{AppDialog-t2Fx5tK3.js → AppDialog-CdHad7GT.js} +1 -1
  176. package/dist/web/assets/{AppTerminalPanel-Dj1Y32oI.js → AppTerminalPanel-CrmoOgd4.js} +2 -2
  177. package/dist/web/assets/AppsView-0P6cBsD4.js +1 -0
  178. package/dist/web/assets/{BrowserSidebar-jhWi4rVm.js → BrowserSidebar-Cb6edJw6.js} +1 -1
  179. package/dist/web/assets/{CartesianChart-C1DIx0Ia.js → CartesianChart-B2Sxi0lv.js} +1 -1
  180. package/dist/web/assets/{CollaborationTabs-Bdr-HmOL.js → CollaborationTabs-PP0AIXhb.js} +1 -1
  181. package/dist/web/assets/{CommandMenu-Ux2yOHAc.js → CommandMenu-GfQIMe6W.js} +1 -1
  182. package/dist/web/assets/{CommunityView-DPEeVKFn.js → CommunityView-V6KmMl5n.js} +1 -1
  183. package/dist/web/assets/ComposerCreateImproveStrip-oeVeyhPX.js +1 -0
  184. package/dist/web/assets/ConversationImportsSettings-CuQcvVgE.js +1 -0
  185. package/dist/web/assets/ConversationImportsSettings-PfUa8V7X.css +1 -0
  186. package/dist/web/assets/{GetStartedView-CFHP0AaI.js → GetStartedView-2oZ068h_.js} +1 -1
  187. package/dist/web/assets/{HostedModelLearningReview-D8BGTPVN.js → HostedModelLearningReview-DLzak_Vf.js} +1 -1
  188. package/dist/web/assets/{HostedModelLearningSettings-JS1S7vNO.js → HostedModelLearningSettings-Eca6Pd9R.js} +1 -1
  189. package/dist/web/assets/{LabModelVersionDetailPage-Dx5Q3xV2.js → LabModelVersionDetailPage-DsBblnMp.js} +1 -1
  190. package/dist/web/assets/LabSkillSidebar-DDknttrB.js +1 -0
  191. package/dist/web/assets/{LabsRoute-CyYF8-dw.js → LabsRoute-CgNiUHsy.js} +4 -4
  192. package/dist/web/assets/MainChatThread-yCVg99LU.js +2 -0
  193. package/dist/web/assets/MainPane-C86le7UF.js +65 -0
  194. package/dist/web/assets/{MarkdownText-BR4V6lNO.js → MarkdownText-BBVriBCj.js} +1 -1
  195. package/dist/web/assets/{NativeSkillSidebar-DU9IEgIO.js → NativeSkillSidebar-D2uVZkqh.js} +1 -1
  196. package/dist/web/assets/{NewExperienceSwitcher-mIy6FzCj.js → NewExperienceSwitcher-DuD6GScJ.js} +1 -1
  197. package/dist/web/assets/{NewProjectDialog-RfTZTHxl.js → NewProjectDialog-B6XZkJrU.js} +1 -1
  198. package/dist/web/assets/OutputsPage-PUlmcWjv.js +1 -0
  199. package/dist/web/assets/{ProjectsPage-CE6QUB-b.js → ProjectsPage-DWBRmej6.js} +1 -1
  200. package/dist/web/assets/RightChatPanelStack-HaCVep4t.js +1 -0
  201. package/dist/web/assets/{RightSidebarHomePanel-CK0rP3WT.js → RightSidebarHomePanel-BUtdPb2L.js} +1 -1
  202. package/dist/web/assets/{ScheduledWorkPage-vOrYv8pp.js → ScheduledWorkPage-Dg9GkGrT.js} +1 -1
  203. package/dist/web/assets/SettingsView-DjjnCnlb.css +1 -0
  204. package/dist/web/assets/{SettingsView-DCKVrfjj.js → SettingsView-DtldfnV-.js} +4 -4
  205. package/dist/web/assets/{TeamChatView-Bwrjr-vk.js → TeamChatView-C71JX4je.js} +2 -2
  206. package/dist/web/assets/{TerminalOverlay-DhPoKZAq.js → TerminalOverlay-B4F6Q36s.js} +1 -1
  207. package/dist/web/assets/TrainingCreationPanel-B9MxFzQx.js +1 -0
  208. package/dist/web/assets/{TrainingDraftPanel-C9cRX5qf.js → TrainingDraftPanel-7C48sHfC.js} +1 -1
  209. package/dist/web/assets/{UsageSettingsSection-CrdcSGeW.js → UsageSettingsSection-CC57FcUB.js} +1 -1
  210. package/dist/web/assets/{WorkSidebarPanel-DSSikNFQ.js → WorkSidebarPanel-Cto1usLM.js} +1 -1
  211. package/dist/web/assets/{WorkspaceDiffPanel-BAFo0CPN.js → WorkspaceDiffPanel-CL7wi3kp.js} +3 -3
  212. package/dist/web/assets/{WorkspaceEnvironmentMenu-BVHAhwnJ.js → WorkspaceEnvironmentMenu-zdzSDofs.js} +18 -18
  213. package/dist/web/assets/{WorkspaceGitDialogs-CwVoiDQ2.js → WorkspaceGitDialogs-CZSmjnrc.js} +1 -1
  214. package/dist/web/assets/{WorkspaceMonacoEditor-TxLyhzNp.js → WorkspaceMonacoEditor-TrUDJMKb.js} +3 -3
  215. package/dist/web/assets/agent-connections-4Dza2mDg.js +1 -0
  216. package/dist/web/assets/{arrow-up-right-C9aE8Mfz.js → arrow-up-right-xKb5kWQJ.js} +1 -1
  217. package/dist/web/assets/{chunk-P3BRSSRD-DUGfuKA8.js → chunk-P3BRSSRD-BsGTkgyC.js} +1 -1
  218. package/dist/web/assets/{clipboard-Dk158Qp4.js → clipboard-BgjV3aCx.js} +1 -1
  219. package/dist/web/assets/{cloud-upload-k9eqBsHr.js → cloud-upload-Bw9XUsKQ.js} +1 -1
  220. package/dist/web/assets/{cssMode-CO35ARZp.js → cssMode-DxsFJGb-.js} +1 -1
  221. package/dist/web/assets/{folder-open-sYgceW_f.js → folder-open-CbmUjIYS.js} +1 -1
  222. package/dist/web/assets/{folder-plus-CS0R49m9.js → folder-plus-slsst7Ct.js} +1 -1
  223. package/dist/web/assets/{git-commit-horizontal-DrGxH2h4.js → git-commit-horizontal-BIS-8MuS.js} +1 -1
  224. package/dist/web/assets/{htmlMode-REMmzdfq.js → htmlMode-BE4VOrZo.js} +1 -1
  225. package/dist/web/assets/{index-C8aCGagb.js → index-DEg0S7Qk.js} +2 -2
  226. package/dist/web/assets/index-erq7hUne.css +1 -0
  227. package/dist/web/assets/{info-DLdbiUrh.js → info-5bL9xSSf.js} +1 -1
  228. package/dist/web/assets/{jsonMode-KEdMfkIf.js → jsonMode-CYimnBhD.js} +1 -1
  229. package/dist/web/assets/{lspLanguageFeatures-5KZwEoxW.js → lspLanguageFeatures-CiFuk-P7.js} +1 -1
  230. package/dist/web/assets/{minimize-2-CqcI4zcM.js → minimize-2-BGVWKvTg.js} +1 -1
  231. package/dist/web/assets/{monaco.contribution-omszXBEj.js → monaco.contribution-BTY4dJ0f.js} +2 -2
  232. package/dist/web/assets/{monaco.contribution-BJGj65F9.js → monaco.contribution-C7sMrcos.js} +2 -2
  233. package/dist/web/assets/{monaco.contribution-DO10L0zW.js → monaco.contribution-DUE3CQph.js} +2 -2
  234. package/dist/web/assets/{monaco.contribution-Cly9Wt7L.js → monaco.contribution-DkLVGT8N.js} +2 -2
  235. package/dist/web/assets/{monitor-BFVCcbxp.js → monitor-B5hx_tzp.js} +1 -1
  236. package/dist/web/assets/{play-C469pVZq.js → play-pmSO95Qg.js} +1 -1
  237. package/dist/web/assets/{python-Dw0YcVy9.js → python-CiZvL3LX.js} +1 -1
  238. package/dist/web/assets/{save-CtSjPydi.js → save-CvYL4DUg.js} +1 -1
  239. package/dist/web/assets/{square-BuImvLhT.js → square-DT_uFOml.js} +1 -1
  240. package/dist/web/assets/{toggleHighContrast-DjCO9lIP.js → toggleHighContrast-CrE1_HY0.js} +1 -1
  241. package/dist/web/assets/{tsMode-BAOnxKd6.js → tsMode-CI_PdZmj.js} +1 -1
  242. package/dist/web/assets/{upload-2JkFZo3h.js → upload-PVi8vC3T.js} +1 -1
  243. package/dist/web/assets/{useLocalAgentSchedules-BNqAisfS.js → useLocalAgentSchedules-BHJNVf42.js} +1 -1
  244. package/dist/web/assets/useProviderSettings-CU3zXyie.js +5 -0
  245. package/dist/web/assets/{useProviderSettings-CmL_BaxP.css → useProviderSettings-Cktvzinz.css} +1 -1
  246. package/dist/web/assets/{useSessionTurnCache-BHU2-Jmz.js → useSessionTurnCache-BE7cipLX.js} +1 -1
  247. package/dist/web/assets/{wifi-off-CpOAH62M.js → wifi-off-7WiFuOhD.js} +1 -1
  248. package/dist/web/assets/{workers-0QvlA2T5.js → workers-Cv8r4CvM.js} +1 -1
  249. package/dist/web/assets/{yaml-BK3qxo7D.js → yaml-Bj7mdkV2.js} +1 -1
  250. package/dist/web/index.html +2 -2
  251. package/docs/command-reference.md +10 -3
  252. package/docs/conversation-imports.md +57 -0
  253. package/package.json +1 -1
  254. package/dist/chunks/app-server-runtime-ISGGLQHU.js +0 -2
  255. package/dist/chunks/chunk-6UDGARFC.js +0 -143
  256. package/dist/chunks/chunk-FV2R5RUN.js +0 -3
  257. package/dist/chunks/chunk-HY3GOBFJ.js +0 -58
  258. package/dist/chunks/chunk-I3HZKJB3.js +0 -2
  259. package/dist/chunks/chunk-I3VVWNUW.js +0 -5
  260. package/dist/chunks/chunk-KG325WTN.js +0 -2
  261. package/dist/chunks/chunk-VRIEKBBH.js +0 -9
  262. package/dist/chunks/chunk-WJ43MJ3F.js +0 -2
  263. package/dist/chunks/chunk-ZTNHW2K7.js +0 -10
  264. package/dist/chunks/cli-XZENDZ7Z.js +0 -2
  265. package/dist/chunks/connected-app-executor-LQNIU5NR.js +0 -2
  266. package/dist/chunks/connection-HTF6CC7M.js +0 -2
  267. package/dist/chunks/core-commands-A2DGGIPS.js +0 -2
  268. package/dist/chunks/host-profile-evaluation-tools-JOFBL5OF.js +0 -2
  269. package/dist/chunks/host-profile-external-dataset-K3ICDHIP.js +0 -2
  270. package/dist/chunks/hosted-harness-runtime-YCKB6NBI.js +0 -2
  271. package/dist/chunks/hosted-profile-compiler-IYLLHCRY.js +0 -2
  272. package/dist/chunks/import-MLZUHITH.js +0 -4
  273. package/dist/chunks/local-harness-improvement-runtime-QRFGPFRM.js +0 -2
  274. package/dist/chunks/local-harness-taskset-review-HR7KLY4B.js +0 -2
  275. package/dist/chunks/project-action-payload-JDS6OQAW.js +0 -2
  276. package/dist/chunks/refiner-profile-service-FDTQKY33.js +0 -2
  277. package/dist/chunks/saved-work-SHEEDZ6Z.js +0 -2
  278. package/dist/chunks/standalone-experiment-turn-owner-JCY5LL5R.js +0 -2
  279. package/dist/web/assets/App-s-CJswyt.js +0 -154
  280. package/dist/web/assets/AppsView-BYE5EBDJ.js +0 -1
  281. package/dist/web/assets/ComposerCreateImproveStrip-CEgh4OtN.js +0 -1
  282. package/dist/web/assets/LabSkillSidebar-BxffN-pN.js +0 -1
  283. package/dist/web/assets/MainChatThread-DZpcFRFl.js +0 -2
  284. package/dist/web/assets/MainPane-5DTtwVCk.js +0 -65
  285. package/dist/web/assets/OutputsPage-Cr1Spf7S.js +0 -1
  286. package/dist/web/assets/RightChatPanelStack-T6VRWuHo.js +0 -1
  287. package/dist/web/assets/SettingsView-Dulr_xlq.css +0 -1
  288. package/dist/web/assets/TrainingCreationPanel-BXHfohNm.js +0 -1
  289. package/dist/web/assets/index-3iPNbbER.css +0 -1
  290. package/dist/web/assets/useProviderSettings-C4L4wDoh.js +0 -5
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{c as d,e as p,f,g,i as w,qa as P}from"./chunk-I7AQMAQI.js";import{a as u,c as m,f as l,h as r}from"./chunk-H7IWJN7L.js";import{a as e}from"./chunk-FTQLQJQV.js";import c from"node:path";import{AsyncLocalStorage as v}from"node:async_hooks";import{promises as h}from"node:fs";var y=new v;function E(n,i=!1){let t=y.getStore();t&&(i&&(t.length=0),t.push(n))}e(E,"onStartupFailure");async function N(n,i){await P(n);let t;try{t=await g(c.join(r(n).runtime,"server-owner"),100)}catch(o){if(o instanceof m&&o.issue.code==="STORAGE_BUSY"){let a=await w(c.join(r(n).runtime,"endpoint.json"),()=>null);throw new m({code:"RUNTIME_ALREADY_RUNNING",path:n,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 o}let s=[];try{let o=await u(n,()=>y.run(s,i)),a=o.close.bind(o);s.length=0;let k;return{...o,close:e(()=>k??=(async()=>{try{await u(n,a)}finally{await h.rm(c.join(r(n).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(o){try{for(let a of s.reverse())await Promise.resolve().then(()=>u(n,a)).catch(()=>{});await h.rm(c.join(r(n).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw o}}e(N,"ownHomeRuntime");async function b(n,i,t){await p(c.join(r(n).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:i,serverId:t}))}e(b,"publishRuntimeEndpoint");import{randomBytes as x}from"node:crypto";function D(){return l()}e(D,"appDataDir");function _(n){return r(n).config}e(_,"providersConfigPath");function H(n){return r(n).credentials}e(H,"providerSecretsConfigPath");function L(n){return r(n).key}e(L,"providerSecretsKeyPath");async function U(n){let i=r(n).token;return f(i,async()=>{let t=(await d(i))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||x(32).toString("base64url");return s!==t&&await p(i,s),{token:s,tokenFile:i}})}e(U,"ensureCapabilityToken");export{E as a,N as b,b as c,D as d,_ as e,H as f,L as g,U as h};
2
+ import{c as d,e as p,f,g,i as w,qa as P}from"./chunk-MNC4YUDI.js";import{a as u,c as m,f as l,h as r}from"./chunk-H7IWJN7L.js";import{a as e}from"./chunk-FTQLQJQV.js";import c from"node:path";import{AsyncLocalStorage as v}from"node:async_hooks";import{promises as h}from"node:fs";var y=new v;function E(n,i=!1){let t=y.getStore();t&&(i&&(t.length=0),t.push(n))}e(E,"onStartupFailure");async function N(n,i){await P(n);let t;try{t=await g(c.join(r(n).runtime,"server-owner"),100)}catch(o){if(o instanceof m&&o.issue.code==="STORAGE_BUSY"){let a=await w(c.join(r(n).runtime,"endpoint.json"),()=>null);throw new m({code:"RUNTIME_ALREADY_RUNNING",path:n,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 o}let s=[];try{let o=await u(n,()=>y.run(s,i)),a=o.close.bind(o);s.length=0;let k;return{...o,close:e(()=>k??=(async()=>{try{await u(n,a)}finally{await h.rm(c.join(r(n).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(o){try{for(let a of s.reverse())await Promise.resolve().then(()=>u(n,a)).catch(()=>{});await h.rm(c.join(r(n).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw o}}e(N,"ownHomeRuntime");async function b(n,i,t){await p(c.join(r(n).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:i,serverId:t}))}e(b,"publishRuntimeEndpoint");import{randomBytes as x}from"node:crypto";function D(){return l()}e(D,"appDataDir");function _(n){return r(n).config}e(_,"providersConfigPath");function H(n){return r(n).credentials}e(H,"providerSecretsConfigPath");function L(n){return r(n).key}e(L,"providerSecretsKeyPath");async function U(n){let i=r(n).token;return f(i,async()=>{let t=(await d(i))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||x(32).toString("base64url");return s!==t&&await p(i,s),{token:s,tokenFile:i}})}e(U,"ensureCapabilityToken");export{E as a,N as b,b as c,D as d,_ as e,H as f,L as g,U as h};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{pa as t}from"./chunk-QOGJAQDO.js";import{b as e}from"./chunk-ES2ISFJC.js";var n=e.string().trim().min(1).max(240),a=e.object({id:n,revision:e.number().int().positive(),ownerInstanceId:n,teamId:n,profileId:n,projectId:n,hostedModelId:n,role:t,roleTargetId:n,expectedBindingId:n,policyId:n.nullable(),authorizedConfigurationHash:e.string().length(64).nullable(),enabled:e.boolean(),updatedAt:e.string().datetime()}).strict(),o=e.object({id:n,grantId:n,revision:e.number().int().positive(),jobId:n,artifactHash:e.string().length(64),priorBindingId:n,bindingId:n.nullable(),restoredBindingId:n.nullable(),status:e.enum(["prepared","binding","canary","active","superseded","rolling_back","rolled_back","failed"]),leaseId:n,canarySeconds:e.number().int().min(30).max(600),activatedAt:e.string().datetime().nullable(),failure:e.string().max(2e3).nullable(),createdAt:e.string().datetime(),updatedAt:e.string().datetime()}).strict();export{a,o as b};
2
+ import{pa as t}from"./chunk-TKLBP3MM.js";import{b as e}from"./chunk-ES2ISFJC.js";var n=e.string().trim().min(1).max(240),a=e.object({id:n,revision:e.number().int().positive(),ownerInstanceId:n,teamId:n,profileId:n,projectId:n,hostedModelId:n,role:t,roleTargetId:n,expectedBindingId:n,policyId:n.nullable(),authorizedConfigurationHash:e.string().length(64).nullable(),enabled:e.boolean(),updatedAt:e.string().datetime()}).strict(),o=e.object({id:n,grantId:n,revision:e.number().int().positive(),jobId:n,artifactHash:e.string().length(64),priorBindingId:n,bindingId:n.nullable(),restoredBindingId:n.nullable(),status:e.enum(["prepared","binding","canary","active","superseded","rolling_back","rolled_back","failed"]),leaseId:n,canarySeconds:e.number().int().min(30).max(600),activatedAt:e.string().datetime().nullable(),failure:e.string().max(2e3).nullable(),createdAt:e.string().datetime(),updatedAt:e.string().datetime()}).strict();export{a,o as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as W,b as J,c as D}from"./chunk-PF5R6CMP.js";import{a as z}from"./chunk-FEAKTSRS.js";import{x as B}from"./chunk-QL4OIPEZ.js";import{b as N}from"./chunk-L3KS6MOV.js";import{n as C}from"./chunk-ACYFMLWG.js";import{l as M,m as P}from"./chunk-KGNCKIFP.js";import{b as E}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{createHash as G}from"node:crypto";function F(i){let c=i.replace(/^\/workspace\/outputs\//,"").replace(/^\/workspace\/work\/outputs\//,"").replace(/^outputs\//,"");if(!c||c.startsWith("/")||c.includes("\0")||c.split(/[\\/]/).some(f=>!f||f==="."||f===".."))throw new Error("Select one file inside this case's writable outputs.");return c}d(F,"confinedProfileOutputPath");var L=d(i=>`'${i.replaceAll("'","'\\''")}'`,"quote");async function q(i){let c=F(i.path),f="const f=require('fs'),p=require('path'),c=require('crypto'),a=JSON.parse(process.argv[1]),r=f.realpathSync('/workspace/work/outputs'),q=f.realpathSync(p.join(r,a.path));if(!q.startsWith(r+'/'))throw Error('Output path escapes the case');const s=f.statSync(q);if(!s.isFile()||s.size>10000000)throw Error('Output exceeds its bound');if(a.offset===undefined){const b=f.readFileSync(q);process.stdout.write(JSON.stringify({size:b.length,hash:c.createHash('sha256').update(b).digest('hex')}))}else{const h=f.openSync(q,'r'),b=Buffer.alloc(Math.min(524288,s.size-a.offset));try{const n=f.readSync(h,b,0,b.length,a.offset);process.stdout.write(b.subarray(0,n).toString('base64'))}finally{f.closeSync(h)}}";async function m(T){let g=await i.command(`/runtime/node -e ${L(f)} ${L(JSON.stringify({path:c,...T!==void 0?{offset:T}:{}}))}`);if(g.code!==0)throw new Error("The confined output could not be read.");return g.stdout}d(m,"read");let y=E.object({size:E.number().int().min(1).max(B),hash:E.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(JSON.parse(await m())),I=[];for(let T=0;T<y.size;T+=524288){let g=await m(T);if(!/^[A-Za-z0-9+/]*={0,2}$/.test(g)||g.length>7e5)throw new Error("Output chunk exceeded its boundary.");let S=Buffer.from(g,"base64");if(S.length!==Math.min(524288,y.size-T))throw new Error("The output changed during readback.");I.push(S)}let v=Buffer.concat(I),w=G("sha256").update(v).digest("hex"),R=E.object({size:E.number(),hash:E.string()}).strict().parse(JSON.parse(await m()));if(w!==y.hash||R.hash!==w||R.size!==v.length)throw new Error("The output changed before immutable readback.");return{bytes:v,title:c.split("/").at(-1)}}d(q,"readConfinedProfileOutput");import h from"node:path";import{promises as k}from"node:fs";import _ from"node:path";function U(i,c,f,m){let y=d(()=>new Error("This source file is outside the public policy closure."),"denied"),I;if(i==="context_read"){if(typeof c.path!="string")throw y();I=c.path}else{let v=typeof c.name=="string"?m.get(c.name.trim()):void 0;if(!v||!Object.hasOwn(f,v))throw y();if(c.path===void 0)return v;let w=c.path;if(typeof w!="string"||!w||w.includes("\\")||w.includes("\0")||_.posix.isAbsolute(w)||_.win32.isAbsolute(w)||w.split("/").includes(".."))throw y();I=_.posix.join(_.posix.dirname(v),w)}if(!Object.hasOwn(f,I))throw y();return I}d(U,"resolveProfilePolicySourcePath");var j=d(i=>`'${i.replaceAll("'","'\\''")}'`,"quote");function Se(i){let c=new Map,f=new AbortController,m=i.release,y=i.runtimeNode??"/runtime/node",I=i.runtimeAgentRoot??"/runtime/agent",v=new Set(m.harnessRelease.files.filter(e=>e.visibility!=="policy").map(e=>e.contentHash)),w=new Map(m.agentSnapshot.skills.map(e=>[e.path,e.contentHash])),R,T=J({storeDir:i.storeDir,loadArchive:D({storeDir:i.storeDir})});async function g(e){f.signal.throwIfAborted(),await i.authorize({bindingHash:e.manifest.profileEvaluation.externalDatasetBinding?.contentHash??P(e.manifest.profileEvaluation),manifestHash:e.manifest.contentHash,taskId:e.taskId,seed:e.seed}),f.signal.throwIfAborted()}d(g,"fence");async function S(e,t){let a=c.get(e.id),p=a?.manifest.profileEvaluation;if(!a||!p||t.sessionId!==e.id||t.status!=="in_progress"||P(e.metadata?.profileEvaluationRun)!==P({id:a.manifest.id,contentHash:a.manifest.contentHash})||e.currentProfile?.profileId!==p.profileId||t.profileSnapshot?.sourceHash!==p.harnessRelease.contentHash||t.profileSnapshot.revision!==p.sourceRevision)throw new Error("The target tool has no actual admitted source/case/turn authority.");if(a.turnId&&a.turnId!==t.id)throw new Error("The target case already belongs to another turn.");a.turnId=t.id;let s=await i.getTurn(t.id);if(!s||s.sessionId!==e.id||s.status!=="in_progress"||P(s.profileSnapshot)!==P(t.profileSnapshot))throw new Error("The actual target turn is no longer admitted.");return await g(a),a}d(S,"authority");let K=z({authorize:d(async e=>{let t=c.get(e.sessionId);if(!t||t.turnId!==e.turnId||e.candidateId!==t.manifest.id||e.expectedRevision!==1)throw new Error("Target command changed its original admitted source.");return await S(await i.getSession(e.sessionId),await i.getTurn(e.turnId)),{candidateId:t.manifest.id,candidateRevision:1,ownerId:"host-profile-evaluation",sessionId:e.sessionId,turnId:e.turnId,sourceRoot:t.root,layout:"profile_case",writablePaths:["outputs"],...R?{runtimeMounts:[{source:R.source,destination:"/runtime/agent"},{source:h.join(R.source,"node_modules"),destination:"/workspace/node_modules"}]}:{}}},"authorize")});async function H(e,t,a,p,s,l){await g(e);let o=i.executeCommand?await i.executeCommand({sessionId:e.sessionId,turnId:t,sourceRoot:e.root,publicHashes:e.publicHashes,...R?{runtimeRoot:R.source}:{},command:a,cwd:s,stdin:l,timeoutMs:Math.min(e.manifest.limits.timeoutMs,18e4),signal:AbortSignal.any([p,f.signal])}):await K({candidateId:e.manifest.id,expectedRevision:1,sessionId:e.sessionId,turnId:t,command:a,cwd:s,stdin:l,signal:AbortSignal.any([p,f.signal]),maxOutputBytes:75e4,timeoutMs:Math.min(e.manifest.limits.timeoutMs,18e4)});if(await g(e),o.timedOut||o.stdoutTruncated||o.stderrTruncated)throw new Error("The target command exceeded its bounded execution or output.");return o}d(H,"command");async function V(e,t,a,p,s=[]){let l=t.profileEvaluation;if(!l||l.harnessRelease.contentHash!==m.harnessRelease.contentHash||t.population.filter(r=>r.taskId===a&&r.seed===p).length!==1||P(e.metadata?.profileEvaluationRun)!==P({id:t.id,contentHash:t.contentHash}))throw new Error("The target Session differs from its actual sealed source/case admission.");let o=h.join(i.storeDir,"evaluation-policy-cases",P([t.id,e.id])),n={},b={manifest:t,root:o,sessionId:e.id,taskId:a,seed:p,publicHashes:n,skillPaths:new Map};await g(b),await k.mkdir(o,{recursive:!0,mode:448});for(let r of m.harnessRelease.files){if(r.visibility!=="policy"||v.has(r.contentHash))continue;let u=h.join(m.bundlePath,"source",r.path),O=await k.realpath(u),Z=await k.realpath(h.join(m.bundlePath,"source"));if(!O.startsWith(`${Z}${h.sep}`)||(await k.lstat(u)).isSymbolicLink())throw new Error("Released policy source escaped its immutable closure.");let A=await k.readFile(O);if(A.length!==r.sizeBytes||M(A)!==r.contentHash)throw new Error("Released policy source changed before target admission.");let x=h.join(o,r.path);if(await k.mkdir(h.dirname(x),{recursive:!0,mode:448}),await k.writeFile(x,A,{flag:"wx",mode:256}),n[r.path]=r.contentHash,w.get(r.path)===r.contentHash){let $=N(A.toString("utf8"));if(!$.name||!$.description||$.messages.length||b.skillPaths.has($.name))throw new Error("The released public skill identity is invalid or duplicated.");b.skillPaths.set($.name,r.path)}}for(let r of new Set(Object.keys(n).filter(u=>u.startsWith("agents/")).map(u=>u.split("/")[1]))){let u=`agents/${r}`;n[`${u}/agent.ts`]&&!n[`${u}/openpond.yaml`]&&!n[`${u}/agent/agent.ts`]&&(await k.mkdir(h.join(o,u,"agent"),{recursive:!0,mode:448}),await k.rename(h.join(o,u,"agent.ts"),h.join(o,u,"agent","agent.ts")),n[`${u}/agent/agent.ts`]=n[`${u}/agent.ts`],delete n[`${u}/agent.ts`])}for(let r of s){if(r.mediaType!=="application/pdf"||!r.contentsBase64||r.name!==h.basename(r.name))throw new Error("The isolated case has an unsupported input attachment.");let u=Buffer.from(r.contentsBase64,"base64"),O=`inputs/${r.name}`;if(u.length!==r.sizeBytes||u.length>1e7||n[O])throw new Error("The isolated case input identity is invalid.");await k.mkdir(h.join(o,"inputs"),{recursive:!0,mode:448}),await k.writeFile(h.join(o,O),u,{flag:"wx",mode:256}),n[O]=M(u)}await k.mkdir(h.join(o,"outputs"),{mode:448}),await g(b),c.set(e.id,b)}d(V,"admitSession");let X=d(async e=>{let t=await S(e.session,e.turn),a=[],p=d((s,l,o,n,b=[])=>a.push({name:s,description:l,parameters:{type:"object",properties:o,additionalProperties:!1,...b.length?{required:b}:{}},execute:d(async r=>{if(await S(r.session,e.turn)!==t||r.turnId!==e.turn.id)throw new Error("Target tool changed its admitted case.");let O=await n(r.args,r.signal);return await S(r.session,e.turn),{toolCallId:r.callId,name:s,ok:!0,contentText:JSON.stringify(O),data:O}},"execute")}),"define");p("harness_inspect","Inspect this released policy source.",{},async()=>({release:{id:m.harnessRelease.id,contentHash:m.harnessRelease.contentHash},files:Object.entries(t.publicHashes).map(([s,l])=>({path:s,contentHash:l}))}));for(let s of["profile_skill_read","skill_inspect","context_read"])p(s,s==="context_read"?"Read an exact public file path relative to the policy source root.":"Read a released public skill by name. The optional path is relative to that skill package and defaults to its released instructions.",s==="context_read"?{path:{type:"string"}}:{name:{type:"string",minLength:1},path:{type:"string"}},async l=>{let o=U(s,l,t.publicHashes,t.skillPaths),n=await H(t,e.turn.id,`${y} -e ${j("const f=require('fs'),p=process.argv[1],b=f.readFileSync(p);if(b.length>250000)throw Error('Policy source exceeds read bound');process.stdout.write(JSON.stringify({path:p,text:b.toString('utf8')}))")} ${j(`/workspace/work/${o}`)}`,e.signal);if(n.code!==0)throw new Error("The public target file could not be read.");return JSON.parse(n.stdout)},s==="context_read"?["path"]:["name"]);for(let s of["exec_command","work_exec"])p(s,"Run a command inside the policy source namespace and writable outputs.",{command:{type:"string"},cwd:{type:"string"}},async(l,o)=>{if(typeof l.command!="string")throw new Error("Select a target command.");let n=typeof l.cwd=="string"?l.cwd:t.root,b=n.startsWith("/workspace/work/")?h.join(t.root,n.slice(16)):n==="/workspace/work"?t.root:n;return H(t,e.turn.id,l.command,o,b)});p("work_save_output","Save a completed file from this case's outputs into durable output storage.",{path:{type:"string"},suggestedName:{type:"string"}},async(s,l)=>{if(typeof s.path!="string")throw new Error("Select a completed case output.");let o=i.readOutput?await i.readOutput({sessionId:e.session.id,turnId:e.turn.id,path:s.path,signal:l}):await q({path:s.path,command:d(b=>H(t,e.turn.id,b,l),"command")});await S(e.session,e.turn);let n=await i.saveOutput({session:e.session,sourceTurnId:e.turn.id,suggestedName:typeof s.suggestedName=="string"?s.suggestedName:o.title,bytes:o.bytes,validation:[],validationPolicy:"preserve"});return await S(e.session,e.turn),await i.recordOutput(e.session.id,e.turn.id,n),await S(e.session,e.turn),n});for(let s of["list_files","read_files","search_files"])p(s,"Inspect files within the public policy namespace.",{paths:{type:"array",items:{type:"string"}},path:{type:"string"},query:{type:"string"}},async(l,o)=>{let n=await H(t,e.turn.id,`${y} -e ${j(W)}`,o,void 0,JSON.stringify({action:s,args:l,writablePaths:["outputs"]}));if(n.code!==0)throw new Error("The confined target file operation failed.");return JSON.parse(n.stdout)});return a},"resolveTools");async function Y(e){let t=await S(e.session,e.turn),a=e.action;if(!C(a.inputSchema,e.value).valid)throw new Error("The actual released Agent action input changed.");if(!Object.keys(t.publicHashes).some(n=>n.startsWith(`agents/${a.agentId}/`)))throw new Error("The Agent action has no public policy source closure.");await g(t),R??=await T(),await g(t);let p=h.join(t.root,"agents",a.agentId),s=`/workspace/work/outputs/${e.turn.id}`,l=["run",a.sourceActionId,"--cwd",`/workspace/work/agents/${a.agentId}`,"--input",JSON.stringify(e.value),"--out-dir",s],o=await H(t,e.turn.id,`${y} ${j(`${I}/${R.cliRelativePath}`)} ${l.map(j).join(" ")}`,e.signal,p);if(o.code!==0)throw new Error(`The confined released Agent action failed: ${o.stderr.slice(0,1e3)}`);return{output:o.stdout,agentSourcePath:`/workspace/work/agents/${a.agentId}`,runPath:s}}return d(Y,"executeAction"),{admitSession:V,resolveTools:X,executeAction:Y,ownsSession:d(e=>c.has(e),"ownsSession"),settleSession:d(async e=>{let t=c.get(e);try{t?.turnId&&await i.settleRemote?.(e,t.turnId)}finally{c.delete(e)}},"settleSession"),close:d(()=>{f.abort(new Error("Profile evaluation owner closed.")),c.clear()},"close")}}d(Se,"createHostProfileEvaluationTools");export{F as a,Se as b};
2
+ import{a as W,b as J,c as D}from"./chunk-PF5R6CMP.js";import{a as z}from"./chunk-FEAKTSRS.js";import{x as B}from"./chunk-2RNQQNB7.js";import{b as N}from"./chunk-L3KS6MOV.js";import{n as C}from"./chunk-ACYFMLWG.js";import{l as M,m as P}from"./chunk-KGNCKIFP.js";import{b as E}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{createHash as G}from"node:crypto";function F(i){let c=i.replace(/^\/workspace\/outputs\//,"").replace(/^\/workspace\/work\/outputs\//,"").replace(/^outputs\//,"");if(!c||c.startsWith("/")||c.includes("\0")||c.split(/[\\/]/).some(f=>!f||f==="."||f===".."))throw new Error("Select one file inside this case's writable outputs.");return c}d(F,"confinedProfileOutputPath");var L=d(i=>`'${i.replaceAll("'","'\\''")}'`,"quote");async function q(i){let c=F(i.path),f="const f=require('fs'),p=require('path'),c=require('crypto'),a=JSON.parse(process.argv[1]),r=f.realpathSync('/workspace/work/outputs'),q=f.realpathSync(p.join(r,a.path));if(!q.startsWith(r+'/'))throw Error('Output path escapes the case');const s=f.statSync(q);if(!s.isFile()||s.size>10000000)throw Error('Output exceeds its bound');if(a.offset===undefined){const b=f.readFileSync(q);process.stdout.write(JSON.stringify({size:b.length,hash:c.createHash('sha256').update(b).digest('hex')}))}else{const h=f.openSync(q,'r'),b=Buffer.alloc(Math.min(524288,s.size-a.offset));try{const n=f.readSync(h,b,0,b.length,a.offset);process.stdout.write(b.subarray(0,n).toString('base64'))}finally{f.closeSync(h)}}";async function m(T){let g=await i.command(`/runtime/node -e ${L(f)} ${L(JSON.stringify({path:c,...T!==void 0?{offset:T}:{}}))}`);if(g.code!==0)throw new Error("The confined output could not be read.");return g.stdout}d(m,"read");let y=E.object({size:E.number().int().min(1).max(B),hash:E.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(JSON.parse(await m())),I=[];for(let T=0;T<y.size;T+=524288){let g=await m(T);if(!/^[A-Za-z0-9+/]*={0,2}$/.test(g)||g.length>7e5)throw new Error("Output chunk exceeded its boundary.");let S=Buffer.from(g,"base64");if(S.length!==Math.min(524288,y.size-T))throw new Error("The output changed during readback.");I.push(S)}let v=Buffer.concat(I),w=G("sha256").update(v).digest("hex"),R=E.object({size:E.number(),hash:E.string()}).strict().parse(JSON.parse(await m()));if(w!==y.hash||R.hash!==w||R.size!==v.length)throw new Error("The output changed before immutable readback.");return{bytes:v,title:c.split("/").at(-1)}}d(q,"readConfinedProfileOutput");import h from"node:path";import{promises as k}from"node:fs";import _ from"node:path";function U(i,c,f,m){let y=d(()=>new Error("This source file is outside the public policy closure."),"denied"),I;if(i==="context_read"){if(typeof c.path!="string")throw y();I=c.path}else{let v=typeof c.name=="string"?m.get(c.name.trim()):void 0;if(!v||!Object.hasOwn(f,v))throw y();if(c.path===void 0)return v;let w=c.path;if(typeof w!="string"||!w||w.includes("\\")||w.includes("\0")||_.posix.isAbsolute(w)||_.win32.isAbsolute(w)||w.split("/").includes(".."))throw y();I=_.posix.join(_.posix.dirname(v),w)}if(!Object.hasOwn(f,I))throw y();return I}d(U,"resolveProfilePolicySourcePath");var j=d(i=>`'${i.replaceAll("'","'\\''")}'`,"quote");function Se(i){let c=new Map,f=new AbortController,m=i.release,y=i.runtimeNode??"/runtime/node",I=i.runtimeAgentRoot??"/runtime/agent",v=new Set(m.harnessRelease.files.filter(e=>e.visibility!=="policy").map(e=>e.contentHash)),w=new Map(m.agentSnapshot.skills.map(e=>[e.path,e.contentHash])),R,T=J({storeDir:i.storeDir,loadArchive:D({storeDir:i.storeDir})});async function g(e){f.signal.throwIfAborted(),await i.authorize({bindingHash:e.manifest.profileEvaluation.externalDatasetBinding?.contentHash??P(e.manifest.profileEvaluation),manifestHash:e.manifest.contentHash,taskId:e.taskId,seed:e.seed}),f.signal.throwIfAborted()}d(g,"fence");async function S(e,t){let a=c.get(e.id),p=a?.manifest.profileEvaluation;if(!a||!p||t.sessionId!==e.id||t.status!=="in_progress"||P(e.metadata?.profileEvaluationRun)!==P({id:a.manifest.id,contentHash:a.manifest.contentHash})||e.currentProfile?.profileId!==p.profileId||t.profileSnapshot?.sourceHash!==p.harnessRelease.contentHash||t.profileSnapshot.revision!==p.sourceRevision)throw new Error("The target tool has no actual admitted source/case/turn authority.");if(a.turnId&&a.turnId!==t.id)throw new Error("The target case already belongs to another turn.");a.turnId=t.id;let s=await i.getTurn(t.id);if(!s||s.sessionId!==e.id||s.status!=="in_progress"||P(s.profileSnapshot)!==P(t.profileSnapshot))throw new Error("The actual target turn is no longer admitted.");return await g(a),a}d(S,"authority");let K=z({authorize:d(async e=>{let t=c.get(e.sessionId);if(!t||t.turnId!==e.turnId||e.candidateId!==t.manifest.id||e.expectedRevision!==1)throw new Error("Target command changed its original admitted source.");return await S(await i.getSession(e.sessionId),await i.getTurn(e.turnId)),{candidateId:t.manifest.id,candidateRevision:1,ownerId:"host-profile-evaluation",sessionId:e.sessionId,turnId:e.turnId,sourceRoot:t.root,layout:"profile_case",writablePaths:["outputs"],...R?{runtimeMounts:[{source:R.source,destination:"/runtime/agent"},{source:h.join(R.source,"node_modules"),destination:"/workspace/node_modules"}]}:{}}},"authorize")});async function H(e,t,a,p,s,l){await g(e);let o=i.executeCommand?await i.executeCommand({sessionId:e.sessionId,turnId:t,sourceRoot:e.root,publicHashes:e.publicHashes,...R?{runtimeRoot:R.source}:{},command:a,cwd:s,stdin:l,timeoutMs:Math.min(e.manifest.limits.timeoutMs,18e4),signal:AbortSignal.any([p,f.signal])}):await K({candidateId:e.manifest.id,expectedRevision:1,sessionId:e.sessionId,turnId:t,command:a,cwd:s,stdin:l,signal:AbortSignal.any([p,f.signal]),maxOutputBytes:75e4,timeoutMs:Math.min(e.manifest.limits.timeoutMs,18e4)});if(await g(e),o.timedOut||o.stdoutTruncated||o.stderrTruncated)throw new Error("The target command exceeded its bounded execution or output.");return o}d(H,"command");async function V(e,t,a,p,s=[]){let l=t.profileEvaluation;if(!l||l.harnessRelease.contentHash!==m.harnessRelease.contentHash||t.population.filter(r=>r.taskId===a&&r.seed===p).length!==1||P(e.metadata?.profileEvaluationRun)!==P({id:t.id,contentHash:t.contentHash}))throw new Error("The target Session differs from its actual sealed source/case admission.");let o=h.join(i.storeDir,"evaluation-policy-cases",P([t.id,e.id])),n={},b={manifest:t,root:o,sessionId:e.id,taskId:a,seed:p,publicHashes:n,skillPaths:new Map};await g(b),await k.mkdir(o,{recursive:!0,mode:448});for(let r of m.harnessRelease.files){if(r.visibility!=="policy"||v.has(r.contentHash))continue;let u=h.join(m.bundlePath,"source",r.path),O=await k.realpath(u),Z=await k.realpath(h.join(m.bundlePath,"source"));if(!O.startsWith(`${Z}${h.sep}`)||(await k.lstat(u)).isSymbolicLink())throw new Error("Released policy source escaped its immutable closure.");let A=await k.readFile(O);if(A.length!==r.sizeBytes||M(A)!==r.contentHash)throw new Error("Released policy source changed before target admission.");let x=h.join(o,r.path);if(await k.mkdir(h.dirname(x),{recursive:!0,mode:448}),await k.writeFile(x,A,{flag:"wx",mode:256}),n[r.path]=r.contentHash,w.get(r.path)===r.contentHash){let $=N(A.toString("utf8"));if(!$.name||!$.description||$.messages.length||b.skillPaths.has($.name))throw new Error("The released public skill identity is invalid or duplicated.");b.skillPaths.set($.name,r.path)}}for(let r of new Set(Object.keys(n).filter(u=>u.startsWith("agents/")).map(u=>u.split("/")[1]))){let u=`agents/${r}`;n[`${u}/agent.ts`]&&!n[`${u}/openpond.yaml`]&&!n[`${u}/agent/agent.ts`]&&(await k.mkdir(h.join(o,u,"agent"),{recursive:!0,mode:448}),await k.rename(h.join(o,u,"agent.ts"),h.join(o,u,"agent","agent.ts")),n[`${u}/agent/agent.ts`]=n[`${u}/agent.ts`],delete n[`${u}/agent.ts`])}for(let r of s){if(r.mediaType!=="application/pdf"||!r.contentsBase64||r.name!==h.basename(r.name))throw new Error("The isolated case has an unsupported input attachment.");let u=Buffer.from(r.contentsBase64,"base64"),O=`inputs/${r.name}`;if(u.length!==r.sizeBytes||u.length>1e7||n[O])throw new Error("The isolated case input identity is invalid.");await k.mkdir(h.join(o,"inputs"),{recursive:!0,mode:448}),await k.writeFile(h.join(o,O),u,{flag:"wx",mode:256}),n[O]=M(u)}await k.mkdir(h.join(o,"outputs"),{mode:448}),await g(b),c.set(e.id,b)}d(V,"admitSession");let X=d(async e=>{let t=await S(e.session,e.turn),a=[],p=d((s,l,o,n,b=[])=>a.push({name:s,description:l,parameters:{type:"object",properties:o,additionalProperties:!1,...b.length?{required:b}:{}},execute:d(async r=>{if(await S(r.session,e.turn)!==t||r.turnId!==e.turn.id)throw new Error("Target tool changed its admitted case.");let O=await n(r.args,r.signal);return await S(r.session,e.turn),{toolCallId:r.callId,name:s,ok:!0,contentText:JSON.stringify(O),data:O}},"execute")}),"define");p("harness_inspect","Inspect this released policy source.",{},async()=>({release:{id:m.harnessRelease.id,contentHash:m.harnessRelease.contentHash},files:Object.entries(t.publicHashes).map(([s,l])=>({path:s,contentHash:l}))}));for(let s of["profile_skill_read","skill_inspect","context_read"])p(s,s==="context_read"?"Read an exact public file path relative to the policy source root.":"Read a released public skill by name. The optional path is relative to that skill package and defaults to its released instructions.",s==="context_read"?{path:{type:"string"}}:{name:{type:"string",minLength:1},path:{type:"string"}},async l=>{let o=U(s,l,t.publicHashes,t.skillPaths),n=await H(t,e.turn.id,`${y} -e ${j("const f=require('fs'),p=process.argv[1],b=f.readFileSync(p);if(b.length>250000)throw Error('Policy source exceeds read bound');process.stdout.write(JSON.stringify({path:p,text:b.toString('utf8')}))")} ${j(`/workspace/work/${o}`)}`,e.signal);if(n.code!==0)throw new Error("The public target file could not be read.");return JSON.parse(n.stdout)},s==="context_read"?["path"]:["name"]);for(let s of["exec_command","work_exec"])p(s,"Run a command inside the policy source namespace and writable outputs.",{command:{type:"string"},cwd:{type:"string"}},async(l,o)=>{if(typeof l.command!="string")throw new Error("Select a target command.");let n=typeof l.cwd=="string"?l.cwd:t.root,b=n.startsWith("/workspace/work/")?h.join(t.root,n.slice(16)):n==="/workspace/work"?t.root:n;return H(t,e.turn.id,l.command,o,b)});p("work_save_output","Save a completed file from this case's outputs into durable output storage.",{path:{type:"string"},suggestedName:{type:"string"}},async(s,l)=>{if(typeof s.path!="string")throw new Error("Select a completed case output.");let o=i.readOutput?await i.readOutput({sessionId:e.session.id,turnId:e.turn.id,path:s.path,signal:l}):await q({path:s.path,command:d(b=>H(t,e.turn.id,b,l),"command")});await S(e.session,e.turn);let n=await i.saveOutput({session:e.session,sourceTurnId:e.turn.id,suggestedName:typeof s.suggestedName=="string"?s.suggestedName:o.title,bytes:o.bytes,validation:[],validationPolicy:"preserve"});return await S(e.session,e.turn),await i.recordOutput(e.session.id,e.turn.id,n),await S(e.session,e.turn),n});for(let s of["list_files","read_files","search_files"])p(s,"Inspect files within the public policy namespace.",{paths:{type:"array",items:{type:"string"}},path:{type:"string"},query:{type:"string"}},async(l,o)=>{let n=await H(t,e.turn.id,`${y} -e ${j(W)}`,o,void 0,JSON.stringify({action:s,args:l,writablePaths:["outputs"]}));if(n.code!==0)throw new Error("The confined target file operation failed.");return JSON.parse(n.stdout)});return a},"resolveTools");async function Y(e){let t=await S(e.session,e.turn),a=e.action;if(!C(a.inputSchema,e.value).valid)throw new Error("The actual released Agent action input changed.");if(!Object.keys(t.publicHashes).some(n=>n.startsWith(`agents/${a.agentId}/`)))throw new Error("The Agent action has no public policy source closure.");await g(t),R??=await T(),await g(t);let p=h.join(t.root,"agents",a.agentId),s=`/workspace/work/outputs/${e.turn.id}`,l=["run",a.sourceActionId,"--cwd",`/workspace/work/agents/${a.agentId}`,"--input",JSON.stringify(e.value),"--out-dir",s],o=await H(t,e.turn.id,`${y} ${j(`${I}/${R.cliRelativePath}`)} ${l.map(j).join(" ")}`,e.signal,p);if(o.code!==0)throw new Error(`The confined released Agent action failed: ${o.stderr.slice(0,1e3)}`);return{output:o.stdout,agentSourcePath:`/workspace/work/agents/${a.agentId}`,runPath:s}}return d(Y,"executeAction"),{admitSession:V,resolveTools:X,executeAction:Y,ownsSession:d(e=>c.has(e),"ownsSession"),settleSession:d(async e=>{let t=c.get(e);try{t?.turnId&&await i.settleRemote?.(e,t.turnId)}finally{c.delete(e)}},"settleSession"),close:d(()=>{f.abort(new Error("Profile evaluation owner closed.")),c.clear()},"close")}}d(Se,"createHostProfileEvaluationTools");export{F as a,Se as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as c}from"./chunk-FUOEIDMA.js";import{cb as f}from"./chunk-ACYFMLWG.js";import{a as n}from"./chunk-FTQLQJQV.js";import{promises as v}from"node:fs";import u from"node:path";async function j(e){let s=await c(e.store,e.harnessRelease);if(!s)throw new Error("Profile evaluation Harness release is unavailable.");return w({...e,runtime:s})}n(j,"profileEvaluationsForRelease");async function w(e){let s=e.runtime,o=s.release.harnessRelease;if(o.id!==e.harnessRelease.id||o.contentHash!==e.harnessRelease.contentHash)throw new Error("Profile evaluation runtime differs from its requested release.");let r=o.metadata.profile;if(!r||typeof r!="object"||r.id!==e.ref.profileId||r.sourceRevision!==e.sourceRevision)throw new Error("Profile evaluation release differs from its accepted source.");let i={profileRef:e.ref,sourceRevision:e.sourceRevision,harnessRelease:e.harnessRelease};if(!o.files.some(a=>a.path==="evals/catalog.json"))return{...i,catalogHash:null,definitions:[],suites:[]};let d=u.join(s.release.bundlePath,"source"),t=n(async a=>o.files.some(g=>g.path===a)?v.readFile(u.join(d,...a.split("/"))):void 0,"read"),[R,p,m]=await Promise.all([t("evals/catalog.json"),t("workflows/catalog.json"),t("workflows/actions.json")]),{catalog:l,catalogHash:h}=f({agentSnapshot:s.release.agentSnapshot,harnessRelease:o,catalogBytes:R,workflowBytes:p,actionBytes:m});return{...i,catalogHash:h,definitions:l.definitions,suites:l.suites}}n(w,"profileEvaluationsForRuntime");export{j as a,w as b};
2
+ import{d as c}from"./chunk-PH6IORGZ.js";import{cb as f}from"./chunk-ACYFMLWG.js";import{a as n}from"./chunk-FTQLQJQV.js";import{promises as v}from"node:fs";import u from"node:path";async function j(e){let s=await c(e.store,e.harnessRelease);if(!s)throw new Error("Profile evaluation Harness release is unavailable.");return w({...e,runtime:s})}n(j,"profileEvaluationsForRelease");async function w(e){let s=e.runtime,o=s.release.harnessRelease;if(o.id!==e.harnessRelease.id||o.contentHash!==e.harnessRelease.contentHash)throw new Error("Profile evaluation runtime differs from its requested release.");let r=o.metadata.profile;if(!r||typeof r!="object"||r.id!==e.ref.profileId||r.sourceRevision!==e.sourceRevision)throw new Error("Profile evaluation release differs from its accepted source.");let i={profileRef:e.ref,sourceRevision:e.sourceRevision,harnessRelease:e.harnessRelease};if(!o.files.some(a=>a.path==="evals/catalog.json"))return{...i,catalogHash:null,definitions:[],suites:[]};let d=u.join(s.release.bundlePath,"source"),t=n(async a=>o.files.some(g=>g.path===a)?v.readFile(u.join(d,...a.split("/"))):void 0,"read"),[R,p,m]=await Promise.all([t("evals/catalog.json"),t("workflows/catalog.json"),t("workflows/actions.json")]),{catalog:l,catalogHash:h}=f({agentSnapshot:s.release.agentSnapshot,harnessRelease:o,catalogBytes:R,workflowBytes:p,actionBytes:m});return{...i,catalogHash:h,definitions:l.definitions,suites:l.suites}}n(w,"profileEvaluationsForRuntime");export{j as a,w as b};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{Ha as F,Ia as _,Ja as E}from"./chunk-2RNQQNB7.js";import{a as L,b as j,c as H,d as w,e as b,f as S,g as y,l as k}from"./chunk-74ZXXBGN.js";import{e as x,f as R}from"./chunk-MNC4YUDI.js";import{h as g,o as A,p as C,q as N}from"./chunk-H7IWJN7L.js";import{k as O,m as T}from"./chunk-KGNCKIFP.js";import{a as r}from"./chunk-FTQLQJQV.js";import{promises as z}from"node:fs";import d from"node:path";import{randomUUID as J}from"node:crypto";import{promises as v}from"node:fs";import U from"node:path";function u(e){return{binding:r(()=>{let i=C(e.home,"refiner_bindings","active");return i?w.parse(i.value):null},"binding"),releases:r(async()=>{let i=(await v.readdir(e.releases)).filter(n=>n.endsWith(".json"));return Promise.all(i.map(async n=>H.parse(JSON.parse(await v.readFile(U.join(e.releases,n),"utf8")))))},"releases"),transitions:r(()=>Object.values(N(e.home,"refiner_transitions")).map(i=>b.parse(i.value)),"transitions"),release:r(async i=>{let n=H.parse(JSON.parse(await v.readFile(U.join(e.releases,`${i.contentHash}.json`),"utf8")));if(n.id!==i.id||n.contentHash!==i.contentHash)throw new Error("Refiner release reference does not match immutable release content.");return n},"release"),persistRelease:r(async i=>V(e.releases+`/${i.contentHash}.json`,O(i),!0),"persistRelease"),writeSource:r(async i=>V(e.source,i),"writeSource"),transition:r(async(i,n)=>{A(e.home,t=>{t.exec("BEGIN IMMEDIATE");try{let a=t.prepare("SELECT payload FROM refiner_bindings WHERE id = 'active'").get(),o=a?w.parse(JSON.parse(a.payload)):null,s=new Date().toISOString(),l={id:i.id,contentHash:i.contentHash},c={schemaVersion:"openpond.refinerTransitionReceipt.v1",id:`refiner-transition-${J()}`,operation:n.operation,bindingChanged:n.bindingChanged,previousRelease:o?.release??null,nextRelease:l,actor:n.actor,reason:n.reason,authoringSkillHash:n.authoringSkillHash,validation:{valid:!0,messages:[]},createdAt:s},p=b.parse({...c,contentHash:T(c)});if(t.prepare("INSERT INTO refiner_transitions VALUES (?, ?, 1)").run(p.contentHash,JSON.stringify(p)),n.bindingChanged){let m=w.parse({schemaVersion:"openpond.refinerBinding.v1",channel:"active",revision:(o?.revision??-1)+1,release:l,updatedAt:s});t.prepare("INSERT INTO refiner_bindings VALUES ('active', ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(JSON.stringify(m))}t.exec("COMMIT")}catch(a){throw t.exec("ROLLBACK"),a}})},"transition")}}r(u,"createLocalRefinerProfileRepository");async function V(e,i,n=!1){await R(e,async()=>{if(n){let t=await v.readFile(e,"utf8").catch(()=>null);if(t!==null){if(t!==i)throw new Error("Immutable Refiner release bytes changed.");return}}await x(e,i)})}r(V,"atomicWrite");var B="OpenPond Refiner Core: evidence admission, privacy, ownership, validation, and immutable activation boundaries.";function P(e){let i=d.join(e,"library","refiners");return{home:e,root:i,source:d.join(i,"source","openpond.review.json"),releases:d.join(i,"releases")}}r(P,"refinerProfilePaths");function Re(e){let i=r(()=>f(e),"inspect"),n=r(o=>M(e,o),"update"),t=r(o=>q(e,o),"activate"),a=r(o=>G(e,o),"rollback");return{refinerHistoryPayload:i,updateRefinerProfilePayload:n,activateRefinerReleasePayload:t,rollbackRefinerReleasePayload:a,inspectRefiner:i,updateRefiner:n,activateRefiner:t,rollbackRefiner:a}}r(Re,"createRefinerProfileRoutePayloads");async function f(e){let i=P(e),n=u(i),t=n.binding();if(!t)throw new Error("Active Refiner binding is unavailable.");let a=(await n.releases()).sort((l,c)=>c.createdAt.localeCompare(l.createdAt)),o=a.find(l=>l.id===t.release.id&&l.contentHash===t.release.contentHash);if(!o)throw new Error("Active Refiner release is unavailable.");let s=n.transitions().sort((l,c)=>c.createdAt.localeCompare(l.createdAt));return F.parse({rootPath:i.root,sourcePath:i.source,binding:t,currentRelease:o,releases:a,transitions:s})}r(f,"inspectRefinerProfile");async function ue(e){return(await f(e)).currentRelease}r(ue,"loadActiveRefinerRelease");async function M(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>W(e,i))}r(M,"updateRefinerProfile");async function W(e,i){let n=_.parse(i),t=P(e),a=u(t);await I(t);let o=L.parse(n.profile),s=S({profile:o,coreVersion:k,corePrompt:B}),c=(await a.releases()).find(m=>m.composedPromptHash===s.composedPromptHash&&m.profileHash===s.profileHash)??s;await a.persistRelease(c),await a.writeSource(y(o));let p=a.binding();if(!p)throw new Error("Active Refiner binding is unavailable.");return n.activate&&p.release.contentHash===c.contentHash||!n.activate&&a.transitions().some(h=>!h.bindingChanged&&h.nextRelease.contentHash===c.contentHash&&h.actor===n.actor&&h.reason===n.reason&&h.authoringSkillHash===n.authoringSkillHash)||await a.transition(c,{operation:"update",bindingChanged:n.activate,actor:n.actor,reason:n.reason,authoringSkillHash:n.authoringSkillHash}),f(e)}r(W,"updateRefinerProfileUnlocked");async function q(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>$(e,i))}r(q,"activateRefinerRelease");async function $(e,i){let n=E.parse(i),t=P(e),a=u(t);await I(t);let o=await a.release(n.release),s=a.binding();if(!s)throw new Error("Active Refiner binding is unavailable.");return s.release.contentHash===o.contentHash||(await a.transition(o,{operation:"activate",bindingChanged:!0,actor:n.actor,reason:n.reason,authoringSkillHash:null}),await a.writeSource(y(o.profile))),f(e)}r($,"activateRefinerReleaseUnlocked");async function G(e,i){return R(d.join(g(e).runtime,"refiner-edit"),()=>K(e,i))}r(G,"rollbackRefinerRelease");async function K(e,i){let n=E.parse(i),t=P(e),a=u(t);await I(t);let o=await a.release(n.release),s=a.binding();if(!s)throw new Error("Active Refiner binding is unavailable.");return s.release.contentHash===o.contentHash||(await a.transition(o,{operation:"rollback",bindingChanged:!0,actor:n.actor,reason:n.reason,authoringSkillHash:null}),await a.writeSource(y(o.profile))),f(e)}r(K,"rollbackRefinerReleaseUnlocked");async function Y(e){await R(d.join(g(e).runtime,"refiner-initialize"),()=>Q(P(e)))}r(Y,"initializeRefinerProfile");async function I(e){await Y(e.home)}r(I,"ensureInitialized");async function Q(e){let i=u(e);if(await Promise.all([z.mkdir(d.dirname(e.source),{recursive:!0,mode:448}),z.mkdir(e.releases,{recursive:!0,mode:448})]),i.binding())return;let n=S({profile:j,coreVersion:k,corePrompt:B});await i.persistRelease(n),await i.writeSource(y(n.profile)),await i.transition(n,{operation:"initialize",bindingChanged:!0,actor:"openpond",reason:"Initialize the default Refiner Review Profile.",authoringSkillHash:null})}r(Q,"initialize");export{u as a,P as b,Re as c,f as d,ue as e,M as f,q as g,G as h,Y as i};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{h as c,i as _}from"./chunk-Q4TBTRIG.js";import{a as E}from"./chunk-DIO5CB6U.js";import{d as y}from"./chunk-GJ2ZJFDD.js";import{G as v,I,J as t,K as d,L as o,M as g,N as l,P as A,Q as C,T as k,U as w,Y as j,k as P,q as i,u as r,x as R}from"./chunk-Z4Z5UOZM.js";import{c as f,f as n}from"./chunk-FFRFSDBM.js";import{d as q,e as T}from"./chunk-ACYFMLWG.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as u}from"./chunk-FTQLQJQV.js";var b="local_path:";function Y(p){return`${b}${p.trim()}`}u(Y,"localPathWorkspaceId");function Z(p){return p.startsWith(b)&&p.slice(b.length).trim()||null}u(Z,"workspacePathFromLocalPathWorkspaceId");var ee=e.object({appId:e.string(),source:e.enum(["openpond","github","local_git","local_folder","unknown"]),workspacePath:e.string(),repoPath:e.string(),initialized:e.boolean(),remoteUrl:e.string().nullable(),expectedRemoteUrl:e.string().nullable(),currentBranch:e.string().nullable(),headCommit:e.string().nullable().optional().default(null),upstreamBranch:e.string().nullable().optional().default(null),ahead:e.number().int().nonnegative().optional().default(0),behind:e.number().int().nonnegative().optional().default(0),diverged:e.boolean().optional().default(!1),linkedSourceHeadCommit:e.string().nullable().optional().default(null),aheadOfLinkedSource:e.number().int().nonnegative().optional().default(0),behindLinkedSource:e.number().int().nonnegative().optional().default(0),divergedFromLinkedSource:e.boolean().optional().default(!1),linkedSourceComparisonError:e.string().nullable().optional().default(null),lastFetchAt:e.string().nullable().optional().default(null),defaultBranch:e.string().nullable(),branches:e.array(e.string()),dirty:e.boolean(),changedFilesCount:e.number(),untrackedFilesCount:e.number(),error:e.string().nullable(),updatedAt:e.string()}),F=e.object({path:e.string(),status:e.string(),additions:e.number(),deletions:e.number(),patch:e.string(),content:e.string().nullable().optional().default(null)}),ne=e.object({appId:e.string(),repoPath:e.string(),initialized:e.boolean(),dirty:e.boolean(),filesChanged:e.number(),additions:e.number(),deletions:e.number(),repoFiles:e.array(e.string()).optional().default([]),files:e.array(F),error:e.string().nullable(),updatedAt:e.string()}),te=e.object({branch:e.string().trim().min(1).max(160)}),oe=e.object({path:e.string().trim().min(1),content:e.string()}),M=e.object({line:e.number().int().nonnegative(),character:e.number().int().nonnegative()}),U=e.object({start:M,end:M}),N=e.object({path:e.string(),range:U,severity:e.enum(["error","warning","info","hint"]),message:e.string(),source:e.string().nullable().optional().default(null),code:e.string().nullable().optional().default(null)}),W=e.object({id:e.string(),root:e.string(),status:e.enum(["connected","unavailable","error"]),message:e.string().nullable().optional().default(null)}),ae=e.object({path:e.string().trim().min(1),content:e.string().optional(),waitForDiagnostics:e.boolean().optional().default(!0)}),ie=e.object({appId:e.string(),path:e.string(),diagnostics:e.array(N),servers:e.array(W),updatedAt:e.string()}),K=e.object({operation:e.enum(["hover","definition","references","documentSymbol"]),path:e.string().trim().min(1),content:e.string().optional(),line:e.number().int().nonnegative().optional(),character:e.number().int().nonnegative().optional()}),re=e.object({appId:e.string(),operation:K.shape.operation,path:e.string(),results:e.unknown(),servers:e.array(W),updatedAt:e.string()}),h=e.object({pinned:e.boolean().optional(),archived:e.boolean().optional(),order:e.number().optional()}),le=e.record(e.string(),h);var a=e.object({source:e.enum(["local","github","openpond_git"]),repositoryId:e.string().trim().min(1),profileId:e.string().trim().min(1)}),B=e.object({ref:a,revision:e.string().nullable(),sourceHash:e.string()});var s=e.enum(["chat","work","development"]),de=e.enum(["chat","models","console","development"]),D="work";var S=e.enum(["openpond.lab"]),x=e.object({id:e.string(),experience:s.default(D),provider:t,modelRef:n.nullable().optional(),openPondCommandAccessMode:o.default(I),systemKind:S.nullable().optional(),hiddenFromDefaultSidebar:e.boolean().optional(),parentSessionId:e.string().nullable().optional(),parentTurnId:e.string().nullable().optional(),subagentRunId:e.string().nullable().optional(),subagentRoleId:i.nullable().optional(),subagentDelegationMode:r.nullable().optional(),title:e.string(),appId:e.string().nullable(),appName:e.string().nullable(),workspaceKind:l.optional(),workspaceId:e.string().nullable().optional(),workspaceName:e.string().nullable().optional(),localProjectId:e.string().nullable().optional(),cloudProjectId:e.string().nullable().optional(),cloudTeamId:e.string().nullable().optional(),currentProfile:a.nullable().optional(),profileWorkflowBinding:q.nullable().optional(),profileComponentBinding:T.nullable().optional(),metadata:e.record(e.string(),e.unknown()).optional(),cwd:e.string().nullable(),codexThreadId:e.string().nullable(),nativeAgent:e.object({provider:e.union([e.enum(["claude-code","grok-build","opencode"]),f]),instanceId:e.string().min(1),sessionId:e.string().min(1),cwd:e.string().min(1)}).nullable().optional(),createdAt:e.string(),updatedAt:e.string(),status:e.enum(["idle","active","failed","closed"]),runtimeSeconds:e.number().int().nonnegative().optional(),runtimeRunningSince:e.string().nullable().optional(),pinned:e.boolean(),savedForLater:e.boolean().optional(),archived:e.boolean(),order:e.number()}),Ce=e.object({id:e.string(),sessionId:e.string(),providerTurnId:e.string().nullable(),modelRef:n.nullable().optional(),prompt:e.string(),startedAt:e.string(),completedAt:e.string().nullable(),status:e.enum(["in_progress","completed","failed","interrupted"]),error:e.string().nullable(),metadata:e.record(e.string(),e.unknown()).optional().default({}),createImproveRun:c.nullable().optional().default(null),profileSnapshot:B.nullable().optional(),harnessSnapshot:y.nullable().optional()});var L=e.object({id:e.string().trim().min(1).max(191),agentId:e.string().trim().min(1).max(191).optional().nullable(),sourcePath:e.string().trim().min(1).max(2e3).optional().nullable(),sourceActionId:e.string().trim().min(1).max(191).optional().nullable(),name:e.string().trim().min(1).max(191).optional().nullable(),label:e.string().trim().min(1).max(160).optional().nullable(),description:e.string().trim().max(1e3).optional().nullable(),visibility:e.string().trim().max(80).optional().nullable(),inputSchema:e.union([e.string().trim().max(191),e.record(e.string(),e.unknown())]).optional().nullable(),outputSchema:e.union([e.string().trim().max(191),e.record(e.string(),e.unknown())]).optional().nullable(),approvalPolicy:e.record(e.string(),e.unknown()).optional().nullable(),artifactPolicy:e.record(e.string(),e.unknown()).optional().nullable(),setupRequirements:e.array(e.record(e.string(),e.unknown())).optional(),mcp:e.record(e.string(),e.unknown()).optional().nullable(),schedulePolicy:e.record(e.string(),e.unknown()).optional().nullable(),trace:e.record(e.string(),e.unknown()).optional().nullable(),implementation:e.record(e.string(),e.unknown()).optional().nullable(),invokesModel:e.boolean().optional()});var z=e.enum(["slack","microsoft_teams","github","google","turnkey","x","mcp"]),H=e.enum(["slack","microsoft_teams","github","google","turnkey","x","mcp"]),V=e.enum(["native_bot","oauth_connector","wallet_connector","mcp_endpoint"]),X=e.object({kind:e.literal("integration"),provider:z,appIds:e.array(H).min(1).max(4),setupSurfaces:e.array(V).min(1).max(4),connectionIds:e.array(e.string().trim().min(1)).max(8).optional(),capabilities:e.array(e.string().trim().min(1)).max(64).optional()}).strict(),m={maxAttachments:10,maxAttachmentBytes:12*1024*1024,maxAttachmentBase64Chars:Math.ceil(12*1024*1024*4/3)+16,maxTextChars:2e5},$=e.enum(["image","text","file"]),G=e.object({sessionId:e.string().trim().min(1).max(200),turnId:e.string().trim().min(1).max(200),attachmentId:e.string().trim().min(1).max(200),storageName:e.string().trim().min(1).max(240),contentType:e.string().trim().min(1).max(160)}),J=e.object({sessionId:e.string().trim().min(1).max(200),turnId:e.string().trim().min(1).max(200),attachmentId:e.string().trim().min(1).max(200),storageName:e.string().trim().min(1).max(1024),contentType:e.string().trim().min(1).max(160)}),O=e.object({id:e.string().trim().min(1),name:e.string().trim().min(1).max(240),mediaType:e.string().trim().min(1).max(160),sizeBytes:e.number().int().nonnegative().max(m.maxAttachmentBytes),kind:$,lineCount:e.number().int().nonnegative().max(m.maxAttachmentBytes+1).optional(),relativePath:e.string().trim().min(1).max(1024).optional(),text:e.string().max(m.maxTextChars).optional(),contentsBase64:e.string().max(m.maxAttachmentBase64Chars).optional()}),He=O.omit({text:!0,contentsBase64:!0}).extend({imagePreview:G.optional(),filePreview:J.optional()}),Ve=e.object({experience:s.optional(),provider:t.default(v),modelRef:n.optional(),openPondCommandAccessMode:o.optional(),systemKind:S.nullable().optional(),hiddenFromDefaultSidebar:e.boolean().optional(),parentSessionId:e.string().trim().min(1).max(200).nullable().optional(),parentTurnId:e.string().trim().min(1).max(200).nullable().optional(),subagentRunId:e.string().trim().min(1).max(200).nullable().optional(),subagentRoleId:i.nullable().optional(),subagentDelegationMode:r.nullable().optional(),appId:e.string().nullable().optional(),appName:e.string().nullable().optional(),workspaceKind:l.optional(),workspaceId:e.string().nullable().optional(),workspaceName:e.string().nullable().optional(),localProjectId:e.string().nullable().optional(),cloudProjectId:e.string().nullable().optional(),cloudTeamId:e.string().nullable().optional(),currentProfile:a.nullable().optional(),profileWorkflowBinding:x.shape.profileWorkflowBinding,profileComponentBinding:x.shape.profileComponentBinding,metadata:e.record(e.string(),e.unknown()).optional(),cwd:e.string().nullable().optional(),title:e.string().optional(),autoTitlePrompt:e.string().trim().min(1).max(2e4).optional()}),Xe=e.object({teamId:e.string().trim().min(1),projectName:e.string().trim().min(1).max(120).optional(),branch:e.string().trim().min(1).max(120).optional(),chatSessionId:e.string().trim().min(1).max(200).optional(),displayPrompt:e.string().trim().min(1).max(2e3).optional()}),$e=e.object({branch:e.string().trim().min(1).max(120).optional()}),Ge=e.object({prompt:e.string().min(1),workflowInput:e.unknown().optional(),metadata:e.record(e.string(),e.unknown()).optional(),usageAttribution:E.optional().nullable(),cwd:e.string().nullable().optional(),model:e.string().nullable().optional(),modelRef:n.optional(),mentionedAppIds:e.array(e.string().trim().min(1)).max(8).optional(),mentionedConnectedApps:e.array(X).max(8).optional(),openPondActionCatalog:e.array(L).max(100).optional(),attachments:e.array(O).max(m.maxAttachments).optional(),createImproveRun:c.optional().nullable(),approvalPolicy:e.enum(["untrusted","on-failure","on-request","never"]).default("on-request"),sandbox:e.enum(["read-only","workspace-write","danger-full-access"]).default("workspace-write"),codexPermissionMode:d.default("default"),codexReasoningEffort:g.optional()}),Je=e.object({prompt:e.string().min(1),error:e.string().min(1),target:e.enum(["cloud_workspace","hybrid_sandbox"])}),Qe=_,Ye=e.object({reason:e.enum(["manual"]).default("manual"),model:e.string().nullable().optional(),modelRef:n.optional()}),Ze=e.object({experience:s.optional(),provider:t.optional(),modelRef:n.nullable().optional(),openPondCommandAccessMode:o.optional(),pinned:e.boolean().optional(),savedForLater:e.boolean().optional(),archived:e.boolean().optional(),order:e.number().optional(),title:e.string().optional(),parentSessionId:e.string().trim().min(1).max(200).nullable().optional(),parentTurnId:e.string().trim().min(1).max(200).nullable().optional(),subagentRunId:e.string().trim().min(1).max(200).nullable().optional(),subagentRoleId:i.nullable().optional(),subagentDelegationMode:r.nullable().optional(),appId:e.string().nullable().optional(),appName:e.string().nullable().optional(),workspaceKind:l.optional(),workspaceId:e.string().nullable().optional(),workspaceName:e.string().nullable().optional(),localProjectId:e.string().nullable().optional(),cloudProjectId:e.string().nullable().optional(),cloudTeamId:e.string().nullable().optional(),currentProfile:a.nullable().optional(),metadata:e.record(e.string(),e.unknown()).optional(),cwd:e.string().nullable().optional()}),en=e.object({command:e.string().trim().min(1),cwd:e.string().trim().min(1).max(4096).nullable().optional(),timeoutSeconds:e.number().int().min(1).max(3600).optional()}),nn=h,tn=e.object({appIds:e.array(e.string()).min(1)}),on=e.object({expectedRevision:e.string().optional(),defaultChatProvider:t.optional(),defaultChatModel:e.string().min(1).optional(),defaultChatModelRef:n.nullable().optional(),subagents:R.optional(),codexPermissionMode:d.optional(),codexReasoningEffort:g.optional(),openPondCommandAccessMode:o.optional(),defaultBranchPrefix:e.string().trim().max(48).optional(),defaultNewProjectDirectory:e.string().trim().max(4096).optional(),defaultTeamId:e.string().trim().max(191).nullable().optional(),advancedWorkspaceControls:e.boolean().optional(),steerActiveResponses:e.boolean().optional(),contextCompaction:k.optional(),training:w.optional(),sidebarWidth:e.number().int().min(244).max(560).optional(),diffPanelWidth:e.number().int().min(320).max(2400).optional(),sidebarSectionsCollapsed:A.optional(),editor:C.optional()}),an=P,rn=e.object({message:e.string().trim().min(1).max(4e3),surface:e.string().trim().min(1).max(120).default("app"),stack:e.string().max(12e3).nullable().optional(),context:e.record(e.string(),e.unknown()).optional()}).strict();var ln=e.object({activeTemplateId:j,templateName:e.string().trim().min(1).max(80),soul:e.string().trim().min(1).max(8e3),saveAsNew:e.boolean().optional().default(!1)}),sn=e.object({decision:e.enum(["accept","acceptForSession","decline","cancel"]),answers:e.record(e.string().min(1).max(2e3),e.string().trim().min(1).max(8e3)).optional()}),mn=e.object({branch:e.string().trim().min(1).max(240).nullable().optional(),surface:e.enum(["desktop","terminal"])}),pn=e.object({handle:e.string().min(1),baseUrl:e.string().nullable().optional()}),cn=e.object({handle:e.string().min(1),baseUrl:e.string().nullable().optional()}),un=e.object({handle:e.string().min(1).optional(),apiKey:e.string().min(1),baseUrl:e.string().nullable().optional(),apiBaseUrl:e.string().nullable().optional(),chatApiBaseUrl:e.string().nullable().optional(),environment:e.string().nullable().optional(),setActive:e.boolean().optional()}),dn=e.object({handle:e.string().min(1),currentBaseUrl:e.string().nullable().optional(),apiKey:e.string().min(1).optional(),baseUrl:e.string().nullable().optional(),apiBaseUrl:e.string().nullable().optional(),chatApiBaseUrl:e.string().nullable().optional(),environment:e.string().nullable().optional(),setActive:e.boolean().optional()});export{Y as a,Z as b,ee as c,F as d,ne as e,te as f,oe as g,ae as h,ie as i,K as j,re as k,le as l,s as m,D as n,a as o,x as p,Ce as q,L as r,m as s,J as t,O as u,Ve as v,Xe as w,$e as x,Ge as y,Je as z,Qe as A,Ye as B,Ze as C,en as D,nn as E,tn as F,on as G,an as H,rn as I,ln as J,sn as K,mn as L,pn as M,cn as N,un as O,dn as P};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as c,e as i}from"./chunk-FUOEIDMA.js";import{j as l}from"./chunk-GJ2ZJFDD.js";import{m as o}from"./chunk-KGNCKIFP.js";import{a as n}from"./chunk-FTQLQJQV.js";async function u(e,s){let a=await e.getHarnessRunOverlay(s);if(!a)return c(e);let t=await e.getHarnessWorkspace(a.workspace.workspaceId),r=await e.getHarnessReleaseRecord(a.baseHarnessRelease.contentHash);if(!t||!r||r.harnessRelease.id!==a.baseHarnessRelease.id)throw new Error("Durable Agent run overlay references an unavailable Harness release.");return i({workspace:t,release:r})}n(u,"loadLocalHarnessRuntimeForAgentRun");async function m(e){let s=await e.store.getHarnessRunOverlay(e.runId);if(s){if(s.workspace.workspaceId!==e.workspace.id||s.baseHarnessRelease.id!==e.harnessRelease.id||s.baseHarnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("The durable Agent run is already bound to a different Harness release; start a fresh run or explicitly rebase its overlay.");return s}let a=l({schemaVersion:"openpond.harnessRunOverlay.v1",id:`overlay-${o({runId:e.runId,harnessRelease:e.harnessRelease}).slice(0,24)}`,runId:e.runId,baseHarnessRelease:e.harnessRelease,workspace:{workspaceId:e.workspace.id,revision:e.workspace.revision,sourceRevision:e.workspace.sourceRevision,channelRevision:e.workspace.currentChannel.revision},revision:0,status:"active",edits:[],createdAt:e.admittedAt,updatedAt:e.admittedAt,metadata:{}});return e.store.createHarnessRunOverlay(a)}n(m,"ensureLocalHarnessRunOverlay");export{u as a,m as b};
2
+ import{d as c,e as i}from"./chunk-PH6IORGZ.js";import{j as l}from"./chunk-GJ2ZJFDD.js";import{m as o}from"./chunk-KGNCKIFP.js";import{a as n}from"./chunk-FTQLQJQV.js";async function u(e,s){let a=await e.getHarnessRunOverlay(s);if(!a)return c(e);let t=await e.getHarnessWorkspace(a.workspace.workspaceId),r=await e.getHarnessReleaseRecord(a.baseHarnessRelease.contentHash);if(!t||!r||r.harnessRelease.id!==a.baseHarnessRelease.id)throw new Error("Durable Agent run overlay references an unavailable Harness release.");return i({workspace:t,release:r})}n(u,"loadLocalHarnessRuntimeForAgentRun");async function m(e){let s=await e.store.getHarnessRunOverlay(e.runId);if(s){if(s.workspace.workspaceId!==e.workspace.id||s.baseHarnessRelease.id!==e.harnessRelease.id||s.baseHarnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("The durable Agent run is already bound to a different Harness release; start a fresh run or explicitly rebase its overlay.");return s}let a=l({schemaVersion:"openpond.harnessRunOverlay.v1",id:`overlay-${o({runId:e.runId,harnessRelease:e.harnessRelease}).slice(0,24)}`,runId:e.runId,baseHarnessRelease:e.harnessRelease,workspace:{workspaceId:e.workspace.id,revision:e.workspace.revision,sourceRevision:e.workspace.sourceRevision,channelRevision:e.workspace.currentChannel.revision},revision:0,status:"active",edits:[],createdAt:e.admittedAt,updatedAt:e.admittedAt,metadata:{}});return e.store.createHarnessRunOverlay(a)}n(m,"ensureLocalHarnessRunOverlay");export{u as a,m as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as H,b as y,c as C,e as E,g as S,h as P,i as j}from"./chunk-EYPCBBMS.js";import{c as I}from"./chunk-4EPSHPZL.js";import{fb as w,hb as b}from"./chunk-25MBPJVY.js";import{e as h,k as v,l}from"./chunk-WN3V6KDN.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as f}from"./chunk-FTQLQJQV.js";var a=e.string().min(1).max(240),d=e.string().regex(/^[a-f0-9]{64}$/),g=e.string().regex(/^[a-f0-9]{40}$/),x=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateExport.v1"),actorId:a,teamId:a,candidateId:a,candidateRevision:e.number().int().positive(),projectId:a.nullable(),profileRef:e.object({source:e.literal("openpond_git"),repositoryId:a,profileId:a}).strict(),expectedCommit:g,component:y.shape.component,baseRelease:h,frozenHash:d,executableSourceHash:d,protectedClosureHash:d,compiler:e.object({workspaceId:a,name:e.string().max(500),repositoryId:a}).strict(),sourceManifest:e.object({base64:e.string().max(28e5),contentHash:d,sizeBytes:e.number().int().positive().max(2e6)}).strict(),policySource:w,qualification:e.object({kind:e.enum(["owner_attested_local","hosted_execution"]),ownerActorId:a,teamId:a,originalEvidence:h,baseline:h,candidate:h,comparisonHash:d,recipe:H}).strict(),createdAt:e.string().datetime(),contentHash:d}).strict();function J(n){let o=x.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId||o.qualification.recipe.externalDatasetBinding.profileId!==o.profileRef.profileId||o.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==o.protectedClosureHash)throw new Error("Hosted candidate owner attestation identity differs.");return b(o.policySource),o}f(J,"verifyHostedProfileCandidateExport");var O=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateAdoption.v1"),id:a,operationId:a,actorId:a,teamId:a,candidateId:a,exportHash:d,executionOrigin:e.enum(["owner_attested_local","hosted_execution"]),qualification:x.shape.qualification,testedCandidateRelease:h,activeRelease:h,expectedCommit:g,committedProfileGit:g,executableSourceHash:d,protectedClosureHash:d,createdAt:e.string().datetime(),contentHash:d}).strict();function R(n){let o=O.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.executionOrigin!==o.qualification.kind||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId)throw new Error("Hosted candidate receipt integrity differs.");return o}f(R,"verifyHostedProfileCandidateReceipt");var T=e.discriminatedUnion("operation",[e.object({operation:e.literal("adopt"),operationId:a,export:x}).strict(),e.object({operation:e.enum(["read","rollback"]),operationId:a,adoptionOperationId:a,profileRepositoryId:a}).strict()]),K=class{static{f(this,"ExperimentImprovementClient")}constructor(n){this.options=n;let o=new URL(n.baseUrl);if(!["http:","https:"].includes(o.protocol)||o.username||o.password||o.hash||o.search||!n.apiKey.trim()||!n.teamId.trim()||!n.actorId.trim())throw new Error("Select the authenticated Improve owner and API origin.");this.origin=o.toString().replace(/\/+$/,"")}options;origin;async hostedCandidate(n,o){let t=T.parse(n);if(t.operation==="adopt"&&(t.export.actorId!==this.options.actorId||t.export.teamId!==this.options.teamId))throw new Error("The hosted candidate export belongs to a different owner.");let{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:t}),signal:o},(m,u,r)=>Object.assign(new Error(r),{status:m,code:u}));if(!c.ok){let m=e.object({code:e.string(),message:e.string().optional(),error:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(m.success?m.data.message??m.data.error??m.data.code:"Hosted candidate operation failed."),{status:c.status,code:m.success?m.data.code:void 0})}let i=R(p);if(i.actorId!==this.options.actorId||i.teamId!==this.options.teamId||i.operationId!==t.operationId||t.operation==="adopt"&&(i.exportHash!==t.export.contentHash||i.candidateId!==t.export.candidateId||i.testedCandidateRelease.contentHash!==t.export.policySource.harnessRelease.contentHash))throw new Error("Hosted candidate readback differs from the exact owner request.");return i}async command(n,o){let t=S.parse(n),{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request:t}),signal:o},(r,s,q)=>Object.assign(new Error(q),{status:r,code:s}));if(!c.ok){let r=e.object({error:e.string(),code:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(r.success?r.data.error:"The Improve operation failed."),{status:c.status,code:r.success?r.data.code:void 0})}if(t.operation==="options"){let r=P.parse(p);if(r.teamId!==this.options.teamId||l(r.evidence)!==l(t.evidence))throw new Error("The Improve choices changed their exact originating evidence.");return r}if(t.operation==="humanComparisonOptions"){let r=j(p);if(r.candidateId!==t.id||r.actorId!==this.options.actorId||r.teamId!==this.options.teamId)throw new Error("Human discovery belongs to another owner or candidate.");return r}if(t.operation==="instructions"){let r=e.object({candidateId:e.string(),candidateRevision:e.number().int().positive(),path:e.string(),text:e.string().max(25e4),textHash:e.string().regex(/^[a-f0-9]{64}$/),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(p);if(r.candidateId!==t.id||v(r.text)!==r.textHash)throw new Error("The candidate instructions belong to a different revision.");return r}let i=t.operation==="list"?E.parse(p):null;if(t.operation==="list"&&i&&(i.states.length>t.limit||i.states.some((r,s)=>t.cursor&&r.id<=t.cursor||s>0&&r.id<=i.states[s-1].id)||i.nextCursor&&(t.cursor&&i.nextCursor<=t.cursor||i.states.some(r=>r.id>i.nextCursor))))throw new Error("The retained candidate page changed its scan boundary.");let u=(i?i.states:[p]).map(r=>{let s=C(r);if(s.actorId!==this.options.actorId||s.teamId!==this.options.teamId||"id"in t&&s.id!==t.id)throw new Error("The Improve response belongs to a different owner or candidate.");if(t.operation==="start"&&s.requestHash!==l(t.request))throw new Error("The Improve request identity changed.");return s});return i?{states:u,nextCursor:i.nextCursor}:u[0]}};export{J as a,K as b};
2
+ import{a as H,b as y,c as C,e as E,g as S,h as P,i as j}from"./chunk-RBZH6A6M.js";import{c as I}from"./chunk-KO3HNMLJ.js";import{fb as w,hb as b}from"./chunk-XMKCCLGB.js";import{e as h,k as v,l}from"./chunk-WN3V6KDN.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as f}from"./chunk-FTQLQJQV.js";var a=e.string().min(1).max(240),d=e.string().regex(/^[a-f0-9]{64}$/),g=e.string().regex(/^[a-f0-9]{40}$/),x=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateExport.v1"),actorId:a,teamId:a,candidateId:a,candidateRevision:e.number().int().positive(),projectId:a.nullable(),profileRef:e.object({source:e.literal("openpond_git"),repositoryId:a,profileId:a}).strict(),expectedCommit:g,component:y.shape.component,baseRelease:h,frozenHash:d,executableSourceHash:d,protectedClosureHash:d,compiler:e.object({workspaceId:a,name:e.string().max(500),repositoryId:a}).strict(),sourceManifest:e.object({base64:e.string().max(28e5),contentHash:d,sizeBytes:e.number().int().positive().max(2e6)}).strict(),policySource:w,qualification:e.object({kind:e.enum(["owner_attested_local","hosted_execution"]),ownerActorId:a,teamId:a,originalEvidence:h,baseline:h,candidate:h,comparisonHash:d,recipe:H}).strict(),createdAt:e.string().datetime(),contentHash:d}).strict();function J(n){let o=x.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId||o.qualification.recipe.externalDatasetBinding.profileId!==o.profileRef.profileId||o.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==o.protectedClosureHash)throw new Error("Hosted candidate owner attestation identity differs.");return b(o.policySource),o}f(J,"verifyHostedProfileCandidateExport");var O=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateAdoption.v1"),id:a,operationId:a,actorId:a,teamId:a,candidateId:a,exportHash:d,executionOrigin:e.enum(["owner_attested_local","hosted_execution"]),qualification:x.shape.qualification,testedCandidateRelease:h,activeRelease:h,expectedCommit:g,committedProfileGit:g,executableSourceHash:d,protectedClosureHash:d,createdAt:e.string().datetime(),contentHash:d}).strict();function R(n){let o=O.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.executionOrigin!==o.qualification.kind||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId)throw new Error("Hosted candidate receipt integrity differs.");return o}f(R,"verifyHostedProfileCandidateReceipt");var T=e.discriminatedUnion("operation",[e.object({operation:e.literal("adopt"),operationId:a,export:x}).strict(),e.object({operation:e.enum(["read","rollback"]),operationId:a,adoptionOperationId:a,profileRepositoryId:a}).strict()]),K=class{static{f(this,"ExperimentImprovementClient")}constructor(n){this.options=n;let o=new URL(n.baseUrl);if(!["http:","https:"].includes(o.protocol)||o.username||o.password||o.hash||o.search||!n.apiKey.trim()||!n.teamId.trim()||!n.actorId.trim())throw new Error("Select the authenticated Improve owner and API origin.");this.origin=o.toString().replace(/\/+$/,"")}options;origin;async hostedCandidate(n,o){let t=T.parse(n);if(t.operation==="adopt"&&(t.export.actorId!==this.options.actorId||t.export.teamId!==this.options.teamId))throw new Error("The hosted candidate export belongs to a different owner.");let{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:t}),signal:o},(m,u,r)=>Object.assign(new Error(r),{status:m,code:u}));if(!c.ok){let m=e.object({code:e.string(),message:e.string().optional(),error:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(m.success?m.data.message??m.data.error??m.data.code:"Hosted candidate operation failed."),{status:c.status,code:m.success?m.data.code:void 0})}let i=R(p);if(i.actorId!==this.options.actorId||i.teamId!==this.options.teamId||i.operationId!==t.operationId||t.operation==="adopt"&&(i.exportHash!==t.export.contentHash||i.candidateId!==t.export.candidateId||i.testedCandidateRelease.contentHash!==t.export.policySource.harnessRelease.contentHash))throw new Error("Hosted candidate readback differs from the exact owner request.");return i}async command(n,o){let t=S.parse(n),{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request:t}),signal:o},(r,s,q)=>Object.assign(new Error(q),{status:r,code:s}));if(!c.ok){let r=e.object({error:e.string(),code:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(r.success?r.data.error:"The Improve operation failed."),{status:c.status,code:r.success?r.data.code:void 0})}if(t.operation==="options"){let r=P.parse(p);if(r.teamId!==this.options.teamId||l(r.evidence)!==l(t.evidence))throw new Error("The Improve choices changed their exact originating evidence.");return r}if(t.operation==="humanComparisonOptions"){let r=j(p);if(r.candidateId!==t.id||r.actorId!==this.options.actorId||r.teamId!==this.options.teamId)throw new Error("Human discovery belongs to another owner or candidate.");return r}if(t.operation==="instructions"){let r=e.object({candidateId:e.string(),candidateRevision:e.number().int().positive(),path:e.string(),text:e.string().max(25e4),textHash:e.string().regex(/^[a-f0-9]{64}$/),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(p);if(r.candidateId!==t.id||v(r.text)!==r.textHash)throw new Error("The candidate instructions belong to a different revision.");return r}let i=t.operation==="list"?E.parse(p):null;if(t.operation==="list"&&i&&(i.states.length>t.limit||i.states.some((r,s)=>t.cursor&&r.id<=t.cursor||s>0&&r.id<=i.states[s-1].id)||i.nextCursor&&(t.cursor&&i.nextCursor<=t.cursor||i.states.some(r=>r.id>i.nextCursor))))throw new Error("The retained candidate page changed its scan boundary.");let u=(i?i.states:[p]).map(r=>{let s=C(r);if(s.actorId!==this.options.actorId||s.teamId!==this.options.teamId||"id"in t&&s.id!==t.id)throw new Error("The Improve response belongs to a different owner or candidate.");if(t.operation==="start"&&s.requestHash!==l(t.request))throw new Error("The Improve request identity changed.");return s});return i?{states:u,nextCursor:i.nextCursor}:u[0]}};export{J as a,K as b};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{b as I,f as $}from"./chunk-6QSSIT62.js";import{a as ve}from"./chunk-L3KS6MOV.js";import{E as ke,F as Re}from"./chunk-I7AQMAQI.js";import{f as U}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createRequire as at}from"node:module";import{createHash as Qe,randomUUID as et}from"node:crypto";import{spawn as uo}from"node:child_process";import{existsSync as S}from"node:fs";import{cp as fo,mkdir as x,readFile as st,readdir as it,rename as Pe,rm as we,symlink as po,writeFile as z}from"node:fs/promises";import u from"node:path";function ne(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}s(ne,"emptyProfileCatalogState");function re(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}s(re,"emptyProfileSkillCatalogState");function ae(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}s(ae,"emptyProfileSetupGate");function K(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}s(K,"emptyProfileDiffSummary");function se(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}}s(se,"emptyProfileSummary");import{existsSync as G}from"node:fs";import{readFile as It,stat as kt}from"node:fs/promises";import V from"node:path";var be=".openpond/agent-manifest.json",Ee=".openpond/action-registry.json",Rt=".openpond/source-upload-metadata.json",vt=".openpond/agent-package-origin.json";async function _e(e){return Me({agentId:"default",sourcePath:e,preferred:!0})}s(_e,"loadProfileActionCatalog");async function $e(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(Me)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let d=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=d===l.id?l:{...l,id:d};n.set(d,p),r.push(p)}let a=Et(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:a,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)}}s($e,"loadProfileActionCatalogForSources");async function Me(e){let t=e.sourcePath,o=V.join(t,be),n=V.join(t,Ee),r=V.join(t,Rt),a=V.join(t,vt);try{let i=await X(o),c=await X(n),l=await X(r),d=y(await X(a)),p=y(y(i)?.inputSchemas),h=Oe(y(l)?.setupRequirements)??[],v=xt(h),A=new Map;for(let g of[...ie(y(i)?.actionCatalog),...ie(y(c)?.actions),...ie(y(i)?.actions)]){let j=m(g.id)??m(g.name);if(!j)continue;let C=A.get(j),At=Ot({sourceRequirementsByAction:v,actionId:j,actionName:m(g.name)}),St=_t(Oe(g.setupRequirements)??C?.setupRequirements??[],At),Ct={id:j,agentId:e.agentId,sourcePath:t,sourceActionId:j,name:m(g.name)??C?.name??j,label:m(g.label)??C?.label??Tt(j),description:m(g.description)??C?.description??null,visibility:m(g.visibility)??C?.visibility??"default",inputSchema:qt(g.inputSchema,p)??C?.inputSchema??null,outputSchema:je(g.outputSchema)??C?.outputSchema??null,approvalPolicy:y(g.approvalPolicy)??C?.approvalPolicy??null,artifactPolicy:y(g.artifactPolicy)??C?.artifactPolicy??null,setupRequirements:St,mcp:y(g.mcp)??C?.mcp??null,schedulePolicy:y(g.schedulePolicy)??C?.schedulePolicy??null,trace:bt(y(g.trace)??C?.trace??null,d),implementation:y(g.implementation)??C?.implementation??null,invokesModel:typeof g.invokesModel=="boolean"?g.invokesModel:C?.invokesModel};A.set(j,Ct)}let M=Array.from(A.values()).filter(g=>g.visibility!=="internal"&&g.visibility!=="debug"),L=[...i?[]:[be],...c?[]:[Ee]],_=await jt([o,n]);return{catalog:{actionCount:M.length,generatedAt:_,manifestPath:G(o)?o:null,registryPath:G(n)?n:null,stale:L.length>0,error:L.length>0?Mt(e,L):null},actionCatalog:M,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:G(o)?o:null,registryPath:G(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}s(Me,"loadProfileActionCatalogSource");function bt(e,t){if(!t)return e;let o=m(t.versionId),n=m(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:xe(t.validationReceiptIds),evalReceiptIds:xe(t.evalReceiptIds)}}s(bt,"mergeAgentPackageTrace");function xe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(xe,"stringArray");function Et(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}s(Et,"latestIso");function xt(e){let t=new Map;for(let o of e){let n=[m(o.actionId),m(o.sourceActionId),m(o.actionName)].filter(r=>!!r);for(let r of n){let a=t.get(r)??[];a.push(o),t.set(r,a)}}return t}s(xt,"sourceSetupRequirementsByAction");function Ot(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"}))}s(Ot,"setupRequirementsForActionSource");function _t(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let a=$t(r);n.has(a)||(n.add(a),o.push(r))}return o}s(_t,"mergeSetupRequirements");function $t(e){return[m(e.actionId)??m(e.sourceActionId)??m(e.actionName)??"",m(e.kind)??m(e.type)??"",m(e.name)??m(e.key)??m(e.provider)??m(e.tool)??m(e.command)??m(e.packageName)??m(e.path)??m(e.repo)??m(e.url)??m(e.id)??""].join(":")}s($t,"setupRequirementIdentity");function Mt(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(" ")}s(Mt,"missingSourceArtifactsMessage");async function X(e){return G(e)?JSON.parse(await It(e,"utf8")):null}s(X,"readJsonIfExists");async function jt(e){let t=0;for(let o of e){if(!G(o))continue;let n=await kt(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}s(jt,"latestMtime");function y(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(y,"asRecord");function ie(e){return Array.isArray(e)?e.filter(t=>!!y(t)):[]}s(ie,"records");function Oe(e){return Array.isArray(e)?e.filter(t=>!!y(t)):null}s(Oe,"recordArray");function m(e){return typeof e=="string"&&e.trim()?e.trim():null}s(m,"text");function je(e){return m(e)??y(e)}s(je,"schemaValue");function qt(e,t){let o=je(e);return typeof o!="string"?o:y(t?.[o])??o}s(qt,"resolvedSchemaValue");function Tt(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}s(Tt,"titleFromActionId");var Y=class extends Error{static{s(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{b as I,f as $}from"./chunk-RZUEVS64.js";import{a as ve}from"./chunk-L3KS6MOV.js";import{E as ke,F as Re}from"./chunk-MNC4YUDI.js";import{f as U}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createRequire as at}from"node:module";import{createHash as Qe,randomUUID as et}from"node:crypto";import{spawn as uo}from"node:child_process";import{existsSync as S}from"node:fs";import{cp as fo,mkdir as x,readFile as st,readdir as it,rename as Pe,rm as we,symlink as po,writeFile as z}from"node:fs/promises";import u from"node:path";function ne(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}s(ne,"emptyProfileCatalogState");function re(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}s(re,"emptyProfileSkillCatalogState");function ae(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}s(ae,"emptyProfileSetupGate");function K(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}s(K,"emptyProfileDiffSummary");function se(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}}s(se,"emptyProfileSummary");import{existsSync as G}from"node:fs";import{readFile as It,stat as kt}from"node:fs/promises";import V from"node:path";var be=".openpond/agent-manifest.json",Ee=".openpond/action-registry.json",Rt=".openpond/source-upload-metadata.json",vt=".openpond/agent-package-origin.json";async function _e(e){return Me({agentId:"default",sourcePath:e,preferred:!0})}s(_e,"loadProfileActionCatalog");async function $e(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(Me)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let d=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=d===l.id?l:{...l,id:d};n.set(d,p),r.push(p)}let a=Et(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:a,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)}}s($e,"loadProfileActionCatalogForSources");async function Me(e){let t=e.sourcePath,o=V.join(t,be),n=V.join(t,Ee),r=V.join(t,Rt),a=V.join(t,vt);try{let i=await X(o),c=await X(n),l=await X(r),d=y(await X(a)),p=y(y(i)?.inputSchemas),h=Oe(y(l)?.setupRequirements)??[],v=xt(h),A=new Map;for(let g of[...ie(y(i)?.actionCatalog),...ie(y(c)?.actions),...ie(y(i)?.actions)]){let j=m(g.id)??m(g.name);if(!j)continue;let C=A.get(j),At=Ot({sourceRequirementsByAction:v,actionId:j,actionName:m(g.name)}),St=_t(Oe(g.setupRequirements)??C?.setupRequirements??[],At),Ct={id:j,agentId:e.agentId,sourcePath:t,sourceActionId:j,name:m(g.name)??C?.name??j,label:m(g.label)??C?.label??Tt(j),description:m(g.description)??C?.description??null,visibility:m(g.visibility)??C?.visibility??"default",inputSchema:qt(g.inputSchema,p)??C?.inputSchema??null,outputSchema:je(g.outputSchema)??C?.outputSchema??null,approvalPolicy:y(g.approvalPolicy)??C?.approvalPolicy??null,artifactPolicy:y(g.artifactPolicy)??C?.artifactPolicy??null,setupRequirements:St,mcp:y(g.mcp)??C?.mcp??null,schedulePolicy:y(g.schedulePolicy)??C?.schedulePolicy??null,trace:bt(y(g.trace)??C?.trace??null,d),implementation:y(g.implementation)??C?.implementation??null,invokesModel:typeof g.invokesModel=="boolean"?g.invokesModel:C?.invokesModel};A.set(j,Ct)}let M=Array.from(A.values()).filter(g=>g.visibility!=="internal"&&g.visibility!=="debug"),L=[...i?[]:[be],...c?[]:[Ee]],_=await jt([o,n]);return{catalog:{actionCount:M.length,generatedAt:_,manifestPath:G(o)?o:null,registryPath:G(n)?n:null,stale:L.length>0,error:L.length>0?Mt(e,L):null},actionCatalog:M,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:G(o)?o:null,registryPath:G(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}s(Me,"loadProfileActionCatalogSource");function bt(e,t){if(!t)return e;let o=m(t.versionId),n=m(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:xe(t.validationReceiptIds),evalReceiptIds:xe(t.evalReceiptIds)}}s(bt,"mergeAgentPackageTrace");function xe(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(xe,"stringArray");function Et(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}s(Et,"latestIso");function xt(e){let t=new Map;for(let o of e){let n=[m(o.actionId),m(o.sourceActionId),m(o.actionName)].filter(r=>!!r);for(let r of n){let a=t.get(r)??[];a.push(o),t.set(r,a)}}return t}s(xt,"sourceSetupRequirementsByAction");function Ot(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"}))}s(Ot,"setupRequirementsForActionSource");function _t(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let a=$t(r);n.has(a)||(n.add(a),o.push(r))}return o}s(_t,"mergeSetupRequirements");function $t(e){return[m(e.actionId)??m(e.sourceActionId)??m(e.actionName)??"",m(e.kind)??m(e.type)??"",m(e.name)??m(e.key)??m(e.provider)??m(e.tool)??m(e.command)??m(e.packageName)??m(e.path)??m(e.repo)??m(e.url)??m(e.id)??""].join(":")}s($t,"setupRequirementIdentity");function Mt(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(" ")}s(Mt,"missingSourceArtifactsMessage");async function X(e){return G(e)?JSON.parse(await It(e,"utf8")):null}s(X,"readJsonIfExists");async function jt(e){let t=0;for(let o of e){if(!G(o))continue;let n=await kt(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}s(jt,"latestMtime");function y(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(y,"asRecord");function ie(e){return Array.isArray(e)?e.filter(t=>!!y(t)):[]}s(ie,"records");function Oe(e){return Array.isArray(e)?e.filter(t=>!!y(t)):null}s(Oe,"recordArray");function m(e){return typeof e=="string"&&e.trim()?e.trim():null}s(m,"text");function je(e){return m(e)??y(e)}s(je,"schemaValue");function qt(e,t){let o=je(e);return typeof o!="string"?o:y(t?.[o])??o}s(qt,"resolvedSchemaValue");function Tt(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}s(Tt,"titleFromActionId");var Y=class extends Error{static{s(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 Z(e){let t=new Map;for(let i of e.sourceSetupRequirements??[]){let c=Ft(i);if(e.actionId&&c&&c!==e.actionId&&P(i.actionName)!==e.actionId&&P(i.sourceActionId)!==e.actionId)continue;let l=qe({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=qe({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&&!ce(i.status)).length,a=o.filter(i=>ce(i.status)).length;return{status:Lt(n),requirementCount:o.length,blockingCount:n.length,optionalMissingCount:r,readyCount:a,requirements:o,blockingRequirements:n}}s(Z,"buildOpenPondProfileSetupGate");function le(e,t){if(t.blockingRequirements.length>0)throw new Y(e,t)}s(le,"assertOpenPondProfileActionReady");function Nt(e){let t=e.actionId?`${e.actionId}: `:"",o=e.required?"required":"optional";return`${t}${e.label} (${o}, ${e.status})`}s(Nt,"formatOpenPondProfileSetupRequirement");function qe(e){let t=e.source==="action_catalog"&&P(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,o=P(e.record.kind)??P(e.record.type),n=P(e.record.label)??P(e.record.name)??P(e.record.key)??P(e.record.provider)??P(e.record.tool)??P(e.record.command)??P(e.record.packageName)??P(e.record.path)??P(e.record.repo)??P(e.record.url)??P(e.record.id)??o??"setup requirement",r=e.record.required!==!1,a=Ht(e.record);return{ref:[t,e.actionId??"source",o??"requirement",n].join(":"),source:t,actionId:e.actionId,kind:o,label:n,status:a,required:r,blocking:r&&!ce(a)}}s(qe,"setupRequirementFromRecord");function Ft(e){return P(e.actionId)??P(e.sourceActionId)??P(e.actionName)}s(Ft,"setupRequirementActionId");function Ht(e){let t=P(e.status)??P(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"}s(Ht,"setupStatus");function Lt(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}s(Lt,"gateStatus");function ce(e){return e==="ready"||e==="disabled"}s(ce,"isReadyStatus");function P(e){return typeof e=="string"&&e.trim()?e.trim():null}s(P,"text");import{spawn as Ut}from"node:child_process";import{randomUUID as Gt}from"node:crypto";import{existsSync as ue}from"node:fs";import{readFile as Bt,rm as Dt,writeFile as Fe}from"node:fs/promises";import Q from"node:path";var He=["**/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 Le(e){if(!ue(Q.join(e,".git"))){let a=await k(e,["init","-b","main"]);if(a.code!==0)throw new Error(T("git init",a))}let t=Q.join(e,".gitignore");if(ue(t)?await zt(t):await Fe(t,He,"utf8"),await Wt(e))return;let o=await N(e);if(!o.dirty&&o.files.length===0)return;let n=await k(e,["add","-A"]);if(n.code!==0)throw new Error(T("git add",n));let r=await k(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(T("git commit",r))}s(Le,"ensureProfileGitRepo");async function zt(e){let t=await Bt(e,"utf8").catch(()=>""),o=He.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(a=>a.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{n as z,o as V,p as G,q}from"./chunk-RAXOSUSW.js";import{a as A,f as v,g as k,h as p,i as f}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{Buffer as Y}from"node:buffer";import{readdirSync as H,readFileSync as Q,statSync as F}from"node:fs";import b from"node:path";var K=500,Z=8*1024*1024,W=8*1024*1024;async function me(e,t){if(!t.sandboxRuntime&&!t.runtimeId)return{sandbox:await X(e,await e.create(t.sandbox,{async:!0}))};let n=t.runtimeId?void 0:await e.createSandboxRuntime(t.sandboxRuntime),r=t.runtimeId??n.id,o=await e.createSandboxRuntimeSandbox(r,t.sandbox);return{sandbox:await X(e,o.sandbox),runtime:o.runtime??n}}a(me,"createSandboxFromPlan");async function X(e,t){if(t.state==="running"||t.state==="stopped")return t;if(t.state==="error")throw new Error(`sandbox create failed: ${t.id}
2
+ import{n as z,o as V,p as G,q}from"./chunk-GUOLMLZN.js";import{a as A,f as v,g as k,h as p,i as f}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{Buffer as Y}from"node:buffer";import{readdirSync as H,readFileSync as Q,statSync as F}from"node:fs";import b from"node:path";var K=500,Z=8*1024*1024,W=8*1024*1024;async function me(e,t){if(!t.sandboxRuntime&&!t.runtimeId)return{sandbox:await X(e,await e.create(t.sandbox,{async:!0}))};let n=t.runtimeId?void 0:await e.createSandboxRuntime(t.sandboxRuntime),r=t.runtimeId??n.id,o=await e.createSandboxRuntimeSandbox(r,t.sandbox);return{sandbox:await X(e,o.sandbox),runtime:o.runtime??n}}a(me,"createSandboxFromPlan");async function X(e,t){if(t.state==="running"||t.state==="stopped")return t;if(t.state==="error")throw new Error(`sandbox create failed: ${t.id}
3
3
  ${t.logs.join(`
4
4
  `)}`);let n=12*6e4,r=3e3,o=Date.now()+n,i=t;for(;Date.now()<o;){if(await new Promise(s=>setTimeout(s,r)),i=await e.get(t.id),i.state==="running"||i.state==="stopped")return i;if(i.state==="error")throw new Error(`sandbox create failed: ${i.id}
5
5
  ${i.logs.join(`
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as he,b as ye,d as Ae,e as L}from"./chunk-BFKYRQMA.js";import{a as D,b as ge,c as Pe,d as we,e as Oe}from"./chunk-6QSSIT62.js";import{j as xe}from"./chunk-3QIB5FXI.js";import{d as N,e as B}from"./chunk-YR5ID2SS.js";import{E as ae,h as re}from"./chunk-Z4Z5UOZM.js";import{d as me}from"./chunk-FFRFSDBM.js";import{a}from"./chunk-FTQLQJQV.js";var De=new URL(B).hostname,be=new URL(N).hostname,$e=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function Y(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===De)return B;if(o===be||o===`www.${be}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(Y,"mapUiBaseToApiBase");function Q(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=Y(process.env.OPENPOND_BASE_URL);return s||(Y(e?.baseUrl||n.baseUrl)??B)}a(Q,"resolvePublicApiBaseUrl");function X(e,n,t){return He(e,n,t)}a(X,"resolveHostedChatApiBaseUrl");function He(e,n,t){let o=typeof process<"u"?process.env:{};return J(o.OPENPOND_OPCHAT_API_URL)??J(e?.chatApiBaseUrl??n.chatApiBaseUrl)??J(o.OPENPOND_CHAT_API_URL)??Me(t)}a(He,"resolveOpChatApiBaseUrl");function J(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(J,"normalizeOpChatApiBaseUrl");function Me(e){return J(e)??$e}a(Me,"opChatBaseFromPublicApiBase");function $(e){return e?.trim()?e.trim():"production"}a($,"deriveEnvironment");function Z(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Z,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function q(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(q,"profileKey");function ee(e){return l(e?.baseUrl)}a(ee,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=ee(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function se(e,n){if(!P(e.handle,n.handle))return!1;let t=ee(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(se,"profileMatchesSelector");function Ue(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Ue,"findActiveAccount");function ke(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ie(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:$(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(ke,"fallbackProfilesFromConfig");function ie(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:$(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ie,"normalizeProfiles");function Be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(Be,"profileAuthHealth");function ze(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a(ze,"normalizeHealth");function Ee(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ee,"normalizeProfile");function Fe(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(Fe,"normalizeProducts");function je(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(je,"isEmptyDefaultProfile");function Ke(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(Ke,"apiKeyHint");function qe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(qe,"apiKeyAccess");function H(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=X(o,n,s),h=Ee(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(p=>se(p,v)):null)??t.find(p=>p.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",d=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=$(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),j=(t.length>0?t:O?[{handle:O,baseUrl:ee(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(p=>!je(p));return{state:y,activeProfile:x,label:d,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:Fe(i?.products),apiHealth:ze(m??null,s),accounts:j.map(p=>{let T=l(p.baseUrl),Le=n.accounts?.find(fe=>P(fe.handle,p.handle)&&b(fe.baseUrl,T)),oe=c?.[q(p.handle,T)]??null,K=Ee(oe?.response??null);return{handle:p.handle,baseUrl:T,apiBaseUrl:l(p.apiBaseUrl),chatApiBaseUrl:l(p.chatApiBaseUrl),environment:$(p.environment),isActive:x?se(p,x):!1,authHealth:oe?.authFailed?"auth_error":Be(p),displayLabel:K?.name||K?.handle||K?.email||p.handle,email:K?.email??null,avatarUrl:K?.image??null,apiKeyHint:Ke(Le?.apiKey),apiKeyAccess:qe(oe?.response??null)}}),error:f??m?.error??null}}a(H,"toAccountState");async function We(e){try{return ie(await Pe())}catch{return ke(e)}}a(We,"loadProfiles");async function u(e,n){let t=await ge(),o=await We(t),r=Ue(t,e,n),s=Z(r),i=Q(r,t),c=X(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:H({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(u,"loadOpenPondAccountContext");async function Ve(e){let n=l(e.baseUrl);return await we(e.handle,{baseUrl:n}),u(e.handle,n)}a(Ve,"switchOpenPondAccount");import{randomUUID as Ge}from"node:crypto";function M(e){return e instanceof Error?e.message:String(e)}a(M,"errorMessage");var Je=15e3;function Ye(e){return e===ae?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ye,"displayNameForHostedModel");function Qe(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ye(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Qe,"normalizeHostedModel");async function Xe(){let e=await u();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await nn({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Qe(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:M(n)}}}a(Xe,"loadOpenPondHostedModels");async function Ze(){let e=await u();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},Je);try{return{catalog:await Se({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:M(o)}}finally{clearTimeout(t)}}a(Ze,"loadOpenPondProviderCatalog");async function*en(e){let n=await u();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*Ce({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||ae,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(en,"streamOpenPondHostedChatTurn");async function nn(e){let n=le(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await ue(t)}`);return await t.json()}a(nn,"listOpChatModels");async function Se(e){let n=le(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await ue(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?re.parse(o):re.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&me.safeParse(r.id).success)})}a(Se,"listOpChatProviderCatalog");async function*Ce(e){let n=le(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ce(e.token,"text/event-stream",e.requestId),body:JSON.stringify(ln(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await ue(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=tn(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],te=a(()=>{if(C.length===0)return[];let y=C.join(`
2
+ import{a as he,b as ye,d as Ae,e as L}from"./chunk-BFKYRQMA.js";import{a as D,b as ge,c as Pe,d as we,e as Oe}from"./chunk-RZUEVS64.js";import{j as xe}from"./chunk-3QIB5FXI.js";import{d as N,e as B}from"./chunk-YR5ID2SS.js";import{E as ae,h as re}from"./chunk-Z4Z5UOZM.js";import{d as me}from"./chunk-FFRFSDBM.js";import{a}from"./chunk-FTQLQJQV.js";var De=new URL(B).hostname,be=new URL(N).hostname,$e=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function Y(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===De)return B;if(o===be||o===`www.${be}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(Y,"mapUiBaseToApiBase");function Q(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=Y(process.env.OPENPOND_BASE_URL);return s||(Y(e?.baseUrl||n.baseUrl)??B)}a(Q,"resolvePublicApiBaseUrl");function X(e,n,t){return He(e,n,t)}a(X,"resolveHostedChatApiBaseUrl");function He(e,n,t){let o=typeof process<"u"?process.env:{};return J(o.OPENPOND_OPCHAT_API_URL)??J(e?.chatApiBaseUrl??n.chatApiBaseUrl)??J(o.OPENPOND_CHAT_API_URL)??Me(t)}a(He,"resolveOpChatApiBaseUrl");function J(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(J,"normalizeOpChatApiBaseUrl");function Me(e){return J(e)??$e}a(Me,"opChatBaseFromPublicApiBase");function $(e){return e?.trim()?e.trim():"production"}a($,"deriveEnvironment");function Z(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Z,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function q(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(q,"profileKey");function ee(e){return l(e?.baseUrl)}a(ee,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=ee(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function se(e,n){if(!P(e.handle,n.handle))return!1;let t=ee(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(se,"profileMatchesSelector");function Ue(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Ue,"findActiveAccount");function ke(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ie(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:$(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(ke,"fallbackProfilesFromConfig");function ie(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:$(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ie,"normalizeProfiles");function Be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(Be,"profileAuthHealth");function ze(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a(ze,"normalizeHealth");function Ee(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ee,"normalizeProfile");function Fe(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(Fe,"normalizeProducts");function je(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(je,"isEmptyDefaultProfile");function Ke(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(Ke,"apiKeyHint");function qe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(qe,"apiKeyAccess");function H(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=X(o,n,s),h=Ee(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(p=>se(p,v)):null)??t.find(p=>p.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",d=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=$(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),j=(t.length>0?t:O?[{handle:O,baseUrl:ee(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(p=>!je(p));return{state:y,activeProfile:x,label:d,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:Fe(i?.products),apiHealth:ze(m??null,s),accounts:j.map(p=>{let T=l(p.baseUrl),Le=n.accounts?.find(fe=>P(fe.handle,p.handle)&&b(fe.baseUrl,T)),oe=c?.[q(p.handle,T)]??null,K=Ee(oe?.response??null);return{handle:p.handle,baseUrl:T,apiBaseUrl:l(p.apiBaseUrl),chatApiBaseUrl:l(p.chatApiBaseUrl),environment:$(p.environment),isActive:x?se(p,x):!1,authHealth:oe?.authFailed?"auth_error":Be(p),displayLabel:K?.name||K?.handle||K?.email||p.handle,email:K?.email??null,avatarUrl:K?.image??null,apiKeyHint:Ke(Le?.apiKey),apiKeyAccess:qe(oe?.response??null)}}),error:f??m?.error??null}}a(H,"toAccountState");async function We(e){try{return ie(await Pe())}catch{return ke(e)}}a(We,"loadProfiles");async function u(e,n){let t=await ge(),o=await We(t),r=Ue(t,e,n),s=Z(r),i=Q(r,t),c=X(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:H({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(u,"loadOpenPondAccountContext");async function Ve(e){let n=l(e.baseUrl);return await we(e.handle,{baseUrl:n}),u(e.handle,n)}a(Ve,"switchOpenPondAccount");import{randomUUID as Ge}from"node:crypto";function M(e){return e instanceof Error?e.message:String(e)}a(M,"errorMessage");var Je=15e3;function Ye(e){return e===ae?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ye,"displayNameForHostedModel");function Qe(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ye(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Qe,"normalizeHostedModel");async function Xe(){let e=await u();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await nn({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Qe(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:M(n)}}}a(Xe,"loadOpenPondHostedModels");async function Ze(){let e=await u();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},Je);try{return{catalog:await Se({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:M(o)}}finally{clearTimeout(t)}}a(Ze,"loadOpenPondProviderCatalog");async function*en(e){let n=await u();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*Ce({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||ae,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(en,"streamOpenPondHostedChatTurn");async function nn(e){let n=le(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await ue(t)}`);return await t.json()}a(nn,"listOpChatModels");async function Se(e){let n=le(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ce(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await ue(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?re.parse(o):re.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&me.safeParse(r.id).success)})}a(Se,"listOpChatProviderCatalog");async function*Ce(e){let n=le(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ce(e.token,"text/event-stream",e.requestId),body:JSON.stringify(ln(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await ue(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=tn(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],te=a(()=>{if(C.length===0)return[];let y=C.join(`
3
3
  `);if(C=[],y==="[DONE]")return r=!0,[];let d;try{d=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(d&&typeof d=="object"&&"error"in d)throw new Error(`OpenPond OpChat request failed: ${Ie(d)}`);i=d;let R=d&&typeof d=="object"?d:{},k=Array.isArray(R.choices)?R.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},G=x.delta&&typeof x.delta=="object"?x.delta:{},j=[],p=_e(G.reasoning_content);p&&(c+=p,j.push({type:"reasoning_delta",text:p,raw:d}));let T=_e(G.content);return T&&j.push({type:"text_delta",text:T,raw:d}),an(o,G.tool_calls),s=z(x.finish_reason)??s,m=dn(d)??m,j},"consumeEvent"),v=a(y=>{let d=y.endsWith("\r")?y.slice(0,-1):y;return d?d.startsWith(":")?[]:(d.startsWith("data:")&&C.push(d.slice(5).trimStart()),[]):te()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let d=h.split(`
4
4
  `);h=d.pop()??"";for(let R of d)for(let k of v(R))yield k}if(h+=w.decode(),h)for(let y of v(h))yield y;for(let y of te())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=sn(o);O.length>0&&(yield{type:"tool_call_delta",toolCalls:O,raw:i}),O.length>0&&c&&(yield{type:"continuation",continuation:{kind:"chat_completions_reasoning",reasoningContent:c},raw:i});let I=on(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(Ce,"streamOpChatChatCompletion");function tn(e){let n=ve(e,["fireworks-prompt-tokens","prompt-tokens"]),t=ve(e,["fireworks-cached-prompt-tokens","cached-prompt-tokens"]);return t===null?null:{...n===null?{}:{prompt_tokens:n},cached_input_tokens:t,cache_telemetry_source:"provider_response_headers"}}a(tn,"cacheUsageFromResponseHeaders");function ve(e,n){for(let t of n){let o=e.get(t);if(o===null||!/^\d+$/.test(o.trim()))continue;let r=Number(o);if(Number.isSafeInteger(r)&&r>=0)return r}return null}a(ve,"firstHeaderTokenCount");function on(e,n){if(!n||rn(e))return e;let t={...e??{},cached_input_tokens:n.cached_input_tokens,cache_telemetry_source:"provider_response_headers"};return E(e?.prompt_tokens)===null&&n.prompt_tokens!==void 0&&(t.prompt_tokens=n.prompt_tokens),t}a(on,"usageWithResponseHeaderCache");function rn(e){return e?E(e.cached_input_tokens)!==null||E(e.cache_read_input_tokens)!==null||E(e.cache_creation_input_tokens)!==null||E(e.prompt_cache_hit_tokens)!==null||E(e.prompt_cache_miss_tokens)!==null?!0:E(e.prompt_tokens_details?.cached_tokens)!==null||E(e.input_tokens_details?.cached_tokens)!==null:!1}a(rn,"usageHasCacheTelemetry");function E(e){if(typeof e=="number"&&Number.isSafeInteger(e)&&e>=0)return e;if(typeof e!="string"||!/^\d+$/.test(e.trim()))return null;let n=Number(e);return Number.isSafeInteger(n)?n:null}a(E,"usageTokenCount");function an(e,n){Array.isArray(n)&&n.forEach((t,o)=>{if(!t||typeof t!="object")return;let r=t,s=typeof r.index=="number"&&Number.isInteger(r.index)?r.index:o,i=e.get(s)??{arguments:""};typeof r.id=="string"&&(i.id=r.id);let c=r.function&&typeof r.function=="object"?r.function:{};typeof c.name=="string"&&(i.name=`${i.name??""}${c.name}`),typeof c.arguments=="string"&&(i.arguments+=c.arguments),e.set(s,i)})}a(an,"mergeOpChatToolCallDeltas");function sn(e){return[...e.entries()].sort(([n],[t])=>n-t).flatMap(([,n])=>n.id&&n.name?[{id:n.id,type:"function",function:{name:n.name,arguments:n.arguments}}]:[])}a(sn,"completedOpChatToolCalls");function ln(e,n){let t={model:e.model,messages:e.messages.map(un),stream:n};return e.tools&&(t.tools=e.tools),e.toolChoice!==void 0&&(t.tool_choice=e.toolChoice),typeof e.maxTokens=="number"&&(t.max_tokens=e.maxTokens),typeof e.temperature=="number"&&(t.temperature=e.temperature),typeof e.topP=="number"&&(t.top_p=e.topP),Object.assign(t,cn(e.reasoningEffort)),t}a(ln,"buildOpChatBody");function cn(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(cn,"opChatReasoningFields");function un(e){let{continuation:n,images:t,...o}=e,r=t?.length?[...typeof e.content=="string"&&e.content.trim()?[{type:"text",text:e.content}]:[],...t.map(s=>({type:"image_url",image_url:{url:s.url,...s.detail?{detail:s.detail}:{}}}))]:e.content;return e.role==="assistant"&&n?.kind==="chat_completions_reasoning"?{...o,...r!==void 0?{content:r}:{},reasoning_content:n.reasoningContent}:{...o,...r!==void 0?{content:r}:{}}}a(un,"opChatMessage");function le(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(le,"opChatEndpointUrl");function ce(e,n,t){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",n),r.set("x-openpond-client","openpond-app");let s=t||Ge();return r.set("x-openpond-request-id",s),r.set("x-request-id",s),r}a(ce,"opChatHeaders");async function ue(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return Ie(JSON.parse(n))}catch{return n}}a(ue,"readOpChatError");function Ie(e){if(!e||typeof e!="object")return String(e||"unknown_error");let n=e,t=n.error;if(t&&typeof t=="object"){let o=t;return[z(o.code),z(o.type),z(o.message)].filter(Boolean).join(": ")}return[z(n.error),z(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(Ie,"errorMessageFromPayload");function dn(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(dn,"parseUsage");function z(e){return typeof e=="string"&&e.trim()?e:null}a(z,"stringValue");function _e(e){return typeof e=="string"&&e.length>0?e:null}a(_e,"streamTextValue");import{readFileSync as pn}from"node:fs";var W;function fn(){if(W!==void 0)return W??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(pn(e,"utf8"));W=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{W=null}return W??"openpond-code bundled"}a(fn,"getBundledRuntimeVersion");import{spawn as mn}from"node:child_process";function Re(e,n=process.platform){return n==="darwin"?{command:"open",args:[e]}:n==="win32"?{command:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{command:"xdg-open",args:[e]}}a(Re,"resolveSystemBrowserCommand");async function hn(e,n={}){let t=n.command??Re(e),o=n.handoffTimeoutMs??1500;return new Promise(r=>{let s=!1,i=null,c=a(g=>{s||(s=!0,i&&clearTimeout(i),r(g))},"finish"),m=mn(t.command,t.args,{detached:!1,shell:!1,stdio:"ignore",windowsHide:!0});m.once("error",g=>{let f=g.code;c({opened:!1,error:f?`browser launcher ${t.command} failed (${f})`:`browser launcher ${t.command} failed`})}),m.once("close",(g,f)=>{if(g===0){c({opened:!0});return}let w=f?`signal ${f}`:`code ${g??"unknown"}`;c({opened:!1,error:`browser launcher ${t.command} exited with ${w}`})}),i=setTimeout(()=>{m.unref(),c({opened:!0})},o),i.unref()})}a(hn,"openUrlWithSystemBrowser");import{createHash as yn}from"node:crypto";function de(e){return yn("sha256").update(JSON.stringify([e.accountState.activeProfile,e.apiBaseUrl,e.chatApiBaseUrl,e.token])).digest("hex")}a(de,"authorityKey");var V=null,F=null;async function An(e){let n=de(e);if(V?.key===n&&V.expiresAt>Date.now())return V.response;if(F?.key===n)return F.promise;V=null;let t={key:n,promise:L(e.apiBaseUrl,e.token)};F=t;try{let o=await t.promise;return F===t&&o.account?.id&&(V={key:n,response:o,expiresAt:Date.now()+5e3}),o}finally{F===t&&(F=null)}}a(An,"authenticate");async function gn(){let e=await u();if(!e.token)return e;let n=await An(e),t=await u();if(de(t)!==de(e))throw new Error("openpond_account_authority_changed");if(!n.account?.id)throw new Error("openpond_authenticated_owner_unavailable");return{...t,accountState:H({...t,accountResponse:n})}}a(gn,"loadAuthenticatedOpenPondAccountContext");function Pn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t;if(!t||!o)return null;let r=n.latestDeployment&&typeof n.latestDeployment=="object"?n.latestDeployment:null,s=xe.safeParse(n.sandboxActionRegistry);return{id:t,name:o,description:typeof n.description=="string"?n.description:null,visibility:typeof n.visibility=="string"?n.visibility:null,gitOwner:typeof n.gitOwner=="string"?n.gitOwner:null,gitRepo:typeof n.gitRepo=="string"?n.gitRepo:null,gitHost:typeof n.gitHost=="string"?n.gitHost:null,defaultBranch:typeof n.defaultBranch=="string"?n.defaultBranch:null,sandbox:n.sandbox===!0,sandboxActionRegistry:s.success?s.data:null,sandboxManifestHash:typeof n.sandboxManifestHash=="string"?n.sandboxManifestHash:null,sandboxManifestPath:typeof n.sandboxManifestPath=="string"?n.sandboxManifestPath:null,sandboxManifestSyncedAt:typeof n.sandboxManifestSyncedAt=="string"?n.sandboxManifestSyncedAt:n.sandboxManifestSyncedAt instanceof Date?n.sandboxManifestSyncedAt.toISOString():null,sandboxManifestError:typeof n.sandboxManifestError=="string"?n.sandboxManifestError:null,updatedAt:typeof n.updatedAt=="string"?n.updatedAt:null,latestDeployment:r?{id:typeof r.id=="string"?r.id:void 0,status:typeof r.status=="string"?r.status:void 0,deploymentDomain:typeof r.deploymentDomain=="string"?r.deploymentDomain:null,createdAt:typeof r.createdAt=="string"?r.createdAt:void 0,isProduction:typeof r.isProduction=="boolean"?r.isProduction:null,gitBranch:typeof r.gitBranch=="string"?r.gitBranch:null}:null,scheduleSummary:On(n.scheduleSummary)}}a(Pn,"normalizeApp");function S(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(S,"normalizeDateString");function wn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t,r=typeof n.deploymentId=="string"?n.deploymentId:null;return!t||!o||!r?null:{id:t,name:o,description:typeof n.description=="string"?n.description:null,scheduleType:typeof n.scheduleType=="string"?n.scheduleType:"cron",scheduleExpression:typeof n.scheduleExpression=="string"?n.scheduleExpression:"",enabled:!!n.enabled,rawEnabled:typeof n.rawEnabled=="boolean"?n.rawEnabled:void 0,syncStatus:typeof n.syncStatus=="string"?n.syncStatus:null,syncError:typeof n.syncError=="string"?n.syncError:null,startAt:S(n.startAt),endAt:S(n.endAt),maxRuns:typeof n.maxRuns=="number"?n.maxRuns:null,executionCount:typeof n.executionCount=="number"?n.executionCount:null,lifecycleStatus:typeof n.lifecycleStatus=="string"?n.lifecycleStatus:null,lifecycleReason:typeof n.lifecycleReason=="string"?n.lifecycleReason:null,lastExecutionAt:S(n.lastExecutionAt),lastExecutionStatus:typeof n.lastExecutionStatus=="string"?n.lastExecutionStatus:null,lastRunNowAt:S(n.lastRunNowAt),lastRunNowStatus:typeof n.lastRunNowStatus=="string"?n.lastRunNowStatus:null,updatedAt:S(n.updatedAt)??new Date().toISOString(),deploymentId:r,isProduction:typeof n.isProduction=="boolean"?n.isProduction:void 0,payload:n.payload}}a(wn,"normalizeSchedule");function On(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(wn).filter(i=>!!i):[],o=typeof n.total=="number"?n.total:t.length,r=typeof n.active=="number"?n.active:t.filter(i=>i.enabled).length,s=typeof n.paused=="number"?n.paused:Math.max(0,o-r);return{total:o,active:r,paused:s,enabled:typeof n.enabled=="number"?n.enabled:r,disabled:typeof n.disabled=="number"?n.disabled:s,nextRunAt:S(n.nextRunAt),lastRunAt:S(n.lastRunAt),schedules:t,truncated:typeof n.truncated=="boolean"?n.truncated:void 0}}a(On,"normalizeScheduleSummary");async function xn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=q(o.handle,o.baseUrl),s=Z(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await L(Q(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:M(i)}]}}));return Object.fromEntries(t)}a(xn,"loadAccountProfileLookups");async function Te(e){let n=await xn(e),t=e.account?n[q(e.account.handle,e.account.baseUrl)]??null:null,o=t?.response??null,r=e.token&&t?.authFailed?t.error||"OpenPond account authentication failed.":null;return{account:H({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Te,"loadOpenPondAccountStateForContext");async function bn(){return Te(await u())}a(bn,"loadOpenPondAccountState");async function Ne(e={}){let n=await u(),t=Te(n);if(!n.token)return{...await t,apps:[],error:"No OpenPond API key or session token is configured."};let[o,r]=await Promise.allSettled([t,he(n.apiBaseUrl,n.token,{handle:n.account?.handle,limit:e.limit??20,offset:e.offset??0,includeScheduled:e.includeScheduled??!0})]);if(o.status==="rejected")throw o.reason;return{account:o.value.account,apps:r.status==="fulfilled"?r.value.map(Pn).filter(s=>!!s):[],error:r.status==="rejected"?M(r.reason):null}}a(Ne,"loadOpenPondApps");async function Un(e){let n=await u();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await ye(n.apiBaseUrl,n.token,e)}}a(Un,"createOpenPondRepoApp");import{createHash as kn}from"node:crypto";function Bn(e){return`account-${kn("sha256").update(e).digest("hex").slice(0,8)}`}a(Bn,"fallbackHandleForApiKey");function ne(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(ne,"normalizeDerivedHandle");async function En(e,n){let t=ne(e.handle);if(t)return t;try{let r=(await L(n,e.apiKey)).account,s=ne(r.handle)??ne(r.email?.split("@")[0])??ne(r.id);if(s)return s}catch{}return Bn(e.apiKey)}a(En,"deriveHandleForApiKey");async function vn(e){let n=e.baseUrl??N,t=l(e.apiBaseUrl)??Y(n)??B,o=l(e.chatApiBaseUrl),r=await En(e,t);return await Oe({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),u(r,n)}a(vn,"saveOpenPondAccount");function _n(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its base URL.`);return-1}a(_n,"findAccountIndex");async function Sn(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await D(t=>{let o=(t.accounts??[]).map(m=>({...m})),r=_n(o,n,e.baseUrl);if(r===-1)throw new Error(`OpenPond account not found: ${n}`);let s=o[r],i=A(t.activeProfile),c=!!(i&&U(s,i));o.splice(r,1),t.accounts=o,(c||!i||!o.some(m=>U(m,i)))&&(o[0]?t.activeProfile=_(o[0]):delete t.activeProfile)}),u()}a(Sn,"removeOpenPondAccount");async function Cn(){let e;return await D(n=>{let t=A(n.activeProfile),o=(n.accounts??[]).map(s=>({...s})),r=t?o.findIndex(s=>U(s,t)):0;if(r<0||!o[r])throw new Error("No active OpenPond account to log out.");e={...o[r]},delete e.apiKey,delete e.session,o[r]=e,n.accounts=o}),u(e.handle,e.baseUrl)}a(Cn,"signOutOpenPondAccount");function In(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its current base URL.`);return-1}a(In,"findAccountIndex");function pe(e,n,t){if(t===void 0)return;let o=l(t);if(o){e[n]=o;return}(t===null||t.trim()==="")&&delete e[n]}a(pe,"applyOptionalUrl");async function Rn(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await D(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=In(r,n,e.currentBaseUrl);if(s===-1)throw new Error(`OpenPond account not found: ${n}`);let i=r[s];if(t={...i},e.apiKey!==void 0){let f=e.apiKey.trim();if(!f)throw new Error("OpenPond API key cannot be empty.");t.apiKey=f,delete t.session,delete t.token}if(pe(t,"baseUrl",e.baseUrl),pe(t,"apiBaseUrl",e.apiBaseUrl),pe(t,"chatApiBaseUrl",e.chatApiBaseUrl),e.environment===null?delete t.environment:typeof e.environment=="string"&&e.environment.trim()&&(t.environment=e.environment.trim()),r.findIndex((f,w)=>w!==s&&P(f.handle,t.handle)&&b(f.baseUrl,t.baseUrl))!==-1)throw new Error("Another OpenPond account already uses that handle and base URL.");let m=A(o.activeProfile),g=!!(m&&U(i,m));r[s]=t,o.accounts=r,o.activeProfile=e.setActive||g?_(t):o.activeProfile}),u(t.handle,t.baseUrl)}a(Rn,"updateOpenPondAccountConfig");async function Tn(e){let n=await u();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return Ae(n.apiBaseUrl,n.token,e.appId)}a(Tn,"getOpenPondAppEnvironment");function Nn(e,n){let t="",o=a(r=>{r.startsWith(e)&&n(JSON.parse(r.slice(e.length)))},"processLine");return{push(r){for(t+=r;;){let s=Ln(t);if(s<0)return;let i=t.slice(0,s).replace(/\r$/,""),c=t[s]==="\r"&&t[s+1]===`
5
5
  `?2:1;t=t.slice(s+c),o(i)}},flush(){let r=t.trimEnd();t="",r&&o(r)}}}a(Nn,"createReadyLineParser");function Ln(e){let n=e.indexOf(`
@@ -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-DARVPBZ4.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-5MCNZCVQ.js";import{b as C}from"./chunk-FWIPHEVA.js";import{d as O}from"./chunk-OS3LO5J3.js";import{b as v}from"./chunk-GLUWATL5.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-JUQMSHNR.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-OLDK2LKJ.js";import{b as C}from"./chunk-FWIPHEVA.js";import{d as O}from"./chunk-WRI4XKSK.js";import{b as v}from"./chunk-GLUWATL5.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};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as I,b as B}from"./chunk-F74GBN6K.js";import{ab as $}from"./chunk-QL4OIPEZ.js";import{j as V,k as z,l as P,m as U,n as j,o as W}from"./chunk-APB2STJK.js";import{b as O,d as D}from"./chunk-VYLGI3IH.js";import{db as L,l as p,n as N}from"./chunk-ACYFMLWG.js";import{m as _}from"./chunk-KGNCKIFP.js";import{b as n}from"./chunk-ES2ISFJC.js";import{a as m}from"./chunk-FTQLQJQV.js";function T(e,r){let i=r.scope==="arguments"?e.action?.arguments:e[r.scope];for(let d of r.path){if(!i||typeof i!="object"||!Object.hasOwn(i,d))throw new Error("environment_service_reference_missing");i=i[d]}return i}m(T,"resolveValue");async function F(e,r){if(!e.executionServices?.length)return r.controller(e);if(!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<1||e.timeoutMs>3e4)throw new Error("environment_timeout_invalid");p(e.value,4194304);let i=e.executionServices.map(c=>z.parse(c));if(i.length>16)throw new Error("environment_service_limit");if(new Set(i.map(c=>c.id)).size!==i.length)throw new Error("environment_service_identity_collision");let d=Date.now(),x=new AbortController,v=e.signal?AbortSignal.any([e.signal,x.signal]):x.signal,q=setTimeout(()=>x.abort(new Error("environment_timeout")),e.timeoutMs);try{let c=Object.create(null);for(let t of i){if(v.throwIfAborted(),t.operation!==e.operation||t.operation==="step"&&t.toolName!==e.value.action?.name)throw new Error("environment_service_operation_mismatch");let h=Math.min(t.timeoutMs,e.timeoutMs-(Date.now()-d));if(h<1)throw new Error("environment_timeout");let w=new AbortController,y=AbortSignal.any([v,w.signal]),S=setTimeout(()=>w.abort(new Error("environment_service_timeout")),h),E=Date.now();try{if(t.kind==="sqlite.v1"){if(!r.sql)throw new Error("environment_sql_executor_required");let s=T(e.value,t.sql);if(typeof s!="string"||!s.length||new TextEncoder().encode(s).byteLength>65536||s.includes("\0")){c[t.id]={status:"rejected",code:"invalid_submission"};continue}let l=V({schemaVersion:"openpond.sqlExecution.v1",snapshot:T(e.value,t.snapshot),sql:s,maxRows:t.maxRows,maxResultBytes:t.maxResultBytes});c[t.id]=await r.sql({request:l,timeoutMs:e.timeoutMs,signal:y})}else{let s=T(e.value,t.source),l=T(e.value,t.cases);if(typeof s!="string"||new TextEncoder().encode(s).byteLength>524288){c[t.id]={status:"rejected",code:"invalid_submission"};continue}if(!Array.isArray(l)||!l.length||l.length>t.maxCases||l.some(a=>!a||typeof a!="object"||!Object.hasOwn(a,"input")))throw new Error("environment_service_cases_invalid");let b=[];for(let a of l){let o=h-(Date.now()-E);if(o<1&&(w.abort(new Error("environment_service_timeout")),y.throwIfAborted()),b.push(await r.candidate({source:s,exportName:t.exportName,value:structuredClone(a.input),timeoutMs:Math.max(1,o),maxResultBytes:t.maxResultBytes,deterministic:!0,errorPrefix:"candidate",signal:y})),new TextEncoder().encode(JSON.stringify({status:"completed",cases:b})).byteLength>t.maxResultBytes)throw new I("candidate_result_too_large")}c[t.id]={status:"completed",cases:b}}}catch(s){if(v.throwIfAborted(),w.signal.aborted)c[t.id]={status:"rejected",code:"timeout"};else if(s instanceof I)c[t.id]={status:"rejected",code:"execution_failed"};else throw s}finally{clearTimeout(S)}}v.throwIfAborted();let g=e.timeoutMs-(Date.now()-d);if(g<1)throw new Error("environment_timeout");return await r.controller({...e,executionServices:void 0,value:{...e.value,services:c},timeoutMs:g,signal:v})}finally{clearTimeout(q)}}m(F,"executeEnvironmentWithServices");async function G(e){let r=U.parse(e.operation);return F(e,{candidate:B,controller:m(async i=>j.parse(await B({...i,exportName:r,maxResultBytes:1572864,deterministic:!0,errorPrefix:"environment"})),"controller")})}m(G,"executeJavaScriptEnvironment");var k=class extends Error{static{m(this,"JavaScriptEnvironmentActionError")}code;constructor(r){super(`environment_${r}`),this.code=r,this.name="JavaScriptEnvironmentActionError"}};async function me(e){let r=W(e.definition),i=D(e.asset,r.module);if(!Number.isSafeInteger(e.seed))throw new Error("environment_seed_invalid");let d=e.seed;p(e.input,1048576),p(e.initialState,r.maxStateBytes);let x=structuredClone(e.input),v=structuredClone(e.initialState),q=e.execute??G,c=new AbortController,g=e.signal?AbortSignal.any([e.signal,c.signal]):c.signal,t={},h=0,w=!1,y=!1,S=null,E=[],s=null;async function l(a,o){if(w||y)throw new Error("environment_closed");if(S)throw new Error("environment_operation_in_progress");g.throwIfAborted(),o&&(p(o,262144),o=structuredClone(o));let M=_(t),f=o?r.tools.find(u=>u.name===o.name):null;if(a==="step"){if(h>=r.maxSteps)throw new k("step_budget_exhausted");h++}let H=m((u,A)=>E.push({sequence:E.length,operation:a,toolName:o?.name??null,arguments:o?structuredClone(o.arguments):null,observation:u,beforeStateHash:M,afterStateHash:_(t),error:A}),"record");try{if(o&&!f)throw new k("unknown_tool");if(o&&f&&!N(f.inputSchema,o.arguments).valid)throw new k("invalid_arguments");let u=r.executionServices?.filter(R=>R.operation===a&&(a!=="step"||R.toolName===o?.name)),A=q({source:i,operation:a,value:{input:x,initialState:v,seed:d,state:structuredClone(t),sequence:h,action:o?structuredClone(o):null},timeoutMs:Math.min(r.operationTimeoutMs,f?.timeoutMs??r.operationTimeoutMs),signal:g,...u?.length?{executionServices:u}:{}});S=A;let C=j.parse(await A);if(g.throwIfAborted(),p(C.state,r.maxStateBytes),p(C.observation,r.maxObservationBytes),(a==="collect"||f?.sideEffect==="read")&&_(C.state)!==M)throw new Error("environment_read_changed_state");t=structuredClone(C.state);let J=structuredClone(C.observation);return H(J,null),{state:structuredClone(t),observation:J}}catch(u){throw H(null,u instanceof Error?u.message:"environment_execution_failed"),u}finally{S=null}}m(l,"invoke");async function b(){return s||(y=!0,c.abort(new Error("environment_destroyed")),s=(async()=>{try{try{await S}catch{}await q({source:i,operation:"destroy",value:{input:x,initialState:v,seed:d,state:structuredClone(t),sequence:h,action:null},timeoutMs:r.operationTimeoutMs})}finally{t={},w=!0}})(),s)}m(b,"destroy");try{await l("create");let a=await l("reset"),o=_(t),M=m(()=>{if(w)throw new Error("environment_closed");return{definition:{id:r.id,revision:r.revision,contentHash:r.contentHash},inputHash:_(x),seed:d,initialStateHash:o,finalStateHash:_(t),state:structuredClone(t),events:structuredClone(E)}},"snapshot");return{definition:structuredClone(r),observation:a.observation,async step(f){return(await l("step",f)).observation},async collect(){let f=await l("collect");return{...M(),observation:f.observation}},snapshot:M,destroy:b}}catch(a){try{await b()}catch{}throw a}}m(me,"createJavaScriptEnvironmentSession");var K=n.string().trim().min(1).max(500),Q=n.string().regex(/^[a-f0-9]{64}$/),X=n.object({kind:n.literal("model"),id:n.string().trim().min(1).max(191),taskId:K,admissionHash:Q,model:$,instructions:n.string().max(262144),harness:L.optional(),input:n.record(n.string(),n.unknown()),policyVisibleContext:n.record(n.string(),n.unknown()),timeoutMs:n.number().int().positive().max(36e5),environment:n.discriminatedUnion("kind",[n.object({kind:n.literal("text")}).strict(),n.object({kind:n.literal("javascript"),definition:P,asset:O,initialState:n.record(n.string(),n.unknown()),seed:n.number().int().safe()}).strict()])}).strict(),_e=n.discriminatedUnion("kind",[X,n.object({kind:n.literal("profile"),request:n.unknown()}).strict()]);export{F as a,k as b,me as c,X as d,_e as e};
2
+ import{a as I,b as B}from"./chunk-F74GBN6K.js";import{ab as $}from"./chunk-2RNQQNB7.js";import{j as V,k as z,l as P,m as U,n as j,o as W}from"./chunk-APB2STJK.js";import{b as O,d as D}from"./chunk-VYLGI3IH.js";import{db as L,l as p,n as N}from"./chunk-ACYFMLWG.js";import{m as _}from"./chunk-KGNCKIFP.js";import{b as n}from"./chunk-ES2ISFJC.js";import{a as m}from"./chunk-FTQLQJQV.js";function T(e,r){let i=r.scope==="arguments"?e.action?.arguments:e[r.scope];for(let d of r.path){if(!i||typeof i!="object"||!Object.hasOwn(i,d))throw new Error("environment_service_reference_missing");i=i[d]}return i}m(T,"resolveValue");async function F(e,r){if(!e.executionServices?.length)return r.controller(e);if(!Number.isSafeInteger(e.timeoutMs)||e.timeoutMs<1||e.timeoutMs>3e4)throw new Error("environment_timeout_invalid");p(e.value,4194304);let i=e.executionServices.map(c=>z.parse(c));if(i.length>16)throw new Error("environment_service_limit");if(new Set(i.map(c=>c.id)).size!==i.length)throw new Error("environment_service_identity_collision");let d=Date.now(),x=new AbortController,v=e.signal?AbortSignal.any([e.signal,x.signal]):x.signal,q=setTimeout(()=>x.abort(new Error("environment_timeout")),e.timeoutMs);try{let c=Object.create(null);for(let t of i){if(v.throwIfAborted(),t.operation!==e.operation||t.operation==="step"&&t.toolName!==e.value.action?.name)throw new Error("environment_service_operation_mismatch");let h=Math.min(t.timeoutMs,e.timeoutMs-(Date.now()-d));if(h<1)throw new Error("environment_timeout");let w=new AbortController,y=AbortSignal.any([v,w.signal]),S=setTimeout(()=>w.abort(new Error("environment_service_timeout")),h),E=Date.now();try{if(t.kind==="sqlite.v1"){if(!r.sql)throw new Error("environment_sql_executor_required");let s=T(e.value,t.sql);if(typeof s!="string"||!s.length||new TextEncoder().encode(s).byteLength>65536||s.includes("\0")){c[t.id]={status:"rejected",code:"invalid_submission"};continue}let l=V({schemaVersion:"openpond.sqlExecution.v1",snapshot:T(e.value,t.snapshot),sql:s,maxRows:t.maxRows,maxResultBytes:t.maxResultBytes});c[t.id]=await r.sql({request:l,timeoutMs:e.timeoutMs,signal:y})}else{let s=T(e.value,t.source),l=T(e.value,t.cases);if(typeof s!="string"||new TextEncoder().encode(s).byteLength>524288){c[t.id]={status:"rejected",code:"invalid_submission"};continue}if(!Array.isArray(l)||!l.length||l.length>t.maxCases||l.some(a=>!a||typeof a!="object"||!Object.hasOwn(a,"input")))throw new Error("environment_service_cases_invalid");let b=[];for(let a of l){let o=h-(Date.now()-E);if(o<1&&(w.abort(new Error("environment_service_timeout")),y.throwIfAborted()),b.push(await r.candidate({source:s,exportName:t.exportName,value:structuredClone(a.input),timeoutMs:Math.max(1,o),maxResultBytes:t.maxResultBytes,deterministic:!0,errorPrefix:"candidate",signal:y})),new TextEncoder().encode(JSON.stringify({status:"completed",cases:b})).byteLength>t.maxResultBytes)throw new I("candidate_result_too_large")}c[t.id]={status:"completed",cases:b}}}catch(s){if(v.throwIfAborted(),w.signal.aborted)c[t.id]={status:"rejected",code:"timeout"};else if(s instanceof I)c[t.id]={status:"rejected",code:"execution_failed"};else throw s}finally{clearTimeout(S)}}v.throwIfAborted();let g=e.timeoutMs-(Date.now()-d);if(g<1)throw new Error("environment_timeout");return await r.controller({...e,executionServices:void 0,value:{...e.value,services:c},timeoutMs:g,signal:v})}finally{clearTimeout(q)}}m(F,"executeEnvironmentWithServices");async function G(e){let r=U.parse(e.operation);return F(e,{candidate:B,controller:m(async i=>j.parse(await B({...i,exportName:r,maxResultBytes:1572864,deterministic:!0,errorPrefix:"environment"})),"controller")})}m(G,"executeJavaScriptEnvironment");var k=class extends Error{static{m(this,"JavaScriptEnvironmentActionError")}code;constructor(r){super(`environment_${r}`),this.code=r,this.name="JavaScriptEnvironmentActionError"}};async function me(e){let r=W(e.definition),i=D(e.asset,r.module);if(!Number.isSafeInteger(e.seed))throw new Error("environment_seed_invalid");let d=e.seed;p(e.input,1048576),p(e.initialState,r.maxStateBytes);let x=structuredClone(e.input),v=structuredClone(e.initialState),q=e.execute??G,c=new AbortController,g=e.signal?AbortSignal.any([e.signal,c.signal]):c.signal,t={},h=0,w=!1,y=!1,S=null,E=[],s=null;async function l(a,o){if(w||y)throw new Error("environment_closed");if(S)throw new Error("environment_operation_in_progress");g.throwIfAborted(),o&&(p(o,262144),o=structuredClone(o));let M=_(t),f=o?r.tools.find(u=>u.name===o.name):null;if(a==="step"){if(h>=r.maxSteps)throw new k("step_budget_exhausted");h++}let H=m((u,A)=>E.push({sequence:E.length,operation:a,toolName:o?.name??null,arguments:o?structuredClone(o.arguments):null,observation:u,beforeStateHash:M,afterStateHash:_(t),error:A}),"record");try{if(o&&!f)throw new k("unknown_tool");if(o&&f&&!N(f.inputSchema,o.arguments).valid)throw new k("invalid_arguments");let u=r.executionServices?.filter(R=>R.operation===a&&(a!=="step"||R.toolName===o?.name)),A=q({source:i,operation:a,value:{input:x,initialState:v,seed:d,state:structuredClone(t),sequence:h,action:o?structuredClone(o):null},timeoutMs:Math.min(r.operationTimeoutMs,f?.timeoutMs??r.operationTimeoutMs),signal:g,...u?.length?{executionServices:u}:{}});S=A;let C=j.parse(await A);if(g.throwIfAborted(),p(C.state,r.maxStateBytes),p(C.observation,r.maxObservationBytes),(a==="collect"||f?.sideEffect==="read")&&_(C.state)!==M)throw new Error("environment_read_changed_state");t=structuredClone(C.state);let J=structuredClone(C.observation);return H(J,null),{state:structuredClone(t),observation:J}}catch(u){throw H(null,u instanceof Error?u.message:"environment_execution_failed"),u}finally{S=null}}m(l,"invoke");async function b(){return s||(y=!0,c.abort(new Error("environment_destroyed")),s=(async()=>{try{try{await S}catch{}await q({source:i,operation:"destroy",value:{input:x,initialState:v,seed:d,state:structuredClone(t),sequence:h,action:null},timeoutMs:r.operationTimeoutMs})}finally{t={},w=!0}})(),s)}m(b,"destroy");try{await l("create");let a=await l("reset"),o=_(t),M=m(()=>{if(w)throw new Error("environment_closed");return{definition:{id:r.id,revision:r.revision,contentHash:r.contentHash},inputHash:_(x),seed:d,initialStateHash:o,finalStateHash:_(t),state:structuredClone(t),events:structuredClone(E)}},"snapshot");return{definition:structuredClone(r),observation:a.observation,async step(f){return(await l("step",f)).observation},async collect(){let f=await l("collect");return{...M(),observation:f.observation}},snapshot:M,destroy:b}}catch(a){try{await b()}catch{}throw a}}m(me,"createJavaScriptEnvironmentSession");var K=n.string().trim().min(1).max(500),Q=n.string().regex(/^[a-f0-9]{64}$/),X=n.object({kind:n.literal("model"),id:n.string().trim().min(1).max(191),taskId:K,admissionHash:Q,model:$,instructions:n.string().max(262144),harness:L.optional(),input:n.record(n.string(),n.unknown()),policyVisibleContext:n.record(n.string(),n.unknown()),timeoutMs:n.number().int().positive().max(36e5),environment:n.discriminatedUnion("kind",[n.object({kind:n.literal("text")}).strict(),n.object({kind:n.literal("javascript"),definition:P,asset:O,initialState:n.record(n.string(),n.unknown()),seed:n.number().int().safe()}).strict()])}).strict(),_e=n.discriminatedUnion("kind",[X,n.object({kind:n.literal("profile"),request:n.unknown()}).strict()]);export{F as a,k as b,me as c,X as d,_e as e};
@@ -0,0 +1,5 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{g as B}from"./chunk-K44RHALX.js";import{a as G}from"./chunk-ATAOHSFR.js";import{t as M,x as N}from"./chunk-2RNQQNB7.js";import{o as O,s as z,u as V}from"./chunk-EUMXMT3S.js";import{ca as q}from"./chunk-XMKCCLGB.js";import{Pb as F,Rb as L,v as C,z as A}from"./chunk-Y4OWBBDD.js";import{f as T}from"./chunk-FFRFSDBM.js";import{d as H,e as b,qa as x,ta as j}from"./chunk-ACYFMLWG.js";import{b as I,c as S,d as D,i as $,l as W,m as c}from"./chunk-KGNCKIFP.js";import{b as P}from"./chunk-ES2ISFJC.js";import{a as h}from"./chunk-FTQLQJQV.js";import U from"node:path";import{constants as J}from"node:fs";import{open as ee,realpath as Y}from"node:fs/promises";async function K(e){let r=e.attempt.profileNative,p=P.array($).max(16).parse(e.attempt.artifactRefs??[]);if(!p.length)return[];if(!r||!e.storeDir)throw new Error("The actual retained artifact owner is unavailable.");await e.authorize();let t=await e.events(r.turnId);if(c(t)!==r.traceHash||t.some(l=>l.sessionId!==r.sessionId||l.turnId!==r.turnId))throw new Error("The saved artifacts differ from their actual retained case trace.");let o=[],n=0;for(let l of p){let f=t.filter(u=>(u.action==="work_output_save"||u.action==="sandbox_save_output")&&u.status==="completed").flatMap(u=>{let E=P.object({outputRef:M}).passthrough().safeParse(u.data);return E.success?[E.data.outputRef]:[]}).filter(u=>`${r.sessionId}/${u.id}/${u.revision}/${u.title}`===l.id&&u.sourceTaskId===r.sessionId&&u.sourceTurnId===r.turnId&&u.sha256===l.contentHash&&u.sizeBytes===l.sizeBytes&&u.contentType===l.mediaType);if(f.length!==1)throw new Error("The selected artifact has no unique actual saved output.");let a=f[0];if(a.location.kind!=="local"&&(a.location.kind!=="managed"||!e.readManaged)||a.sizeBytes>N)throw new Error("The retained artifact has no supported local byte owner.");if((n+=a.sizeBytes)>2e7)throw new Error("The retained artifacts exceed their aggregate grading byte limit.");await e.authorize(),e.signal?.throwIfAborted();let i;if(a.location.kind==="managed")i=await e.readManaged(a,e.signal);else if(a.location.kind==="local"){let u=await Y(U.join(e.storeDir,"work","outputs")),E=await Y(a.location.path);if(!E.startsWith(`${u}${U.sep}`))throw new Error("The artifact escaped canonical output storage.");let v=await ee(E,J.O_RDONLY|J.O_NOFOLLOW);try{let w=await v.stat();if(!w.isFile()||w.size!==a.sizeBytes)throw new Error("The artifact bytes changed.");i=await v.readFile()}finally{await v.close()}}else throw new Error("The saved artifact has no admitted byte owner.");if(i.length!==a.sizeBytes||W(i)!==a.sha256)throw new Error("The artifact bytes differ from their sealed receipt.");await e.authorize(),o.push({reference:l,title:a.title,contentType:a.contentType,base64:i.toString("base64"),...a.contentType.startsWith("text/")||a.contentType==="application/json"?{text:new TextDecoder("utf8",{fatal:!0}).decode(i)}:{}})}return await e.authorize(),o}h(K,"readLocalProfileArtifacts");import te from"node:path";async function X(e,r){if(e.limits.maximumSpendUsd===null)return;let p=process.env.OPENPOND_API_KEY?.trim(),t=process.env.OPENPOND_OPCHAT_API_URL?.trim();if(!p||!t)throw new Error("Profile evaluation requires an admitted hosted spend ceiling.");let o=new URL(`${t.replace(/\/+$/,"")}/experiment-budget`);if(o.protocol!=="https:"||o.username||o.password||o.search||o.hash)throw new Error("Profile evaluation spend authority URL is invalid.");o.searchParams.set("runId",e.id),o.searchParams.set("manifestHash",e.contentHash);let n=await fetch(o,{headers:{Authorization:`Bearer ${p}`},signal:r});if(!n.ok)throw new Error("The exact Profile evaluation spend ceiling is unavailable.");let l=P.object({runId:P.string(),manifestHash:P.string(),maximumCostUsd:P.number().positive()}).strict().parse(await n.json());if(l.runId!==e.id||l.manifestHash!==e.contentHash||l.maximumCostUsd!==e.limits.maximumSpendUsd)throw new Error("Profile evaluation spend authority differs from its admitted manifest.")}h(X,"assertProfileEvaluationSpendAuthority");async function Q(e){e.signal?.throwIfAborted();let r,p,t=h(()=>{},"rejectCancellation"),o=new Promise((a,i)=>{t=i}),n=h((a,i)=>{p||(p=new Error(a),e.onInterrupt?.(i),e.interrupt?(r=e.interrupt(a),r.catch(()=>{})):t(p))},"cancel"),l=h(()=>n("Profile evaluation run cancelled.","cancelled"),"aborted"),f=setTimeout(()=>n(`Profile evaluation case exceeded its ${e.timeoutMs}ms timeout.`,"timed_out"),e.timeoutMs);e.signal?.addEventListener("abort",l,{once:!0});try{e.signal?.aborted&&l();let a=await Promise.race([e.send(),o]);if(r){let i=await r;if(i.status==="in_progress"||!i.completedAt)throw new Error("Profile evaluation cleanup remains unconfirmed.")}if(a.status==="in_progress"||!a.completedAt)throw new Error("Workflow evaluation turn did not settle.");return a}catch(a){if(r){let i=await r;if(i.status==="in_progress"||!i.completedAt)throw new Error("Profile evaluation cleanup remains unconfirmed.",{cause:a})}throw a}finally{clearTimeout(f),e.signal?.removeEventListener("abort",l)}}h(Q,"awaitProfileEvaluationTurn");function Z(e){let r=e.manifest.profileEvaluation,p=e.manifest.policy;if(!r||p.kind!=="model"||e.manifest.execution.kind!=="harness")throw new Error("Profile evaluation requires a released source and model policy.");if(r.profileId!==e.profileRef.profileId||r.profileId!==e.binding.profileId||r.sourceRevision!==e.binding.sourceRevision||r.harnessRelease.id!==e.binding.harnessRelease.id||r.harnessRelease.contentHash!==e.binding.harnessRelease.contentHash||(e.binding.schemaVersion==="openpond.profileWorkflowBinding.v1"?r.target.kind!=="workflow"||r.target.workflowId!==e.binding.workflowId:r.target.kind==="workflow"||c(r.target)!==c(e.binding.target)))throw new Error("Profile evaluation binding differs from its admitted source.");if(p.model.provider!==e.modelRef.providerId||p.model.model!==e.modelRef.modelId||p.configurationHash!==e.modelConfigurationHash)throw new Error("Workflow evaluation model differs from its admitted configuration.");return async t=>{if(c(t.source)!==c(r))throw new Error("Workflow evaluation case differs from its admitted Profile source.");t.signal?.throwIfAborted(),await(e.assertSpendAuthority??X)(e.manifest,t.signal);let o=!!(e.attachments?.length||e.requiredOutputs?.length),n=await e.createSession({...o?{experience:"work"}:{},provider:e.modelRef.providerId,modelRef:e.modelRef,currentProfile:e.profileRef,...e.binding.schemaVersion==="openpond.profileWorkflowBinding.v1"?{profileWorkflowBinding:e.binding}:{profileComponentBinding:e.binding},hiddenFromDefaultSidebar:!0,metadata:{profileEvaluationRun:{id:e.manifest.id,contentHash:e.manifest.contentHash},taskId:t.task.id,seed:t.seed,...o&&e.profileRef.source==="local"?{workspaceTarget:"local"}:{},...e.ownedSessionMetadata}}),l=[...o?["This is an evaluation run. Complete the requested task using its public inputs. Save each required output with work_save_output, then send your final response to finish the case. Saving a file alone does not finish the case. Private grading runs after your final response; do not wait for grader feedback."]:[],typeof t.task.input=="string"?t.task.input:JSON.stringify(t.task.input),...Object.keys(t.task.policyVisibleContext).length?[`Policy-visible task context:
3
+ ${JSON.stringify(t.task.policyVisibleContext)}`]:[]].join(`
4
+
5
+ `)||" ";await e.admitSession?.(n);try{let f=!1,a=await Q({signal:t.signal,timeoutMs:e.manifest.limits.timeoutMs,onInterrupt:h(s=>{f=s==="timed_out",e.onInterrupt?.(s)},"onInterrupt"),...e.interruptSessionTurn?{interrupt:h(s=>e.interruptSessionTurn(n.id,s),"interrupt")}:{},send:h(()=>e.sendTurn(n.id,{prompt:l,...e.binding.schemaVersion==="openpond.profileWorkflowBinding.v1"?{workflowInput:{}}:e.binding.target.kind==="agent_action"?{workflowInput:t.task.input}:{},modelRef:e.modelRef,approvalPolicy:"on-request",...o?{sandbox:"workspace-write",codexPermissionMode:"default"}:{},...e.attachments?.length?{attachments:e.attachments}:{}}),"send")});if(a.status==="in_progress"||!a.completedAt)throw new Error("Workflow evaluation turn did not settle.");if(await e.validateTerminalTurn?.(n,a),!a.harnessSnapshot||a.harnessSnapshot.harnessRelease.id!==r.harnessRelease.id||a.harnessSnapshot.harnessRelease.contentHash!==r.harnessRelease.contentHash)throw new Error("Workflow evaluation turn executed a different Harness release.");if(!a.modelRef||c(a.modelRef)!==c(e.modelRef))throw new Error("Workflow evaluation turn executed a different model.");let i=await e.runtimeEventsForTurn(a.id),u=i.filter(s=>s.name==="workspace_action_result"&&(s.action==="sandbox_save_output"||s.action==="work_output_save")&&s.status==="completed"&&s.turnId===a.id).flatMap(s=>_(s.data)).filter(s=>s.sourceTaskId===n.id&&s.sourceTurnId===a.id&&s.location.kind!=="external"),v=(e.requiredOutputs??[]).flatMap(s=>{let k=[...u].reverse().find(y=>y.title===s.path&&y.contentType===s.mediaType&&(s.maxBytes===null||y.sizeBytes<=s.maxBytes));return k?[k]:[]}).map(s=>({id:`${n.id}/${s.id}/${s.revision}/${s.title}`,contentHash:s.sha256,mediaType:s.contentType,sizeBytes:s.sizeBytes})),w=-1;for(let s=i.length-1;s>=0;s-=1)if(i[s]?.name.endsWith(".delta")){w=s;break}let g=i.flatMap((s,k)=>s.name.endsWith(".delta")&&k!==w?[]:[s.id]);if(g.length+v.length>1e4)throw new Error("Profile evaluation produced more than 10,000 substantive evidence references.");let R=G(i,r.target.kind,a.status),d=Math.min(e.manifest.limits.maxOutputBytes,e.maximumOutputBytes??e.manifest.limits.maxOutputBytes);if(!Number.isSafeInteger(d)||d<1)throw new Error("Profile evaluation requires a positive bounded output limit.");let m=Buffer.byteLength(R,"utf8")>d;if(m&&!e.retainOutputLimitEvidence)throw new Error(`Profile evaluation case exceeded its ${d}-byte output limit.`);return m&&e.onOutputLimit?.(c(R)),{evidence:{output:{text:m?"":R},runtimeEventRefs:g,artifactRefs:v.map(s=>s.id),...m?{infrastructureError:`Profile evaluation case exceeded its ${d}-byte output limit.`}:a.status!=="completed"?{infrastructureError:a.error??`Workflow evaluation turn ${a.status}.`}:{}},traceHash:c(i),retainedEvidenceRef:{sessionId:n.id,turnId:a.id},artifactRefs:v,startedAt:a.startedAt,completedAt:a.completedAt,latencyMs:Math.max(0,Date.parse(a.completedAt)-Date.parse(a.startedAt)),costUsd:null,terminal:a.status==="completed"&&!m,failureClass:a.status==="completed"&&!m?null:a.status==="interrupted"?f?"timeout":"cancelled":"infrastructure_failure"}}finally{await e.settleSession?.(n.id)}}}h(Z,"createProfileWorkflowEvaluationExecutor");function _(e,r=0){if(e==null||r>8)return[];let p=M.safeParse(e);return p.success?[p.data]:Array.isArray(e)?e.flatMap(t=>_(t,r+1)):typeof e!="object"?[]:Object.values(e).flatMap(t=>_(t,r+1))}h(_,"findFileOutputs");var ae=P.object({manifest:C,taskset:x,profileRef:O,binding:P.union([H,b]),modelRef:T,modelConfigurationHash:S,taskId:I,seed:P.string().trim().min(1).max(500)}).strict();function Be(e){return async(r,p)=>{let t=ae.parse(r),o=await e.selectedProfile();if(!o||c(o.ref)!==c(t.profileRef)||o.sourceRevision!==t.binding.sourceRevision)throw new Error("Evaluation Profile differs from the app-server's authorized selection.");let n=await e.loadCatalog({ref:o.ref,sourceRevision:o.sourceRevision,harnessRelease:t.binding.harnessRelease}),l=t.manifest.profileEvaluation,f=await B({manifest:t.manifest,taskset:t.taskset,selected:{profileRef:o.ref,sourceRevision:o.sourceRevision,harnessRelease:t.binding.harnessRelease},loadCatalog:e.loadCatalog,resolveExternalDataset:e.resolveExternalDataset}),a=f?.definition??n.definitions.find(d=>d.id===l?.definitionId);if(A(t.manifest,t.taskset,f?.catalog??{schemaVersion:"openpond.profileEvaluations.v1",definitions:n.definitions,suites:n.suites}),!l||!a||(f?c(f.catalog):n.catalogHash)!==l.catalogHash||c(a)!==l.definitionHash||c(a.target)!==c(l.target)||a.tasksetRelease.id!==t.manifest.tasksetRelease.id||a.tasksetRelease.contentHash!==t.manifest.tasksetRelease.contentHash||!a.taskIds.includes(t.taskId)||!a.seeds.includes(t.seed)||t.manifest.population.filter(d=>d.taskId===t.taskId&&d.seed===t.seed).length!==1)throw new Error("Evaluation case differs from its released definition or admitted population.");let i=t.taskset.tasks.find(d=>d.id===t.taskId),u=j(i);if(u.artifactRefs.length!==i.artifactRefs.length||u.artifactRefs.length>z.maxAttachments)throw new Error("Evaluation case has an unauthorized task attachment.");if(u.artifactRefs.length&&!e.storeDir)throw new Error("Evaluation case attachment storage is unavailable.");let E=f?.packageValue??(u.artifactRefs.length||i.requiredOutputs?.length?await e.loadTasksetPackage(a,o.ref.profileId,t.binding.harnessRelease):null);if(E&&(E.contentHash!==t.manifest.packageHash||E.taskset.contentHash!==t.taskset.contentHash))throw new Error("Evaluation case Taskset differs from its frozen package or admitted manifest.");let v=u.artifactRefs.map(d=>{if(d.mediaType!=="application/pdf"||d.sizeBytes>z.maxAttachmentBytes)throw new Error(`Evaluation case attachment ${d.id} is not an admitted PDF.`);let m=E?.files.find(s=>s.asset.id===d.id);if(!m||c(m.asset)!==c(d))throw new Error(`Evaluation case attachment ${d.id} differs from its frozen Taskset file.`);return q(m),V.parse({id:d.id,name:te.basename(d.path),kind:"file",mediaType:d.mediaType,sizeBytes:d.sizeBytes,contentsBase64:m.base64})}),w=Z({manifest:t.manifest,profileRef:o.ref,binding:t.binding,modelRef:t.modelRef,modelConfigurationHash:t.modelConfigurationHash,createSession:e.createSession,sendTurn:e.sendTurn,...e.admitSession?{admitSession:h(d=>e.admitSession(d,t.manifest,t.taskId,t.seed,v),"admitSession")}:{},...e.settleSession?{settleSession:e.settleSession}:{},interruptSessionTurn:e.interruptSessionTurn,runtimeEventsForTurn:h(d=>e.store.runtimeEventsForTurn(d),"runtimeEventsForTurn"),attachments:v,requiredOutputs:i.requiredOutputs??[]});f&&await f.authorize(),p?.throwIfAborted();let g=await w({task:u,seed:t.seed,source:l,...p?{signal:p}:{}}),R=await K({storeDir:e.storeDir,readManaged:e.readManagedArtifact,attempt:{artifactRefs:g.artifactRefs,profileNative:g.retainedEvidenceRef?.sessionId&&g.retainedEvidenceRef.turnId?{sessionId:g.retainedEvidenceRef.sessionId,turnId:g.retainedEvidenceRef.turnId,traceHash:g.traceHash}:null},events:h(d=>e.store.runtimeEventsForTurn(d),"events"),signal:p,authorize:h(async()=>{p?.throwIfAborted();let d=await e.selectedProfile();if(!d||c(d)!==c(o))throw new Error("The current artifact Profile authority changed.");f&&await f.authorize()},"authorize")});return{...g,evidence:{...g.evidence,artifacts:R,caseOwner:{...g.retainedEvidenceRef,traceHash:g.traceHash}}}}}h(Be,"createProfileEvaluationCaseService");var oe=P.object({manifest:C,taskset:x,profileRef:O,binding:P.union([H,b]),modelRef:T,modelConfigurationHash:S}).strict();function Le(e){let r=new Map,p=h(async(t,o)=>{let n=await e.selectedProfile();if(!n||c(n.ref)!==c(t.profileRef)||n.sourceRevision!==t.binding.sourceRevision)throw new Error("Evaluation Profile differs from the app-server's authorized selection.");let l=await e.loadCatalog({ref:n.ref,sourceRevision:n.sourceRevision,harnessRelease:t.binding.harnessRelease}),f=await B({manifest:t.manifest,taskset:t.taskset,selected:{profileRef:n.ref,sourceRevision:n.sourceRevision,harnessRelease:t.binding.harnessRelease},loadCatalog:e.loadCatalog,resolveExternalDataset:e.resolveExternalDataset}),a=f?.catalog??{schemaVersion:"openpond.profileEvaluations.v1",definitions:l.definitions,suites:l.suites};if(A(t.manifest,t.taskset,a),!e.privateGrading&&(t.taskset.graders.some(m=>m.kind==="model_judge"||m.kind==="custom_verifier")||t.taskset.metrics?.aggregation==="custom"))throw new Error("Profile evaluation cannot run this Taskset's model judge, custom verifier, or custom metric in the current app-server runtime.");let i=t.manifest.profileEvaluation,u=t.manifest.policy;if(i.profileId!==n.ref.profileId||i.sourceRevision!==t.binding.sourceRevision||i.harnessRelease.id!==t.binding.harnessRelease.id||i.harnessRelease.contentHash!==t.binding.harnessRelease.contentHash||(t.binding.schemaVersion==="openpond.profileWorkflowBinding.v1"?i.target.kind!=="workflow"||i.target.workflowId!==t.binding.workflowId:i.target.kind==="workflow"||c(i.target)!==c(t.binding.target))||u.kind!=="model"||u.model.provider!==t.modelRef.providerId||u.model.model!==t.modelRef.modelId||u.configurationHash!==t.modelConfigurationHash)throw new Error("Evaluation request differs from its admitted Profile workflow or model configuration.");let E=a.definitions.find(m=>m.id===i.definitionId),v=e.privateGrading?f?.packageValue??await(e.loadTasksetPackage?e.loadTasksetPackage(E,n.ref.profileId,i.harnessRelease):Promise.reject(new Error("The current private Taskset owner is unavailable."))):null,w=v?await e.privateGrading?.(t.manifest,v,o):void 0;await w?.authorize();let g=await e.store.getProfileEvaluationRun(t.manifest.id);if(g){if(g.manifest.contentHash!==t.manifest.contentHash||c(g.profileRef)!==c(n.ref))throw new Error(`Profile evaluation run ${t.manifest.id} already exists with another manifest.`);return g}f&&await f.authorize(),o?.throwIfAborted();let R=await L({manifest:t.manifest,taskset:t.taskset,catalog:a,...w?{customVerifier:w.customVerifier,modelJudge:w.modelJudge,metricSource:w.metricSource,metricExecutor:w.metricExecutor}:{},execute:h(({task:m,seed:s,signal:k})=>e.executeCase({...t,taskId:m.id,seed:s},k),"execute"),...o?{signal:o}:{},saveGrade:h(async m=>(await e.store.saveProfileEvaluationGrade(m),{id:m.contentHash,contentHash:m.contentHash,mediaType:"application/json",sizeBytes:null}),"saveGrade"),saveReceipt:h(async m=>{await e.store.saveProfileEvaluationReceipt(m)},"saveReceipt"),loadCompletedMember:h(async({receiptId:m})=>{let s=await e.store.getProfileEvaluationReceipt(m);if(!s)return null;let k=s.graderEvidenceRefs[0],y=k&&await e.store.getProfileEvaluationGrade(k.contentHash);if(!y)throw new Error(`Retained Profile evaluation receipt ${m} is missing its grade.`);return{receipt:s,grade:y}},"loadCompletedMember")});await w?.authorize(),f&&await f.authorize();let d={profileRef:n.ref,manifest:t.manifest,metric:R.metric,gradeRefs:R.grades.map(m=>({id:m.contentHash,contentHash:m.contentHash})),receiptRefs:R.receipts.map(m=>({id:m.id,contentHash:m.contentHash})),passRate:R.passRate,passed:R.passed,completedAt:new Date().toISOString()};return e.store.saveProfileEvaluationRun({...d,contentHash:c(d)})},"run");return(t,o)=>{let n=oe.parse(t),l=r.get(n.manifest.id);if(l){if(l.manifestHash!==n.manifest.contentHash)throw new Error(`Profile evaluation run ${n.manifest.id} is already running with another manifest.`);return l.promise}let f=p(n,o);return r.set(n.manifest.id,{manifestHash:n.manifest.contentHash,promise:f}),f.finally(()=>{r.get(n.manifest.id)?.promise===f&&r.delete(n.manifest.id)}).catch(()=>{}),f}}h(Le,"createProfileEvaluationRunService");var ie=P.object({id:I,suiteId:I,createdAt:D,modelRef:T,hostModelConfigurationHash:S.optional()}).strict();function Je(e){let r=new Map,p=h(async t=>{let o=await e.selectedWorkflows(),n=await e.loadCatalog({ref:o.profileRef,sourceRevision:o.sourceRevision,harnessRelease:o.harnessRelease}),l={schemaVersion:"openpond.profileEvaluations.v1",definitions:n.definitions,suites:n.suites},f=l.suites.find(v=>v.id===t.suiteId);if(!f)throw new Error(`Profile evaluation suite ${t.suiteId} is absent from the selected release.`);let a=[];for(let v of f.definitionIds)a.push(await e.prepareRun({id:`suite-${c([t.id,v]).slice(0,32)}`,createdAt:t.createdAt,definitionId:v,modelRef:t.modelRef,...t.hostModelConfigurationHash?{hostModelConfigurationHash:t.hostModelConfigurationHash}:{}}));let i=await e.store.getProfileEvaluationSuiteRun(t.id);if(i){if(i.suiteId!==f.id||i.catalogHash!==c(l)||i.profileId!==o.profileRef.profileId||i.sourceRevision!==o.sourceRevision||i.harnessRelease.id!==o.harnessRelease.id||i.harnessRelease.contentHash!==o.harnessRelease.contentHash||i.createdAt!==t.createdAt)throw new Error(`Profile evaluation suite run ${t.id} already exists with another request.`);for(let[v,w]of i.members.entries()){let g=await e.store.getProfileEvaluationRun(w.runManifest.id);if(!g||g.contentHash!==w.runHash||g.manifest.contentHash!==w.runManifest.contentHash||g.manifest.contentHash!==a[v]?.manifest.contentHash)throw new Error("Retained Profile evaluation suite is missing member evidence.");let R=g.manifest.policy;if(R.kind!=="model"||R.model.provider!==t.modelRef.providerId||R.model.model!==t.modelRef.modelId)throw new Error(`Profile evaluation suite run ${t.id} already exists with another model.`)}return i}let u=[];for(let[v,w]of f.definitionIds.entries()){let g=a[v],R=await e.executeRun(g);u.push({definitionId:w,manifest:R.manifest,runHash:R.contentHash,passed:R.passed,score:R.metric.value})}let E=F({id:t.id,suiteId:f.id,catalog:l,members:u,createdAt:t.createdAt,completedAt:new Date().toISOString()});return e.store.saveProfileEvaluationSuiteRun(o.profileRef,l,E)},"run");return t=>{let o=ie.parse(t),n=c(o),l=r.get(o.id);if(l){if(l.requestHash!==n)throw new Error(`Profile evaluation suite run ${o.id} is already running with another request.`);return l.promise}let f=p(o);return r.set(o.id,{requestHash:n,promise:f}),f.finally(()=>{r.get(o.id)?.promise===f&&r.delete(o.id)}).catch(()=>{}),f}}h(Je,"createProfileEvaluationSuiteService");export{K as a,Z as b,Be as c,Le as d,Je as e};