openpond 0.2.44 → 0.2.45

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 (200) hide show
  1. package/dist/app-server.d.ts +12010 -3269
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/actions-command-CRDLSPFA.js +2 -0
  4. package/dist/chunks/{app-layer-7SPLENWD.js → app-layer-MDJFV3HZ.js} +1 -1
  5. package/dist/chunks/app-server-runtime-PJONTCCO.js +2 -0
  6. package/dist/chunks/apps-MD2DKEDW.js +2 -0
  7. package/dist/chunks/{chunk-ZEVARU6J.js → chunk-25GCTLAZ.js} +1 -1
  8. package/dist/chunks/chunk-3BJ4P5LI.js +520 -0
  9. package/dist/chunks/chunk-3SRIPOJQ.js +2 -0
  10. package/dist/chunks/{chunk-PEYA2Q7Q.js → chunk-4EGDKOYP.js} +3 -3
  11. package/dist/chunks/{chunk-Z6ZR5O3J.js → chunk-5ZFEQLRI.js} +1 -1
  12. package/dist/chunks/chunk-6BL2ZIAP.js +184 -0
  13. package/dist/chunks/chunk-6QUICEQA.js +5 -0
  14. package/dist/chunks/chunk-7D2WMUWK.js +3 -0
  15. package/dist/chunks/chunk-7KIBRK3A.js +4 -0
  16. package/dist/chunks/{chunk-ANVOHBUV.js → chunk-B6LYKEMU.js} +1 -1
  17. package/dist/chunks/chunk-CXS3WXL3.js +2 -0
  18. package/dist/chunks/chunk-DWGB536R.js +19 -0
  19. package/dist/chunks/{chunk-OI2N2636.js → chunk-EG55BFQ4.js} +1 -1
  20. package/dist/chunks/chunk-ELNJUG64.js +17 -0
  21. package/dist/chunks/{chunk-W5NQ2DI7.js → chunk-FXIUKYUR.js} +1 -1
  22. package/dist/chunks/chunk-GEDEVI4Y.js +2 -0
  23. package/dist/chunks/chunk-H3C4ZYEA.js +16 -0
  24. package/dist/chunks/chunk-HUBI3RUK.js +2 -0
  25. package/dist/chunks/{chunk-X2B4MN6W.js → chunk-IYRHG54Q.js} +1 -1
  26. package/dist/chunks/chunk-J65BMG5Q.js +2 -0
  27. package/dist/chunks/chunk-KOR2AZVB.js +24 -0
  28. package/dist/chunks/{chunk-2CXJK2M3.js → chunk-LL4QP2IM.js} +1 -1
  29. package/dist/chunks/chunk-M2YXYBSP.js +2 -0
  30. package/dist/chunks/chunk-NPOHW5OU.js +2 -0
  31. package/dist/chunks/{chunk-KRC2S5QF.js → chunk-NXUCGKY2.js} +3 -3
  32. package/dist/chunks/chunk-PDIT2QS7.js +8 -0
  33. package/dist/chunks/{chunk-YF6IDYTS.js → chunk-PGKEDR3S.js} +1 -1
  34. package/dist/chunks/chunk-QVRNOGAU.js +21 -0
  35. package/dist/chunks/chunk-TNXILYI6.js +2 -0
  36. package/dist/chunks/chunk-TVQE3JMI.js +2 -0
  37. package/dist/chunks/chunk-U6SFIFDM.js +2409 -0
  38. package/dist/chunks/chunk-V6WBSW5Q.js +3 -0
  39. package/dist/chunks/chunk-VESOG2SS.js +2 -0
  40. package/dist/chunks/chunk-VFTUP5NQ.js +2 -0
  41. package/dist/chunks/{chunk-RAWEO7SJ.js → chunk-VVV5I22A.js} +2 -2
  42. package/dist/chunks/chunk-XPB6NY7L.js +42 -0
  43. package/dist/chunks/{chunk-OMM4ZO7E.js → chunk-XWLI7WJH.js} +2 -24
  44. package/dist/chunks/{chunk-KIGN4FI6.js → chunk-YWX7FKLM.js} +1 -1
  45. package/dist/chunks/cli-BKBH6FZY.js +2 -0
  46. package/dist/chunks/{configuration-command-LDPUCHVH.js → configuration-command-75ZCMZ6X.js} +1 -1
  47. package/dist/chunks/connected-evidence-UPUVVQ6P.js +2 -0
  48. package/dist/chunks/{continual-MHMPLLUZ.js → continual-WWPXK2LO.js} +1 -1
  49. package/dist/chunks/core-commands-SS2GV7WU.js +2 -0
  50. package/dist/chunks/datasets-TCLXV34N.js +2 -0
  51. package/dist/chunks/desktop-test-7ZHZHUB6.js +3 -0
  52. package/dist/chunks/{dist-6YP37XI5.js → dist-VDN6E54A.js} +1 -1
  53. package/dist/chunks/evaluation-coordination-ZX5GLMRC.js +2 -0
  54. package/dist/chunks/experiment-improvements-O6DCQXCX.js +2 -0
  55. package/dist/chunks/experiments-JOQOBQXY.js +2 -0
  56. package/dist/chunks/{extension-JEUZZJ5X.js → extension-3M2CSWZB.js} +1 -1
  57. package/dist/chunks/{help-4F4QGL4C.js → help-RLRU33WN.js} +1 -1
  58. package/dist/chunks/hosted-experiment-improvement-IKO677PI.js +3 -0
  59. package/dist/chunks/hosted-harness-runtime-H2Q2SNZT.js +2 -0
  60. package/dist/chunks/hosted-profile-candidate-FHHSLJNO.js +3 -0
  61. package/dist/chunks/hosted-profile-compiler-5B256VV3.js +2 -0
  62. package/dist/chunks/hosted-profile-evaluation-control-Z25TZOW4.js +2 -0
  63. package/dist/chunks/hosted-profile-evaluation-inspection-MFYPLTZQ.js +3 -0
  64. package/dist/chunks/hosted-profile-evaluation-preparation-MAB2PSCC.js +3 -0
  65. package/dist/chunks/human-review-6H3BW7OZ.js +2 -0
  66. package/dist/chunks/learning-Y6WNDVQW.js +2 -0
  67. package/dist/chunks/{opchat-UFWWVJL6.js → opchat-3E4FH3DC.js} +1 -1
  68. package/dist/chunks/organizations-PRVCUPMN.js +2 -0
  69. package/dist/chunks/{profile-ESULTWDN.js → profile-DC4UEVVG.js} +1 -1
  70. package/dist/chunks/project-agent-ZX3CELKI.js +2 -0
  71. package/dist/chunks/sandbox-command-HHQMZK3G.js +2 -0
  72. package/dist/chunks/{sandbox-template-7WHGNVM6.js → sandbox-template-DFHWHCIQ.js} +1 -1
  73. package/dist/chunks/{src-A3OVZOSV.js → src-CREVQF7M.js} +1 -1
  74. package/dist/chunks/src-MAZ7OBVY.js +327 -0
  75. package/dist/chunks/taskset-TB2ICAZU.js +2 -0
  76. package/dist/chunks/{teams-bot-YMCDLBGT.js → teams-bot-BNBL57S5.js} +1 -1
  77. package/dist/chunks/training-FW5FOGR3.js +2 -0
  78. package/dist/chunks/{workspaces-ZZ7R5BUL.js → workspaces-WTPFRJMS.js} +1 -1
  79. package/dist/cli.js +1 -1
  80. package/dist/index.js +1 -1
  81. package/dist/web/assets/App-BgeSqoRS.css +1 -0
  82. package/dist/web/assets/App-C6EWFrLP.js +227 -0
  83. package/dist/web/assets/{AppDialog-CV3ddujB.js → AppDialog-Cgn_fTGR.js} +1 -1
  84. package/dist/web/assets/{AppTerminalPanel-dhbGOO_K.js → AppTerminalPanel-cNYkSvM2.js} +2 -2
  85. package/dist/web/assets/{AppsView-Bxa-9BF2.js → AppsView-9zpKBSLv.js} +1 -1
  86. package/dist/web/assets/{BrowserSidebar-BLwL2FOG.js → BrowserSidebar-Xo21N1ej.js} +1 -1
  87. package/dist/web/assets/{CartesianChart-BOxN-Su1.js → CartesianChart-Bg3Lm5mZ.js} +1 -1
  88. package/dist/web/assets/{CollaborationTabs-DTmJvNJx.js → CollaborationTabs-BIfgIy5X.js} +1 -1
  89. package/dist/web/assets/{CommandMenu-DggN2ygj.js → CommandMenu-D9BimyPx.js} +1 -1
  90. package/dist/web/assets/{CommunityView-CuDrYOIf.js → CommunityView-BoW-yLju.js} +1 -1
  91. package/dist/web/assets/{ComposerCreateImproveStrip-BrduENlL.js → ComposerCreateImproveStrip-BIKVEgr1.js} +1 -1
  92. package/dist/web/assets/{GetStartedView-Db1IEWzv.js → GetStartedView-B99v4-hh.js} +1 -1
  93. package/dist/web/assets/HostedModelLearningReview-DEScpX2Z.js +1 -0
  94. package/dist/web/assets/HostedModelLearningSettings-4HT5eEiL.js +1 -0
  95. package/dist/web/assets/LabModelVersionDetailPage-DkYdI7gr.js +1 -0
  96. package/dist/web/assets/{LabSkillSidebar-Bz0U-Nmw.js → LabSkillSidebar-Bp5XYipm.js} +1 -1
  97. package/dist/web/assets/LabsRoute-ACN76d2j.css +1 -0
  98. package/dist/web/assets/LabsRoute-VopO7n34.js +105 -0
  99. package/dist/web/assets/MainChatThread-3Gg0oDZT.js +2 -0
  100. package/dist/web/assets/{MainPane-Cs2Kng_k.js → MainPane-CUqMVG9-.js} +11 -11
  101. package/dist/web/assets/{MarkdownText-BhzHRq1J.js → MarkdownText-De0WzrEw.js} +1 -1
  102. package/dist/web/assets/{NativeSkillSidebar-LU-PhEhW.js → NativeSkillSidebar-B4jtf5RO.js} +1 -1
  103. package/dist/web/assets/{NewExperienceSwitcher-Bi_gpHLG.js → NewExperienceSwitcher-Bg1DVr96.js} +1 -1
  104. package/dist/web/assets/{NewProjectDialog-B8pWvSkq.js → NewProjectDialog-i_wvIBw-.js} +1 -1
  105. package/dist/web/assets/{OutputsPage-BkGI0kHp.js → OutputsPage-CZiPxLyN.js} +1 -1
  106. package/dist/web/assets/{ProjectsPage-Ca8_iEWu.js → ProjectsPage-BD0eml0M.js} +1 -1
  107. package/dist/web/assets/RightChatPanelStack-CEBFPHKP.js +1 -0
  108. package/dist/web/assets/{RightSidebarHomePanel-6pygznxX.js → RightSidebarHomePanel-BTpU5wGh.js} +1 -1
  109. package/dist/web/assets/{ScheduledWorkPage-BSiOxxAH.js → ScheduledWorkPage-Y6XGoh-X.js} +1 -1
  110. package/dist/web/assets/{SettingsView-1XN7KLBl.js → SettingsView-Kh14f463.js} +3 -3
  111. package/dist/web/assets/{TeamChatView-BGLCPTen.js → TeamChatView-5LjuRNd6.js} +2 -2
  112. package/dist/web/assets/{TerminalOverlay-DHkS2cVJ.js → TerminalOverlay-BCWBSotQ.js} +1 -1
  113. package/dist/web/assets/{TrainingCreationPanel-Dneamjzh.js → TrainingCreationPanel-hvOHRVJx.js} +1 -1
  114. package/dist/web/assets/{TrainingDraftPanel-Cfh59jLZ.js → TrainingDraftPanel-CGEHGljE.js} +1 -1
  115. package/dist/web/assets/{UsageSettingsSection-C9l1KY-O.js → UsageSettingsSection-B8nbqhag.js} +1 -1
  116. package/dist/web/assets/{WorkSidebarPanel-CEnO-Txp.js → WorkSidebarPanel-B6hlPEIs.js} +1 -1
  117. package/dist/web/assets/{WorkspaceDiffPanel-BiuQBflC.js → WorkspaceDiffPanel-q8A15-0x.js} +9 -9
  118. package/dist/web/assets/{WorkspaceEnvironmentMenu-Dr-E0c1j.js → WorkspaceEnvironmentMenu-BiFTPWtC.js} +1 -1
  119. package/dist/web/assets/{WorkspaceGitDialogs-mE3Og6Zo.js → WorkspaceGitDialogs-Dyx4Rbiy.js} +1 -1
  120. package/dist/web/assets/{WorkspaceMonacoEditor-DPZ0n0G9.js → WorkspaceMonacoEditor-B1dKexHo.js} +3 -3
  121. package/dist/web/assets/{arrow-up-right-DU2KsZD-.js → arrow-up-right-CCj7SOGp.js} +1 -1
  122. package/dist/web/assets/chunk-DJWHN7NU-1eQoMoKO.js +1 -0
  123. package/dist/web/assets/{clipboard-g2b4_k81.js → clipboard-BY6ELc9Z.js} +1 -1
  124. package/dist/web/assets/{cloud-upload-P2bDOPsQ.js → cloud-upload-BOka5EKK.js} +1 -1
  125. package/dist/web/assets/{cssMode-CPbPVAUt.js → cssMode-C34j8ti5.js} +1 -1
  126. package/dist/web/assets/{folder-open-BmsONNsr.js → folder-open-CX2jidFj.js} +1 -1
  127. package/dist/web/assets/{folder-plus-B18NgUxy.js → folder-plus-Dh2Q9LP3.js} +1 -1
  128. package/dist/web/assets/{git-commit-horizontal-enxGCV_e.js → git-commit-horizontal-CfevriuT.js} +1 -1
  129. package/dist/web/assets/{htmlMode-DiV88uQv.js → htmlMode-BORwVkZg.js} +1 -1
  130. package/dist/web/assets/{index-vfpCN9zy.js → index-BBjRfC--.js} +2 -2
  131. package/dist/web/assets/{info-DmuSBIYe.js → info-Bv3dbs3G.js} +1 -1
  132. package/dist/web/assets/{jsonMode-BaeOjuKU.js → jsonMode-BYWtZ6AK.js} +1 -1
  133. package/dist/web/assets/{lspLanguageFeatures-D8To0CQA.js → lspLanguageFeatures-CEAdFSpU.js} +1 -1
  134. package/dist/web/assets/{minimize-2-C2xnEzCe.js → minimize-2-MhorZwY5.js} +1 -1
  135. package/dist/web/assets/{monaco.contribution-JW3MxX6k.js → monaco.contribution-CDhPpbIo.js} +2 -2
  136. package/dist/web/assets/{monaco.contribution-bytkwn0O.js → monaco.contribution-CN7AWJNd.js} +2 -2
  137. package/dist/web/assets/{monaco.contribution-DbrACt99.js → monaco.contribution-DHA7FuJX.js} +2 -2
  138. package/dist/web/assets/{monaco.contribution-DgTFvG2Q.js → monaco.contribution-ZUUVx_3M.js} +2 -2
  139. package/dist/web/assets/{monitor-mtHVW7gU.js → monitor-DLcrkfM5.js} +1 -1
  140. package/dist/web/assets/{python-DAPe0Urm.js → python-CXwvPmc4.js} +1 -1
  141. package/dist/web/assets/{refresh-cw-Dvm_Pq3U.js → refresh-cw-BTfIxHb3.js} +1 -1
  142. package/dist/web/assets/{save-B2eVAjW6.js → save-DaN65kMq.js} +1 -1
  143. package/dist/web/assets/{square-16bX2k2i.js → square-zRgIUdSv.js} +1 -1
  144. package/dist/web/assets/{toggleHighContrast-Ce0YhEQg.js → toggleHighContrast-DWeRZFzr.js} +1 -1
  145. package/dist/web/assets/{tsMode-CnvMmHz6.js → tsMode-nLBhKngY.js} +1 -1
  146. package/dist/web/assets/{upload-COPbAaD-.js → upload-BfUu4Eu1.js} +1 -1
  147. package/dist/web/assets/{useLocalAgentSchedules-C-Wjm5HK.js → useLocalAgentSchedules-BCITWhg2.js} +1 -1
  148. package/dist/web/assets/{useSessionTurnCache-BfVbncMB.js → useSessionTurnCache-BQMWfV8u.js} +1 -1
  149. package/dist/web/assets/{wifi-off-C9iLbCC-.js → wifi-off-bdka5es5.js} +1 -1
  150. package/dist/web/assets/{workers-BXh_u8Fr.js → workers-z7XHFFNs.js} +1 -1
  151. package/dist/web/assets/{yaml-CRSr9x6_.js → yaml-BTr4i4DD.js} +1 -1
  152. package/dist/web/index.html +1 -1
  153. package/docs/command-reference.md +77 -0
  154. package/package.json +4 -2
  155. package/dist/chunks/actions-command-5IEZEP6W.js +0 -2
  156. package/dist/chunks/app-server-runtime-NQ2BYPGK.js +0 -2
  157. package/dist/chunks/apps-XQ7PHJTD.js +0 -2
  158. package/dist/chunks/chunk-36RCXSEJ.js +0 -2
  159. package/dist/chunks/chunk-3QC2DDQ5.js +0 -2
  160. package/dist/chunks/chunk-3XDFNA7W.js +0 -2
  161. package/dist/chunks/chunk-4S4WH65X.js +0 -3
  162. package/dist/chunks/chunk-4TMC5F2P.js +0 -5
  163. package/dist/chunks/chunk-65QCNUGE.js +0 -659
  164. package/dist/chunks/chunk-6XF4GI35.js +0 -2
  165. package/dist/chunks/chunk-ARJUNUH6.js +0 -5
  166. package/dist/chunks/chunk-CEEZ7Y2J.js +0 -2
  167. package/dist/chunks/chunk-DZVVGU6K.js +0 -8
  168. package/dist/chunks/chunk-HY2Q7EDK.js +0 -4
  169. package/dist/chunks/chunk-IT4AT6LB.js +0 -42
  170. package/dist/chunks/chunk-L6HCBIAU.js +0 -2
  171. package/dist/chunks/chunk-LNEOLOK2.js +0 -13
  172. package/dist/chunks/chunk-NM2GYDPA.js +0 -19
  173. package/dist/chunks/chunk-OQPFFKU6.js +0 -2
  174. package/dist/chunks/chunk-QID62K65.js +0 -2400
  175. package/dist/chunks/chunk-YOOPTMQK.js +0 -3
  176. package/dist/chunks/cli-OJU6NQSA.js +0 -2
  177. package/dist/chunks/core-commands-UZL5RF2M.js +0 -2
  178. package/dist/chunks/datasets-42AZHVSV.js +0 -13
  179. package/dist/chunks/desktop-test-DI76HKS7.js +0 -3
  180. package/dist/chunks/experiments-Z3S35BYN.js +0 -2
  181. package/dist/chunks/hosted-harness-runtime-VZNYNQ6T.js +0 -2
  182. package/dist/chunks/hosted-profile-compiler-JXLPR7SX.js +0 -2
  183. package/dist/chunks/hosted-profile-evaluation-control-Q54YXXIM.js +0 -2
  184. package/dist/chunks/hosted-profile-evaluation-inspection-7WESM3ZH.js +0 -3
  185. package/dist/chunks/hosted-profile-evaluation-preparation-QP24PYBL.js +0 -3
  186. package/dist/chunks/organizations-SBBIOF6O.js +0 -2
  187. package/dist/chunks/project-agent-IBHUQ3JX.js +0 -2
  188. package/dist/chunks/sandbox-command-PAJAIMWM.js +0 -2
  189. package/dist/chunks/src-5MJSO3UD.js +0 -326
  190. package/dist/chunks/taskset-BZYQT65N.js +0 -2
  191. package/dist/chunks/training-7PST5HZU.js +0 -2
  192. package/dist/web/assets/App-6AQXN2SM.js +0 -226
  193. package/dist/web/assets/App-7h_oHCFd.css +0 -1
  194. package/dist/web/assets/HostedModelLearningReview-kofNdPAe.js +0 -1
  195. package/dist/web/assets/HostedModelLearningSettings-6ij3nwWD.js +0 -1
  196. package/dist/web/assets/LabModelVersionDetailPage-C7Maqcit.js +0 -1
  197. package/dist/web/assets/LabsRoute-Ch1N-e2S.js +0 -52
  198. package/dist/web/assets/LabsRoute-Dw6-12kt.css +0 -1
  199. package/dist/web/assets/MainChatThread-BJbhZOvs.js +0 -2
  200. package/dist/web/assets/RightChatPanelStack-DjEdxsq8.js +0 -1
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{b as H}from"./chunk-B6LYKEMU.js";import{F as g,K as B,L}from"./chunk-NXUCGKY2.js";import{a as N}from"./chunk-VESOG2SS.js";import{oa as _}from"./chunk-U6SFIFDM.js";import{O as b,R as j,S as D,Y as w}from"./chunk-6QUICEQA.js";import{ta as x}from"./chunk-ELNJUG64.js";import{$ as P}from"./chunk-KOR2AZVB.js";import{c as M,e as R,f as O,g as T,i as V,qa as F}from"./chunk-ALZRXBEC.js";import{U as C,V as y,a as E}from"./chunk-QVRNOGAU.js";import{Fa as A}from"./chunk-5ZFEQLRI.js";import{l as p}from"./chunk-HZP5U2AA.js";import{b as o}from"./chunk-ES2ISFJC.js";import{a as v,c as I,f as U,h as c}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import h from"node:path";import{AsyncLocalStorage as ee}from"node:async_hooks";import{promises as z}from"node:fs";var J=new ee;function fe(r,e=!1){let t=J.getStore();t&&(e&&(t.length=0),t.push(r))}i(fe,"onStartupFailure");async function ge(r,e){await F(r);let t;try{t=await T(h.join(c(r).runtime,"server-owner"),100)}catch(n){if(n instanceof I&&n.issue.code==="STORAGE_BUSY"){let a=await V(h.join(c(r).runtime,"endpoint.json"),()=>null);throw new I({code:"RUNTIME_ALREADY_RUNNING",path:r,message:"An OpenPond runtime already owns this home.",action:a?.url?`Connect to the existing runtime at ${a.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw n}let s=[];try{let n=await v(r,()=>J.run(s,e)),a=n.close.bind(n);s.length=0;let d;return{...n,close:i(()=>d??=(async()=>{try{await v(r,a)}finally{await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0}),await t()}})(),"close")}}catch(n){try{for(let a of s.reverse())await Promise.resolve().then(()=>v(r,a)).catch(()=>{});await z.rm(h.join(c(r).runtime,"endpoint.json"),{force:!0})}finally{await t()}throw n}}i(ge,"ownHomeRuntime");async function he(r,e,t){await R(h.join(c(r).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:e,serverId:t}))}i(he,"publishRuntimeEndpoint");function ye(r){return te({runtime:L(r.ports),close:r.close})}i(ye,"createAppServer");function te(r){let e=!1;return{runtime:r.runtime,close:i(async()=>{e||(e=!0,await r.close?.())},"close")}}i(te,"attachAppServer");async function Pe(r){let e=typeof r.appServer=="function"?null:r.appServer;try{await B({host:e?.runtime??(async()=>(e=await r.appServer(),e.runtime)),readable:r.readable,writable:r.writable,hostStorageClient:r.hostStorageClient})}finally{await e?.close()}}i(Pe,"runAppServerJsonl");import S from"node:path";import{lstat as re,readFile as oe,realpath as $}from"node:fs/promises";import{randomUUID as se}from"node:crypto";var ne=o.object({id:o.string(),version:o.string(),contentHash:o.string().regex(/^[a-f0-9]{64}$/),feedbackKey:o.string(),release:o.object({id:o.string(),revision:o.union([o.string(),o.number()]),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().nullable()}).strict(),G=o.object({binding:C,packageValue:o.unknown(),graders:o.array(ne).max(100),actualGrading:o.object({pass:o.unknown(),evidence:o.unknown()}).strict().optional(),sourceCandidate:E.optional()}).strict();async function Me(r,e){let t=await $(e),s=S.resolve(r);if(S.dirname(s)!==t||await $(s)!==s)throw new Error("External Dataset package escaped its private owner home.");let n=await re(s);if(!n.isFile()||n.isSymbolicLink()||n.size>32*1024*1024)throw new Error("External Dataset package is not a bounded regular file.");let a=G.parse(JSON.parse(new TextDecoder("utf8",{fatal:!0}).decode(await oe(s))));return a.binding=y(a.binding),a.packageValue=x({...a,packageValue:P(a.packageValue)}),a}i(Me,"readHostProfileExternalDataset");async function Oe(r){let e=G.parse(r.value),t=y(e.binding),s=r.release,n={id:s.harnessRelease.id,contentHash:s.harnessRelease.contentHash};if(t.protectedProfileClosureHash!==p(s.harnessRelease.files.filter(l=>l.visibility!=="policy").map(l=>({path:l.path,asset:l}))))throw new Error("The external Dataset protected Profile closure changed.");if(e.sourceCandidate){let l=await _({workspaceId:typeof s.agentSnapshot.metadata.workspaceId=="string"?s.agentSnapshot.metadata.workspaceId:s.workspaceId,sourceDir:S.join(s.bundlePath,"source")});if(p(e.sourceCandidate.harnessRelease)!==p(n)||N(l).protectedClosureHash!==e.sourceCandidate.protectedClosureHash)throw new Error("The external Dataset candidate differs from its retained frozen compiled source.")}let a=i(async l=>{if(o.object({authorized:o.literal(!0),bindingHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(await r.client.request({contractVersion:1,requestId:se(),operation:"profile.externalDataset.authorize",params:{...l,bindingHash:t.contentHash}})).bindingHash!==t.contentHash)throw new Error("The host authorized another external Dataset binding.")},"authorize");return{authorize:a,resolveExternalDataset:i(async(l,m)=>{if(await a(),p(l)!==p(t)||m.profileRef.profileId!==t.profileId||m.sourceRevision!==r.sourceRevision||p(m.harnessRelease)!==p(n))throw new Error("External Dataset requested another actual Profile source or recipe.");let f=x({...e,binding:l,packageValue:P(e.packageValue)});return{binding:t,packageValue:f,authorize:a}},"resolveExternalDataset"),sourceCandidate:e.sourceCandidate}}i(Oe,"createHostProfileExternalDataset");import{randomBytes as ae}from"node:crypto";function Ne(){return U()}i(Ne,"appDataDir");function Be(r){return c(r).config}i(Be,"providersConfigPath");function Le(r){return c(r).credentials}i(Le,"providerSecretsConfigPath");function ze(r){return c(r).key}i(ze,"providerSecretsKeyPath");async function Je(r){let e=c(r).token;return O(e,async()=>{let t=(await M(e))?.trim(),s=process.env.OPENPOND_APP_TOKEN||t||ae(32).toString("base64url");return s!==t&&await R(e,s),{token:s,tokenFile:e}})}i(Je,"ensureCapabilityToken");import u from"node:path";import{readFile as W}from"node:fs/promises";var q=o.object({profileId:o.string().min(1),sourceRevision:o.string().min(1),repositoryId:o.string().min(1),harnessRelease:o.object({id:o.string().min(1),contentHash:o.string().regex(/^[a-f0-9]{64}$/)}).strict(),hostExecution:o.object({conversationId:o.string().min(1),turnId:o.string().min(1)}).strict().optional(),workspaceId:o.string().min(1),assetsPath:o.string().min(1).refine(u.isAbsolute)}).strict();async function Ze(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile release changed after admission.");let n=s.release.harnessRelease.metadata.profile;if(!n||typeof n!="object"||n.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile provenance differs from admitted release.");return{profile:D(),profileLibrary:j()}}i(Ze,"loadHostedProfileStateAndLibrary");async function et(r,e){let t=q.parse(e),s=await H(r,t.harnessRelease);if(!s||u.resolve(s.release.bundlePath)!==u.resolve(t.assetsPath))throw new Error("Hosted Profile workflow release is unavailable.");let n=s.release.harnessRelease.metadata.profile;if(n?.id!==t.profileId||n.sourceRevision!==t.sourceRevision||n.repositoryId!==void 0&&n.repositoryId!==t.repositoryId)throw new Error("Hosted Profile workflow provenance changed.");let a=t.harnessRelease,d={source:"openpond_git",repositoryId:t.repositoryId,profileId:t.profileId};if(!s.release.harnessRelease.files.some(f=>f.path==="workflows/catalog.json"))return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:[]};let l=u.join(s.release.bundlePath,"source","workflows"),m=A({agentSnapshot:s.release.agentSnapshot,harnessRelease:s.release.harnessRelease,catalogBytes:await W(u.join(l,"catalog.json")),actionBytes:await W(u.join(l,"actions.json"))});return{profileRef:d,sourceRevision:t.sourceRevision,harnessRelease:a,workflows:m.catalog.workflows.map(f=>({workflow:f,binding:{schemaVersion:"openpond.profileWorkflowBinding.v1",profileId:t.profileId,sourceRevision:t.sourceRevision,harnessRelease:a,catalogHash:m.catalogHash,workflowId:f.id}}))}}i(et,"listHostedProfileWorkflows");import{createHash as ie,randomUUID as k}from"node:crypto";var K=o.object({approval:b,revision:o.number().int().positive()}).strict(),Q=o.object({record:w}).strict(),le=o.object({startedAt:o.string().min(1),requestOrdinal:o.number().int().nonnegative(),id:o.string().min(1)}).strict(),ce=o.object({records:o.array(w).max(200),nextBefore:le.nullable()}).strict(),Y=1e4,X=class{constructor(e){this.client=e}client;static{i(this,"HostedApprovalStorage")}async readApproval(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"approval/get",params:{approvalId:e}});return t===null?null:K.parse(t)}async getApproval(e){return(await this.readApproval(e))?.approval??null}async putApproval(e){let t=b.parse(e.approval);if(!e.requestId.trim())throw new Error("Approval mutation requires a stable request ID.");return K.parse(await this.client.request({contractVersion:g,requestId:e.requestId,operation:"approval/upsert",params:{approval:t,expectedRevision:e.expectedRevision}}))}},Z=class{constructor(e){this.client=e}client;static{i(this,"HostedModelUsageStorage")}async upsertModelUsageRecord(e){let t=w.parse(e),s=ie("sha256").update(JSON.stringify(t)).digest("hex"),n=await this.client.request({contractVersion:g,requestId:`usage:${s}`,operation:"usage/upsert",params:{record:t}}),a=Q.parse(n).record;if(a.requestId!==t.requestId)throw new Error("Host usage upsert changed request identity.");return a}async getModelUsageRecordByRequestId(e){let t=await this.client.request({contractVersion:g,requestId:k(),operation:"usage/getByRequestId",params:{requestId:e}});return t===null?null:Q.parse(t).record}async listModelUsageRecords(e={}){let t=e.limit===void 0||e.limit>=Y,s=e.limit===void 0?Y:Math.max(1,Math.min(1e4,Math.trunc(e.limit))),n={...e.sessionId?{sessionId:e.sessionId}:{},...e.turnId?{turnId:e.turnId}:{},...e.provider?{provider:e.provider}:{},...e.model?{model:e.model}:{},...e.startedAtFrom?{startedAtFrom:e.startedAtFrom}:{},...e.startedAtTo?{startedAtTo:e.startedAtTo}:{},...e.visibility&&e.visibility!=="all"?{visibility:e.visibility}:{},...e.status&&e.status!=="all"?{status:e.status}:{}},a=[],d=null;for(;a.length<s+(t?1:0);){let l=ce.parse(await this.client.request({contractVersion:g,requestId:k(),operation:"usage/page",params:{query:n,before:d,limit:Math.min(200,s+(t?1:0)-a.length)}}));if(a.push(...l.records),a.length>s)throw new Error(`Hosted usage query exceeds ${s} rows; narrow its filters or use a streamed aggregation.`);if(l.nextBefore===null)break;if(l.records.length===0||JSON.stringify(l.nextBefore)===JSON.stringify(d))throw new Error("Host usage cursor did not advance.");d=l.nextBefore}return a}async listModelUsageRecordsComplete(e={}){return this.listModelUsageRecords(e)}};export{fe as a,ge as b,he as c,ye as d,Pe as e,Me as f,Oe as g,Ne as h,Be as i,Le as j,ze as k,Je as l,q as m,Ze as n,et as o,X as p,Z as q};
@@ -1,6 +1,6 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-W5NQ2DI7.js";import{e as pe}from"./chunk-4TMC5F2P.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-MTJNKRXL.js";import{p as de}from"./chunk-HZP5U2AA.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Re=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Re)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(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=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(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(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(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(Y,"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 F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"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=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(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(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(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(xe,"fallbackProfilesFromConfig");function ae(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:D(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(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(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($e,"normalizeHealth");function Ue(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(Ue,"normalizeProfile");function He(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(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(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(ze,"apiKeyHint");function Fe(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(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",T=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:T,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let R=l(d.baseUrl),Te=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,R)),ne=c?.[F(d.handle,R)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:R,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Te?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();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."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,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(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(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=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
3
- `);if(C=[],y==="[DONE]")return r=!0,[];let u;try{u=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(u&&typeof u=="object"&&"error"in u)throw new Error(`OpenPond OpChat request failed: ${_e(u)}`);i=u;let T=u&&typeof u=="object"?u:{},k=Array.isArray(T.choices)?T.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},K=x.delta&&typeof x.delta=="object"?x.delta:{},M=[],d=Be(K.reasoning_content);d&&(c+=d,M.push({type:"reasoning_delta",text:d,raw:u}));let R=Be(K.content);return R&&M.push({type:"text_delta",text:R,raw:u}),tn(o,K.tool_calls),s=H(x.finish_reason)??s,m=ln(u)??m,M},"consumeEvent"),v=a(y=>{let u=y.endsWith("\r")?y.slice(0,-1):y;return u?u.startsWith(":")?[]:(u.startsWith("data:")&&C.push(u.slice(5).trimStart()),[]):ee()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let u=h.split(`
4
- `);h=u.pop()??"";for(let T of u)for(let k of v(T))yield k}if(h+=w.decode(),h)for(let y of v(h))yield y;for(let y of ee())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=on(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=en(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(ve,"streamOpChatChatCompletion");function Ze(e){let n=ke(e,["fireworks-prompt-tokens","prompt-tokens"]),t=ke(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(Ze,"cacheUsageFromResponseHeaders");function ke(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(ke,"firstHeaderTokenCount");function en(e,n){if(!n||nn(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(en,"usageWithResponseHeaderCache");function nn(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(nn,"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 tn(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(tn,"mergeOpChatToolCallDeltas");function on(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(on,"completedOpChatToolCalls");function rn(e,n){let t={model:e.model,messages:e.messages.map(sn),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,an(e.reasoningEffort)),t}a(rn,"buildOpChatBody");function an(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(an,"opChatReasoningFields");function sn(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(sn,"opChatMessage");function se(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(se,"opChatEndpointUrl");function ie(e,n,t){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;return r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",n),r.set("x-openpond-client","openpond-app"),r.set("x-openpond-request-id",t||qe()),r}a(ie,"opChatHeaders");async function le(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return _e(JSON.parse(n))}catch{return n}}a(le,"readOpChatError");function _e(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[H(o.code),H(o.type),H(o.message)].filter(Boolean).join(": ")}return[H(n.error),H(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(_e,"errorMessageFromPayload");function ln(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(ln,"parseUsage");function H(e){return typeof e=="string"&&e.trim()?e:null}a(H,"stringValue");function Be(e){return typeof e=="string"&&e.length>0?e:null}a(Be,"streamTextValue");import{readFileSync as cn}from"node:fs";var j;function un(){if(j!==void 0)return j??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(cn(e,"utf8"));j=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{j=null}return j??"openpond-code bundled"}a(un,"getBundledRuntimeVersion");import{spawn as dn}from"node:child_process";function Se(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(Se,"resolveSystemBrowserCommand");async function pn(e,n={}){let t=n.command??Se(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=dn(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(pn,"openUrlWithSystemBrowser");function fn(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=pe.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:hn(n.scheduleSummary)}}a(fn,"normalizeApp");function S(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(S,"normalizeDateString");function mn(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(mn,"normalizeSchedule");function hn(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(mn).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(hn,"normalizeScheduleSummary");async function yn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=F(o.handle,o.baseUrl),s=Y(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await q(G(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:$(i)}]}}));return Object.fromEntries(t)}a(yn,"loadAccountProfileLookups");async function Ce(e){let n=await yn(e),t=e.account?n[F(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:X({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Ce,"loadOpenPondAccountStateForContext");async function An(){return Ce(await p())}a(An,"loadOpenPondAccountState");async function Ie(e={}){let n=await p(),t=Ce(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,fe(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(fn).filter(s=>!!s):[],error:r.status==="rejected"?$(r.reason):null}}a(Ie,"loadOpenPondApps");async function gn(e){let n=await p();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await me(n.apiBaseUrl,n.token,e)}}a(gn,"createOpenPondRepoApp");import{createHash as Pn}from"node:crypto";function wn(e){return`account-${Pn("sha256").update(e).digest("hex").slice(0,8)}`}a(wn,"fallbackHandleForApiKey");function Z(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(Z,"normalizeDerivedHandle");async function On(e,n){let t=Z(e.handle);if(t)return t;try{let r=(await q(n,e.apiKey)).account,s=Z(r.handle)??Z(r.email?.split("@")[0])??Z(r.id);if(s)return s}catch{}return wn(e.apiKey)}a(On,"deriveHandleForApiKey");async function xn(e){let n=e.baseUrl??N,t=l(e.apiBaseUrl)??V(n)??B,o=l(e.chatApiBaseUrl),r=await On(e,t);return await Pe({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),p(r,n)}a(xn,"saveOpenPondAccount");function bn(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(bn,"findAccountIndex");async function Un(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await L(t=>{let o=(t.accounts??[]).map(m=>({...m})),r=bn(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)}),p()}a(Un,"removeOpenPondAccount");async function kn(){let e;return await L(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}),p(e.handle,e.baseUrl)}a(kn,"signOutOpenPondAccount");function Bn(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(Bn,"findAccountIndex");function ce(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(ce,"applyOptionalUrl");async function En(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await L(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=Bn(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(ce(t,"baseUrl",e.baseUrl),ce(t,"apiBaseUrl",e.apiBaseUrl),ce(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}),p(t.handle,t.baseUrl)}a(En,"updateOpenPondAccountConfig");async function vn(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return he(n.apiBaseUrl,n.token,e.appId)}a(vn,"getOpenPondAppEnvironment");function _n(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=Sn(t);if(s<0)return;let i=t.slice(0,s).replace(/\r$/,""),c=t[s]==="\r"&&t[s+1]===`
2
+ import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-FXIUKYUR.js";import{e as pe}from"./chunk-6QUICEQA.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-MTJNKRXL.js";import{p as de}from"./chunk-HZP5U2AA.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Te=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Te)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(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=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(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(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(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(Y,"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 F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"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=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(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(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(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(xe,"fallbackProfilesFromConfig");function ae(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:D(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(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(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($e,"normalizeHealth");function Ue(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(Ue,"normalizeProfile");function He(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(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(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(ze,"apiKeyHint");function Fe(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(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let T=l(d.baseUrl),Re=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,T)),ne=c?.[F(d.handle,T)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:T,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Re?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();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."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,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(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(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=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
3
+ `);if(C=[],y==="[DONE]")return r=!0,[];let u;try{u=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(u&&typeof u=="object"&&"error"in u)throw new Error(`OpenPond OpChat request failed: ${_e(u)}`);i=u;let R=u&&typeof u=="object"?u:{},k=Array.isArray(R.choices)?R.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},K=x.delta&&typeof x.delta=="object"?x.delta:{},M=[],d=Be(K.reasoning_content);d&&(c+=d,M.push({type:"reasoning_delta",text:d,raw:u}));let T=Be(K.content);return T&&M.push({type:"text_delta",text:T,raw:u}),tn(o,K.tool_calls),s=H(x.finish_reason)??s,m=ln(u)??m,M},"consumeEvent"),v=a(y=>{let u=y.endsWith("\r")?y.slice(0,-1):y;return u?u.startsWith(":")?[]:(u.startsWith("data:")&&C.push(u.slice(5).trimStart()),[]):ee()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let u=h.split(`
4
+ `);h=u.pop()??"";for(let R of u)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 ee())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=on(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=en(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(ve,"streamOpChatChatCompletion");function Ze(e){let n=ke(e,["fireworks-prompt-tokens","prompt-tokens"]),t=ke(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(Ze,"cacheUsageFromResponseHeaders");function ke(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(ke,"firstHeaderTokenCount");function en(e,n){if(!n||nn(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(en,"usageWithResponseHeaderCache");function nn(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(nn,"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 tn(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(tn,"mergeOpChatToolCallDeltas");function on(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(on,"completedOpChatToolCalls");function rn(e,n){let t={model:e.model,messages:e.messages.map(sn),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,an(e.reasoningEffort)),t}a(rn,"buildOpChatBody");function an(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(an,"opChatReasoningFields");function sn(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(sn,"opChatMessage");function se(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(se,"opChatEndpointUrl");function ie(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||qe();return r.set("x-openpond-request-id",s),r.set("x-request-id",s),r}a(ie,"opChatHeaders");async function le(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return _e(JSON.parse(n))}catch{return n}}a(le,"readOpChatError");function _e(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[H(o.code),H(o.type),H(o.message)].filter(Boolean).join(": ")}return[H(n.error),H(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(_e,"errorMessageFromPayload");function ln(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(ln,"parseUsage");function H(e){return typeof e=="string"&&e.trim()?e:null}a(H,"stringValue");function Be(e){return typeof e=="string"&&e.length>0?e:null}a(Be,"streamTextValue");import{readFileSync as cn}from"node:fs";var j;function un(){if(j!==void 0)return j??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(cn(e,"utf8"));j=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{j=null}return j??"openpond-code bundled"}a(un,"getBundledRuntimeVersion");import{spawn as dn}from"node:child_process";function Se(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(Se,"resolveSystemBrowserCommand");async function pn(e,n={}){let t=n.command??Se(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=dn(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(pn,"openUrlWithSystemBrowser");function fn(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=pe.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:hn(n.scheduleSummary)}}a(fn,"normalizeApp");function S(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(S,"normalizeDateString");function mn(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(mn,"normalizeSchedule");function hn(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(mn).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(hn,"normalizeScheduleSummary");async function yn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=F(o.handle,o.baseUrl),s=Y(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await q(G(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:$(i)}]}}));return Object.fromEntries(t)}a(yn,"loadAccountProfileLookups");async function Ce(e){let n=await yn(e),t=e.account?n[F(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:X({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Ce,"loadOpenPondAccountStateForContext");async function An(){return Ce(await p())}a(An,"loadOpenPondAccountState");async function Ie(e={}){let n=await p(),t=Ce(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,fe(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(fn).filter(s=>!!s):[],error:r.status==="rejected"?$(r.reason):null}}a(Ie,"loadOpenPondApps");async function gn(e){let n=await p();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await me(n.apiBaseUrl,n.token,e)}}a(gn,"createOpenPondRepoApp");import{createHash as Pn}from"node:crypto";function wn(e){return`account-${Pn("sha256").update(e).digest("hex").slice(0,8)}`}a(wn,"fallbackHandleForApiKey");function Z(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(Z,"normalizeDerivedHandle");async function On(e,n){let t=Z(e.handle);if(t)return t;try{let r=(await q(n,e.apiKey)).account,s=Z(r.handle)??Z(r.email?.split("@")[0])??Z(r.id);if(s)return s}catch{}return wn(e.apiKey)}a(On,"deriveHandleForApiKey");async function xn(e){let n=e.baseUrl??N,t=l(e.apiBaseUrl)??V(n)??B,o=l(e.chatApiBaseUrl),r=await On(e,t);return await Pe({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),p(r,n)}a(xn,"saveOpenPondAccount");function bn(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(bn,"findAccountIndex");async function Un(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await L(t=>{let o=(t.accounts??[]).map(m=>({...m})),r=bn(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)}),p()}a(Un,"removeOpenPondAccount");async function kn(){let e;return await L(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}),p(e.handle,e.baseUrl)}a(kn,"signOutOpenPondAccount");function Bn(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(Bn,"findAccountIndex");function ce(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(ce,"applyOptionalUrl");async function En(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await L(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=Bn(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(ce(t,"baseUrl",e.baseUrl),ce(t,"apiBaseUrl",e.apiBaseUrl),ce(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}),p(t.handle,t.baseUrl)}a(En,"updateOpenPondAccountConfig");async function vn(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return he(n.apiBaseUrl,n.token,e.appId)}a(vn,"getOpenPondAppEnvironment");function _n(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=Sn(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(_n,"createReadyLineParser");function Sn(e){let n=e.indexOf(`
6
6
  `),t=e.indexOf("\r");return n<0?t:t<0?n:Math.min(n,t)}a(Sn,"nextLineEnd");export{p as a,Ke as b,An as c,Ie as d,gn as e,Je as f,Ye as g,Qe as h,ve as i,xn as j,Un as k,kn as l,En as m,vn as n,un as o,_n as p,pn as q};
@@ -152,4 +152,4 @@ ${a(y.path)}`),b=[e.baseSystemPrompt,...m,g.length?"Apply the following released
152
152
  ${f.map(y=>y.path).join(`
153
153
  `)}`:""].filter(Boolean).join(`
154
154
 
155
- `);if(!Number.isSafeInteger(e.maxContextCharacters)||e.maxContextCharacters<=0||b.length>e.maxContextCharacters)throw new Error("Released Harness context exceeds the runtime's admitted context limit.");let p=new Map(f.map(y=>[y.path,y])),v=f.length?[wu]:[],E={schemaVersion:"openpond.harnessSourceRuntimeReceipt.v1",runtimeId:e.runtimeId,harnessRelease:{id:i.id,contentHash:i.contentHash},sourcePackageHash:s.contentHash,systemPromptHash:q(b),instructionAssets:r.instructions.map(y=>({path:y.path,contentHash:y.contentHash})),skillAssets:r.skills.map(y=>({path:y.path,contentHash:y.contentHash})),readableAssets:f.map(y=>({path:y.path,contentHash:y.contentHash})),toolContractHash:q([...e.tools.map(y=>y.definition),...v]),omittedCapabilities:h};return{systemPrompt:b,tools:v,receipt:{...E,contentHash:q(E)},readFile(y){let R=bu.parse(y),x=p.get(R.path);if(!x)throw new Error("Harness source file is not policy-visible in the selected release.");let I=n.get(R.path);if(R.offset>I.length)throw new Error("Harness source read offset exceeds the file size.");let C=Math.min(I.length,R.offset+R.length),T=I.subarray(R.offset,C),_,H="utf8";try{_=new TextDecoder("utf-8",{fatal:!0}).decode(T)}catch{H="base64",_=btoa(Array.from(T,J=>String.fromCharCode(J)).join(""))}return{path:x.path,contentHash:x.contentHash,mediaType:x.mediaType,sizeBytes:x.sizeBytes,offset:R.offset,nextOffset:C,eof:C===I.length,encoding:H,content:_}}}}c(Xg,"createHarnessSourceRuntime");var vc=wc(yc(),1);var Cs=o.string().min(1).max(2e3).refine(e=>!e.includes("\\")&&!e.includes(":")&&!e.startsWith("/")&&e.split("/").every(t=>t!==""&&t!=="."&&t!==".."),"source paths must be portable relative paths"),zh=o.string().regex(/^[a-z][a-z0-9_-]{0,119}$/),bc={type:"object",properties:{},additionalProperties:!1},Gh=o.object({name:o.string().trim().min(1).max(240).optional(),description:o.string().max(4e3).optional(),skillPaths:o.array(Cs).max(100).optional(),assetPaths:o.array(Cs).max(100).optional()}).strict(),Qh=o.object({actionId:o.string().trim().min(1).max(240),name:o.string().trim().min(1).max(240),description:o.string().max(4e3).default(""),inputSchema:o.record(o.string(),o.unknown()).default(bc),skillPaths:o.array(Cs).max(100).default([]),assetPaths:o.array(Cs).max(100).default([])}).strict();function Xh(e){let t=/^---\r?\n([\s\S]*?)\r?\n---\r?\n/.exec(e);if(!t)return{instructions:e,metadata:{}};let s=(0,vc.parseDocument)(t[1],{uniqueKeys:!0});if(s.errors.length)throw new Error(`Invalid Workflow prompt frontmatter: ${s.errors[0].message}`);return{instructions:e.slice(t[0].length),metadata:Gh.parse(s.toJS())}}c(Xh,"parseProfileWorkflowPrompt");function Lb(e){let t=[...e.files.keys()].filter(a=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(a)).sort(),s=[],n=new Set,r=new Set;for(let a of t){let l=a.split("/")[1];if(zh.parse(l),r.has(l))throw new Error(`Profile Workflow ${l} has multiple primary files.`);r.add(l),n.add(a);let u=`workflows/${l}`,d=e.files.get(a),h=a.endsWith("/PROMPT.md")?Xh(d):null,f=h?null:Qh.parse(JSON.parse(d));if(h&&(!h.instructions.trim()||h.instructions.length>1e5))throw new Error(`Profile Workflow ${l} needs a nonempty Markdown prompt under 100000 characters.`);let m=h?.metadata.assetPaths??f?.assetPaths??[];for(let g of m){let b=`${u}/${g}`;if(!e.files.has(b))throw new Error(`Profile Workflow ${l} references missing asset ${b}.`);n.add(b)}s.push({id:l,label:h?.metadata.name??f?.name??l.replace(/[-_]/g," "),description:h?.metadata.description??f?.description??"",inputSchema:f?.inputSchema??bc,invocation:h?{kind:"instructions",instructions:h.instructions}:{kind:"agent_action",actionId:f.actionId},skillPaths:h?.metadata.skillPaths??f?.skillPaths??[]})}for(let a of e.files.keys())if(!(!a.startsWith("workflows/")||a==="workflows/catalog.json"||/^workflows\/[^/]+\/evals\//.test(a))&&!n.has(a))throw new Error(`Unreferenced Profile Workflow source ${a}.`);return{catalog:Ls({catalog:Hs.parse({schemaVersion:"openpond.profileWorkflows.v1",workflows:s}),sourcePaths:e.skillPaths,actionIds:e.actionIds}),referencedPaths:[...n].sort()}}c(Lb,"compileProfileWorkflowPackages");async function Bb(e){let t=[{role:"system",content:e.runtime?.systemPrompt??e.systemPrompt},{role:"user",content:e.userPrompt}],s=[...e.tools,...e.runtime?.tools??[]],n=[],r=[],i=[],a=await Vr({turnId:e.turnId,maxRounds:e.maxTurns,signal:e.signal,async runRound({index:l,signal:u}){let d=await e.policyRequest({turnIndex:l,messages:structuredClone(t),tools:structuredClone(s)},u);u.throwIfAborted(),n.push(d.result),t.push({role:"assistant",content:d.content,tool_calls:d.toolCalls.map(b=>({id:b.id,type:"function",function:{name:b.name,arguments:b.arguments}}))});let h=e.runtime?d.toolCalls.filter(b=>b.name===Fe):[],f=e.runtime?d.toolCalls.filter(b=>b.name!==Fe):d.toolCalls,m=h.map(b=>{let p;try{p=e.runtime.readFile(JSON.parse(b.arguments))}catch(v){p={error:v instanceof Error?v.message:"Harness source read failed."}}return t.push({role:"tool",tool_call_id:b.id,content:JSON.stringify(p)}),r.push(b.name),{id:b.id,name:b.name,output:p}});if(h.length&&!f.length)return i.push({turnIndex:l,content:d.content,toolCalls:h,toolResults:m,terminal:!1}),{type:"continue"};let g=await e.step({content:d.content,toolCalls:f},u);u.throwIfAborted();for(let b of g.toolResults)t.push({role:"tool",tool_call_id:b.id,content:JSON.stringify(b.output)}),r.push(b.name);return g.userMessage&&t.push({role:"user",content:g.userMessage}),i.push({turnIndex:l,content:d.content,toolCalls:d.toolCalls,toolResults:[...m,...g.toolResults],terminal:g.terminal}),g.terminal?{type:"complete",result:g}:{type:"continue"}},async onExhausted(){e.signal.throwIfAborted();let l=await e.terminate("max_turns",e.signal);if(!l.terminal)throw new Error("Harness environment did not terminate after exhausting its turn budget.");return i.push({turnIndex:e.maxTurns,content:null,toolCalls:[],toolResults:[],terminal:!0,terminationReason:"max_turns"}),l}});return{messages:t,toolSequence:r,trace:i,policyResults:n,finalStep:a,runtimeReceipt:e.runtime?.receipt??null}}c(Bb,"executeHarnessRollout");export{Zr as a,Wr as b,zc as c,Fp as d,Kp as e,Vp as f,qs as g,qr as h,Ns as i,kc as j,Rc as k,Os as l,ip as m,op as n,fp as o,mp as p,Ic as q,Cc as r,qc as s,Oc as t,hp as u,pp as v,gp as w,yp as x,vp as y,ul as z,ml as A,pl as B,gl as C,vl as D,te as E,Gp as F,Qp as G,Xp as H,se as I,Ms as J,kl as K,ng as L,rg as M,ig as N,og as O,It as P,Nl as Q,mg as R,hg as S,pg as T,gi as U,Hl as V,gg as W,yg as X,Fl as Y,Rg as Z,du as _,mu as $,hu as aa,Og as ba,Pg as ca,pu as da,Tg as ea,yu as fa,Mg as ga,jg as ha,Dg as ia,Bg as ja,Fg as ka,Kg as la,Vg as ma,Ug as na,Jg as oa,_p as pa,Ep as qa,Ap as ra,he as sa,Ts as ta,Xg as ua,jc as va,Vr as wa,Cp as xa,Hs as ya,Fc as za,Ls as Aa,Kc as Ba,Hp as Ca,Lp as Da,$p as Ea,yc as Fa,Gh as Ga,Qh as Ha,Xh as Ia,Lb as Ja,Bb as Ka};
155
+ `);if(!Number.isSafeInteger(e.maxContextCharacters)||e.maxContextCharacters<=0||b.length>e.maxContextCharacters)throw new Error("Released Harness context exceeds the runtime's admitted context limit.");let p=new Map(f.map(y=>[y.path,y])),v=f.length?[wu]:[],E={schemaVersion:"openpond.harnessSourceRuntimeReceipt.v1",runtimeId:e.runtimeId,harnessRelease:{id:i.id,contentHash:i.contentHash},sourcePackageHash:s.contentHash,systemPromptHash:q(b),instructionAssets:r.instructions.map(y=>({path:y.path,contentHash:y.contentHash})),skillAssets:r.skills.map(y=>({path:y.path,contentHash:y.contentHash})),readableAssets:f.map(y=>({path:y.path,contentHash:y.contentHash})),toolContractHash:q([...e.tools.map(y=>y.definition),...v]),omittedCapabilities:h};return{systemPrompt:b,tools:v,receipt:{...E,contentHash:q(E)},readFile(y){let R=bu.parse(y),x=p.get(R.path);if(!x)throw new Error("Harness source file is not policy-visible in the selected release.");let I=n.get(R.path);if(R.offset>I.length)throw new Error("Harness source read offset exceeds the file size.");let C=Math.min(I.length,R.offset+R.length),T=I.subarray(R.offset,C),_,H="utf8";try{_=new TextDecoder("utf-8",{fatal:!0}).decode(T)}catch{H="base64",_=btoa(Array.from(T,J=>String.fromCharCode(J)).join(""))}return{path:x.path,contentHash:x.contentHash,mediaType:x.mediaType,sizeBytes:x.sizeBytes,offset:R.offset,nextOffset:C,eof:C===I.length,encoding:H,content:_}}}}c(Xg,"createHarnessSourceRuntime");var vc=wc(yc(),1);var Cs=o.string().min(1).max(2e3).refine(e=>!e.includes("\\")&&!e.includes(":")&&!e.startsWith("/")&&e.split("/").every(t=>t!==""&&t!=="."&&t!==".."),"source paths must be portable relative paths"),zh=o.string().regex(/^[a-z][a-z0-9_-]{0,119}$/),bc={type:"object",properties:{},additionalProperties:!1},Gh=o.object({name:o.string().trim().min(1).max(240).optional(),description:o.string().max(4e3).optional(),skillPaths:o.array(Cs).max(100).optional(),assetPaths:o.array(Cs).max(100).optional()}).strict(),Qh=o.object({actionId:o.string().trim().min(1).max(240),name:o.string().trim().min(1).max(240),description:o.string().max(4e3).default(""),inputSchema:o.record(o.string(),o.unknown()).default(bc),skillPaths:o.array(Cs).max(100).default([]),assetPaths:o.array(Cs).max(100).default([])}).strict();function Xh(e){let t=/^---\r?\n([\s\S]*?)\r?\n---\r?\n/.exec(e);if(!t)return{instructions:e,metadata:{}};let s=(0,vc.parseDocument)(t[1],{uniqueKeys:!0});if(s.errors.length)throw new Error(`Invalid Workflow prompt frontmatter: ${s.errors[0].message}`);return{instructions:e.slice(t[0].length),metadata:Gh.parse(s.toJS())}}c(Xh,"parseProfileWorkflowPrompt");function Lb(e){let t=[...e.files.keys()].filter(a=>/^workflows\/[^/]+\/(PROMPT\.md|ACTION\.json)$/.test(a)).sort(),s=[],n=new Set,r=new Set;for(let a of t){let l=a.split("/")[1];if(zh.parse(l),r.has(l))throw new Error(`Profile Workflow ${l} has multiple primary files.`);r.add(l),n.add(a);let u=`workflows/${l}`,d=e.files.get(a),h=a.endsWith("/PROMPT.md")?Xh(d):null,f=h?null:Qh.parse(JSON.parse(d));if(h&&(!h.instructions.trim()||h.instructions.length>1e5))throw new Error(`Profile Workflow ${l} needs a nonempty Markdown prompt under 100000 characters.`);let m=h?.metadata.assetPaths??f?.assetPaths??[];for(let g of m){let b=`${u}/${g}`;if(!e.files.has(b))throw new Error(`Profile Workflow ${l} references missing asset ${b}.`);n.add(b)}s.push({id:l,label:h?.metadata.name??f?.name??l.replace(/[-_]/g," "),description:h?.metadata.description??f?.description??"",inputSchema:f?.inputSchema??bc,invocation:h?{kind:"instructions",instructions:h.instructions}:{kind:"agent_action",actionId:f.actionId},skillPaths:h?.metadata.skillPaths??f?.skillPaths??[]})}for(let a of e.files.keys())if(!(!a.startsWith("workflows/")||a==="workflows/catalog.json"||/^workflows\/[^/]+\/evals\//.test(a))&&!n.has(a))throw new Error(`Unreferenced Profile Workflow source ${a}.`);return{catalog:Ls({catalog:Hs.parse({schemaVersion:"openpond.profileWorkflows.v1",workflows:s}),sourcePaths:e.skillPaths,actionIds:e.actionIds}),referencedPaths:[...n].sort()}}c(Lb,"compileProfileWorkflowPackages");async function Bb(e){let t=[{role:"system",content:e.runtime?.systemPrompt??e.systemPrompt},{role:"user",content:e.userPrompt}],s=[...e.tools,...e.runtime?.tools??[]],n=[],r=[],i=[],a=await Vr({turnId:e.turnId,maxRounds:e.maxTurns,signal:e.signal,async runRound({index:l,signal:u}){let d=await e.policyRequest({turnIndex:l,messages:structuredClone(t),tools:structuredClone(s)},u);u.throwIfAborted(),n.push(d.result),t.push({role:"assistant",content:d.content,tool_calls:d.toolCalls.map(b=>({id:b.id,type:"function",function:{name:b.name,arguments:b.arguments}}))});let h=e.runtime?d.toolCalls.filter(b=>b.name===Fe):[],f=e.runtime?d.toolCalls.filter(b=>b.name!==Fe):d.toolCalls,m=h.map(b=>{let p;try{p=e.runtime.readFile(JSON.parse(b.arguments))}catch(v){p={error:v instanceof Error?v.message:"Harness source read failed."}}return t.push({role:"tool",tool_call_id:b.id,content:JSON.stringify(p)}),r.push(b.name),{id:b.id,name:b.name,output:p}});if(h.length&&!f.length)return i.push({turnIndex:l,content:d.content,toolCalls:h,toolResults:m,terminal:!1}),{type:"continue"};let g=await e.step({content:d.content,toolCalls:f},u);u.throwIfAborted();for(let b of g.toolResults)t.push({role:"tool",tool_call_id:b.id,content:JSON.stringify(b.output)}),r.push(b.name);return g.userMessage&&t.push({role:"user",content:g.userMessage}),i.push({turnIndex:l,content:d.content,toolCalls:d.toolCalls,toolResults:[...m,...g.toolResults],terminal:g.terminal}),g.terminal?{type:"complete",result:g}:{type:"continue"}},async onExhausted(){e.signal.throwIfAborted();let l=await e.terminate("max_turns",e.signal);if(!l.terminal)throw new Error("Harness environment did not terminate after exhausting its turn budget.");return i.push({turnIndex:e.maxTurns,content:null,toolCalls:[],toolResults:[],terminal:!0,terminationReason:"max_turns"}),l}});return{messages:t,toolSequence:r,trace:i,policyResults:n,finalStep:a,runtimeReceipt:e.runtime?.receipt??null}}c(Bb,"executeHarnessRollout");export{Zr as a,Wr as b,zc as c,Fp as d,Kp as e,Vp as f,qs as g,qr as h,Ns as i,kc as j,Rc as k,Os as l,ip as m,op as n,fp as o,mp as p,Ic as q,Cc as r,qc as s,Oc as t,hp as u,pp as v,gp as w,yp as x,vp as y,ul as z,ml as A,pl as B,gl as C,vl as D,te as E,Gp as F,Qp as G,Xp as H,se as I,Ms as J,kl as K,ng as L,rg as M,ig as N,og as O,It as P,Nl as Q,mg as R,hg as S,pg as T,gi as U,Hl as V,gg as W,yg as X,Fl as Y,Rg as Z,du as _,mu as $,hu as aa,Og as ba,Pg as ca,pu as da,Tg as ea,yu as fa,Mg as ga,jg as ha,Dg as ia,Bg as ja,Fg as ka,Kg as la,Vg as ma,Ug as na,Jg as oa,Lc as pa,_p as qa,Ep as ra,Ap as sa,Kr as ta,he as ua,Ts as va,Xg as wa,jc as xa,Vr as ya,Cp as za,Hs as Aa,Fc as Ba,Ls as Ca,Kc as Da,Hp as Ea,Lp as Fa,$p as Ga,yc as Ha,Gh as Ia,Qh as Ja,Xh as Ka,Lb as La,Bb as Ma};