openpond 0.2.23 → 0.2.25

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 (148) hide show
  1. package/dist/app-server.js +1 -1
  2. package/dist/chunks/actions-command-S27YU6NW.js +2 -0
  3. package/dist/chunks/{app-layer-4CK6ZEKN.js → app-layer-57323XKJ.js} +1 -1
  4. package/dist/chunks/app-server-runtime-QIIJ3KQJ.js +2 -0
  5. package/dist/chunks/apps-U3TXSPU6.js +2 -0
  6. package/dist/chunks/{chunk-MD7IADMT.js → chunk-3YSCXFE6.js} +3 -3
  7. package/dist/chunks/chunk-4KDHMGKI.js +2 -0
  8. package/dist/chunks/{chunk-NS3VMSTX.js → chunk-5WFXFKLA.js} +2 -2
  9. package/dist/chunks/chunk-6LY7GYNK.js +2 -0
  10. package/dist/chunks/{chunk-BZMVB3GS.js → chunk-6XF4GI35.js} +1 -1
  11. package/dist/chunks/{chunk-73KFNV3D.js → chunk-7TV2VBSD.js} +1 -1
  12. package/dist/chunks/{chunk-CXDS2LSW.js → chunk-AC2M2HO3.js} +1 -1
  13. package/dist/chunks/{chunk-ZVOO7FKM.js → chunk-BSHAIAXY.js} +1 -1
  14. package/dist/chunks/{chunk-QWE3RHNY.js → chunk-C5OV4XWF.js} +1 -1
  15. package/dist/chunks/{chunk-WYHHDJEG.js → chunk-D6BBQHZM.js} +12 -12
  16. package/dist/chunks/{chunk-JS6MS2NR.js → chunk-F3VURV3Q.js} +2 -2
  17. package/dist/chunks/chunk-F4WS5QIT.js +54 -0
  18. package/dist/chunks/{chunk-V4ACXLID.js → chunk-GOQDMRUV.js} +1 -1
  19. package/dist/chunks/chunk-J3ZRHNGL.js +2 -0
  20. package/dist/chunks/{chunk-T3VPZRIX.js → chunk-JTX6QZEP.js} +1 -1
  21. package/dist/chunks/{chunk-H75VJFMZ.js → chunk-KLSLHUTO.js} +1 -1
  22. package/dist/chunks/{chunk-Q76GR2JM.js → chunk-M4CJXPMH.js} +1 -1
  23. package/dist/chunks/chunk-M4VGRNP6.js +2 -0
  24. package/dist/chunks/{chunk-XDVKDELR.js → chunk-RBQZVQQM.js} +1 -1
  25. package/dist/chunks/chunk-TJNIYJUH.js +2 -0
  26. package/dist/chunks/{chunk-CTC5EYSH.js → chunk-TR37PJIQ.js} +3 -3
  27. package/dist/chunks/{chunk-3XUBKIBN.js → chunk-UBHTZJEV.js} +1 -1
  28. package/dist/chunks/{chunk-V2BBMZ7I.js → chunk-WK5HTGXV.js} +1 -1
  29. package/dist/chunks/chunk-XRV4WLI7.js +2 -0
  30. package/dist/chunks/chunk-XWPC3AN4.js +1 -0
  31. package/dist/chunks/chunk-Y2NQXJ2Q.js +5 -0
  32. package/dist/chunks/{chunk-DWROB2J6.js → chunk-YNH6AUGE.js} +1 -1
  33. package/dist/chunks/cli-GGYPZNZC.js +2 -0
  34. package/dist/chunks/configuration-command-BASDSNVK.js +2 -0
  35. package/dist/chunks/{continual-OJYXVTIZ.js → continual-6EW2SLGL.js} +1 -1
  36. package/dist/chunks/core-commands-YQTVPPLJ.js +2 -0
  37. package/dist/chunks/desktop-test-JITAYXCK.js +3 -0
  38. package/dist/chunks/dist-5C6RYTQQ.js +2 -0
  39. package/dist/chunks/{extension-AZRG5IPK.js → extension-ZKWQ3ZPJ.js} +1 -1
  40. package/dist/chunks/{help-6IMGNP7A.js → help-SDEZHWZL.js} +1 -1
  41. package/dist/chunks/{opchat-OS7WAVZO.js → opchat-IOP37GN3.js} +1 -1
  42. package/dist/chunks/organizations-4LQEILYG.js +2 -0
  43. package/dist/chunks/{profile-A3YR3WVU.js → profile-MVLYUDLU.js} +1 -1
  44. package/dist/chunks/project-agent-DALYNEZ4.js +2 -0
  45. package/dist/chunks/sandbox-command-VHCKLKN5.js +2 -0
  46. package/dist/chunks/{sandbox-template-FK2TGQPK.js → sandbox-template-WY7XIMDK.js} +1 -1
  47. package/dist/chunks/{src-UIX7LWM7.js → src-22KEI2VU.js} +1 -1
  48. package/dist/chunks/{src-RZFKQSHW.js → src-R3FALV6F.js} +101 -101
  49. package/dist/chunks/taskset-YPKY3HUM.js +2 -0
  50. package/dist/chunks/{teams-bot-PASMNRFS.js → teams-bot-47H7LRFD.js} +1 -1
  51. package/dist/chunks/training-7PST5HZU.js +2 -0
  52. package/dist/chunks/{workspaces-YFAAPNVP.js → workspaces-RAHQXYWB.js} +1 -1
  53. package/dist/cli.js +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/web/assets/{App-CZo3tYaG.js → App-BzNZ7ycx.js} +28 -28
  56. package/dist/web/assets/{AppDialog-18Y9aU8z.js → AppDialog-C3H3HARP.js} +1 -1
  57. package/dist/web/assets/{AppTerminalPanel-9jAU4wYe.js → AppTerminalPanel-DIXARKfe.js} +2 -2
  58. package/dist/web/assets/{AppsView-BCYnY9mm.js → AppsView-D0xPDTPJ.js} +1 -1
  59. package/dist/web/assets/{BrowserSidebar-BVf3sUAG.js → BrowserSidebar-D5eE9O30.js} +1 -1
  60. package/dist/web/assets/{CartesianChart-iai9Dz1D.js → CartesianChart-KMVbiMJX.js} +1 -1
  61. package/dist/web/assets/{CollaborationTabs-D7bZIwFC.js → CollaborationTabs-C1LTvUbK.js} +1 -1
  62. package/dist/web/assets/{CommandMenu-diFDbKQl.js → CommandMenu-C9elnZaI.js} +1 -1
  63. package/dist/web/assets/{CommunityView-DaLkwOxW.js → CommunityView-BvXxVHmL.js} +1 -1
  64. package/dist/web/assets/{ComposerCreateImproveStrip-B59nTCE7.js → ComposerCreateImproveStrip-Cwu8EaCb.js} +1 -1
  65. package/dist/web/assets/{GetStartedView-BETryURK.js → GetStartedView-BI1j30-I.js} +1 -1
  66. package/dist/web/assets/HostedModelLearningReview-Bwkg3lyV.js +1 -0
  67. package/dist/web/assets/{HostedModelLearningSettings-FCly06RA.js → HostedModelLearningSettings-DhaT1bxX.js} +1 -1
  68. package/dist/web/assets/{LabModelVersionDetailPage-9MzQj6cy.js → LabModelVersionDetailPage-CeSm-sAq.js} +1 -1
  69. package/dist/web/assets/{LabSkillSidebar-BJHO5-J9.js → LabSkillSidebar-BzGs7EC8.js} +1 -1
  70. package/dist/web/assets/{LabsRoute-6jVWrbOO.js → LabsRoute-BQi8W0-2.js} +4 -4
  71. package/dist/web/assets/{MainChatThread-DAoPK8jG.js → MainChatThread-D3KXQ4Te.js} +2 -2
  72. package/dist/web/assets/{MainPane-LDPzuZSj.js → MainPane-J15DRf-n.js} +4 -4
  73. package/dist/web/assets/{MarkdownText-B8URwlq9.js → MarkdownText-BWIVACAt.js} +1 -1
  74. package/dist/web/assets/{Messages-Byk73D9T.js → Messages-BPbo8ih9.js} +1 -1
  75. package/dist/web/assets/{NativeSkillSidebar-BodHqCCH.js → NativeSkillSidebar-BeqI4dXF.js} +1 -1
  76. package/dist/web/assets/{NewExperienceSwitcher-BkUxxlOu.js → NewExperienceSwitcher-BggrQVIi.js} +1 -1
  77. package/dist/web/assets/{NewProjectDialog-BZr2wm-4.js → NewProjectDialog-B4PTFf78.js} +1 -1
  78. package/dist/web/assets/{OutputsPage-C8ZDtD1Y.js → OutputsPage-DChjcyaP.js} +1 -1
  79. package/dist/web/assets/{ProjectsPage-CgfjGsl2.js → ProjectsPage-BdUkyg6I.js} +1 -1
  80. package/dist/web/assets/{RightChatPanelStack-DV3csVka.js → RightChatPanelStack-CLCOzLVJ.js} +1 -1
  81. package/dist/web/assets/{RightSidebarHomePanel-DvLaHLBb.js → RightSidebarHomePanel-qs2Fa4JQ.js} +1 -1
  82. package/dist/web/assets/{ScheduledWorkPage-DtzxPTAL.js → ScheduledWorkPage-DzehKDhk.js} +1 -1
  83. package/dist/web/assets/{SettingsView-C3sVxgPc.js → SettingsView-DJiJKYWW.js} +3 -3
  84. package/dist/web/assets/{TeamChatView-B-w2nrWF.js → TeamChatView-uGwanVsA.js} +1 -1
  85. package/dist/web/assets/{TerminalOverlay-_X7WVAev.js → TerminalOverlay-DJNdErEp.js} +1 -1
  86. package/dist/web/assets/{TrainingCreationPanel-DaVppW1m.js → TrainingCreationPanel-CwyKMNwt.js} +1 -1
  87. package/dist/web/assets/{TrainingDraftPanel-CVj19T6L.js → TrainingDraftPanel-Rdusv4s_.js} +1 -1
  88. package/dist/web/assets/{UsageSettingsSection-fRTHVjhG.js → UsageSettingsSection-BkRalGcP.js} +1 -1
  89. package/dist/web/assets/{WorkSidebarPanel-CGOQwdIW.js → WorkSidebarPanel-d8PB-XNy.js} +1 -1
  90. package/dist/web/assets/{WorkspaceDiffPanel-D6hbMv14.js → WorkspaceDiffPanel-DfpyLroX.js} +3 -3
  91. package/dist/web/assets/{WorkspaceEnvironmentMenu-rWj1aDI4.js → WorkspaceEnvironmentMenu-DhUUB-lq.js} +1 -1
  92. package/dist/web/assets/{WorkspaceGitDialogs-DVU5SrD-.js → WorkspaceGitDialogs-0juVLtVy.js} +1 -1
  93. package/dist/web/assets/{WorkspaceMonacoEditor-D78JPviN.js → WorkspaceMonacoEditor-Blo5esSN.js} +3 -3
  94. package/dist/web/assets/{arrow-up-right-CnaPKXjg.js → arrow-up-right-BXeo-8KJ.js} +1 -1
  95. package/dist/web/assets/{chat-file-links-D1INEr8r.js → chat-file-links-BEbA_E33.js} +1 -1
  96. package/dist/web/assets/chevron-up-Dx5rir4H.js +1 -0
  97. package/dist/web/assets/{clipboard-B8GTg8tx.js → clipboard-17OIp5F-.js} +1 -1
  98. package/dist/web/assets/{cloud-upload-BlEc_10E.js → cloud-upload-D28o8URw.js} +1 -1
  99. package/dist/web/assets/{cssMode-BiYvezMD.js → cssMode-DDPYV_bh.js} +1 -1
  100. package/dist/web/assets/{folder-open-BaNdbDD5.js → folder-open-CqBlANkk.js} +1 -1
  101. package/dist/web/assets/{folder-plus-BQhz_VxM.js → folder-plus-DkUnvZhx.js} +1 -1
  102. package/dist/web/assets/{git-commit-horizontal-wv523Ooq.js → git-commit-horizontal-BEIomQj0.js} +1 -1
  103. package/dist/web/assets/{htmlMode-BaMdOCq4.js → htmlMode-gF-t3JxJ.js} +1 -1
  104. package/dist/web/assets/{index-DP8vqolj.js → index-Dg_FWrRZ.js} +2 -2
  105. package/dist/web/assets/{info-C0Ova1D9.js → info-n9PKmODI.js} +1 -1
  106. package/dist/web/assets/{jsonMode-BTt0GByK.js → jsonMode-B5DVQ7wE.js} +1 -1
  107. package/dist/web/assets/{lspLanguageFeatures-C-1acLbv.js → lspLanguageFeatures-FK4QlUnB.js} +1 -1
  108. package/dist/web/assets/{minimize-2-CW5KYp0W.js → minimize-2--J7-Zqg1.js} +1 -1
  109. package/dist/web/assets/{monaco.contribution-DoAhyjpn.js → monaco.contribution-CM_Srh4F.js} +2 -2
  110. package/dist/web/assets/{monaco.contribution-P9b5cZU2.js → monaco.contribution-CV2W_Ydj.js} +2 -2
  111. package/dist/web/assets/{monaco.contribution-DyKzYxR3.js → monaco.contribution-DCmsluF_.js} +2 -2
  112. package/dist/web/assets/{monaco.contribution-CpiBa8rP.js → monaco.contribution-DEkLSjvo.js} +2 -2
  113. package/dist/web/assets/{play-jV1i4pfe.js → play-CT6lFZDI.js} +1 -1
  114. package/dist/web/assets/{python-BQnnGrv3.js → python-DQHHAEpa.js} +1 -1
  115. package/dist/web/assets/{refresh-cw-REnkUGNy.js → refresh-cw-Cm-4hHSn.js} +1 -1
  116. package/dist/web/assets/{save-B2WTTCI_.js → save-CwgR_oyc.js} +1 -1
  117. package/dist/web/assets/{square-CRb2lKMC.js → square-DPrPBeHW.js} +1 -1
  118. package/dist/web/assets/{toggleHighContrast-BGsGhGW4.js → toggleHighContrast-C1QZjrPj.js} +1 -1
  119. package/dist/web/assets/{tsMode-BWtSmvFs.js → tsMode-DY4Ji1ac.js} +1 -1
  120. package/dist/web/assets/{upload-B_PICaZn.js → upload-DABGNAIq.js} +1 -1
  121. package/dist/web/assets/{useLocalAgentSchedules-zmmvBnwd.js → useLocalAgentSchedules-D5P28Jej.js} +1 -1
  122. package/dist/web/assets/{wifi-off-CjKTt0zE.js → wifi-off-CJOdJJRb.js} +1 -1
  123. package/dist/web/assets/{workers-CxglqyKV.js → workers-BLjr7D_D.js} +1 -1
  124. package/dist/web/assets/{yaml-DgyPsmb2.js → yaml-eXk00scV.js} +1 -1
  125. package/dist/web/index.html +1 -1
  126. package/package.json +1 -1
  127. package/dist/chunks/actions-command-CZD7U6CC.js +0 -2
  128. package/dist/chunks/app-server-runtime-5XZWU7JL.js +0 -2
  129. package/dist/chunks/apps-NIQBGOGH.js +0 -2
  130. package/dist/chunks/chunk-3YAGJU2X.js +0 -2
  131. package/dist/chunks/chunk-G2VYRU27.js +0 -5
  132. package/dist/chunks/chunk-HZP5U2AA.js +0 -3
  133. package/dist/chunks/chunk-J3WNPOLS.js +0 -2
  134. package/dist/chunks/chunk-NNLI4OWY.js +0 -53
  135. package/dist/chunks/chunk-SS3EG6S2.js +0 -2
  136. package/dist/chunks/chunk-Y7ZYJQGZ.js +0 -2
  137. package/dist/chunks/cli-GWKOPTLS.js +0 -2
  138. package/dist/chunks/configuration-command-OAZNWOFX.js +0 -2
  139. package/dist/chunks/core-commands-VGUAOSWS.js +0 -2
  140. package/dist/chunks/desktop-test-SPTFR43A.js +0 -3
  141. package/dist/chunks/dist-UA2RQUA4.js +0 -2
  142. package/dist/chunks/organizations-QPACFCMH.js +0 -2
  143. package/dist/chunks/project-agent-5H6VCDAY.js +0 -2
  144. package/dist/chunks/sandbox-command-RKUHXCZJ.js +0 -2
  145. package/dist/chunks/taskset-PISBOILQ.js +0 -2
  146. package/dist/chunks/training-2NDOWH5S.js +0 -2
  147. package/dist/web/assets/HostedModelLearningReview-D5JtAiLZ.js +0 -1
  148. package/dist/web/assets/chevron-up-Bx5d_Wmr.js +0 -1
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{a as v,b as I}from"./chunk-GLUWATL5.js";import{Pa as L,Qa as E}from"./chunk-F4WS5QIT.js";import{f as w}from"./chunk-H7IWJN7L.js";import{a}from"./chunk-FTQLQJQV.js";var T=class extends Error{constructor(t,e){super(`API request timed out after ${t}ms: ${e}`);this.timeoutMs=t;this.requestUrl=e;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{a(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},S=class extends Error{constructor(t,e){super(`API response exceeded ${t} bytes: ${e}`);this.maximumBytes=t;this.requestUrl=e;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{a(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},O=class extends Error{constructor(t,e,s,r=null){let c=r||e;super(`${s} failed: ${t}${c?` ${c}`:""}`);this.status=t;this.apiMessage=r;this.name="OpenPondApiError",this.code=e||"OPENPOND_API_ERROR"}status;apiMessage;static{a(this,"OpenPondApiError")}code};async function i(o,n,t,e={}){let{timeoutMs:s=3e4,maxResponseBytes:r=8388608,explicitBearerAuth:c=!1,...p}=e,d=`${o}${t}`,m=new Headers(p.headers);m.set("Content-Type","application/json");let g=c?void 0:process.env.OPENPOND_API_KEY,h=n?.trim()||"",u=!c&&h.startsWith("opk_"),x=g||(u?h:null);x&&!m.has("openpond-api-key")&&m.set("openpond-api-key",x),n?m.set("Authorization",u?`ApiKey ${h}`:`Bearer ${n}`):g&&!m.has("Authorization")&&m.set("Authorization",`ApiKey ${g}`);let y=new AbortController,f=new T(s,d),R=s>0?setTimeout(()=>y.abort(f),s):null;R?.unref?.();let P=C(p.signal,y.signal,s),k=a(()=>{R&&clearTimeout(R)},"cleanup");try{let A=await fetch(d,{...p,headers:m,signal:P});return q(A,{cleanup:k,maximumBytes:r,requestUrl:d,timeoutController:y,timeoutError:f})}catch(A){throw k(),y.signal.aborted?f:A}}a(i,"apiFetch");async function l(o,n){let t;try{let e=await o.text();t=e?JSON.parse(e):{}}catch(e){if(e instanceof T||e instanceof S)throw e;t={}}if(!o.ok){let e=typeof t.error=="string"?t.error:null,s=typeof t.message=="string"?t.message:null;throw new O(o.status,e,n,s)}return t}a(l,"readApiJson");function q(o,n){if(!o.body)return n.cleanup(),o;let t=Number(o.headers.get("content-length"));if(n.maximumBytes>0&&Number.isFinite(t)&&t>n.maximumBytes)throw n.cleanup(),o.body.cancel(),new S(n.maximumBytes,n.requestUrl);let e=o.body.getReader(),s=0,r=new ReadableStream({async pull(c){try{let p=await e.read();if(p.done){n.cleanup(),c.close();return}if(s+=p.value.byteLength,n.maximumBytes>0&&s>n.maximumBytes){n.cleanup(),await e.cancel(),c.error(new S(n.maximumBytes,n.requestUrl));return}c.enqueue(p.value)}catch(p){n.cleanup(),c.error(n.timeoutController.signal.aborted?n.timeoutError:p)}},async cancel(c){n.cleanup(),await e.cancel(c)}});return new Response(r,{headers:o.headers,status:o.status,statusText:o.statusText})}a(q,"boundedResponse");function C(o,n,t){return t<=0?o??void 0:o?AbortSignal.any([o,n]):n}a(C,"composedSignal");async function U(o,n,t,e,s){let r=await i(o,n,`/v4/apps/${t}/commits`,{method:"POST",body:JSON.stringify({files:e,message:s})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Commit failed: ${r.status} ${c}`)}return await r.json()}a(U,"commitFiles");async function _(o,n,t,e){let s=e?.environment??"production",r=await i(o,n,`/v4/apps/${t}/deployments`,{method:"POST",body:JSON.stringify({environment:s,...e?.commitSha?{commitSha:e.commitSha}:{},...e?.branch?{branch:e.branch}:{}})});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Deploy failed: ${r.status} ${c}`)}return await r.json()}a(_,"deployApp");async function j(o,n,t,e){let s=await i(o,n,`/v4/apps/${encodeURIComponent(t)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(e)});return l(s,"Preview promotion")}a(j,"promotePreviewToProduction");async function B(o,n,t,e){let s=await i(o,n,`/v1/apps/${encodeURIComponent(t)}/lifecycle/start`,{method:"POST",body:JSON.stringify(e)});return l(s,"App lifecycle start")}a(B,"startAppLifecycle");async function G(o,n,t){let e=await i(o,n,`/apps/deployments/${t}/logs`,{method:"GET"});if(!e.ok){let c=await e.text().catch(()=>"");throw new Error(`Deployment logs failed: ${e.status} ${c}`)}let s=await e.json().catch(()=>({}));return(Array.isArray(s.logs)?s.logs:[]).map(c=>{let p=typeof c.createdAt=="string"?c.createdAt:c.createdAt instanceof Date?c.createdAt.toISOString():new Date().toISOString();return{id:typeof c.id=="string"?c.id:`${Math.random()}`,type:typeof c.type=="string"?c.type:void 0,message:typeof c.message=="string"?c.message:"",createdAt:p}})}a(G,"getDeploymentLogs");async function J(o,n,t){let e=await i(o,n,`/apps/deployments/${t}/status`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment status failed: ${e.status} ${r}`)}return{status:(await e.json().catch(()=>({}))).deployment?.status}}a(J,"getDeploymentStatus");async function M(o,n,t,e){let s=new URLSearchParams;e?.status&&e.status.length>0&&s.set("status",e.status.join(",")),e?.createdAfter&&s.set("createdAfter",e.createdAfter),e?.branch&&s.set("branch",e.branch);let r=s.toString(),c=await i(o,n,`/apps/${t}/deployments/latest${r?`?${r}`:""}`,{method:"GET"});if(!c.ok){let d=await c.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${c.status} ${d}`)}let p=await c.json().catch(()=>({}));return p.deployment?{id:p.deployment.id,status:p.deployment.status}:null}a(M,"getLatestDeploymentForApp");async function F(o,n,t){let e=await i(o,n,`/apps/deployments/${t}`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${e.status} ${r}`)}return(await e.json().catch(()=>({}))).deployment??null}a(F,"getDeploymentDetail");var H=new URL(I).hostname,V=new URL(v).hostname;async function ae(o,n,t){let e=new URLSearchParams;t?.handle&&e.set("handle",t.handle),typeof t?.limit=="number"&&Number.isFinite(t.limit)&&e.set("limit",String(Math.max(1,Math.floor(t.limit)))),typeof t?.offset=="number"&&Number.isFinite(t.offset)&&e.set("offset",String(Math.max(0,Math.floor(t.offset)))),typeof t?.includeScheduled=="boolean"&&e.set("includeScheduled",t.includeScheduled?"true":"false");let s=e.toString(),r=await i(o,n,`/apps/list${s?`?${s}`:""}`,{method:"GET"});if(!r.ok){let p=await r.text().catch(()=>"");throw new Error(`Apps list failed: ${r.status} ${p}`)}let c=await r.json().catch(()=>({}));return Array.isArray(c.apps)?c.apps:[]}a(ae,"listApps");async function ie(o,n,t){let e=await i(o,n,"/api/projects/local",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Create project failed: ${e.status} ${s}`)}return await e.json()}a(ie,"createLocalProject");async function ce(o,n,t){let e=await i(o,n,"/apps/repo/create",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Repo create failed: ${e.status} ${s}`)}return await e.json()}a(ce,"createRepo");async function pe(o,n,t,e){let s=await i(o,n,`/apps/${encodeURIComponent(t)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:e})});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Code visibility update failed: ${s.status} ${r}`)}return await s.json()}a(pe,"updateAppCodeVisibility");async function ue(o,n,t,e){let s=await i(o,n,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:t,...e?{teamId:e}:{}})});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Headless create failed: ${s.status} ${r}`)}return await s.json()}a(ue,"createHeadlessApps");async function le(o,n,t){let e=await i(o,n,`/v4/apps/${t}/template/status`,{method:"GET"});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Template status failed: ${e.status} ${s}`)}return await e.json()}a(le,"getTemplateStatus");async function de(o,n,t){let e=await i(o,n,`/v4/apps/${t}/template/branches`,{method:"GET"});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Template branches failed: ${e.status} ${s}`)}return await e.json()}a(de,"listTemplateBranches");async function me(o,n,t,e){let s=await i(o,n,`/v4/apps/${t}/template/deploy-latest`,{method:"POST",body:JSON.stringify(e)});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Template deploy failed: ${s.status} ${r}`)}return await s.json()}a(me,"deployLatestTemplate");async function ge(o,n,t,e){let s=await i(o,n,`/v4/apps/${t}/environment`,{method:"POST",body:JSON.stringify(e)});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Environment update failed: ${s.status} ${r}`)}return await s.json()}a(ge,"updateAppEnvironment");async function he(o,n,t){let e=await i(o,n,`/v4/apps/${t}/environment`,{method:"GET"});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Environment get failed: ${e.status} ${s}`)}return await e.json()}a(he,"getAppEnvironment");async function ye(o,n){let t=await i(o,n,"/api/tools/manifest",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${t.status} ${e}`)}return await t.json()}a(ye,"fetchToolManifest");async function fe(o,n){let t=await i(o,n,"/apps/tools",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Tools lookup failed: ${t.status} ${e}`)}return await t.json()}a(fe,"listUserTools");async function Re(o,n,t){let e=await i(o,n,`/apps/${encodeURIComponent(t)}/schedules`,{method:"GET"});if(!e.ok){let r=await e.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${e.status} ${r}`)}let s=await e.json().catch(()=>({}));return{schedules:Array.isArray(s.schedules)?s.schedules:[]}}a(Re,"listAppSchedules");async function we(o,n,t={}){let e=new URLSearchParams;t.domain&&e.set("domain",t.domain),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion),typeof t.limit=="number"&&e.set("limit",String(t.limit));for(let c of t.tags??[])e.append("tag",c);let s=e.toString(),r=await i(o,n,`/v1/opentool/recipes${s?`?${s}`:""}`,{method:"GET"});return l(r,"OpenTool recipe list")}a(we,"listOpenToolRecipes");async function Se(o,n,t){let e=await i(o,n,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool recipe search")}a(Se,"searchOpenToolRecipes");async function xe(o,n,t){let e=new URLSearchParams;typeof t.includeExamples=="boolean"&&e.set("includeExamples",String(t.includeExamples)),typeof t.includeTests=="boolean"&&e.set("includeTests",String(t.includeTests)),t.opentoolVersion&&e.set("opentoolVersion",t.opentoolVersion);let s=e.toString(),r=await i(o,n,`/v1/opentool/recipes/${encodeURIComponent(t.id)}${s?`?${s}`:""}`,{method:"GET"});return l(r,"OpenTool recipe get")}a(xe,"getOpenToolRecipe");async function Te(o,n,t){let e=await i(o,n,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(t)});return l(e,"OpenTool rules get")}a(Te,"getOpenToolRules");function b(o){let n=new URLSearchParams;typeof o=="number"&&Number.isFinite(o)&&n.set("limit",String(Math.max(1,Math.floor(o))));let t=n.toString();return t?`?${t}`:""}a(b,"buildLimitQuery");function D(o){if(Array.isArray(o))return o;if(!o||typeof o!="object")return[];let n=o;return Array.isArray(n.logs)?n.logs:Array.isArray(n.runs)?n.runs:Array.isArray(n.scheduleRuns)?n.scheduleRuns:Array.isArray(n.items)?n.items:[]}a(D,"normalizeScheduleExecutionLogs");async function Pe(o,n,t,e){let s={...e?.preferredScheduleId?{preferredScheduleId:e.preferredScheduleId}:{},...e?.scheduleId?{scheduleId:e.scheduleId}:{},...e?.startAt?{startAt:e.startAt}:{},...e&&"endAt"in e?{endAt:e.endAt??null}:{}},r=await i(o,n,`/apps/${encodeURIComponent(t)}/schedules/start`,{method:"POST",body:JSON.stringify(s)});return l(r,"Schedule start")}a(Pe,"startAppSchedules");async function Ae(o,n,t){let e=await i(o,n,`/apps/${encodeURIComponent(t)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return l(e,"Schedule stop")}a(Ae,"stopAppSchedules");async function Ee(o,n){let t=await i(o,n,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return l(t,"Current schedule stop")}a(Ee,"stopCurrentAppSchedules");async function Oe(o,n,t){let e=await i(o,n,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:t.scheduleId})});return l(e,"Schedule run")}a(Oe,"runScheduleNow");async function be(o,n,t,e){let s=await i(o,n,`/apps/${encodeURIComponent(t)}/schedules/${encodeURIComponent(e)}`,{method:"DELETE"});return l(s,"Schedule delete")}a(be,"deleteOrArchiveSchedule");async function $e(o,n,t,e){let s=await i(o,n,`/v1/schedules/${encodeURIComponent(t)}/execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(s,"Schedule execution logs");return{logs:D(r)}}a($e,"listScheduleExecutionLogs");async function ke(o,n,t,e){let s=await i(o,n,`/v1/deployments/${encodeURIComponent(t)}/schedule-execution-logs${b(e?.limit)}`,{method:"GET"}),r=await l(s,"Deployment schedule execution logs");return{logs:D(r)}}a(ke,"listDeploymentScheduleExecutionLogs");async function Le(o,n,t){let e=await i(o,n,`/v1/schedule-execution-logs/${encodeURIComponent(t)}`,{method:"GET"});return l(e,"Schedule execution log")}a(Le,"getScheduleExecutionLog");async function ve(o,n,t,e){let s=await i(o,n,`/v1/apps/${encodeURIComponent(t)}/execution-timeline${b(e?.limit)}`,{method:"GET"});return l(s,"App execution timeline")}a(ve,"getAppExecutionTimeline");async function Ie(o,n,t){return i(o,n,"/apps/agent/create",{method:"POST",body:JSON.stringify(t)})}a(Ie,"createAgentFromPrompt");async function De(o,n,t){let e=new URLSearchParams;t?.appId&&e.set("appId",t.appId);let s=e.toString(),r=await i(o,n,`/apps/performance${s?`?${s}`:""}`,{method:"GET"});if(!r.ok){let c=await r.text().catch(()=>"");throw new Error(`Performance lookup failed: ${r.status} ${c}`)}return await r.json()}a(De,"getUserPerformance");async function Ne(o,n,t){let e=new URLSearchParams({appId:t}),s=await i(o,n,`/apps/summary?${e.toString()}`,{method:"GET"});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Summary lookup failed: ${s.status} ${r}`)}return await s.json()}a(Ne,"getAppRuntimeSummary");async function z(o,n){let t=await i(o,n,"/v1/account",{method:"GET"});if(!t.ok){let e=await t.text().catch(()=>"");throw new Error(`Account lookup failed: ${t.status} ${e}`)}return await t.json()}a(z,"getOpenPondAccount");async function qe(o,n){let t=new Date().toISOString(),e=Date.now(),s=o.replace(/\/$/,"");try{let r=await i(s,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),c=Date.now()-e,p=await r.json().catch(()=>({})),d=null,m=null;if(n?.trim())try{let g=await z(s,n);d=!0,m=g.account}catch{d=!1}return{reachable:r.ok,authenticated:d,apiBase:s,latencyMs:c,status:r.status,service:typeof p.service=="string"?p.service:null,checkedAt:t,account:m,...r.ok?{}:{error:r.statusText||`HTTP ${r.status}`}}}catch(r){return{reachable:!1,authenticated:n?.trim()?!1:null,apiBase:s,latencyMs:Date.now()-e,status:null,service:null,checkedAt:t,error:r instanceof Error?r.message:String(r)}}}a(qe,"checkOpenPondApiHealth");async function Ce(o,n,t){let e=await i(o,n,"/apps/assistant/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Assistant run failed: ${e.status} ${s}`)}return await e.json()}a(Ce,"runAssistantMode");async function Ue(o,n,t){let e=await i(o,n,"/apps/agent/digest",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Agent digest failed: ${e.status} ${s}`)}return await e.json()}a(Ue,"postAgentDigest");async function _e(o,n,t){let e=await i(o,n,"/apps/tools/execute",{method:"POST",body:JSON.stringify(t)}),s=await e.text().catch(()=>""),r=null;try{r=s?JSON.parse(s):null}catch{r=s}return e.ok?{ok:!0,status:e.status,data:r}:{ok:!1,status:e.status,error:r&&typeof r=="object"&&"error"in r?String(r.error):s||e.statusText}}a(_e,"executeUserTool");async function je(o,n,t){let e=await i(o,n,"/apps/backtests/run",{method:"POST",body:JSON.stringify(t)});if(!e.ok){let s=await e.text().catch(()=>"");throw new Error(`Backtest run failed: ${e.status} ${s}`)}return await e.json()}a(je,"submitBacktestRun");async function Be(o,n,t){let e=t.query&&Object.keys(t.query).length>0?`?${new URLSearchParams(t.query).toString()}`:"",s=await i(o,n,`/apps/backtests/tx${e}`,{method:t.method,body:t.method==="POST"&&t.body!==void 0?JSON.stringify(t.body):void 0});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Backtests request failed: ${s.status} ${r}`)}return await s.json()}a(Be,"submitBacktestTx");async function Ge(o,n,t){let e=new URLSearchParams(t).toString(),s=await i(o,n,`/apps/backtests/detail?${e}`,{method:"GET"});if(!s.ok){let r=await s.text().catch(()=>"");throw new Error(`Backtest detail failed: ${s.status} ${r}`)}return await s.json()}a(Ge,"submitBacktestDetail");function K(o){let n=o.trim().replace(/^\/+/,"");return encodeURIComponent(n||"tool")}a(K,"normalizeToolPathSegment");function W(o){let n=o.replace(/\/$/,""),t=process.env.OPENPOND_TOOL_URL;if(t)return t.replace(/\/$/,"");try{let e=new URL(n),s=e.hostname.toLowerCase(),r=s==="apps.openpond.live"?null:s===H||s===V||s==="openpond.live"||s==="www.openpond.live"?"https://apps.openpond.live":null;if(r)return r;let c=s==="localhost"||s==="127.0.0.1",p=e.port||(e.protocol==="https:"?"443":"80");if(c&&p==="3000")return n}catch{}return n}a(W,"resolveWorkerBaseUrl");async function Je(o,n,t){let e=W(o),s=K(t.toolName),c=`${t.deploymentId?`/${t.appId}/deployments/${t.deploymentId}`:`/${t.appId}`}/${s}`,p=new Headers(t.headers||{}),d=t.method??"POST",m=t.body===void 0||d==="GET"?void 0:JSON.stringify(t.body),g=await i(e,n,c,{method:d,body:m,headers:p}),h=await g.text().catch(()=>""),u=null;try{u=h?JSON.parse(h):null}catch{u=h}let x=u&&typeof u=="object"&&"ok"in u?!!u.ok:!0,y=g.ok&&x,f=u&&typeof u=="object"&&"status"in u&&Number(u.status)||g.status,R=u&&typeof u=="object"&&"error"in u?String(u.error):g.ok?void 0:h||g.statusText,P=u&&typeof u=="object"&&"data"in u?u.data:u;return{ok:y,status:f,data:P,error:R}}a(Je,"executeHostedTool");import{createHash as Y}from"node:crypto";var X=3600*1e3;function $(o){return Y("sha256").update(JSON.stringify([o.apiBase.replace(/\/$/,""),o.apiKey.trim()])).digest("hex")}a($,"buildCacheKey");async function N(o,n){let t=await L(w(),o,$(n),{allowStale:!0});return!t||Date.now()-Date.parse(t.updatedAt)>=(n.ttlMs??X)?null:t.payload}a(N,"cached");async function ot(o){return N("cloud.apps",o)}a(ot,"getCachedApps");async function st(o){await E(w(),"cloud.apps",$(o),o.apps)}a(st,"setCachedApps");async function rt(o){return N("cloud.tools",o)}a(rt,"getCachedTools");async function at(o){await E(w(),"cloud.tools",$(o),o.tools)}a(at,"setCachedTools");var pt=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{i as a,U as b,_ as c,j as d,B as e,G as f,J as g,M as h,F as i,ae as j,ie as k,ce as l,pe as m,ue as n,le as o,de as p,me as q,ge as r,he as s,ye as t,fe as u,Re as v,we as w,Se as x,xe as y,Te as z,Pe as A,Ae as B,Ee as C,Oe as D,be as E,$e as F,ke as G,Le as H,ve as I,Ie as J,De as K,Ne as L,z as M,qe as N,Ce as O,Ue as P,_e as Q,je as R,Be as S,Ge as T,W as U,Je as V,X as W,ot as X,st as Y,rt as Z,at as _,pt as $};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{c as x}from"./chunk-ZVOO7FKM.js";import{c as m,f as R,g as S,h as T}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{readFile as $}from"node:fs/promises";import{request as D}from"node:http";import{randomUUID as L}from"node:crypto";import H from"node:os";import U from"node:path";import{createInterface as _}from"node:readline/promises";var B="http://127.0.0.1:17874",J=new Set(["cancelled","completed","failed","succeeded"]);async function le(e,n,t={}){let r=n[0],o=n[1];if(!r||!["start","status","watch","logs","cancel","resume","artifacts","benchmark","create-project"].includes(r)||!o)throw new Error("usage: training <create-project|start|status|watch|logs|cancel|resume|artifacts|benchmark> <taskset-id|model-run-id|run-id|model-id>");if(n.length>2)throw new Error(`training ${r} accepts exactly one identifier`);let s=x(e)??process.env.OPENPOND_LOCAL_API_URL?.replace(/\/$/,"")??B,i=new A({baseUrl:s,request:t.request??await G(s)}),c=R(e.json);if(r==="create-project"){let f=await F({client:i,options:e,tasksetId:o});I(f,c);return}if(r==="benchmark"){await V({client:i,modelId:o,options:e,json:c,sleep:t.sleep});return}if(r==="resume"){let f=await i.modelRun(o,"resume","POST");I(f,c),await M({client:i,runId:o,json:c,intervalMs:T(e.intervalMs,"interval-ms")??2e3,sleep:t.sleep});return}if(r==="start"){await W({client:i,dependencies:t,json:c,modelRunId:o,options:e});return}if(r==="watch"){await M({client:i,runId:o,json:c,intervalMs:T(e.intervalMs,"interval-ms")??2e3,sleep:t.sleep});return}let p=r==="status"?"status":r==="logs"?"logs":r==="artifacts"?"artifacts":"cancel",u=await i.modelRun(o,p,r==="cancel"?"POST":"GET");I(u,c)}a(le,"runTrainingCommand");async function G(e){let n=new URL(e);if(n.protocol!=="http:"||!["127.0.0.1","localhost","::1"].includes(n.hostname))return fetch;let t=process.env.OPENPOND_HOME?.trim()||U.join(H.homedir(),".openpond","openpond-app"),r=(await $(U.join(t,"token"),"utf8")).trim();if(!r)throw new Error("OpenPond local capability token is empty.");return(async(o,s={})=>{let i=o instanceof Request?new URL(o.url):new URL(String(o)),c=new Headers(s.headers);c.set("authorization",`Bearer ${r}`);let p={};return c.forEach((u,f)=>{p[f]=u}),new Promise((u,f)=>{let b=!1,w=D(i,{method:s.method??"GET",headers:p},l=>{let j=[];l.on("data",g=>j.push(g)),l.once("error",y),l.once("end",()=>{if(b)return;b=!0;let g=new Headers;for(let[k,h]of Object.entries(l.headers))if(Array.isArray(h))for(let P of h)g.append(k,P);else h!==void 0&&g.set(k,h);u(new Response(new Uint8Array(Buffer.concat(j)),{status:l.statusCode??500,statusText:l.statusMessage,headers:g}))})}),y=a(l=>{b||(b=!0,f(l))},"rejectOnce");if(w.once("error",y),s.signal){let l=a(()=>w.destroy(s.signal?.reason instanceof Error?s.signal.reason:new Error("Training API request aborted.")),"abort");s.signal.aborted?l():s.signal.addEventListener("abort",l,{once:!0})}if(s.body!==void 0&&s.body!==null){if(typeof s.body!="string"&&!(s.body instanceof Uint8Array)){w.destroy(new Error("Local Training API supports string or byte request bodies."));return}w.write(s.body)}w.end()})})}a(G,"createLocalAuthenticatedRequest");var A=class{static{a(this,"TrainingApiClient")}baseUrl;request;constructor(n){this.baseUrl=n.baseUrl.replace(/\/$/,""),this.request=n.request??fetch}modelRun(n,t,r,o){return this.json(`/v1/training/model-runs/${encodeURIComponent(n)}/${t}`,r,o)}prepareModelProject(n,t){return this.json(`/v1/training/model-projects/${encodeURIComponent(n)}/training/prepare`,"POST",t)}startModelProject(n,t){return this.json(`/v1/training/model-projects/${encodeURIComponent(n)}/training/start`,"POST",t)}trainingState(){return this.json("/v1/training","GET")}startHarnessRefinerBenchmark(n,t){return this.json(`/v1/training/models/${encodeURIComponent(n)}/harness-refiner-benchmark`,"POST",t)}importTasksetDraftPackage(n){return this.json("/v1/training/taskset-drafts/import","POST",n)}publishTasksetDraft(n,t){return this.json(`/v1/training/taskset-drafts/${encodeURIComponent(n)}/publish`,"POST",t?{modelId:t}:{})}tasksetReadiness(n){return this.json("/v1/training/readiness","POST",{tasksetId:n})}deleteTasksetDraft(n){return this.json(`/v1/training/taskset-drafts/${encodeURIComponent(n)}`,"DELETE")}saveModelProject(n){return this.json("/v1/training/models","PUT",n)}async json(n,t,r){let o=await this.request(`${this.baseUrl}${n}`,{method:t,headers:r===void 0?{Accept:"application/json"}:{Accept:"application/json","Content-Type":"application/json"},body:r===void 0?void 0:JSON.stringify(r)}),s=await o.text(),i=null;if(s)try{i=JSON.parse(s)}catch{i=s}if(!o.ok){let c=i&&typeof i=="object"&&"error"in i&&typeof i.error=="string"?i.error:`${o.status} ${o.statusText}`.trim();throw new Error(`Training API request failed: ${c}`)}return i}};async function V(e){let n=await e.client.trainingState(),t=z(n,e.modelId),r=m(e.options,"provider")||"openpond",o=m(e.options,"model")||"openpond-chat",s=m(e.options,"reasoningEffort")||"high",i=S(e.options.maxSpend,"max-spend")??10;if(i<=0)throw new Error("max-spend must be greater than zero");if(R(e.options.detach))throw new Error("Harness Refiner benchmark runs must be watched to terminal state.");let c=await e.client.startHarnessRefinerBenchmark(e.modelId,{profileId:t.profileId,model:{providerId:r,modelId:o},reasoningEffort:s==="none"?"none":s,maximumSpendUsd:i});I(c,e.json);let p=d(c,"id");if(!p)throw new Error("Benchmark start did not return a Model Run id.");await M({client:e.client,runId:p,json:e.json,intervalMs:T(e.options.intervalMs,"interval-ms")??2e3,sleep:e.sleep})}a(V,"startHarnessRefinerBenchmark");function z(e,n){if(!e||typeof e!="object"||!("modelProjects"in e))throw new Error("Training state did not include Models.");let r=(Array.isArray(e.modelProjects)?e.modelProjects:[]).find(s=>s&&typeof s=="object"&&"id"in s&&s.id===n),o=r&&typeof r=="object"?d(r,"profileId"):null;if(!o)throw new Error(`Model ${n} was not found.`);return{profileId:o}}a(z,"modelProject");function d(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return typeof t=="string"&&t?t:null}a(d,"objectString");async function F(e){let n=m(e.options,"recipe");if(!n)throw new Error("training create-project requires --recipe <versioned-recipe.json>");let t=await Q(n,"Training recipe"),r=await e.client.trainingState(),o=K(r,"tasksets",e.tasksetId,"Taskset"),s=m(e.options,"profile")||d(o,"profileId");if(!s)throw new Error(`The Taskset has no Profile id (received ${typeof o.profileId}: ${String(o.profileId)}).`);let i=d(o,"profileId");if(i!==s)throw new Error(`Taskset ${e.tasksetId} belongs to Profile ${i??"unknown"}, not ${s}.`);let c=m(e.options,"projectId")||`model_${L()}`,u=C(r,"modelProjects").find(E=>d(E,"id")===c),f=O(e.options,"rolloutPlacement",["local","remote"],"local"),b=O(e.options,"gpuPlacementObjective",["fast","balanced","economical"],"balanced"),w=O(e.options,"runPreset",["small","standard","custom","small_experiment"],"custom"),y=S(e.options.maxSpend,"max-spend")??null;if(y!==null&&y<0)throw new Error("max-spend must be non-negative");let l=T(e.options.retentionDays,"retention-days")??null;if(l!==null&&l<0)throw new Error("retention-days must be non-negative");let j=new Date().toISOString(),g=d(o,"contentHash"),k=q(o,"revision");if(!g||!k||k<1)throw new Error("The Taskset does not have an immutable published revision.");let h=d(t,"method");if(!h)throw new Error("Training recipe must declare its method.");let P=Y(t);if(u){let E=v(u,"trainingSetup"),N=v(E,"tasksetRef");if(d(N,"id")!==e.tasksetId||d(u,"profileId")!==s)throw new Error(`Model Project ${c} already exists for a different Profile or Taskset.`);if(v(E,"baseModel"))throw new Error(`Model Project ${c} already exists.`);return e.client.saveModelProject({...u,revision:q(u,"revision")??1,defaultBaseModel:P,trainingSetup:{...E,baseModel:P,recipe:t},updatedAt:j})}return e.client.saveModelProject({schemaVersion:"openpond.modelProject.v2",id:c,profileId:s,revision:1,name:m(e.options,"name")||d(o,"name")||"Managed Model",objective:m(e.options,"objective")||d(o,"objective"),defaultBaseModel:P,defaultDestinationId:m(e.options,"destination")||"openpond_managed",trainingSetup:{tasksetRef:{id:e.tasksetId,revision:k,contentHash:g},tasksetRelease:null,harnessRelease:null,baseModel:P,method:h,destinationId:m(e.options,"destination")||"openpond_managed",managedRolloutPlacement:f,managedGpuPlacementObjective:b,managedGpuRequirement:"any",runPreset:w,recipe:t,preferredMaximumSpendUsd:y,preferredRetentionDays:l},hosted:null,tasksetSyncs:[],createdAt:j,updatedAt:j})}a(F,"createManagedModelProject");function Y(e){let n=v(e,"baseModel"),t=d(n,"id"),r=d(n,"revision"),o=d(n,"tokenizerRevision"),s=d(n,"chatTemplateHash");if(!t||!r||!o||!s)throw new Error("Managed GRPO recipe must pin baseModel id, revision, tokenizerRevision, and chatTemplateHash.");return{schemaVersion:"openpond.baseModelPreference.v1",modelId:t,revision:r,tokenizerRevision:o,chatTemplateHash:s,modelAssetId:null,source:"managed"}}a(Y,"managedBasePreferenceFromRecipe");function K(e,n,t,r){let o=C(e,n).find(s=>d(s,"id")===t);if(!o)throw new Error(`${r} ${t} was not found.`);return o}a(K,"trainingStateRecord");function C(e,n){if(!e||typeof e!="object"||!(n in e))return[];let t=e[n];return Array.isArray(t)?t.filter(r=>!!r&&typeof r=="object"&&!Array.isArray(r)):[]}a(C,"trainingStateRecords");function q(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return typeof t=="number"&&Number.isFinite(t)?t:null}a(q,"objectNumber");function v(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return t&&typeof t=="object"&&!Array.isArray(t)?t:null}a(v,"objectRecord");function O(e,n,t,r){let o=m(e,n)||r;if(!t.includes(o))throw new Error(`${n} must be one of ${t.join(", ")}`);return o}a(O,"enumOption");async function Q(e,n){let t;try{t=JSON.parse(await $(e,"utf8"))}catch(r){throw new Error(`Could not read ${n} ${e}: ${r instanceof Error?r.message:String(r)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${n} must be a JSON object.`);return t}a(Q,"readJsonObject");async function W(e){let n=S(e.options.maxSpend,"max-spend")??null;if(n!==null&&n<0)throw new Error("max-spend must be non-negative");let t=T(e.options.retentionDays,"retention-days")??null;if(t!==null&&t<=0)throw new Error("retention-days must be a positive integer");let r=m(e.options,"manifest"),o=r?await X(r):void 0,s=m(e.options,"comparisonSeriesEntry")||null,i={maximumSpendUsd:n,retentionDays:t},c=await e.client.prepareModelProject(e.modelRunId,i);if(e.json||(console.log("Preparation:"),console.log(JSON.stringify(c,null,2))),!(R(e.options.yes)||await Z(e.dependencies.confirm)))throw new Error("Training start cancelled.");let u=await e.client.startModelProject(e.modelRunId,{...i,exportApproved:R(e.options.exportApproved),manifest:o,comparisonSeriesEntryId:s});if(I(u,e.json),R(e.options.detach))return;let f=ee(u)??e.modelRunId;await M({client:e.client,runId:f,json:e.json,intervalMs:2e3,sleep:e.dependencies.sleep})}a(W,"startTraining");async function M(e){if(e.intervalMs<250)throw new Error("interval-ms must be at least 250");let n=e.sleep??(r=>new Promise(o=>setTimeout(o,r))),t="";for(;;){let r=await e.client.modelRun(e.runId,"status","GET"),o=JSON.stringify(r);if((e.json||o!==t)&&(I(r,e.json),t=o),J.has(ne(r)))return;await n(e.intervalMs)}}a(M,"watchTraining");async function X(e){let n;try{n=JSON.parse(await $(e,"utf8"))}catch(t){throw new Error(`Could not read Harness Run Manifest ${e}: ${t instanceof Error?t.message:String(t)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Harness Run Manifest must be a JSON object.");return n}a(X,"readManifest");async function Z(e){let n="Start this exact prepared training run? Downloads, provisioning, or spend may begin.";if(e)return e(n);if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("training start requires --yes when standard input is not interactive");let t=_({input:process.stdin,output:process.stdout});try{let r=await t.question(`${n} [y/N] `);return r.trim().toLowerCase()==="y"||r.trim().toLowerCase()==="yes"}finally{t.close()}}a(Z,"confirmStart");function ee(e){if(!e||typeof e!="object")return null;let n="job"in e?e.job:null;return!n||typeof n!="object"||!("id"in n)?null:typeof n.id=="string"?n.id:null}a(ee,"readRunId");function ne(e){return!e||typeof e!="object"?"":"state"in e&&typeof e.state=="string"?e.state:"status"in e&&typeof e.status=="string"?e.status:""}a(ne,"readStatus");function I(e,n){if(n){console.log(JSON.stringify(e));return}console.log(JSON.stringify(e,null,2))}a(I,"printResult");export{B as a,le as b,G as c,A as d};
2
+ import{c as x}from"./chunk-BSHAIAXY.js";import{c as m,f as R,g as S,h as T}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{readFile as $}from"node:fs/promises";import{request as D}from"node:http";import{randomUUID as L}from"node:crypto";import H from"node:os";import U from"node:path";import{createInterface as _}from"node:readline/promises";var B="http://127.0.0.1:17874",J=new Set(["cancelled","completed","failed","succeeded"]);async function le(e,n,t={}){let r=n[0],o=n[1];if(!r||!["start","status","watch","logs","cancel","resume","artifacts","benchmark","create-project"].includes(r)||!o)throw new Error("usage: training <create-project|start|status|watch|logs|cancel|resume|artifacts|benchmark> <taskset-id|model-run-id|run-id|model-id>");if(n.length>2)throw new Error(`training ${r} accepts exactly one identifier`);let s=x(e)??process.env.OPENPOND_LOCAL_API_URL?.replace(/\/$/,"")??B,i=new A({baseUrl:s,request:t.request??await G(s)}),c=R(e.json);if(r==="create-project"){let f=await F({client:i,options:e,tasksetId:o});I(f,c);return}if(r==="benchmark"){await V({client:i,modelId:o,options:e,json:c,sleep:t.sleep});return}if(r==="resume"){let f=await i.modelRun(o,"resume","POST");I(f,c),await M({client:i,runId:o,json:c,intervalMs:T(e.intervalMs,"interval-ms")??2e3,sleep:t.sleep});return}if(r==="start"){await W({client:i,dependencies:t,json:c,modelRunId:o,options:e});return}if(r==="watch"){await M({client:i,runId:o,json:c,intervalMs:T(e.intervalMs,"interval-ms")??2e3,sleep:t.sleep});return}let p=r==="status"?"status":r==="logs"?"logs":r==="artifacts"?"artifacts":"cancel",u=await i.modelRun(o,p,r==="cancel"?"POST":"GET");I(u,c)}a(le,"runTrainingCommand");async function G(e){let n=new URL(e);if(n.protocol!=="http:"||!["127.0.0.1","localhost","::1"].includes(n.hostname))return fetch;let t=process.env.OPENPOND_HOME?.trim()||U.join(H.homedir(),".openpond","openpond-app"),r=(await $(U.join(t,"token"),"utf8")).trim();if(!r)throw new Error("OpenPond local capability token is empty.");return(async(o,s={})=>{let i=o instanceof Request?new URL(o.url):new URL(String(o)),c=new Headers(s.headers);c.set("authorization",`Bearer ${r}`);let p={};return c.forEach((u,f)=>{p[f]=u}),new Promise((u,f)=>{let b=!1,w=D(i,{method:s.method??"GET",headers:p},l=>{let j=[];l.on("data",g=>j.push(g)),l.once("error",y),l.once("end",()=>{if(b)return;b=!0;let g=new Headers;for(let[k,h]of Object.entries(l.headers))if(Array.isArray(h))for(let P of h)g.append(k,P);else h!==void 0&&g.set(k,h);u(new Response(new Uint8Array(Buffer.concat(j)),{status:l.statusCode??500,statusText:l.statusMessage,headers:g}))})}),y=a(l=>{b||(b=!0,f(l))},"rejectOnce");if(w.once("error",y),s.signal){let l=a(()=>w.destroy(s.signal?.reason instanceof Error?s.signal.reason:new Error("Training API request aborted.")),"abort");s.signal.aborted?l():s.signal.addEventListener("abort",l,{once:!0})}if(s.body!==void 0&&s.body!==null){if(typeof s.body!="string"&&!(s.body instanceof Uint8Array)){w.destroy(new Error("Local Training API supports string or byte request bodies."));return}w.write(s.body)}w.end()})})}a(G,"createLocalAuthenticatedRequest");var A=class{static{a(this,"TrainingApiClient")}baseUrl;request;constructor(n){this.baseUrl=n.baseUrl.replace(/\/$/,""),this.request=n.request??fetch}modelRun(n,t,r,o){return this.json(`/v1/training/model-runs/${encodeURIComponent(n)}/${t}`,r,o)}prepareModelProject(n,t){return this.json(`/v1/training/model-projects/${encodeURIComponent(n)}/training/prepare`,"POST",t)}startModelProject(n,t){return this.json(`/v1/training/model-projects/${encodeURIComponent(n)}/training/start`,"POST",t)}trainingState(){return this.json("/v1/training","GET")}startHarnessRefinerBenchmark(n,t){return this.json(`/v1/training/models/${encodeURIComponent(n)}/harness-refiner-benchmark`,"POST",t)}importTasksetDraftPackage(n){return this.json("/v1/training/taskset-drafts/import","POST",n)}publishTasksetDraft(n,t){return this.json(`/v1/training/taskset-drafts/${encodeURIComponent(n)}/publish`,"POST",t?{modelId:t}:{})}tasksetReadiness(n){return this.json("/v1/training/readiness","POST",{tasksetId:n})}deleteTasksetDraft(n){return this.json(`/v1/training/taskset-drafts/${encodeURIComponent(n)}`,"DELETE")}saveModelProject(n){return this.json("/v1/training/models","PUT",n)}async json(n,t,r){let o=await this.request(`${this.baseUrl}${n}`,{method:t,headers:r===void 0?{Accept:"application/json"}:{Accept:"application/json","Content-Type":"application/json"},body:r===void 0?void 0:JSON.stringify(r)}),s=await o.text(),i=null;if(s)try{i=JSON.parse(s)}catch{i=s}if(!o.ok){let c=i&&typeof i=="object"&&"error"in i&&typeof i.error=="string"?i.error:`${o.status} ${o.statusText}`.trim();throw new Error(`Training API request failed: ${c}`)}return i}};async function V(e){let n=await e.client.trainingState(),t=z(n,e.modelId),r=m(e.options,"provider")||"openpond",o=m(e.options,"model")||"openpond-chat",s=m(e.options,"reasoningEffort")||"high",i=S(e.options.maxSpend,"max-spend")??10;if(i<=0)throw new Error("max-spend must be greater than zero");if(R(e.options.detach))throw new Error("Harness Refiner benchmark runs must be watched to terminal state.");let c=await e.client.startHarnessRefinerBenchmark(e.modelId,{profileId:t.profileId,model:{providerId:r,modelId:o},reasoningEffort:s==="none"?"none":s,maximumSpendUsd:i});I(c,e.json);let p=d(c,"id");if(!p)throw new Error("Benchmark start did not return a Model Run id.");await M({client:e.client,runId:p,json:e.json,intervalMs:T(e.options.intervalMs,"interval-ms")??2e3,sleep:e.sleep})}a(V,"startHarnessRefinerBenchmark");function z(e,n){if(!e||typeof e!="object"||!("modelProjects"in e))throw new Error("Training state did not include Models.");let r=(Array.isArray(e.modelProjects)?e.modelProjects:[]).find(s=>s&&typeof s=="object"&&"id"in s&&s.id===n),o=r&&typeof r=="object"?d(r,"profileId"):null;if(!o)throw new Error(`Model ${n} was not found.`);return{profileId:o}}a(z,"modelProject");function d(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return typeof t=="string"&&t?t:null}a(d,"objectString");async function F(e){let n=m(e.options,"recipe");if(!n)throw new Error("training create-project requires --recipe <versioned-recipe.json>");let t=await Q(n,"Training recipe"),r=await e.client.trainingState(),o=K(r,"tasksets",e.tasksetId,"Taskset"),s=m(e.options,"profile")||d(o,"profileId");if(!s)throw new Error(`The Taskset has no Profile id (received ${typeof o.profileId}: ${String(o.profileId)}).`);let i=d(o,"profileId");if(i!==s)throw new Error(`Taskset ${e.tasksetId} belongs to Profile ${i??"unknown"}, not ${s}.`);let c=m(e.options,"projectId")||`model_${L()}`,u=C(r,"modelProjects").find(E=>d(E,"id")===c),f=O(e.options,"rolloutPlacement",["local","remote"],"local"),b=O(e.options,"gpuPlacementObjective",["fast","balanced","economical"],"balanced"),w=O(e.options,"runPreset",["small","standard","custom","small_experiment"],"custom"),y=S(e.options.maxSpend,"max-spend")??null;if(y!==null&&y<0)throw new Error("max-spend must be non-negative");let l=T(e.options.retentionDays,"retention-days")??null;if(l!==null&&l<0)throw new Error("retention-days must be non-negative");let j=new Date().toISOString(),g=d(o,"contentHash"),k=q(o,"revision");if(!g||!k||k<1)throw new Error("The Taskset does not have an immutable published revision.");let h=d(t,"method");if(!h)throw new Error("Training recipe must declare its method.");let P=Y(t);if(u){let E=v(u,"trainingSetup"),N=v(E,"tasksetRef");if(d(N,"id")!==e.tasksetId||d(u,"profileId")!==s)throw new Error(`Model Project ${c} already exists for a different Profile or Taskset.`);if(v(E,"baseModel"))throw new Error(`Model Project ${c} already exists.`);return e.client.saveModelProject({...u,revision:q(u,"revision")??1,defaultBaseModel:P,trainingSetup:{...E,baseModel:P,recipe:t},updatedAt:j})}return e.client.saveModelProject({schemaVersion:"openpond.modelProject.v2",id:c,profileId:s,revision:1,name:m(e.options,"name")||d(o,"name")||"Managed Model",objective:m(e.options,"objective")||d(o,"objective"),defaultBaseModel:P,defaultDestinationId:m(e.options,"destination")||"openpond_managed",trainingSetup:{tasksetRef:{id:e.tasksetId,revision:k,contentHash:g},tasksetRelease:null,harnessRelease:null,baseModel:P,method:h,destinationId:m(e.options,"destination")||"openpond_managed",managedRolloutPlacement:f,managedGpuPlacementObjective:b,managedGpuRequirement:"any",runPreset:w,recipe:t,preferredMaximumSpendUsd:y,preferredRetentionDays:l},hosted:null,tasksetSyncs:[],createdAt:j,updatedAt:j})}a(F,"createManagedModelProject");function Y(e){let n=v(e,"baseModel"),t=d(n,"id"),r=d(n,"revision"),o=d(n,"tokenizerRevision"),s=d(n,"chatTemplateHash");if(!t||!r||!o||!s)throw new Error("Managed GRPO recipe must pin baseModel id, revision, tokenizerRevision, and chatTemplateHash.");return{schemaVersion:"openpond.baseModelPreference.v1",modelId:t,revision:r,tokenizerRevision:o,chatTemplateHash:s,modelAssetId:null,source:"managed"}}a(Y,"managedBasePreferenceFromRecipe");function K(e,n,t,r){let o=C(e,n).find(s=>d(s,"id")===t);if(!o)throw new Error(`${r} ${t} was not found.`);return o}a(K,"trainingStateRecord");function C(e,n){if(!e||typeof e!="object"||!(n in e))return[];let t=e[n];return Array.isArray(t)?t.filter(r=>!!r&&typeof r=="object"&&!Array.isArray(r)):[]}a(C,"trainingStateRecords");function q(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return typeof t=="number"&&Number.isFinite(t)?t:null}a(q,"objectNumber");function v(e,n){if(!e||typeof e!="object"||!(n in e))return null;let t=e[n];return t&&typeof t=="object"&&!Array.isArray(t)?t:null}a(v,"objectRecord");function O(e,n,t,r){let o=m(e,n)||r;if(!t.includes(o))throw new Error(`${n} must be one of ${t.join(", ")}`);return o}a(O,"enumOption");async function Q(e,n){let t;try{t=JSON.parse(await $(e,"utf8"))}catch(r){throw new Error(`Could not read ${n} ${e}: ${r instanceof Error?r.message:String(r)}`)}if(!t||typeof t!="object"||Array.isArray(t))throw new Error(`${n} must be a JSON object.`);return t}a(Q,"readJsonObject");async function W(e){let n=S(e.options.maxSpend,"max-spend")??null;if(n!==null&&n<0)throw new Error("max-spend must be non-negative");let t=T(e.options.retentionDays,"retention-days")??null;if(t!==null&&t<=0)throw new Error("retention-days must be a positive integer");let r=m(e.options,"manifest"),o=r?await X(r):void 0,s=m(e.options,"comparisonSeriesEntry")||null,i={maximumSpendUsd:n,retentionDays:t},c=await e.client.prepareModelProject(e.modelRunId,i);if(e.json||(console.log("Preparation:"),console.log(JSON.stringify(c,null,2))),!(R(e.options.yes)||await Z(e.dependencies.confirm)))throw new Error("Training start cancelled.");let u=await e.client.startModelProject(e.modelRunId,{...i,exportApproved:R(e.options.exportApproved),manifest:o,comparisonSeriesEntryId:s});if(I(u,e.json),R(e.options.detach))return;let f=ee(u)??e.modelRunId;await M({client:e.client,runId:f,json:e.json,intervalMs:2e3,sleep:e.dependencies.sleep})}a(W,"startTraining");async function M(e){if(e.intervalMs<250)throw new Error("interval-ms must be at least 250");let n=e.sleep??(r=>new Promise(o=>setTimeout(o,r))),t="";for(;;){let r=await e.client.modelRun(e.runId,"status","GET"),o=JSON.stringify(r);if((e.json||o!==t)&&(I(r,e.json),t=o),J.has(ne(r)))return;await n(e.intervalMs)}}a(M,"watchTraining");async function X(e){let n;try{n=JSON.parse(await $(e,"utf8"))}catch(t){throw new Error(`Could not read Harness Run Manifest ${e}: ${t instanceof Error?t.message:String(t)}`)}if(!n||typeof n!="object"||Array.isArray(n))throw new Error("Harness Run Manifest must be a JSON object.");return n}a(X,"readManifest");async function Z(e){let n="Start this exact prepared training run? Downloads, provisioning, or spend may begin.";if(e)return e(n);if(!process.stdin.isTTY||!process.stdout.isTTY)throw new Error("training start requires --yes when standard input is not interactive");let t=_({input:process.stdin,output:process.stdout});try{let r=await t.question(`${n} [y/N] `);return r.trim().toLowerCase()==="y"||r.trim().toLowerCase()==="yes"}finally{t.close()}}a(Z,"confirmStart");function ee(e){if(!e||typeof e!="object")return null;let n="job"in e?e.job:null;return!n||typeof n!="object"||!("id"in n)?null:typeof n.id=="string"?n.id:null}a(ee,"readRunId");function ne(e){return!e||typeof e!="object"?"":"state"in e&&typeof e.state=="string"?e.state:"status"in e&&typeof e.status=="string"?e.status:""}a(ne,"readStatus");function I(e,n){if(n){console.log(JSON.stringify(e));return}console.log(JSON.stringify(e,null,2))}a(I,"printResult");export{B as a,le as b,G as c,A as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{ya as u,za as h}from"./chunk-NNLI4OWY.js";import{f as c}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createHash as i}from"node:crypto";import{readFile as m}from"node:fs/promises";import y from"node:path";var U=".openpond/source-upload-cache.json",d="openpond.source-upload-cache.v1";async function E(e){try{let a=(await u(c(),"source-upload.v1",l(e)))?.payload;if(!a)return new Map;if(a.schema!==d||!a.entries)return new Map;let t=new Map;for(let[o,n]of Object.entries(a.entries))!f(n)||o!==p(n)||t.set(o,n);return t}catch{return new Map}}s(E,"readSourceUploadCache");async function b(e,r){let a=await m(e.absolutePath),t=i("sha256").update(a).digest("hex"),o=p({...e,sha256:t}),n=r.get(o);return n&&n.sha256===t&&i("sha256").update(Buffer.from(n.contentsBase64,"base64")).digest("hex")===t?{file:e,entry:{path:e.path,type:"file",contentsBase64:n.contentsBase64},sha256:n.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:a.toString("base64")},sha256:t}}s(b,"materializeSourceUploadFile");async function A(e,r){let a={};for(let t of r){let o={path:t.file.path,size:t.file.size,mtimeMs:t.file.mtimeMs,ctimeMs:t.file.ctimeMs,sha256:t.sha256,contentsBase64:t.entry.contentsBase64};a[p(o)]=o}await h(c(),"source-upload.v1",l(e),{schema:d,generatedAt:new Date().toISOString(),entries:a})}s(A,"writeSourceUploadCache");function p(e){return`${e.path}\0${e.sha256}`}s(p,"cacheKeyForFile");function f(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.path=="string"&&typeof r.size=="number"&&typeof r.mtimeMs=="number"&&typeof r.ctimeMs=="number"&&typeof r.sha256=="string"&&typeof r.contentsBase64=="string"}s(f,"isCacheEntry");function l(e){return i("sha256").update(y.resolve(e)).digest("hex")}s(l,"sourceScope");export{U as a,E as b,b as c,A as d};
2
+ import{Pa as u,Qa as h}from"./chunk-F4WS5QIT.js";import{f as c}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{createHash as i}from"node:crypto";import{readFile as m}from"node:fs/promises";import y from"node:path";var U=".openpond/source-upload-cache.json",d="openpond.source-upload-cache.v1";async function E(e){try{let a=(await u(c(),"source-upload.v1",l(e)))?.payload;if(!a)return new Map;if(a.schema!==d||!a.entries)return new Map;let t=new Map;for(let[o,n]of Object.entries(a.entries))!f(n)||o!==p(n)||t.set(o,n);return t}catch{return new Map}}s(E,"readSourceUploadCache");async function b(e,r){let a=await m(e.absolutePath),t=i("sha256").update(a).digest("hex"),o=p({...e,sha256:t}),n=r.get(o);return n&&n.sha256===t&&i("sha256").update(Buffer.from(n.contentsBase64,"base64")).digest("hex")===t?{file:e,entry:{path:e.path,type:"file",contentsBase64:n.contentsBase64},sha256:n.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:a.toString("base64")},sha256:t}}s(b,"materializeSourceUploadFile");async function A(e,r){let a={};for(let t of r){let o={path:t.file.path,size:t.file.size,mtimeMs:t.file.mtimeMs,ctimeMs:t.file.ctimeMs,sha256:t.sha256,contentsBase64:t.entry.contentsBase64};a[p(o)]=o}await h(c(),"source-upload.v1",l(e),{schema:d,generatedAt:new Date().toISOString(),entries:a})}s(A,"writeSourceUploadCache");function p(e){return`${e.path}\0${e.sha256}`}s(p,"cacheKeyForFile");function f(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let r=e;return typeof r.path=="string"&&typeof r.size=="number"&&typeof r.mtimeMs=="number"&&typeof r.ctimeMs=="number"&&typeof r.sha256=="string"&&typeof r.contentsBase64=="string"}s(f,"isCacheEntry");function l(e){return i("sha256").update(y.resolve(e)).digest("hex")}s(l,"sourceScope");export{U as a,E as b,b as c,A as d};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{e as g,g as $,h as O,i as C}from"./chunk-JS6MS2NR.js";import{a as w}from"./chunk-3M53YXEI.js";import{a as r}from"./chunk-FTQLQJQV.js";var L=Symbol("openpondCliOptionValues"),a=class extends Error{static{r(this,"CliUsageError")}exitCode=2;constructor(t){super(t),this.name="CliUsageError"}},K=new Set(["maxOutputBytes","timeoutSec"]);function k(n){let t=[...n],o="",i={},e={},u=[];for(;t.length>0;){let s=t.shift();if(s==="--"){u.push(...t);break}if(s.startsWith("--")){let f=s.indexOf("="),c=f>=0?s.slice(2,f):s.slice(2),p=N(c),d=f>=0?s.slice(f+1):P(t,p,o);h(i,e,p,d,o)}else _(s)?y(s,t,i,e):o?u.push(s):o=s}return Object.defineProperty(i,L,{value:e,enumerable:!1,configurable:!1,writable:!1}),V(o,i),{command:o,options:i,rest:u}}r(k,"parseArgs");function N(n){return n.replace(/-([a-z])/g,(t,o)=>o.toUpperCase())}r(N,"normalizeCliOptionKey");function _(n){return/^-[^-].*/.test(n)&&!S(n)}r(_,"isShortOptionToken");function y(n,t,o,i){let e=n.slice(1);if(!e)return;let u=e.indexOf("="),s=u>=0?e.slice(0,u):e,f=u>=0?e.slice(u+1):null;if(s.length!==1){for(let d of s){let m=g[d];if(!m)throw new a(`unknown short option -${d}`);if(C(m)!=="boolean")throw new a(`short option -${d} requires its own value`);h(o,i,m,"true")}return}let c=g[s];if(!c)throw new a(`unknown short option -${s}`);let p=f??P(t,c);h(o,i,c,p)}r(y,"parseShortOptionToken");function P(n,t,o){let i=I(t,o);if(i==="boolean")return n[0]&&x(n[0])?n.shift():"true";if(i){let e=n.shift();if(e===void 0||R(e)&&!S(e))throw e!==void 0&&n.unshift(e),new a(`${l(t)} must be ${b(i)}`);return e}return n[0]&&!n[0].startsWith("--")?n.shift():"true"}r(P,"readOptionValue");function h(n,t,o,i,e){T(o,i,e),n[o]=i,(t[o]??=[]).push(i)}r(h,"setParsedOption");function T(n,t,o){let i=I(n,o);if(i){if(i==="boolean"){if(!x(t))throw new a(`${l(n)} must be a boolean`);return}if(t.trim().length===0||t==="true")throw new a(`${l(n)} must be ${b(i)}`);if(i==="number"||i==="integer"){let e=Number(t);if(!Number.isFinite(e))throw new a(`${l(n)} must be ${b(i)}`);if(i==="integer"&&!Number.isInteger(e))throw new a(`${l(n)} must be an integer`);if(i==="integer"&&K.has(n)&&e<=0)throw new a(`${l(n)} must be a positive integer`);return}if(i==="json")try{w(t,l(n))}catch(e){throw new a(e instanceof Error?e.message:String(e))}}}r(T,"validateParsedOptionValue");function I(n,t){return t?O(t,n):C(n)}r(I,"typedOptionKind");function l(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}r(l,"cliOptionLabel");function E(n){return n==="json"?"JSON value":n}r(E,"optionKindLabel");function b(n){let t=E(n);return/^[aeiou]/i.test(t)?`an ${t}`:`a ${t}`}r(b,"optionKindPhrase");function x(n){return/^(true|false|1|0|yes|no)$/i.test(n)}r(x,"isBooleanLiteral");function R(n){return n.startsWith("-")&&n!=="-"}r(R,"isOptionLike");function S(n){return/^-\d+(?:\.\d+)?$/.test(n)}r(S,"isNegativeNumber");function V(n,t){let o=n?$(n):null;for(let i of Object.keys(t))if(!O(n,i)){let e=l(i),u=o?` for ${o.name}`:"";throw new a(`unknown option --${e}${u}`)}}r(V,"validateCommandOptions");export{a,k as b};
2
+ import{e as g,g as $,h as O,i as C}from"./chunk-F3VURV3Q.js";import{a as w}from"./chunk-3M53YXEI.js";import{a as r}from"./chunk-FTQLQJQV.js";var L=Symbol("openpondCliOptionValues"),a=class extends Error{static{r(this,"CliUsageError")}exitCode=2;constructor(t){super(t),this.name="CliUsageError"}},K=new Set(["maxOutputBytes","timeoutSec"]);function k(n){let t=[...n],o="",i={},e={},u=[];for(;t.length>0;){let s=t.shift();if(s==="--"){u.push(...t);break}if(s.startsWith("--")){let f=s.indexOf("="),c=f>=0?s.slice(2,f):s.slice(2),p=N(c),d=f>=0?s.slice(f+1):P(t,p,o);h(i,e,p,d,o)}else _(s)?y(s,t,i,e):o?u.push(s):o=s}return Object.defineProperty(i,L,{value:e,enumerable:!1,configurable:!1,writable:!1}),V(o,i),{command:o,options:i,rest:u}}r(k,"parseArgs");function N(n){return n.replace(/-([a-z])/g,(t,o)=>o.toUpperCase())}r(N,"normalizeCliOptionKey");function _(n){return/^-[^-].*/.test(n)&&!S(n)}r(_,"isShortOptionToken");function y(n,t,o,i){let e=n.slice(1);if(!e)return;let u=e.indexOf("="),s=u>=0?e.slice(0,u):e,f=u>=0?e.slice(u+1):null;if(s.length!==1){for(let d of s){let m=g[d];if(!m)throw new a(`unknown short option -${d}`);if(C(m)!=="boolean")throw new a(`short option -${d} requires its own value`);h(o,i,m,"true")}return}let c=g[s];if(!c)throw new a(`unknown short option -${s}`);let p=f??P(t,c);h(o,i,c,p)}r(y,"parseShortOptionToken");function P(n,t,o){let i=I(t,o);if(i==="boolean")return n[0]&&x(n[0])?n.shift():"true";if(i){let e=n.shift();if(e===void 0||R(e)&&!S(e))throw e!==void 0&&n.unshift(e),new a(`${l(t)} must be ${b(i)}`);return e}return n[0]&&!n[0].startsWith("--")?n.shift():"true"}r(P,"readOptionValue");function h(n,t,o,i,e){T(o,i,e),n[o]=i,(t[o]??=[]).push(i)}r(h,"setParsedOption");function T(n,t,o){let i=I(n,o);if(i){if(i==="boolean"){if(!x(t))throw new a(`${l(n)} must be a boolean`);return}if(t.trim().length===0||t==="true")throw new a(`${l(n)} must be ${b(i)}`);if(i==="number"||i==="integer"){let e=Number(t);if(!Number.isFinite(e))throw new a(`${l(n)} must be ${b(i)}`);if(i==="integer"&&!Number.isInteger(e))throw new a(`${l(n)} must be an integer`);if(i==="integer"&&K.has(n)&&e<=0)throw new a(`${l(n)} must be a positive integer`);return}if(i==="json")try{w(t,l(n))}catch(e){throw new a(e instanceof Error?e.message:String(e))}}}r(T,"validateParsedOptionValue");function I(n,t){return t?O(t,n):C(n)}r(I,"typedOptionKind");function l(n){return n.replace(/[A-Z]/g,t=>`-${t.toLowerCase()}`)}r(l,"cliOptionLabel");function E(n){return n==="json"?"JSON value":n}r(E,"optionKindLabel");function b(n){let t=E(n);return/^[aeiou]/i.test(t)?`an ${t}`:`a ${t}`}r(b,"optionKindPhrase");function x(n){return/^(true|false|1|0|yes|no)$/i.test(n)}r(x,"isBooleanLiteral");function R(n){return n.startsWith("-")&&n!=="-"}r(R,"isOptionLike");function S(n){return/^-\d+(?:\.\d+)?$/.test(n)}r(S,"isNegativeNumber");function V(n,t){let o=n?$(n):null;for(let i of Object.keys(t))if(!O(n,i)){let e=l(i),u=o?` for ${o.name}`:"";throw new a(`unknown option --${e}${u}`)}}r(V,"validateCommandOptions");export{a,k as b};
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a,b as s}from"./chunk-GLUWATL5.js";import{a as n}from"./chunk-FTQLQJQV.js";var p=new URL(s).hostname,c=new URL(a).hostname;function b(r){let t=typeof r.account=="string"?r.account:typeof r.profile=="string"?r.profile:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("account must be a non-empty value");return e}n(b,"resolveAccountOption");function d(r){let t=typeof r.baseUrl=="string"?r.baseUrl:typeof r.baseurl=="string"?r.baseurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("baseurl must be a non-empty value");return e.replace(/\/$/,"")}n(d,"resolveBaseUrlOption");function w(r){let t=typeof r.apiBaseUrl=="string"?r.apiBaseUrl:typeof r.apiBaseurl=="string"?r.apiBaseurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("api-base-url must be a non-empty value");return e.replace(/\/$/,"")}n(w,"resolveApiBaseUrlOption");function h(r){let t=typeof r.chatApiBaseUrl=="string"?r.chatApiBaseUrl:typeof r.chatApiBaseurl=="string"?r.chatApiBaseurl:typeof r.chatApiUrl=="string"?r.chatApiUrl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("chat-api-base-url must be a non-empty value");return e.replace(/\/$/,"")}n(h,"resolveChatApiBaseUrlOption");function A(r){let t=typeof r.sandboxApiUrl=="string"?r.sandboxApiUrl:typeof r.sandboxApiurl=="string"?r.sandboxApiurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("sandbox-api-url must be a non-empty value");return e.replace(/\/$/,"")}n(A,"resolveSandboxApiUrlOption");function B(r){return(process.env.OPENPOND_BASE_URL||r.baseUrl||a).replace(/\/$/,"")}n(B,"resolveBaseUrl");function m(r){if(!r)return null;let t=r.replace(/\/$/,"");try{let o=new URL(t).hostname.toLowerCase();if(o===c||o==="openpond.live"||o==="www.openpond.live")return s;if(o===p||o.startsWith("api."))return t}catch{return null}return null}n(m,"mapUiBaseToApiBase");function E(r){let t=process.env.OPENPOND_API_URL,e=r?.apiBaseUrl?.trim(),o=m(process.env.OPENPOND_BASE_URL||r?.baseUrl);return(t||e||o||s).replace(/\/$/,"")}n(E,"resolvePublicApiBaseUrl");function O(r,t){let e=r.trim();if(!e)throw new Error("template must be non-empty");if(e.startsWith("http://")||e.startsWith("https://"))return e.endsWith(".git")?e:`${e}.git`;let o=t.replace(/\/$/,""),[l,i]=e.includes("/")?e.split("/",2):["openpondai",e],u=i.endsWith(".git")?i.slice(0,-4):i;if(!l||!u)throw new Error("template must be <owner>/<repo> or a full https URL");return`${o}/${l}/${u}.git`}n(O,"normalizeTemplateRepoUrl");export{b as a,d as b,w as c,h as d,A as e,B as f,m as g,E as h,O as i};
2
+ import{a,b as s}from"./chunk-GLUWATL5.js";import{a as n}from"./chunk-FTQLQJQV.js";var p=new URL(s).hostname,c=new URL(a).hostname;function g(r){let t=typeof r.account=="string"?r.account:typeof r.profile=="string"?r.profile:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("account must be a non-empty value");return e}n(g,"resolveAccountOption");function U(r){let t=typeof r.baseUrl=="string"?r.baseUrl:typeof r.baseurl=="string"?r.baseurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("baseurl must be a non-empty value");return e.replace(/\/$/,"")}n(U,"resolveBaseUrlOption");function b(r){let t=typeof r.apiBaseUrl=="string"?r.apiBaseUrl:typeof r.apiBaseurl=="string"?r.apiBaseurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("api-base-url must be a non-empty value");return e.replace(/\/$/,"")}n(b,"resolveApiBaseUrlOption");function d(r){let t=typeof r.chatApiBaseUrl=="string"?r.chatApiBaseUrl:typeof r.chatApiBaseurl=="string"?r.chatApiBaseurl:typeof r.chatApiUrl=="string"?r.chatApiUrl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("chat-api-base-url must be a non-empty value");return e.replace(/\/$/,"")}n(d,"resolveChatApiBaseUrlOption");function w(r){let t=typeof r.sandboxApiUrl=="string"?r.sandboxApiUrl:typeof r.sandboxApiurl=="string"?r.sandboxApiurl:null;if(!t)return null;let e=t.trim();if(!e||e==="true")throw new Error("sandbox-api-url must be a non-empty value");return e.replace(/\/$/,"")}n(w,"resolveSandboxApiUrlOption");function h(r){return(process.env.OPENPOND_BASE_URL||r.baseUrl||a).replace(/\/$/,"")}n(h,"resolveBaseUrl");function m(r){if(!r)return null;let t=r.replace(/\/$/,"");try{let o=new URL(t).hostname.toLowerCase();if(o===c||o==="openpond.live"||o==="www.openpond.live")return s;if(o===p||o.startsWith("api."))return t}catch{return null}return null}n(m,"mapUiBaseToApiBase");function A(r){let t=process.env.OPENPOND_API_URL,e=r?.apiBaseUrl?.trim(),o=m(process.env.OPENPOND_BASE_URL||r?.baseUrl);return(t||e||o||s).replace(/\/$/,"")}n(A,"resolvePublicApiBaseUrl");function B(r,t){let e=r.trim();if(!e)throw new Error("template must be non-empty");if(e.startsWith("http://")||e.startsWith("https://"))return e.endsWith(".git")?e:`${e}.git`;let o=t.replace(/\/$/,""),[l,i]=e.includes("/")?e.split("/",2):["openpondai",e],u=i.endsWith(".git")?i.slice(0,-4):i;if(!l||!u)throw new Error("template must be <owner>/<repo> or a full https URL");return`${o}/${l}/${u}.git`}n(B,"normalizeTemplateRepoUrl");export{g as a,U as b,b as c,d,w as e,h as f,m as g,A as h,B as i};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{q as V,r as G,x as J}from"./chunk-G2VYRU27.js";import{b as ie,c as se,d as ce}from"./chunk-73KFNV3D.js";import{h as X,k as Z}from"./chunk-EAPFMACH.js";import{a as I}from"./chunk-6FA3GG5B.js";import{c as o,d as H,e as l,f as K,h as ae,i as w}from"./chunk-3M53YXEI.js";import{a as i}from"./chunk-FTQLQJQV.js";import{existsSync as j,readFileSync as _e}from"node:fs";import{createRequire as Ie}from"node:module";import b from"node:path";function de(e){let n=b.join(e,"node_modules","openpond-agent-sdk","dist","cli.js");if(j(n))return{command:process.execPath,args:[n]};let t=b.join(e,"node_modules",".bin","openpond-agent");if(j(t))return{command:t,args:[]};let r=b.join(e,"node_modules","openpond-agent-sdk","src","cli.ts");if(j(r))return ue(b.dirname(b.dirname(r)),r);let a=De(e);return a||{command:"openpond-agent",args:[]}}i(de,"resolveLocalAgentSdkCommand");function De(e){let n=b.join(e,"package.json");if(!j(n))return null;try{let t=JSON.parse(_e(n,"utf8")),r=t.dependencies?.["openpond-agent-sdk"]??t.devDependencies?.["openpond-agent-sdk"]??t.peerDependencies?.["openpond-agent-sdk"];if(!r?.startsWith("file:"))return null;let a=b.resolve(e,r.slice(5)),d=b.join(a,"src","cli.ts");if(j(d))return ue(a,d);let s=b.join(a,"dist","cli.js");if(j(s))return{command:process.execPath,args:[s]}}catch{return null}return null}i(De,"resolveAgentSdkDependencyCli");function ue(e,n){let t=Ie(b.join(e,"package.json")).resolve("tsx/cli");return{command:process.execPath,args:[t,n]}}i(ue,"nodeTypescriptCommand");import{Buffer as A}from"node:buffer";import{existsSync as U,promises as P}from"node:fs";import m from"node:path";import{createHash as Te}from"node:crypto";import{existsSync as T,promises as M,readFileSync as ye,statSync as Me}from"node:fs";import{tmpdir as $e}from"node:os";import y from"node:path";import{gunzipSync as ze}from"node:zlib";import{existsSync as C}from"node:fs";import v from"node:path";function L(e,n){let t=n.packageManager;if(typeof t=="string"){let r=t.split("@")[0];if(r==="bun"||r==="npm"||r==="pnpm"||r==="yarn")return r}return C(v.join(e,"bun.lock"))||C(v.join(e,"bun.lockb"))?"bun":C(v.join(e,"pnpm-lock.yaml"))?"pnpm":C(v.join(e,"yarn.lock"))?"yarn":C(v.join(e,"package-lock.json"))||C(v.join(e,"npm-shrinkwrap.json"))?"npm":"unknown"}i(L,"detectAgentSdkPackageManager");function le(e){return e==="npm"?"npm install --offline":e==="pnpm"?"pnpm install --offline":e==="yarn"?"yarn install --offline":e==="bun"?"bun install --offline":"pnpm install --offline"}i(le,"agentSdkDependencyInstallCommand");function pe(e,n){return e==="pnpm"?`pnpm run ${n}`:e==="yarn"?`yarn ${n}`:e==="npm"?`npm run ${n}`:e==="bun"?`bun run ${n}`:`pnpm run ${n}`}i(pe,"agentSdkRunScriptCommand");function ge(e,n){return e==="pnpm"?`pnpm --silent run ${n}`:e==="yarn"?`yarn --silent ${n}`:e==="npm"?`npm run --silent ${n}`:e==="bun"?`bun run --silent ${n}`:`pnpm --silent run ${n}`}i(ge,"agentSdkRunJsonScriptCommand");var ke=".openpond/vendor/openpond-agent-sdk.tgz",Ue=".openpond/vendor/npm",Ne=`file:${ke}`,fe="# openpond-agent-sdk-source-upload: synthesized-openpond-yaml";async function ne(e,n,t={}){return J(e,n,{cwd:t.cwd})}i(ne,"runCommand");function Je(e){for(let n of["dependencies","devDependencies","peerDependencies"]){let t=e[n];if(!t||typeof t!="object"||Array.isArray(t))continue;let r=t["openpond-agent-sdk"];if(typeof r=="string"&&r.trim())return r.trim()}return null}i(Je,"readOpenPondAgentSdkVersionSpec");async function he(e,n){let t=Ke(e,n);if(!t)return null;let r=await M.mkdtemp(y.join($e(),"openpond-agent-sdk-pack-"));try{let a=t.kind==="package_root"?await Le(t.packageRoot,r):t.kind==="registry"?await He(t.versionSpec,r):t.tarballContents,d=await Fe({sdkPackageJson:t.packageJson,dependencyBaseDir:t.dependencyBaseDir,projectPackageJson:n,projectPath:e,tempDir:r}),s=L(e,n),c=Xe(n,d,s),u=s==="pnpm"||s==="unknown"?Ze(e,d):null,p=le(s),f={packageName:"openpond-agent-sdk",source:"uploaded_tarball",path:ke,sha256:O(a),sizeBytes:a.byteLength};return{rewrittenPackageJson:c,pnpmWorkspaceSource:u,tarballs:[{...f,contents:a},...d],dependencySetup:{required:!0,packageManager:s,installCommand:p,commands:[p],packageJsonPath:"package.json",expectedBinaryPath:"node_modules/.bin/openpond-agent",generatedArtifactDirectory:".openpond",sdkPackage:f,dependencyPackages:d.map(g=>({packageName:g.packageName,source:g.source,versionSpec:g.versionSpec,path:g.path,sha256:g.sha256,sizeBytes:g.sizeBytes}))}}}finally{await M.rm(r,{recursive:!0,force:!0})}}i(he,"buildAgentSdkMaterializedDependency");async function Le(e,n){let t=await ne("npm",["pack","--silent","--pack-destination",n,e],{cwd:e});if(t.code!==0){let a=[t.stderr.trim(),t.stdout.trim()].filter(Boolean).join(`
2
+ import{n as V,o as G,u as J}from"./chunk-Y2NQXJ2Q.js";import{b as ie,c as se,d as ce}from"./chunk-7TV2VBSD.js";import{h as X,k as Z}from"./chunk-EAPFMACH.js";import{a as I}from"./chunk-6FA3GG5B.js";import{c as o,d as H,e as l,f as K,h as ae,i as w}from"./chunk-3M53YXEI.js";import{a as i}from"./chunk-FTQLQJQV.js";import{existsSync as j,readFileSync as _e}from"node:fs";import{createRequire as Ie}from"node:module";import b from"node:path";function de(e){let n=b.join(e,"node_modules","openpond-agent-sdk","dist","cli.js");if(j(n))return{command:process.execPath,args:[n]};let t=b.join(e,"node_modules",".bin","openpond-agent");if(j(t))return{command:t,args:[]};let r=b.join(e,"node_modules","openpond-agent-sdk","src","cli.ts");if(j(r))return ue(b.dirname(b.dirname(r)),r);let a=De(e);return a||{command:"openpond-agent",args:[]}}i(de,"resolveLocalAgentSdkCommand");function De(e){let n=b.join(e,"package.json");if(!j(n))return null;try{let t=JSON.parse(_e(n,"utf8")),r=t.dependencies?.["openpond-agent-sdk"]??t.devDependencies?.["openpond-agent-sdk"]??t.peerDependencies?.["openpond-agent-sdk"];if(!r?.startsWith("file:"))return null;let a=b.resolve(e,r.slice(5)),d=b.join(a,"src","cli.ts");if(j(d))return ue(a,d);let s=b.join(a,"dist","cli.js");if(j(s))return{command:process.execPath,args:[s]}}catch{return null}return null}i(De,"resolveAgentSdkDependencyCli");function ue(e,n){let t=Ie(b.join(e,"package.json")).resolve("tsx/cli");return{command:process.execPath,args:[t,n]}}i(ue,"nodeTypescriptCommand");import{Buffer as A}from"node:buffer";import{existsSync as U,promises as P}from"node:fs";import m from"node:path";import{createHash as Te}from"node:crypto";import{existsSync as T,promises as M,readFileSync as ye,statSync as Me}from"node:fs";import{tmpdir as $e}from"node:os";import y from"node:path";import{gunzipSync as ze}from"node:zlib";import{existsSync as C}from"node:fs";import v from"node:path";function L(e,n){let t=n.packageManager;if(typeof t=="string"){let r=t.split("@")[0];if(r==="bun"||r==="npm"||r==="pnpm"||r==="yarn")return r}return C(v.join(e,"bun.lock"))||C(v.join(e,"bun.lockb"))?"bun":C(v.join(e,"pnpm-lock.yaml"))?"pnpm":C(v.join(e,"yarn.lock"))?"yarn":C(v.join(e,"package-lock.json"))||C(v.join(e,"npm-shrinkwrap.json"))?"npm":"unknown"}i(L,"detectAgentSdkPackageManager");function le(e){return e==="npm"?"npm install --offline":e==="pnpm"?"pnpm install --offline":e==="yarn"?"yarn install --offline":e==="bun"?"bun install --offline":"pnpm install --offline"}i(le,"agentSdkDependencyInstallCommand");function pe(e,n){return e==="pnpm"?`pnpm run ${n}`:e==="yarn"?`yarn ${n}`:e==="npm"?`npm run ${n}`:e==="bun"?`bun run ${n}`:`pnpm run ${n}`}i(pe,"agentSdkRunScriptCommand");function ge(e,n){return e==="pnpm"?`pnpm --silent run ${n}`:e==="yarn"?`yarn --silent ${n}`:e==="npm"?`npm run --silent ${n}`:e==="bun"?`bun run --silent ${n}`:`pnpm --silent run ${n}`}i(ge,"agentSdkRunJsonScriptCommand");var ke=".openpond/vendor/openpond-agent-sdk.tgz",Ue=".openpond/vendor/npm",Ne=`file:${ke}`,fe="# openpond-agent-sdk-source-upload: synthesized-openpond-yaml";async function ne(e,n,t={}){return J(e,n,{cwd:t.cwd})}i(ne,"runCommand");function Je(e){for(let n of["dependencies","devDependencies","peerDependencies"]){let t=e[n];if(!t||typeof t!="object"||Array.isArray(t))continue;let r=t["openpond-agent-sdk"];if(typeof r=="string"&&r.trim())return r.trim()}return null}i(Je,"readOpenPondAgentSdkVersionSpec");async function he(e,n){let t=Ke(e,n);if(!t)return null;let r=await M.mkdtemp(y.join($e(),"openpond-agent-sdk-pack-"));try{let a=t.kind==="package_root"?await Le(t.packageRoot,r):t.kind==="registry"?await He(t.versionSpec,r):t.tarballContents,d=await Fe({sdkPackageJson:t.packageJson,dependencyBaseDir:t.dependencyBaseDir,projectPackageJson:n,projectPath:e,tempDir:r}),s=L(e,n),c=Xe(n,d,s),u=s==="pnpm"||s==="unknown"?Ze(e,d):null,p=le(s),f={packageName:"openpond-agent-sdk",source:"uploaded_tarball",path:ke,sha256:O(a),sizeBytes:a.byteLength};return{rewrittenPackageJson:c,pnpmWorkspaceSource:u,tarballs:[{...f,contents:a},...d],dependencySetup:{required:!0,packageManager:s,installCommand:p,commands:[p],packageJsonPath:"package.json",expectedBinaryPath:"node_modules/.bin/openpond-agent",generatedArtifactDirectory:".openpond",sdkPackage:f,dependencyPackages:d.map(g=>({packageName:g.packageName,source:g.source,versionSpec:g.versionSpec,path:g.path,sha256:g.sha256,sizeBytes:g.sizeBytes}))}}}finally{await M.rm(r,{recursive:!0,force:!0})}}i(he,"buildAgentSdkMaterializedDependency");async function Le(e,n){let t=await ne("npm",["pack","--silent","--pack-destination",n,e],{cwd:e});if(t.code!==0){let a=[t.stderr.trim(),t.stdout.trim()].filter(Boolean).join(`
3
3
  `);throw new Error(`failed to pack openpond-agent-sdk for source upload${a?`:
4
4
  ${a}`:""}`)}let r=t.stdout.trim().split(/\r?\n/).filter(Boolean).pop();if(!r)throw new Error("failed to pack openpond-agent-sdk for source upload: npm pack did not return a tarball name");return M.readFile(y.join(n,r))}i(Le,"packOpenPondAgentSdkPackageRoot");async function Fe(e){let n=D(e.sdkPackageJson.dependencies),t=D(e.projectPackageJson.dependencies),r=D(e.projectPackageJson.devDependencies);delete t["openpond-agent-sdk"],delete r["openpond-agent-sdk"];let a=[...Object.entries(n).map(([c,u])=>({packageName:c,versionSpec:u,dependencyBaseDir:e.dependencyBaseDir})),...Object.entries(t).map(([c,u])=>({packageName:c,versionSpec:u,dependencyBaseDir:e.projectPath})),...Object.entries(r).map(([c,u])=>({packageName:c,versionSpec:u,dependencyBaseDir:e.projectPath}))].sort((c,u)=>c.packageName.localeCompare(u.packageName)),d=new Set,s=[];for(;a.length>0;){let{packageName:c,versionSpec:u,dependencyBaseDir:p}=a.shift();if(d.has(c))continue;d.add(c);let f=We({packageName:c,versionSpec:u,dependencyBaseDir:p}),g=await ne("npm",["pack","--silent","--pack-destination",e.tempDir,f],{cwd:p});if(g.code!==0){let h=[g.stderr.trim(),g.stdout.trim()].filter(Boolean).join(`
5
5
  `);throw new Error(`failed to pack openpond-agent-sdk dependency ${c}${h?`: