openpond 0.1.1 → 0.2.1

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 (225) hide show
  1. package/README.md +4 -4
  2. package/dist/cache.d.ts +7 -10
  3. package/dist/chunks/actions-command-QP3NMDK4.js +2 -0
  4. package/dist/chunks/app-layer-N7VFRVJ2.js +3 -0
  5. package/dist/chunks/app-server-runtime-OCLPUI7F.js +2 -0
  6. package/dist/chunks/apps-AMG75TI4.js +2 -0
  7. package/dist/chunks/chunk-22UARBPW.js +3 -0
  8. package/dist/chunks/chunk-3A7HZJNE.js +1 -0
  9. package/dist/chunks/chunk-3M53YXEI.js +2 -0
  10. package/dist/chunks/chunk-3NDRIQTI.js +2 -0
  11. package/dist/chunks/chunk-5BBVEWG3.js +2 -0
  12. package/dist/chunks/chunk-5O7ZVCMV.js +6 -0
  13. package/dist/chunks/chunk-6FA3GG5B.js +33 -0
  14. package/dist/chunks/chunk-6MI4KKWF.js +2 -0
  15. package/dist/chunks/chunk-BBG546O6.js +6 -0
  16. package/dist/chunks/chunk-BX4J2VDU.js +2 -0
  17. package/dist/chunks/chunk-BZMVB3GS.js +2 -0
  18. package/dist/chunks/chunk-C5LOZSVS.js +2 -0
  19. package/dist/chunks/chunk-CWQWV2T3.js +2 -0
  20. package/dist/chunks/chunk-DUA3QP6Y.js +19 -0
  21. package/dist/chunks/chunk-EAPFMACH.js +10 -0
  22. package/dist/chunks/chunk-ES2ISFJC.js +66 -0
  23. package/dist/chunks/chunk-F65NIZLM.js +2199 -0
  24. package/dist/chunks/chunk-FGJ5LFPL.js +5 -0
  25. package/dist/chunks/chunk-FTQLQJQV.js +2 -0
  26. package/dist/chunks/chunk-FY7OQ5RK.js +24 -0
  27. package/dist/chunks/chunk-FYCJSUFV.js +53 -0
  28. package/dist/chunks/chunk-GLUWATL5.js +2 -0
  29. package/dist/chunks/chunk-H7IWJN7L.js +17 -0
  30. package/dist/chunks/chunk-HZP5U2AA.js +3 -0
  31. package/dist/chunks/chunk-I5K74TOH.js +3 -0
  32. package/dist/chunks/chunk-IR3YJWPW.js +7 -0
  33. package/dist/chunks/chunk-KU7QOHFT.js +2872 -0
  34. package/dist/chunks/chunk-KV553EWX.js +16 -0
  35. package/dist/chunks/chunk-MGN6GLNZ.js +2 -0
  36. package/dist/chunks/chunk-OG5Q6NXK.js +28 -0
  37. package/dist/chunks/chunk-OGPHXXCD.js +1 -0
  38. package/dist/chunks/chunk-PI36UHRA.js +18 -0
  39. package/dist/chunks/chunk-RWSAGQTP.js +2 -0
  40. package/dist/chunks/chunk-SAE4OIPC.js +2 -0
  41. package/dist/chunks/chunk-SDO4FC4Q.js +2 -0
  42. package/dist/chunks/chunk-UKUVMXOW.js +12 -0
  43. package/dist/chunks/chunk-VCLCFK3O.js +36 -0
  44. package/dist/chunks/chunk-VYUMTRB3.js +5 -0
  45. package/dist/chunks/chunk-X37KMV27.js +1 -0
  46. package/dist/chunks/chunk-XDHAGACI.js +3 -0
  47. package/dist/chunks/chunk-XEOEKFG6.js +71 -0
  48. package/dist/chunks/chunk-ZF7TEGY5.js +5 -0
  49. package/dist/chunks/chunk-ZVOO7FKM.js +2 -0
  50. package/dist/chunks/cli-M2FG7SSI.js +2 -0
  51. package/dist/chunks/configuration-command-XBKBIZBO.js +2 -0
  52. package/dist/chunks/continual-D75WA7E7.js +7 -0
  53. package/dist/chunks/core-commands-LUZVWXQR.js +2 -0
  54. package/dist/chunks/database-X2CUV732.js +2 -0
  55. package/dist/chunks/desktop-test-KGC4JVJ7.js +3 -0
  56. package/dist/chunks/dist-NKLXFA37.js +2 -0
  57. package/dist/chunks/extension-NQ7N5LEY.js +5 -0
  58. package/dist/chunks/help-MWK66XZK.js +8 -0
  59. package/dist/chunks/module-ES6BEMUI-ZVL3F6NW.js +2 -0
  60. package/dist/chunks/module-asyncify-2EFITU5U-R7TVXNAE.js +2 -0
  61. package/dist/chunks/opchat-XJZA3QKZ.js +3 -0
  62. package/dist/chunks/organizations-UECDFEYE.js +2 -0
  63. package/dist/chunks/profile-KUMIZURM.js +3 -0
  64. package/dist/chunks/project-agent-NILMJHLV.js +2 -0
  65. package/dist/chunks/sandbox-command-QHH65OSE.js +2 -0
  66. package/dist/chunks/sandbox-template-N7I63PNU.js +10 -0
  67. package/dist/chunks/src-724HF43W.js +82 -0
  68. package/dist/chunks/src-VTKTTKQO.js +319 -0
  69. package/dist/chunks/taskset-PISBOILQ.js +2 -0
  70. package/dist/chunks/teams-bot-UV4RU53M.js +3 -0
  71. package/dist/chunks/training-2NDOWH5S.js +2 -0
  72. package/dist/chunks/workspaces-XXT4KUD3.js +2 -0
  73. package/dist/cli.js +3 -101
  74. package/dist/client.d.ts +1 -1
  75. package/dist/config.d.ts +1 -0
  76. package/dist/index.js +1 -26305
  77. package/dist/private-json-file.d.ts +1 -2
  78. package/dist/sandbox-template/manifest.js +1 -18380
  79. package/dist/web/assets/App-DxecRQUL.js +176 -0
  80. package/dist/web/assets/AppDialog-B65Eo3gp.js +1 -0
  81. package/dist/web/assets/AppTerminalPanel-B2EKQM7W.js +2 -0
  82. package/dist/web/assets/{AppsView-Ck_OzQWf.js → AppsView-BBoVe7s2.js} +1 -1
  83. package/dist/web/assets/{BrowserSidebar-CqciX8aL.js → BrowserSidebar-CSM1atSJ.js} +1 -1
  84. package/dist/web/assets/{CartesianChart-Y0lsL4vC.js → CartesianChart-CJKfXiEG.js} +1 -1
  85. package/dist/web/assets/{CollaborationTabs-BOb9PjvS.js → CollaborationTabs-BMZamWFC.js} +1 -1
  86. package/dist/web/assets/{CommandMenu-Co6JnmTu.js → CommandMenu-B3U1z2eo.js} +1 -1
  87. package/dist/web/assets/{CommunityView-BbTSeL7h.js → CommunityView-CTyRUcfy.js} +1 -1
  88. package/dist/web/assets/{ComposerCreateImproveStrip-BGzCWVFp.js → ComposerCreateImproveStrip-D7usvRtK.js} +1 -1
  89. package/dist/web/assets/GetStartedView-Ibu7oKWJ.js +1 -0
  90. package/dist/web/assets/HostedModelLearningReview-qnzIkT70.js +1 -0
  91. package/dist/web/assets/HostedModelLearningSettings--PKjpYsy.js +1 -0
  92. package/dist/web/assets/LabModelVersionDetailPage-s9uUN6fV.js +1 -0
  93. package/dist/web/assets/{LabSkillSidebar-C5oS6UmH.js → LabSkillSidebar-BKYseMiJ.js} +1 -1
  94. package/dist/web/assets/LabsRoute-C1FWCoYb.css +1 -0
  95. package/dist/web/assets/LabsRoute-DoRs0K6v.js +32 -0
  96. package/dist/web/assets/MainChatThread-DvuyMcMB.js +2 -0
  97. package/dist/web/assets/MainPane-BWwcxgHD.js +8 -0
  98. package/dist/web/assets/{MarkdownText-DqJarmTh.js → MarkdownText-D8XC5UT_.js} +1 -1
  99. package/dist/web/assets/{Messages-BaT7HOzB.js → Messages-e4A8JUjD.js} +6 -6
  100. package/dist/web/assets/{NativeSkillSidebar-DXp8snN5.js → NativeSkillSidebar-D2Joh8XB.js} +1 -1
  101. package/dist/web/assets/{NewExperienceSwitcher-CLHuGUN5.js → NewExperienceSwitcher-CzGebt2E.js} +1 -1
  102. package/dist/web/assets/{NewProjectDialog-CzpHCAaC.js → NewProjectDialog-CdMTSxUE.js} +1 -1
  103. package/dist/web/assets/{OutputsPage-DIzx-Ge6.js → OutputsPage-m7cSb8dW.js} +1 -1
  104. package/dist/web/assets/{ProjectsPage-DojwrhOy.js → ProjectsPage-C9mz8W1g.js} +1 -1
  105. package/dist/web/assets/RightChatPanelStack-B4LEqKEj.js +1 -0
  106. package/dist/web/assets/{RightSidebarHomePanel-DTzfuEX3.js → RightSidebarHomePanel-DOeUsH7h.js} +1 -1
  107. package/dist/web/assets/ScheduledWorkPage-UXZSSWgA.js +1 -0
  108. package/dist/web/assets/SettingsView-CAH0vreE.css +1 -0
  109. package/dist/web/assets/SettingsView-CQm1ai73.js +9 -0
  110. package/dist/web/assets/TeamChatView-C4haojB7.js +3 -0
  111. package/dist/web/assets/{TerminalOverlay-DnNVrCtu.js → TerminalOverlay-p2GZsuyQ.js} +3 -3
  112. package/dist/web/assets/{TrainingCreationPanel-CDwwyucO.js → TrainingCreationPanel-BYJSlO8X.js} +1 -1
  113. package/dist/web/assets/{TrainingDraftPanel-BijDnV_0.js → TrainingDraftPanel-DR5KlayH.js} +1 -1
  114. package/dist/web/assets/{UsageSettingsSection-Y5BFAu1p.js → UsageSettingsSection-BQToNXE4.js} +5 -5
  115. package/dist/web/assets/{WorkSidebarPanel-CkJlvZKm.js → WorkSidebarPanel--EeytWeg.js} +1 -1
  116. package/dist/web/assets/WorkspaceDiffPanel-BrovSYhn.js +14 -0
  117. package/dist/web/assets/{WorkspaceEnvironmentMenu-D8knAy1q.js → WorkspaceEnvironmentMenu-l-keRgvj.js} +3 -3
  118. package/dist/web/assets/{WorkspaceGitDialogs-_LHTrvh6.js → WorkspaceGitDialogs-aicWzaZu.js} +1 -1
  119. package/dist/web/assets/{WorkspaceMonacoEditor-B2B7OM_L.js → WorkspaceMonacoEditor-CO_E74jM.js} +36 -36
  120. package/dist/web/assets/{arrow-up-right-4nAzMtjW.js → arrow-up-right-rwPXNfVn.js} +1 -1
  121. package/dist/web/assets/chat-file-links-B3jDstSC.js +1 -0
  122. package/dist/web/assets/chevron-up-D089nvYQ.js +1 -0
  123. package/dist/web/assets/{clipboard-BzjUoZFo.js → clipboard-DwEExyU4.js} +1 -1
  124. package/dist/web/assets/{cloud-upload-CsrrwS-b.js → cloud-upload-D2he0-vQ.js} +1 -1
  125. package/dist/web/assets/{cssMode-CIbSSHKJ.js → cssMode-DS4k0NcI.js} +1 -1
  126. package/dist/web/assets/{folder-open-vRTuLzpS.js → folder-open-CAOLduKD.js} +1 -1
  127. package/dist/web/assets/{folder-plus-hyqwgUnx.js → folder-plus-D56MrxVT.js} +1 -1
  128. package/dist/web/assets/{git-commit-horizontal-CaxKfeYa.js → git-commit-horizontal-CeNM0oKJ.js} +1 -1
  129. package/dist/web/assets/{htmlMode-C3MGQGam.js → htmlMode-Xkni5erh.js} +1 -1
  130. package/dist/web/assets/{index-ByQIHpc9.css → index-BGMzUaup.css} +1 -1
  131. package/dist/web/assets/{index-Dvq7bpBG.js → index-KwyAyscP.js} +1 -1
  132. package/dist/web/assets/{info-aYWeE1Iw.js → info-CcrBaEE_.js} +1 -1
  133. package/dist/web/assets/{jsonMode-CpD6UkT7.js → jsonMode-C4YPbQB7.js} +1 -1
  134. package/dist/web/assets/{lspLanguageFeatures-DpcK8ZI6.js → lspLanguageFeatures-CF5oMTz6.js} +1 -1
  135. package/dist/web/assets/{minimize-2-DeYg7XqB.js → minimize-2-DzHQnInk.js} +1 -1
  136. package/dist/web/assets/{monaco.contribution-CrrdDQgP.js → monaco.contribution-0EN4mGCC.js} +2 -2
  137. package/dist/web/assets/{monaco.contribution-JWFq0HzV.js → monaco.contribution-B4qcTP0w.js} +2 -2
  138. package/dist/web/assets/{monaco.contribution-BDTM0ZJq.js → monaco.contribution-CJK_NrBm.js} +2 -2
  139. package/dist/web/assets/{monaco.contribution-C-_ekTxy.js → monaco.contribution-CkPGKNd-.js} +2 -2
  140. package/dist/web/assets/{play-BqgRTddV.js → play-p3-AMTPL.js} +1 -1
  141. package/dist/web/assets/{python-B67wope9.js → python-B0kpTxAZ.js} +1 -1
  142. package/dist/web/assets/{refresh-cw-DwMA_2On.js → refresh-cw-_jbTIzzr.js} +1 -1
  143. package/dist/web/assets/{save-B0BKh5oQ.js → save-Cy6hEotx.js} +1 -1
  144. package/dist/web/assets/{square-LY3oz82L.js → square-DKQkcrOH.js} +1 -1
  145. package/dist/web/assets/{toggleHighContrast-B2jka5B1.js → toggleHighContrast-Bnk1VVVq.js} +1 -1
  146. package/dist/web/assets/{tsMode-1MUwluYD.js → tsMode-BDrSVy7V.js} +1 -1
  147. package/dist/web/assets/{upload-bSKSkFVa.js → upload-COn0my_O.js} +1 -1
  148. package/dist/web/assets/{useLocalAgentSchedules--jnnM4Fz.js → useLocalAgentSchedules-iZNB4Oee.js} +1 -1
  149. package/dist/web/assets/{wifi-off-DA34iPmr.js → wifi-off-Cqt-ZLXY.js} +1 -1
  150. package/dist/web/assets/{workers-CczIcRcl.js → workers-hu0Ym93h.js} +1 -1
  151. package/dist/web/assets/{yaml-DwEGoHA9.js → yaml-D-JLDGL6.js} +1 -1
  152. package/dist/web/index.html +2 -2
  153. package/docs/command-reference.md +28 -2
  154. package/package.json +10 -7
  155. package/dist/chunks/actions-command-6N5XWMR6.js +0 -185
  156. package/dist/chunks/app-layer-XEYHFJHI.js +0 -214
  157. package/dist/chunks/app-server-runtime-FJM2EQPH.js +0 -21
  158. package/dist/chunks/apps-GSXUDK6V.js +0 -427
  159. package/dist/chunks/chunk-2JABRRNR.js +0 -183
  160. package/dist/chunks/chunk-47EIAYI7.js +0 -2162
  161. package/dist/chunks/chunk-4L3ZJS2T.js +0 -1207
  162. package/dist/chunks/chunk-5TKZBMQM.js +0 -731
  163. package/dist/chunks/chunk-6G6MDZLM.js +0 -14509
  164. package/dist/chunks/chunk-BVY5JYM6.js +0 -512
  165. package/dist/chunks/chunk-C5TKGE5Y.js +0 -1275
  166. package/dist/chunks/chunk-CNTM26OW.js +0 -602
  167. package/dist/chunks/chunk-D7BO5Y5J.js +0 -1531
  168. package/dist/chunks/chunk-DJL4TJYG.js +0 -70
  169. package/dist/chunks/chunk-DLQQIWN2.js +0 -648
  170. package/dist/chunks/chunk-DNXBJZAU.js +0 -630
  171. package/dist/chunks/chunk-EFET7LB7.js +0 -1331
  172. package/dist/chunks/chunk-FQS2QL5F.js +0 -14522
  173. package/dist/chunks/chunk-HFPUR4CQ.js +0 -669
  174. package/dist/chunks/chunk-J3YDKJFD.js +0 -88
  175. package/dist/chunks/chunk-J7PYGDRY.js +0 -634
  176. package/dist/chunks/chunk-JTHL5XJ2.js +0 -1838
  177. package/dist/chunks/chunk-KSRWKXRB.js +0 -12
  178. package/dist/chunks/chunk-KWDOAJJI.js +0 -238
  179. package/dist/chunks/chunk-MUMPWI4O.js +0 -92
  180. package/dist/chunks/chunk-N3TGCM7J.js +0 -1135
  181. package/dist/chunks/chunk-NTK22KJD.js +0 -10707
  182. package/dist/chunks/chunk-O6B6YCMI.js +0 -57688
  183. package/dist/chunks/chunk-R3C3MNSI.js +0 -140
  184. package/dist/chunks/chunk-SMNFI2FU.js +0 -113
  185. package/dist/chunks/chunk-UACZUFIA.js +0 -47
  186. package/dist/chunks/chunk-W5GKHH77.js +0 -168
  187. package/dist/chunks/chunk-WBAZFKC7.js +0 -1643
  188. package/dist/chunks/chunk-X7ZG4TSW.js +0 -3063
  189. package/dist/chunks/chunk-YVCYVDNP.js +0 -746
  190. package/dist/chunks/cli-6PFRZ2WV.js +0 -21
  191. package/dist/chunks/continual-FYDKLCO7.js +0 -803
  192. package/dist/chunks/core-commands-MAN3CSJQ.js +0 -48
  193. package/dist/chunks/desktop-test-OE5SST2W.js +0 -146
  194. package/dist/chunks/extension-J3CIEDP4.js +0 -10041
  195. package/dist/chunks/help-JNGJJFU5.js +0 -67
  196. package/dist/chunks/opchat-6HEQJFLL.js +0 -167
  197. package/dist/chunks/organizations-MWAPNOCK.js +0 -804
  198. package/dist/chunks/profile-P7HMONTZ.js +0 -1134
  199. package/dist/chunks/project-agent-2RAK7GAZ.js +0 -514
  200. package/dist/chunks/sandbox-command-G22CPFNK.js +0 -1659
  201. package/dist/chunks/sandbox-template-S4WRUWJ6.js +0 -1653
  202. package/dist/chunks/src-BKBZ7WLO.js +0 -3624
  203. package/dist/chunks/src-RTGN2O4H.js +0 -65745
  204. package/dist/chunks/taskset-BMI7KOWP.js +0 -66
  205. package/dist/chunks/teams-bot-5VBYEN7M.js +0 -144
  206. package/dist/chunks/training-UPVSGDTB.js +0 -17
  207. package/dist/chunks/workspaces-IJQPWX3H.js +0 -99
  208. package/dist/web/assets/App-BOkhmdHu.js +0 -173
  209. package/dist/web/assets/AppDialog-BCjKFUBn.js +0 -1
  210. package/dist/web/assets/AppTerminalPanel-DRU8GIfy.js +0 -2
  211. package/dist/web/assets/GetStartedView-jEogFjxP.js +0 -1
  212. package/dist/web/assets/LabModelVersionDetailPage-CrudId_1.js +0 -1
  213. package/dist/web/assets/LabsRoute-9v8qwEBc.js +0 -2
  214. package/dist/web/assets/LabsRoute-CGFgymTX.css +0 -1
  215. package/dist/web/assets/MainChatThread-VtMpAxlP.js +0 -2
  216. package/dist/web/assets/MainPane-BbknUzp3.js +0 -8
  217. package/dist/web/assets/RightChatPanelStack-CIE5bgmO.js +0 -1
  218. package/dist/web/assets/ScheduledWorkPage-DdbcQGSv.js +0 -1
  219. package/dist/web/assets/SettingsView-CC5GXaE1.css +0 -1
  220. package/dist/web/assets/SettingsView-QT_OLmDh.js +0 -6
  221. package/dist/web/assets/TeamChatView-C4-nG1tC.js +0 -3
  222. package/dist/web/assets/WorkspaceDiffPanel-CBgzmBk8.js +0 -14
  223. package/dist/web/assets/chat-file-links-Bned0MT7.js +0 -1
  224. package/dist/web/assets/chevron-up-DK7ejCfk.js +0 -1
  225. package/dist/web/assets/index-66-ohHD5.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 W,b as X}from"./chunk-GLUWATL5.js";import{Ja as Y,Ka as q,Ua as L,ya as V,za as D}from"./chunk-FYCJSUFV.js";import{f as P,h as F}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";var I=class extends Error{constructor(n,o){super(`API request timed out after ${n}ms: ${o}`);this.timeoutMs=n;this.requestUrl=o;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{i(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},E=class extends Error{constructor(n,o){super(`API response exceeded ${n} bytes: ${o}`);this.maximumBytes=n;this.requestUrl=o;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{i(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},N=class extends Error{constructor(n,o,r,s=null){let a=s||o;super(`${r} failed: ${n}${a?` ${a}`:""}`);this.status=n;this.apiMessage=s;this.name="OpenPondApiError",this.code=o||"OPENPOND_API_ERROR"}status;apiMessage;static{i(this,"OpenPondApiError")}code};async function c(t,e,n,o={}){let{timeoutMs:r=3e4,maxResponseBytes:s=8388608,...a}=o,l=`${t}${n}`,p=new Headers(a.headers);p.set("Content-Type","application/json");let d=process.env.OPENPOND_API_KEY,g=e?.trim()||"",h=g.startsWith("opk_"),f=d||(h?g:null);f&&!p.has("openpond-api-key")&&p.set("openpond-api-key",f),e?p.set("Authorization",h?`ApiKey ${g}`:`Bearer ${e}`):d&&!p.has("Authorization")&&p.set("Authorization",`ApiKey ${d}`);let x=new AbortController,T=new I(r,l),O=r>0?setTimeout(()=>x.abort(T),r):null;O?.unref?.();let _=he(a.signal,x.signal,r),k=i(()=>{O&&clearTimeout(O)},"cleanup");try{let B=await fetch(l,{...a,headers:p,signal:_});return ge(B,{cleanup:k,maximumBytes:s,requestUrl:l,timeoutController:x,timeoutError:T})}catch(B){throw k(),x.signal.aborted?T:B}}i(c,"apiFetch");async function y(t,e){let n;try{let o=await t.text();n=o?JSON.parse(o):{}}catch(o){if(o instanceof I||o instanceof E)throw o;n={}}if(!t.ok){let o=typeof n.error=="string"?n.error:null,r=typeof n.message=="string"?n.message:null;throw new N(t.status,o,e,r)}return n}i(y,"readApiJson");function ge(t,e){if(!t.body)return e.cleanup(),t;let n=Number(t.headers.get("content-length"));if(e.maximumBytes>0&&Number.isFinite(n)&&n>e.maximumBytes)throw e.cleanup(),t.body.cancel(),new E(e.maximumBytes,e.requestUrl);let o=t.body.getReader(),r=0,s=new ReadableStream({async pull(a){try{let l=await o.read();if(l.done){e.cleanup(),a.close();return}if(r+=l.value.byteLength,e.maximumBytes>0&&r>e.maximumBytes){e.cleanup(),await o.cancel(),a.error(new E(e.maximumBytes,e.requestUrl));return}a.enqueue(l.value)}catch(l){e.cleanup(),a.error(e.timeoutController.signal.aborted?e.timeoutError:l)}},async cancel(a){e.cleanup(),await o.cancel(a)}});return new Response(s,{headers:t.headers,status:t.status,statusText:t.statusText})}i(ge,"boundedResponse");function he(t,e,n){return n<=0?t??void 0:t?AbortSignal.any([t,e]):e}i(he,"composedSignal");async function ye(t,e,n,o,r){let s=await c(t,e,`/v4/apps/${n}/commits`,{method:"POST",body:JSON.stringify({files:o,message:r})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Commit failed: ${s.status} ${a}`)}return await s.json()}i(ye,"commitFiles");async function Re(t,e,n,o){let r=o?.environment??"production",s=await c(t,e,`/v4/apps/${n}/deployments`,{method:"POST",body:JSON.stringify({environment:r,...o?.commitSha?{commitSha:o.commitSha}:{},...o?.branch?{branch:o.branch}:{}})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Deploy failed: ${s.status} ${a}`)}return await s.json()}i(Re,"deployApp");async function Pe(t,e,n,o){let r=await c(t,e,`/v4/apps/${encodeURIComponent(n)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(o)});return y(r,"Preview promotion")}i(Pe,"promotePreviewToProduction");async function Ae(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/lifecycle/start`,{method:"POST",body:JSON.stringify(o)});return y(r,"App lifecycle start")}i(Ae,"startAppLifecycle");async function Se(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/logs`,{method:"GET"});if(!o.ok){let a=await o.text().catch(()=>"");throw new Error(`Deployment logs failed: ${o.status} ${a}`)}let r=await o.json().catch(()=>({}));return(Array.isArray(r.logs)?r.logs:[]).map(a=>{let l=typeof a.createdAt=="string"?a.createdAt:a.createdAt instanceof Date?a.createdAt.toISOString():new Date().toISOString();return{id:typeof a.id=="string"?a.id:`${Math.random()}`,type:typeof a.type=="string"?a.type:void 0,message:typeof a.message=="string"?a.message:"",createdAt:l}})}i(Se,"getDeploymentLogs");async function we(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/status`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment status failed: ${o.status} ${s}`)}return{status:(await o.json().catch(()=>({}))).deployment?.status}}i(we,"getDeploymentStatus");async function xe(t,e,n,o){let r=new URLSearchParams;o?.status&&o.status.length>0&&r.set("status",o.status.join(",")),o?.createdAfter&&r.set("createdAfter",o.createdAfter),o?.branch&&r.set("branch",o.branch);let s=r.toString(),a=await c(t,e,`/apps/${n}/deployments/latest${s?`?${s}`:""}`,{method:"GET"});if(!a.ok){let p=await a.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${a.status} ${p}`)}let l=await a.json().catch(()=>({}));return l.deployment?{id:l.deployment.id,status:l.deployment.status}:null}i(xe,"getLatestDeploymentForApp");async function be(t,e,n){let o=await c(t,e,`/apps/deployments/${n}`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${o.status} ${s}`)}return(await o.json().catch(()=>({}))).deployment??null}i(be,"getDeploymentDetail");var Te=new URL(X).hostname,Oe=new URL(W).hostname;async function Ye(t,e,n){let o=new URLSearchParams;n?.handle&&o.set("handle",n.handle),typeof n?.limit=="number"&&Number.isFinite(n.limit)&&o.set("limit",String(Math.max(1,Math.floor(n.limit)))),typeof n?.offset=="number"&&Number.isFinite(n.offset)&&o.set("offset",String(Math.max(0,Math.floor(n.offset)))),typeof n?.includeScheduled=="boolean"&&o.set("includeScheduled",n.includeScheduled?"true":"false");let r=o.toString(),s=await c(t,e,`/apps/list${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let l=await s.text().catch(()=>"");throw new Error(`Apps list failed: ${s.status} ${l}`)}let a=await s.json().catch(()=>({}));return Array.isArray(a.apps)?a.apps:[]}i(Ye,"listApps");async function We(t,e,n){let o=await c(t,e,"/api/projects/local",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Create project failed: ${o.status} ${r}`)}return await o.json()}i(We,"createLocalProject");async function Xe(t,e,n){let o=await c(t,e,"/apps/repo/create",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Repo create failed: ${o.status} ${r}`)}return await o.json()}i(Xe,"createRepo");async function Qe(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:o})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Code visibility update failed: ${r.status} ${s}`)}return await r.json()}i(Qe,"updateAppCodeVisibility");async function Ze(t,e,n,o){let r=await c(t,e,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:n,...o?{teamId:o}:{}})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Headless create failed: ${r.status} ${s}`)}return await r.json()}i(Ze,"createHeadlessApps");async function et(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/status`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template status failed: ${o.status} ${r}`)}return await o.json()}i(et,"getTemplateStatus");async function tt(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/branches`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template branches failed: ${o.status} ${r}`)}return await o.json()}i(tt,"listTemplateBranches");async function nt(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/template/deploy-latest`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Template deploy failed: ${r.status} ${s}`)}return await r.json()}i(nt,"deployLatestTemplate");async function ot(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/environment`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Environment update failed: ${r.status} ${s}`)}return await r.json()}i(ot,"updateAppEnvironment");async function st(t,e,n){let o=await c(t,e,`/v4/apps/${n}/environment`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Environment get failed: ${o.status} ${r}`)}return await o.json()}i(st,"getAppEnvironment");async function rt(t,e){let n=await c(t,e,"/api/tools/manifest",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${n.status} ${o}`)}return await n.json()}i(rt,"fetchToolManifest");async function it(t,e){let n=await c(t,e,"/apps/tools",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Tools lookup failed: ${n.status} ${o}`)}return await n.json()}i(it,"listUserTools");async function at(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${o.status} ${s}`)}let r=await o.json().catch(()=>({}));return{schedules:Array.isArray(r.schedules)?r.schedules:[]}}i(at,"listAppSchedules");async function lt(t,e,n={}){let o=new URLSearchParams;n.domain&&o.set("domain",n.domain),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion),typeof n.limit=="number"&&o.set("limit",String(n.limit));for(let a of n.tags??[])o.append("tag",a);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe list")}i(lt,"listOpenToolRecipes");async function ct(t,e,n){let o=await c(t,e,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool recipe search")}i(ct,"searchOpenToolRecipes");async function ut(t,e,n){let o=new URLSearchParams;typeof n.includeExamples=="boolean"&&o.set("includeExamples",String(n.includeExamples)),typeof n.includeTests=="boolean"&&o.set("includeTests",String(n.includeTests)),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes/${encodeURIComponent(n.id)}${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe get")}i(ut,"getOpenToolRecipe");async function pt(t,e,n){let o=await c(t,e,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool rules get")}i(pt,"getOpenToolRules");function H(t){let e=new URLSearchParams;typeof t=="number"&&Number.isFinite(t)&&e.set("limit",String(Math.max(1,Math.floor(t))));let n=e.toString();return n?`?${n}`:""}i(H,"buildLimitQuery");function Q(t){if(Array.isArray(t))return t;if(!t||typeof t!="object")return[];let e=t;return Array.isArray(e.logs)?e.logs:Array.isArray(e.runs)?e.runs:Array.isArray(e.scheduleRuns)?e.scheduleRuns:Array.isArray(e.items)?e.items:[]}i(Q,"normalizeScheduleExecutionLogs");async function dt(t,e,n,o){let r={...o?.preferredScheduleId?{preferredScheduleId:o.preferredScheduleId}:{},...o?.scheduleId?{scheduleId:o.scheduleId}:{},...o?.startAt?{startAt:o.startAt}:{},...o&&"endAt"in o?{endAt:o.endAt??null}:{}},s=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/start`,{method:"POST",body:JSON.stringify(r)});return y(s,"Schedule start")}i(dt,"startAppSchedules");async function ft(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return y(o,"Schedule stop")}i(ft,"stopAppSchedules");async function mt(t,e){let n=await c(t,e,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return y(n,"Current schedule stop")}i(mt,"stopCurrentAppSchedules");async function gt(t,e,n){let o=await c(t,e,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:n.scheduleId})});return y(o,"Schedule run")}i(gt,"runScheduleNow");async function ht(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/${encodeURIComponent(o)}`,{method:"DELETE"});return y(r,"Schedule delete")}i(ht,"deleteOrArchiveSchedule");async function yt(t,e,n,o){let r=await c(t,e,`/v1/schedules/${encodeURIComponent(n)}/execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Schedule execution logs");return{logs:Q(s)}}i(yt,"listScheduleExecutionLogs");async function Rt(t,e,n,o){let r=await c(t,e,`/v1/deployments/${encodeURIComponent(n)}/schedule-execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Deployment schedule execution logs");return{logs:Q(s)}}i(Rt,"listDeploymentScheduleExecutionLogs");async function Pt(t,e,n){let o=await c(t,e,`/v1/schedule-execution-logs/${encodeURIComponent(n)}`,{method:"GET"});return y(o,"Schedule execution log")}i(Pt,"getScheduleExecutionLog");async function At(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/execution-timeline${H(o?.limit)}`,{method:"GET"});return y(r,"App execution timeline")}i(At,"getAppExecutionTimeline");async function St(t,e,n){return c(t,e,"/apps/agent/create",{method:"POST",body:JSON.stringify(n)})}i(St,"createAgentFromPrompt");async function wt(t,e,n){let o=new URLSearchParams;n?.appId&&o.set("appId",n.appId);let r=o.toString(),s=await c(t,e,`/apps/performance${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Performance lookup failed: ${s.status} ${a}`)}return await s.json()}i(wt,"getUserPerformance");async function xt(t,e,n){let o=new URLSearchParams({appId:n}),r=await c(t,e,`/apps/summary?${o.toString()}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Summary lookup failed: ${r.status} ${s}`)}return await r.json()}i(xt,"getAppRuntimeSummary");async function Ee(t,e){let n=await c(t,e,"/v1/account",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Account lookup failed: ${n.status} ${o}`)}return await n.json()}i(Ee,"getOpenPondAccount");async function bt(t,e){let n=new Date().toISOString(),o=Date.now(),r=t.replace(/\/$/,"");try{let s=await c(r,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),a=Date.now()-o,l=await s.json().catch(()=>({})),p=null,d=null;if(e?.trim())try{let g=await Ee(r,e);p=!0,d=g.account}catch{p=!1}return{reachable:s.ok,authenticated:p,apiBase:r,latencyMs:a,status:s.status,service:typeof l.service=="string"?l.service:null,checkedAt:n,account:d,...s.ok?{}:{error:s.statusText||`HTTP ${s.status}`}}}catch(s){return{reachable:!1,authenticated:e?.trim()?!1:null,apiBase:r,latencyMs:Date.now()-o,status:null,service:null,checkedAt:n,error:s instanceof Error?s.message:String(s)}}}i(bt,"checkOpenPondApiHealth");async function Tt(t,e,n){let o=await c(t,e,"/apps/assistant/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Assistant run failed: ${o.status} ${r}`)}return await o.json()}i(Tt,"runAssistantMode");async function Ot(t,e,n){let o=await c(t,e,"/apps/agent/digest",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Agent digest failed: ${o.status} ${r}`)}return await o.json()}i(Ot,"postAgentDigest");async function Et(t,e,n){let o=await c(t,e,"/apps/tools/execute",{method:"POST",body:JSON.stringify(n)}),r=await o.text().catch(()=>""),s=null;try{s=r?JSON.parse(r):null}catch{s=r}return o.ok?{ok:!0,status:o.status,data:s}:{ok:!1,status:o.status,error:s&&typeof s=="object"&&"error"in s?String(s.error):r||o.statusText}}i(Et,"executeUserTool");async function Ct(t,e,n){let o=await c(t,e,"/apps/backtests/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtest run failed: ${o.status} ${r}`)}return await o.json()}i(Ct,"submitBacktestRun");async function kt(t,e,n){let o=n.query&&Object.keys(n.query).length>0?`?${new URLSearchParams(n.query).toString()}`:"",r=await c(t,e,`/apps/backtests/tx${o}`,{method:n.method,body:n.method==="POST"&&n.body!==void 0?JSON.stringify(n.body):void 0});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtests request failed: ${r.status} ${s}`)}return await r.json()}i(kt,"submitBacktestTx");async function Lt(t,e,n){let o=new URLSearchParams(n).toString(),r=await c(t,e,`/apps/backtests/detail?${o}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtest detail failed: ${r.status} ${s}`)}return await r.json()}i(Lt,"submitBacktestDetail");function Ce(t){let e=t.trim().replace(/^\/+/,"");return encodeURIComponent(e||"tool")}i(Ce,"normalizeToolPathSegment");function ke(t){let e=t.replace(/\/$/,""),n=process.env.OPENPOND_TOOL_URL;if(n)return n.replace(/\/$/,"");try{let o=new URL(e),r=o.hostname.toLowerCase(),s=r==="apps.openpond.live"?null:r===Te||r===Oe||r==="openpond.live"||r==="www.openpond.live"?"https://apps.openpond.live":null;if(s)return s;let a=r==="localhost"||r==="127.0.0.1",l=o.port||(o.protocol==="https:"?"443":"80");if(a&&l==="3000")return e}catch{}return e}i(ke,"resolveWorkerBaseUrl");async function It(t,e,n){let o=ke(t),r=Ce(n.toolName),a=`${n.deploymentId?`/${n.appId}/deployments/${n.deploymentId}`:`/${n.appId}`}/${r}`,l=new Headers(n.headers||{}),p=n.method??"POST",d=n.body===void 0||p==="GET"?void 0:JSON.stringify(n.body),g=await c(o,e,a,{method:p,body:d,headers:l}),h=await g.text().catch(()=>""),f=null;try{f=h?JSON.parse(h):null}catch{f=h}let x=f&&typeof f=="object"&&"ok"in f?!!f.ok:!0,T=g.ok&&x,O=f&&typeof f=="object"&&"status"in f&&Number(f.status)||g.status,_=f&&typeof f=="object"&&"error"in f?String(f.error):g.ok?void 0:h||g.statusText,k=f&&typeof f=="object"&&"data"in f?f.data:f;return{ok:T,status:O,data:k,error:_}}i(It,"executeHostedTool");import Le from"node:path";var U="default",Z=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function qt(){return Ie()}i(qt,"getConfigPath");function Ie(){return F(P()).config}i(Ie,"getGlobalConfigPath");function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}i(S,"hasOwn");function A(t){if(typeof t!="string")return null;let e=t.trim();return e.length>0?e:null}i(A,"normalizeHandle");function m(t){if(typeof t!="string")return null;let e=t.trim();return e?e.replace(/\/$/,""):null}i(m,"normalizeBaseUrl");function ie(t){let e=A(t);if(!e)throw new Error("profile handle must be non-empty");return e}i(ie,"requireHandle");function Ue(t){if(typeof t!="string")throw new Error("apiKey must be a non-empty string");let e=t.trim();if(!e)throw new Error("apiKey must be a non-empty string");return e}i(Ue,"requireApiKey");function C(t,e){let n=A(t),o=A(e);return!!(n&&o&&n.toLowerCase()===o.toLowerCase())}i(C,"handleEquals");function M(t,e,n){let o=m(n);return t.findIndex(r=>C(r.handle,e)?o?m(r.baseUrl)===o:!0:!1)}i(M,"findAccountIndex");function w(t){let e=A(t.handle)??U,n=m(t.baseUrl);return n?{handle:e,baseUrl:n}:{handle:e}}i(w,"selectorFromAccount");function b(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o=m(typeof e.baseUrl=="string"?e.baseUrl:void 0);return o?{handle:n,baseUrl:o}:{handle:n}}i(b,"sanitizeActiveProfile");function G(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.repoPath=="string"?e.repoPath.trim():"",o=typeof e.profile=="string"&&e.profile.trim()?e.profile.trim():"default";if(!n)return;let r={repoPath:n,profile:o,mode:"local"};if(e.lastCheck&&typeof e.lastCheck=="object"&&!Array.isArray(e.lastCheck)){let s=e.lastCheck,a=s.command,l=s.status,p=s.checkedAt;(a==="inspect"||a==="build"||a==="validate"||a==="eval"||a==="run")&&(l==="passed"||l==="failed")&&typeof p=="string"&&(r.lastCheck={command:a,status:l,checkedAt:p,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(e.lastPush&&typeof e.lastPush=="object"&&!Array.isArray(e.lastPush)){let s=e.lastPush,a=s.status,l=s.pushedAt;(a==="pushed"||a==="failed")&&typeof l=="string"&&(r.lastPush={status:a,pushedAt:l,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},...ee(s.hostedSourceMaterialization)?{hostedSourceMaterialization:ee(s.hostedSourceMaterialization)}:{},...te(s.hostedSourceCheck)?{hostedSourceCheck:te(s.hostedSourceCheck)}:{},...ne(s.hostedPublish)?{hostedPublish:ne(s.hostedPublish)}:{},...oe(s.hostedRun)?{hostedRun:oe(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(e.profiles)){let s=e.profiles.flatMap(a=>{let l=G(a);if(!l)return[];let p=a,d=p.source==="github"||p.source==="openpond_git"?p.source:"local",g=typeof p.repositoryId=="string"&&p.repositoryId.trim()?p.repositoryId.trim():Le.resolve(l.repoPath);return[{source:d,repositoryId:g,repoPath:l.repoPath,profile:l.profile,...l.lastCheck?{lastCheck:l.lastCheck}:{},...l.lastPush?{lastPush:l.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}i(G,"sanitizeLocalOpenPondProfile");function ee(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runtimeAgentId"),...u(e,"projectId"),...u(e,"sourceRoot"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"manifestSyncedAt"),...se(e,"fileCount"),...se(e,"totalBytes"),...u(e,"generatedManifestPath"),...j(e,"synthesizedOpenPondYaml"),...u(e,"uploadMetadataPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...u(e,"materializedAt"),...u(e,"error")}:null}i(ee,"sanitizeHostedMaterializationStatus");function te(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"deployPlanStatus"),...j(e,"canRun"),...j(e,"canDeploy"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...R(e,"requiredChecks"),...R(e,"evalNames"),...R(e,"blockedReasons"),...R(e,"staleReasons"),...u(e,"runtimeId"),...u(e,"sandboxId"),...R(e,"traceArtifactRefs"),...R(e,"evalResultArtifactRefs"),...R(e,"validatorArtifactRefs"),...u(e,"checkedAt"),...u(e,"error")}:null}i(te,"sanitizeHostedSourceCheckStatus");function ne(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"snapshotId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"buildStatus"),...u(e,"validationStatus"),...u(e,"evalStatus"),...u(e,"publishedAt"),...u(e,"error")}:null}i(ne,"sanitizeHostedPublishStatus");function oe(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runId"),...u(e,"runtimeId"),...u(e,"sandboxId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"setupGateStatus"),...R(e,"setupRequirementRefs"),...R(e,"artifactRefs"),...R(e,"traceArtifactRefs"),...R(e,"evalArtifactRefs"),...u(e,"startedAt"),...u(e,"completedAt"),...u(e,"error")}:null}i(oe,"sanitizeHostedRunSummary");function u(t,e){let n=t[e];return typeof n=="string"||n===null?{[e]:n}:{}}i(u,"nullableStringProp");function j(t,e){let n=t[e];return typeof n=="boolean"||n===null?{[e]:n}:{}}i(j,"nullableBooleanProp");function se(t,e){let n=t[e];return typeof n=="number"||n===null?{[e]:n}:{}}i(se,"nullableNumberProp");function R(t,e){let n=t[e];if(!Array.isArray(n))return{};let o=n.filter(r=>typeof r=="string");return{[e]:o}}i(R,"stringArrayProp");function v(t){return typeof t=="string"&&t.trim()?t.trim():null}i(v,"stringField");function ae(t,e){if(!C(t.handle,e.handle))return!1;let n=m(e.baseUrl);return n?m(t.baseUrl)===n:!m(t.baseUrl)}i(ae,"accountMatchesSelector");function $(t,e,n={}){let o=m(e.baseUrl);if(o)return M(t,e.handle,o);let r=t.findIndex(a=>ae(a,e));if(r!==-1)return r;let s=t.map((a,l)=>({account:a,index:l})).filter(({account:a})=>C(a.handle,e.handle));if(s.length>1&&n.requireUnambiguous)throw new Error(`multiple profiles found for ${e.handle}; pass --base-url to select one`);return s[0]?.index??-1}i($,"findAccountIndexForSelector");function ve(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n={};return typeof e.token=="string"&&(n.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(n.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(n.conversationId=e.conversationId),Object.keys(n).length>0?n:void 0}i(ve,"sanitizeSession");function $e(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o={handle:n};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl),typeof e.environment=="string"&&(o.environment=e.environment);let r=ve(e.session);return r&&(o.session=r),o}i($e,"sanitizeAccount");function _e(t){let e={};return typeof t.token=="string"&&(e.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(e.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(e.conversationId=t.conversationId),Object.keys(e).length>0?e:void 0}i(_e,"extractLegacySession");function Be(t,e){let n={handle:e};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl);let o=_e(t);return o&&(n.session=o),n}i(Be,"extractLegacyAccount");function z(t){let e={};typeof t.lspEnabled=="boolean"&&(e.lspEnabled=t.lspEnabled),(t.executionMode==="local"||t.executionMode==="hosted")&&(e.executionMode=t.executionMode),(t.mode==="general"||t.mode==="builder")&&(e.mode=t.mode);let n=G(t.openpondProfile);n&&(e.openpondProfile=n);let o=[],r=Array.isArray(t.accounts)?t.accounts:[];for(let p of r){let d=$e(p);d&&M(o,d.handle,d.baseUrl)===-1&&o.push(d)}if(o.length===0){let p=b(t.activeProfile)?.handle||U;o.push(Be(t,p))}let s=b(t.activeProfile),a=s?$(o,s):-1,l=o[a===-1?0:a];return e.accounts=o,e.activeProfile=w(l),e}i(z,"normalizeGlobalConfig");function le(t,e,n){let o=t.accounts??[],r=m(n??process.env.OPENPOND_BASE_URL),s=A(e);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let a=A(process.env.OPENPOND_ACCOUNT);if(a)return r?{handle:a,baseUrl:r}:{handle:a};let l=b(t.activeProfile);return l?r?{handle:l.handle,baseUrl:r}:l:o[0]?w(o[0]):{handle:U}}i(le,"resolveRequestedProfile");function ce(t,e,n){let o=m(n);if(o){let s=M(t,e,o);if(s!==-1)return t[s]}else{let s=t.filter(a=>C(a.handle,e));if(s.length>1)throw new Error(`multiple profiles found for ${e}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:e};return o&&(r.baseUrl=o),t.push(r),r}i(ce,"ensureAccount");function re(t){t.session&&Object.keys(t.session).length===0&&delete t.session}i(re,"cleanupAccount");function De(t,e,n,o){let r=n===null||n===void 0&&o.undefinedDeletes;switch(e){case"apiKey":{if(r){delete t.apiKey;return}typeof n=="string"&&(t.apiKey=n);return}case"baseUrl":{if(r){delete t.baseUrl;return}typeof n=="string"&&(t.baseUrl=n);return}case"apiBaseUrl":{if(r){delete t.apiBaseUrl;return}typeof n=="string"&&(t.apiBaseUrl=n);return}case"chatApiBaseUrl":{if(r){delete t.chatApiBaseUrl;return}typeof n=="string"&&(t.chatApiBaseUrl=n);return}case"token":case"appId":case"conversationId":{if(t.session||(t.session={}),r){delete t.session[e],re(t);return}(typeof n=="string"||n===null)&&(t.session[e]=n),re(t);return}}}i(De,"applyScopedKey");function ue(t,e,n){if(!Z.some(p=>S(e,p)))return!1;let r=t.accounts??[],s=b(e.activeProfile)??le(t),a=m(S(e,"baseUrl")?e.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),l=ce(r,s.handle,a);for(let p of Z)S(e,p)&&De(l,p,e[p],n);return t.accounts=r,t.activeProfile=w(l),!0}i(ue,"applyAccountPatch");function pe(t,e){if(S(e,"lspEnabled")&&(typeof e.lspEnabled=="boolean"?t.lspEnabled=e.lspEnabled:e.lspEnabled===null&&delete t.lspEnabled),S(e,"executionMode")&&(e.executionMode==="local"||e.executionMode==="hosted"?t.executionMode=e.executionMode:e.executionMode===null&&delete t.executionMode),S(e,"mode")&&(e.mode==="general"||e.mode==="builder"?t.mode=e.mode:e.mode===null&&delete t.mode),S(e,"activeProfile")){let n=b(e.activeProfile);if(n){let o=$(t.accounts??[],n);t.activeProfile=o===-1?n:w((t.accounts??[])[o])}else e.activeProfile===null&&delete t.activeProfile}if(S(e,"openpondProfile")){let n=G(e.openpondProfile);n?t.openpondProfile=n:e.openpondProfile===null&&delete t.openpondProfile}}i(pe,"applyTopLevelPatch");async function qe(t){let e=P();await L(e),await q(e,()=>t)}i(qe,"writeGlobalConfig");async function K(t){let e=P();return await L(e),await q(e,n=>{let o=z(n);return t(o),o})}i(K,"updateGlobalConfig");async function de(){let t=P();return await L(t),z(await Y(t))}i(de,"loadGlobalConfig");async function Nt(t={}){let e=await de(),n=e.accounts??[],o=le(e,t.account,t.baseUrl),r=$(n,o,{requireUnambiguous:!0}),s=r===-1?null:n[r],a=s?.session;return{...e,activeProfile:s?w(s):o,apiKey:s?.apiKey,baseUrl:s?.baseUrl,apiBaseUrl:s?.apiBaseUrl,chatApiBaseUrl:s?.chatApiBaseUrl,token:a?.token,appId:a?.appId,conversationId:a?.conversationId}}i(Nt,"loadConfig");async function fe(){let t=await de(),e=b(t.activeProfile);return(t.accounts??[]).map(n=>{let o=A(n.handle)??U;return{handle:o,baseUrl:m(n.baseUrl),apiBaseUrl:m(n.apiBaseUrl),chatApiBaseUrl:m(n.chatApiBaseUrl),environment:n.environment?.trim()||null,isActive:!!(e&&ae({...n,handle:o},e)),hasApiKey:!!n.apiKey?.trim(),hasSessionToken:!!n.session?.token?.trim(),sessionAppId:n.session?.appId??null,sessionConversationId:n.session?.conversationId??null}})}i(fe,"listConfiguredProfiles");async function Ht(t,e={}){let n=ie(t),o=m(e.baseUrl),r=-1;await K(a=>{let l=a.accounts??[];if(r=$(l,o?{handle:n,baseUrl:o}:{handle:n},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${n}`);a.activeProfile=w(l[r])});let s=await fe();return s.find(a=>a.isActive)??s[r]}i(Ht,"setActiveProfile");async function jt(t){let e=ie(t.handle),n=Ue(t.apiKey),o=m(t.baseUrl),r=m(t.apiBaseUrl),s=m(t.chatApiBaseUrl),a={handle:e};await K(d=>{let g=d.accounts??[],h=ce(g,e,o);h.apiKey=n,o&&(h.baseUrl=o),r?h.apiBaseUrl=r:t.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:t.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,t.environment===null?delete h.environment:typeof t.environment=="string"&&t.environment.trim()&&(h.environment=t.environment.trim()),d.accounts=g,a=w(h),t.setActive!==!1&&(d.activeProfile=a)});let p=(await fe()).find(d=>C(d.handle,a.handle)?o?m(d.baseUrl)===o:!0:!1);if(!p)throw new Error(`failed to save profile: ${e}`);return p}i(jt,"saveProfileApiKey");async function Mt(t){let e=z(t);pe(e,t),ue(e,t,{undefinedDeletes:!0}),await qe(e)}i(Mt,"saveConfig");async function Gt(t){await K(e=>{pe(e,t),ue(e,t,{undefinedDeletes:!1})})}i(Gt,"saveGlobalConfig");import{createHash as Ne}from"node:crypto";var He=3600*1e3;function J(t){return Ne("sha256").update(JSON.stringify([t.apiBase.replace(/\/$/,""),t.apiKey.trim()])).digest("hex")}i(J,"buildCacheKey");async function me(t,e){let n=await V(P(),t,J(e),{allowStale:!0});return!n||Date.now()-Date.parse(n.updatedAt)>=(e.ttlMs??He)?null:n.payload}i(me,"cached");async function nn(t){return me("cloud.apps",t)}i(nn,"getCachedApps");async function on(t){await D(P(),"cloud.apps",J(t),t.apps)}i(on,"setCachedApps");async function sn(t){return me("cloud.tools",t)}i(sn,"getCachedTools");async function rn(t){await D(P(),"cloud.tools",J(t),t.tools)}i(rn,"setCachedTools");var cn=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{c as a,ye as b,Re as c,Pe as d,Ae as e,Se as f,we as g,xe as h,be as i,Ye as j,We as k,Xe as l,Qe as m,Ze as n,et as o,tt as p,nt as q,ot as r,st as s,rt as t,it as u,at as v,lt as w,ct as x,ut as y,pt as z,dt as A,ft as B,mt as C,gt as D,ht as E,yt as F,Rt as G,Pt as H,At as I,St as J,wt as K,xt as L,Ee as M,bt as N,Tt as O,Ot as P,Et as Q,Ct as R,kt as S,Lt as T,ke as U,It as V,qt as W,K as X,de as Y,Nt as Z,fe as _,Ht as $,jt as aa,Mt as ba,Gt as ca,He as da,nn as ea,on as fa,sn as ga,rn as ha,cn as ia};
@@ -0,0 +1,19 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{a as Re,b as be,c as Ae,d as Ie}from"./chunk-3NDRIQTI.js";import{a as Oe}from"./chunk-6FA3GG5B.js";import{Y as O,ca as L}from"./chunk-CWQWV2T3.js";import{f as Ce}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";var z=class extends Error{static{s(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,n){let o=n.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,o.length?`Missing setup: ${o.join(", ")}`:""].filter(Boolean).join(`
3
+ `)),this.name="OpenPondProfileSetupRequiredError",this.details={error:"agent_source_setup_required",actionId:t,setupGate:n,missing:o,blockingSetupRequirements:n.blockingRequirements,setupRequirements:n.requirements}}};function J(e){let t=new Map;for(let a of e.sourceSetupRequirements??[]){let l=Rt(a);if(e.actionId&&l&&l!==e.actionId&&h(a.actionName)!==e.actionId&&h(a.sourceActionId)!==e.actionId)continue;let c=ve({record:a,source:"source_upload_metadata",actionId:l});c&&t.set(c.ref,c)}for(let a of e.actionCatalog)if(!(e.actionId&&a.id!==e.actionId&&a.name!==e.actionId))for(let l of a.setupRequirements??[]){let c=ve({record:l,source:"action_catalog",actionId:a.id});c&&t.set(c.ref,c)}let n=Array.from(t.values()),o=n.filter(a=>a.blocking),r=n.filter(a=>!a.required&&!te(a.status)).length,i=n.filter(a=>te(a.status)).length;return{status:At(o),requirementCount:n.length,blockingCount:o.length,optionalMissingCount:r,readyCount:i,requirements:n,blockingRequirements:o}}s(J,"buildOpenPondProfileSetupGate");function ne(e,t){if(t.blockingRequirements.length>0)throw new z(e,t)}s(ne,"assertOpenPondProfileActionReady");function Ot(e){let t=e.actionId?`${e.actionId}: `:"",n=e.required?"required":"optional";return`${t}${e.label} (${n}, ${e.status})`}s(Ot,"formatOpenPondProfileSetupRequirement");function ve(e){let t=e.source==="action_catalog"&&h(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,n=h(e.record.kind)??h(e.record.type),o=h(e.record.label)??h(e.record.name)??h(e.record.key)??h(e.record.provider)??h(e.record.tool)??h(e.record.command)??h(e.record.packageName)??h(e.record.path)??h(e.record.repo)??h(e.record.url)??h(e.record.id)??n??"setup requirement",r=e.record.required!==!1,i=bt(e.record);return{ref:[t,e.actionId??"source",n??"requirement",o].join(":"),source:t,actionId:e.actionId,kind:n,label:o,status:i,required:r,blocking:r&&!te(i)}}s(ve,"setupRequirementFromRecord");function Rt(e){return h(e.actionId)??h(e.sourceActionId)??h(e.actionName)}s(Rt,"setupRequirementActionId");function bt(e){let t=h(e.status)??h(e.state);return t?t==="satisfied"||t==="connected"||t==="provided"?"ready":t:typeof e.satisfied=="boolean"?e.satisfied?"ready":"setup_required":typeof e.ready=="boolean"&&e.ready?"ready":"setup_required"}s(bt,"setupStatus");function At(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}s(At,"gateStatus");function te(e){return e==="ready"||e==="disabled"}s(te,"isReadyStatus");function h(e){return typeof e=="string"&&e.trim()?e.trim():null}s(h,"text");import{stat as $t}from"node:fs/promises";import ie from"node:path";import{spawn as It}from"node:child_process";import{existsSync as oe}from"node:fs";import{readFile as vt,rm as Kn,writeFile as xe}from"node:fs/promises";import re from"node:path";var _e=["**/node_modules/","**/.bun/","**/.env","**/.env.*","**/.openpond/traces/","**/.openpond/vendor/","**/.openpond/eval-results.json","**/.openpond/artifact-index.json","**/.openpond/source-upload-cache.json",""].join(`
4
+ `);async function Le(e){if(!oe(re.join(e,".git"))){let i=await R(e,["init","-b","main"]);if(i.code!==0)throw new Error(G("git init",i))}let t=re.join(e,".gitignore");if(oe(t)?await Et(t):await xe(t,_e,"utf8"),await xt(e))return;let n=await N(e);if(!n.dirty&&n.files.length===0)return;let o=await R(e,["add","-A"]);if(o.code!==0)throw new Error(G("git add",o));let r=await R(e,["commit","-m","Initialize OpenPond profile"],{env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}});if(r.code!==0&&!/nothing to commit/i.test(r.stdout+r.stderr))throw new Error(G("git commit",r))}s(Le,"ensureProfileGitRepo");async function Et(e){let t=await vt(e,"utf8").catch(()=>""),n=_e.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(i=>i.trim()===r));if(n.length===0)return;let o=t.endsWith(`
5
+ `)||t.length===0?"":`
6
+ `;await xe(e,`${t}${o}${n.join(`
7
+ `)}
8
+ `,"utf8")}s(Et,"ensureProfileGitignoreRules");async function N(e){if(!oe(re.join(e,".git")))return{isRepo:!1,branch:null,head:null,shortHead:null,dirty:!1,upstream:null,ahead:null,behind:null,remoteUrl:null,files:[],error:null};let t=await R(e,["rev-parse","--is-inside-work-tree"]);if(t.code!==0||t.stdout.trim()!=="true")return{isRepo:!1,branch:null,head:null,shortHead:null,dirty:!1,upstream:null,ahead:null,behind:null,remoteUrl:null,files:[],error:t.stderr.trim()||t.stdout.trim()||"not a Git work tree"};let[n,o,r,i,a]=await Promise.all([B(e,["branch","--show-current"]),B(e,["rev-parse","HEAD"]),R(e,["status","--porcelain=v1","-uall"]),B(e,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),B(e,["remote","get-url","origin"])]),l=r.code===0?Lt(r.stdout):[],c=i?await _t(e):{ahead:null,behind:null},d=o||null;return{isRepo:!0,branch:n||null,head:d,shortHead:d?d.slice(0,12):null,dirty:l.length>0,upstream:i,ahead:c.ahead,behind:c.behind,remoteUrl:a,files:l,error:r.code===0?null:G("git status",r)}}s(N,"loadProfileGitState");async function Me(e,t){let n=await N(e);if(!n.isRepo)throw new Error(n.error??"Active OpenPond profile source is not a Git repo.");if(!n.dirty)return{committed:!1,stdout:"",stderr:"",state:n};let o=await R(e,["add","-A"]);if(o.code!==0)throw new Error(G("git add",o));let r=await R(e,["commit","-m",t]);if(r.code!==0)throw new Error(G("git commit",r));return{committed:!0,stdout:r.stdout,stderr:r.stderr,state:await N(e)}}s(Me,"commitProfileChanges");async function $e(e){return B(e,["rev-parse","HEAD"])}s($e,"profileGitHead");async function xt(e){return(await R(e,["rev-parse","--verify","HEAD"])).code===0}s(xt,"hasGitHead");async function _t(e){let t=await R(e,["rev-list","--left-right","--count","@{u}...HEAD"]);if(t.code!==0)return{ahead:null,behind:null};let[n,o]=t.stdout.trim().split(/\s+/),r=n?Number.parseInt(n,10):Number.NaN,i=o?Number.parseInt(o,10):Number.NaN;return{ahead:Number.isFinite(i)?i:null,behind:Number.isFinite(r)?r:null}}s(_t,"loadAheadBehind");async function B(e,t){let n=await R(e,t);return n.code!==0?null:n.stdout.trim()||null}s(B,"gitText");function Lt(e){return e.split(/\r?\n/).map(t=>t.trimEnd()).filter(Boolean).map(t=>{let n=t[0]??" ",o=t[1]??" ",r=`${n}${o}`.trim()||"changed",i=t.slice(3),a=i.split(" -> "),l=n===" "?null:n,c=o===" "?null:o,d=a.length===2?a[1]:i,g=a.length===2?a[0]:null;return{path:Ee(d),originalPath:g?Ee(g):null,indexStatus:l,worktreeStatus:c,status:r,category:Mt(l,c)}})}s(Lt,"parsePorcelainStatus");function Mt(e,t){return e==="?"&&t==="?"?"untracked":e==="R"||t==="R"?"renamed":e==="A"||t==="A"?"added":e==="D"||t==="D"?"deleted":e==="M"||t==="M"?"modified":"changed"}s(Mt,"gitChangeCategory");function Ee(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}s(Ee,"unquoteGitPath");function G(e,t){return t.stderr.trim()||t.stdout.trim()||`${e} failed with exit code ${t.code??"unknown"}`}s(G,"gitFailureMessage");async function R(e,t,n={}){return new Promise((o,r)=>{let i=It("git",t,{cwd:e,env:n.env,stdio:"pipe"}),a="",l="";i.stdout?.on("data",c=>{a+=String(c)}),i.stderr?.on("data",c=>{l+=String(c)}),i.on("error",r),i.on("close",c=>{o({code:c,stdout:a,stderr:l})}),n.input!==void 0?i.stdin?.end(n.input):i.stdin?.end()})}s(R,"runGitCommand");var se=1500,Fe=8*1024*1024,ae=100*1024*1024,le=8,qt={maxFiles:se,maxFileBytes:Fe,maxTotalBytes:ae,concurrency:le},jt={mode:"single_json_payload",chunkingSupported:!1};async function Ft(e){let t=await R(e,["ls-files","-z"]);if(t.code!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"git ls-files failed for profile source upload");let n=t.stdout.split("\0").map(c=>c.trim()).filter(Boolean).filter(c=>{let d=c.replace(/\\/g,"/");return je(d)&&!Tt(d)}).sort();if(n.length===0)throw new Error("No committed profile source files found to upload.");if(n.length>se)throw new Error(`Too many profile source files to upload: ${n.length} > ${se}`);let o=(await qe(n,le,async c=>{let d=ie.resolve(e,c),g=ie.relative(e,d).replace(/\\/g,"/");if(!je(g))throw new Error(`Profile source path escapes repo: ${c}`);let P=await $t(d);if(!P.isFile())return null;if(P.size>Fe)throw new Error(`Profile source file is too large: ${c} (${P.size} bytes)`);return{path:g,absolutePath:d,size:P.size,mtimeMs:Math.trunc(P.mtimeMs),ctimeMs:Math.trunc(P.ctimeMs)}})).filter(c=>c!==null),r=0;for(let c of o)if(r+=c.size,r>ae)throw new Error(`Profile source upload is too large: ${r} > ${ae}`);let i=await be(e),a=await qe(o,le,async c=>Ae(c,i));await Ie(e,a).catch(()=>{});let l=a.map(c=>c.entry);return{entries:l,fileCount:l.length,totalBytes:r,limits:qt,transport:jt}}s(Ft,"collectProfileSourceUploadEntries");async function qe(e,t,n){let o=new Array(e.length),r=0,i=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:i},async()=>{for(;r<e.length;){let a=r;r+=1,o[a]=await n(e[a],a)}})),o}s(qe,"mapWithConcurrency");function je(e){return e.length>0&&!e.includes("\0")&&!ie.isAbsolute(e)&&!e.split(/[\\/]+/).some(t=>!t||t==="."||t==="..")}s(je,"isSafeProfileSourcePath");function Tt(e){return e.split(/[\\/]+/).some((t,n,o)=>{let r=t.toLowerCase();if(r===".git"||r==="node_modules"||r===".bun"||r===".env"||r.startsWith(".env.")||e.replace(/\\/g,"/")===Re)return!0;if(r!==".openpond")return!1;let i=o[n+1]?.toLowerCase();return i==="goals"||i==="traces"||i==="vendor"||i==="eval-results.json"||i==="artifact-index.json"})}s(Tt,"shouldSkipProfileSourcePath");function Ht(e){let t=y(e.checkResult),n=y(t?.deployPlan)??y(e.deployPlan),o=y(n?.source),r=y(n?.checks),i=y(t?.sourceCheckStatus);return{status:e.status,agentId:e.agentId,deployPlanStatus:f(n?.status),canRun:Te(n?.canRun),canDeploy:Te(n?.canDeploy),sourceRef:f(o?.sourceRef),sourceCommitSha:f(o?.sourceCommitSha),manifestHash:f(o?.manifestHash),manifestPath:f(o?.manifestPath),setupCommands:b(r?.setupCommands),validationCommands:b(r?.validationCommands),requiredChecks:b(r?.requiredChecks),evalNames:b(r?.evalNames),blockedReasons:b(n?.blockedReasons),staleReasons:b(n?.staleReasons),runtimeId:f(i?.latestRuntimeId),sandboxId:f(i?.latestSandboxId),traceArtifactRefs:b(i?.traceArtifactRefs),evalResultArtifactRefs:b(i?.evalResultArtifactRefs),validatorArtifactRefs:b(i?.validatorArtifactRefs),checkedAt:e.checkedAt??new Date().toISOString(),error:e.error??null}}s(Ht,"hostedSourceCheckStatusFromPayload");function Gt(e){let t=y(e.publishResult),n=y(t?.activeManifestSnapshot)??y(t?.manifestSnapshot)??y(t?.snapshot);return{status:e.status??"published",agentId:e.agentId,snapshotId:f(n?.id),sourceRef:f(n?.sourceRef),sourceCommitSha:f(n?.sourceCommitSha),manifestHash:f(n?.manifestHash),manifestPath:f(n?.manifestPath),buildStatus:f(n?.buildStatus),validationStatus:f(n?.validationStatus),evalStatus:f(n?.evalStatus),publishedAt:f(t?.publishedAt)??f(n?.publishedAt),error:e.error??null}}s(Gt,"hostedPublishStatusFromPayload");function Nt(e){let t=y(e.runResult),n=y(t?.run),o=y(n?.runtimeSource),r=y(n?.metadata),i=y(r?.sourceSummary),a=y(r?.setupGate),l=y(r?.responseSummary),c=y(r?.traceSummary),d=y(r?.evalSummary);return{status:f(n?.status)??(e.error?"failed":"running"),agentId:f(n?.agentId)??e.agentId,runId:f(n?.id),runtimeId:f(n?.runtimeId),sandboxId:f(n?.sandboxId),sourceRef:f(o?.sourceRef)??f(i?.sourceRef)??f(r?.sourceRef),sourceCommitSha:f(o?.sourceCommitSha)??f(i?.sourceCommitSha)??f(r?.hostedHead),manifestHash:f(o?.manifestHash)??f(i?.manifestHash),setupGateStatus:f(a?.status),setupRequirementRefs:Dt(a),artifactRefs:b(l?.artifactRefs),traceArtifactRefs:b(c?.artifactRefs),evalArtifactRefs:b(d?.artifactRefs),startedAt:f(n?.createdAt),completedAt:f(n?.completedAt),error:e.error??null}}s(Nt,"hostedRunSummaryFromPayload");function Ut(e){return e?.status?e.status==="succeeded"||e.status==="passed"?"passed":e.status==="failed"||e.status==="cancelled"?"failed":"running":"not_started"}s(Ut,"hostedRunStatusFromRunSummary");function Dt(e){return e?(Array.isArray(e.requirements)?e.requirements:Array.isArray(e.blockingRequirements)?e.blockingRequirements:[]).map(n=>{let o=y(n);return f(o?.ref)??f(o?.id)??f(o?.label)}).filter(n=>!!n):[]}s(Dt,"setupRequirementRefs");function y(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(y,"record");function f(e){return typeof e=="string"&&e.trim()?e.trim():null}s(f,"text");function Te(e){return typeof e=="boolean"?e:null}s(Te,"booleanValue");function b(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(b,"textArray");import{createRequire as it}from"node:module";import{createHash as Qe,randomUUID as et}from"node:crypto";import{spawn as Pn}from"node:child_process";import{existsSync as k}from"node:fs";import{cp as hn,mkdir as E,readFile as st,readdir as at,rename as me,rm as Pe,symlink as yn,writeFile as D}from"node:fs/promises";import u from"node:path";function ce(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}s(ce,"emptyProfileCatalogState");function ue(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}s(ue,"emptyProfileSkillCatalogState");function de(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}s(de,"emptyProfileSetupGate");function W(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}s(W,"emptyProfileDiffSummary");function fe(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}s(fe,"emptyProfileSummary");import{existsSync as U}from"node:fs";import{readFile as Bt,stat as zt}from"node:fs/promises";import K from"node:path";var He=".openpond/agent-manifest.json",Ge=".openpond/action-registry.json",Jt=".openpond/source-upload-metadata.json",Wt=".openpond/agent-package-origin.json";async function De(e){return ze({agentId:"default",sourcePath:e,preferred:!0})}s(De,"loadProfileActionCatalog");async function Be(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:"No profile agent sources are enabled."},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(l=>l.preferred),...e.filter(l=>!l.preferred)],n=await Promise.all(t.map(ze)),o=new Map,r=[];for(let l of n)for(let c of l.actionCatalog){let d=o.has(c.id)?`${c.agentId??"agent"}.${c.sourceActionId??c.id}`:c.id,g=d===c.id?c:{...c,id:d};o.set(d,g),r.push(g)}let i=Yt(n.map(l=>l.catalog.generatedAt)),a=n.map(l=>l.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:i,manifestPath:n.find(l=>l.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:n.find(l=>l.catalog.registryPath)?.catalog.registryPath??null,stale:n.some(l=>l.catalog.stale),error:a.length>0?a.join("; "):null},actionCatalog:r,sourceSetupRequirements:n.flatMap(l=>l.sourceSetupRequirements)}}s(Be,"loadProfileActionCatalogForSources");async function ze(e){let t=e.sourcePath,n=K.join(t,He),o=K.join(t,Ge),r=K.join(t,Jt),i=K.join(t,Wt);try{let a=await Y(n),l=await Y(o),c=await Y(r),d=w(await Y(i)),g=w(w(a)?.inputSchemas),P=Ue(w(c)?.setupRequirements)??[],x=Vt(P),S=new Map;for(let m of[...pe(w(a)?.actionCatalog),...pe(w(l)?.actions),...pe(w(a)?.actions)]){let $=p(m.id)??p(m.name);if(!$)continue;let C=S.get($),St=Xt({sourceRequirementsByAction:x,actionId:$,actionName:p(m.name)}),kt=Zt(Ue(m.setupRequirements)??C?.setupRequirements??[],St),Ct={id:$,agentId:e.agentId,sourcePath:t,sourceActionId:$,name:p(m.name)??C?.name??$,label:p(m.label)??C?.label??on($),description:p(m.description)??C?.description??null,visibility:p(m.visibility)??C?.visibility??"default",inputSchema:nn(m.inputSchema,g)??C?.inputSchema??null,outputSchema:Je(m.outputSchema)??C?.outputSchema??null,approvalPolicy:w(m.approvalPolicy)??C?.approvalPolicy??null,artifactPolicy:w(m.artifactPolicy)??C?.artifactPolicy??null,setupRequirements:kt,mcp:w(m.mcp)??C?.mcp??null,schedulePolicy:w(m.schedulePolicy)??C?.schedulePolicy??null,trace:Kt(w(m.trace)??C?.trace??null,d),implementation:w(m.implementation)??C?.implementation??null,invokesModel:typeof m.invokesModel=="boolean"?m.invokesModel:C?.invokesModel};S.set($,Ct)}let M=Array.from(S.values()).filter(m=>m.visibility!=="internal"&&m.visibility!=="debug"),H=[...a?[]:[He],...l?[]:[Ge]],_=await tn([n,o]);return{catalog:{actionCount:M.length,generatedAt:_,manifestPath:U(n)?n:null,registryPath:U(o)?o:null,stale:H.length>0,error:H.length>0?en(e,H):null},actionCatalog:M,sourceSetupRequirements:P}}catch(a){return{catalog:{actionCount:0,generatedAt:null,manifestPath:U(n)?n:null,registryPath:U(o)?o:null,stale:!0,error:a instanceof Error?a.message:String(a)},actionCatalog:[],sourceSetupRequirements:[]}}}s(ze,"loadProfileActionCatalogSource");function Kt(e,t){if(!t)return e;let n=p(t.versionId),o=p(t.digest);return!n||!o?e:{...e??{},agentVersionId:n,agentPackageDigest:o,validationReceiptIds:Ne(t.validationReceiptIds),evalReceiptIds:Ne(t.evalReceiptIds)}}s(Kt,"mergeAgentPackageTrace");function Ne(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(Ne,"stringArray");function Yt(e){let t=0;for(let n of e){if(!n)continue;let o=Date.parse(n);Number.isFinite(o)&&(t=Math.max(t,o))}return t>0?new Date(t).toISOString():null}s(Yt,"latestIso");function Vt(e){let t=new Map;for(let n of e){let o=[p(n.actionId),p(n.sourceActionId),p(n.actionName)].filter(r=>!!r);for(let r of o){let i=t.get(r)??[];i.push(n),t.set(r,i)}}return t}s(Vt,"sourceSetupRequirementsByAction");function Xt(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(n=>({...n,source:"source_upload_metadata"}))}s(Xt,"setupRequirementsForActionSource");function Zt(e,t){if(t.length===0)return e;let n=[],o=new Set;for(let r of[...e,...t]){let i=Qt(r);o.has(i)||(o.add(i),n.push(r))}return n}s(Zt,"mergeSetupRequirements");function Qt(e){return[p(e.actionId)??p(e.sourceActionId)??p(e.actionName)??"",p(e.kind)??p(e.type)??"",p(e.name)??p(e.key)??p(e.provider)??p(e.tool)??p(e.command)??p(e.packageName)??p(e.path)??p(e.repo)??p(e.url)??p(e.id)??""].join(":")}s(Qt,"setupRequirementIdentity");function en(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}s(en,"missingSourceArtifactsMessage");async function Y(e){return U(e)?JSON.parse(await Bt(e,"utf8")):null}s(Y,"readJsonIfExists");async function tn(e){let t=0;for(let n of e){if(!U(n))continue;let o=await zt(n);t=Math.max(t,o.mtimeMs)}return t>0?new Date(t).toISOString():null}s(tn,"latestMtime");function w(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(w,"asRecord");function pe(e){return Array.isArray(e)?e.filter(t=>!!w(t)):[]}s(pe,"records");function Ue(e){return Array.isArray(e)?e.filter(t=>!!w(t)):null}s(Ue,"recordArray");function p(e){return typeof e=="string"&&e.trim()?e.trim():null}s(p,"text");function Je(e){return p(e)??w(e)}s(Je,"schemaValue");function nn(e,t){let n=Je(e);return typeof n!="string"?n:w(t?.[n])??n}s(nn,"resolvedSchemaValue");function on(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,n=>n.toUpperCase()):e}s(on,"titleFromActionId");import{createHash as rn}from"node:crypto";import{existsSync as Ve}from"node:fs";import{readdir as Xe,readFile as sn,stat as an}from"node:fs/promises";import q from"node:path";var ge="skills",V="SKILL.md",We=8e4;async function Ze(e){let t=q.join(e,ge);if(!Ve(t))return{skillCatalog:Ke({stale:!1}),skills:[]};try{let n=await Xe(t,{withFileTypes:!0}),o=(await Promise.all(n.filter(i=>i.isDirectory()).map(i=>cn(e,i.name)))).sort((i,a)=>i.name.localeCompare(a.name)||i.path.localeCompare(a.path));dn(o);let r=await fn(e,o);return{skillCatalog:{skillCount:o.length,generatedAt:r,stale:!1,error:null},skills:o}}catch(n){return{skillCatalog:Ke({stale:!0,error:n instanceof Error?n.message:String(n)}),skills:[]}}}s(Ze,"loadProfileSkills");function ln(e){let t=[],n=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/.exec(e);if(!n)return{name:null,description:null,body:e.trim(),messages:["SKILL.md must start with YAML frontmatter bounded by ---."]};let o=n[1]??"",r=(n[2]??"").trim(),i;try{i=Oe.load(o)}catch(d){t.push(`SKILL.md frontmatter is invalid YAML: ${d instanceof Error?d.message:String(d)}`)}let a=gn(i),l=Ye(a?.name),c=Ye(a?.description);return l||t.push("Skill frontmatter must include a non-empty name."),c||t.push("Skill frontmatter must include a non-empty description."),r||t.push("Skill body must be non-empty markdown."),{name:l,description:c,body:r,messages:t}}s(ln,"parseProfileSkillMarkdown");function Ke(e={}){return{skillCount:0,generatedAt:null,stale:e.stale??!0,error:e.error??null}}s(Ke,"emptyProfileSkillCatalogState");async function cn(e,t){let n=q.join(ge,t,V).replace(/\\/g,"/"),o=q.join(e,n),r=[],i=q.join(e,ge,t),a=await un(i),l="";Ve(o)?l=await sn(o,"utf8"):r.push(`Missing ${V}.`),l.length>We&&r.push(`Skill markdown exceeds the limit of ${We} characters.`);let c=ln(l);r.push(...c.messages);let d=c.name??t,g=c.description??"";return pn(d)||r.push("Skill name must be lowercase kebab-case."),d!==t&&r.push(`Skill name must match its directory name (${t}).`),{name:d,description:g,path:n,scope:"profile",enabled:r.length===0,sourcePath:e,charCount:l.length,sourceHash:mn(l),validationStatus:r.length>0?"error":"valid",validationMessages:r,resourceFiles:a.filter(P=>P!==V)}}s(cn,"loadProfileSkillDirectory");async function un(e){let t=[];async function n(o,r){let i=await Xe(o,{withFileTypes:!0});await Promise.all(i.map(async a=>{let l=r?`${r}/${a.name}`:a.name;a.isDirectory()?await n(q.join(o,a.name),l):a.isFile()&&t.push(l)}))}return s(n,"visit"),await n(e,""),t.sort()}s(un,"listPackageFiles");function dn(e){let t=new Map;for(let n of e)t.set(n.name,(t.get(n.name)??0)+1);for(let n of e)(t.get(n.name)??0)<=1||(n.enabled=!1,n.validationStatus="error",n.validationMessages=[...n.validationMessages,`Duplicate skill name: ${n.name}`])}s(dn,"markDuplicateSkillNames");async function fn(e,t){let n=0;for(let o of t){let r=q.dirname(q.join(e,o.path)),i=[V,...o.resourceFiles];for(let a of i){let l=await an(q.join(r,a)).catch(()=>null);l?.isFile()&&(n=Math.max(n,l.mtimeMs))}}return n>0?new Date(n).toISOString():null}s(fn,"latestSkillMtime");function pn(e){return/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e)}s(pn,"isKebabCaseSkillName");function gn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(gn,"asRecord");function Ye(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}s(Ye,"text");function mn(e){return rn("sha256").update(e).digest("hex")}s(mn,"sha256Hex");var F="openpond-profile.json",wn="settings/profile.yaml",lt="default",A="default";function Sn(e,t){let n=e?.defaultAgent??A,o=e?.enabledAgents&&e.enabledAgents.length>0?e.enabledAgents:[n];return{...e??{},path:t,defaultAgent:n,enabledAgents:o}}s(Sn,"mergeProfileRepoManifestEntry");function Z(e,t,n){let o=I(e);if(e){let l=o.findIndex(d=>u.resolve(d.repoPath)===u.resolve(e.repoPath)&&d.profile===e.profile),c={source:o[l]?.source??"local",repositoryId:o[l]?.repositoryId??u.resolve(e.repoPath),repoPath:u.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}};l>=0?o[l]=c:o.push(c)}let r=o.findIndex(l=>u.resolve(l.repoPath)===u.resolve(t)&&l.profile===n),i=r>=0?o[r]:{source:"local",repositoryId:u.resolve(t),repoPath:u.resolve(t),profile:n};return r<0&&o.push(i),{repoPath:u.resolve(t),profile:n,mode:"local",profiles:o,...i.lastCheck?{lastCheck:i.lastCheck}:{},...i.lastPush?{lastPush:i.lastPush}:{}}}s(Z,"mergeActiveLocalProfileConfig");function I(e){if(!e)return[];let t=e.profiles?.map(n=>({...n}))??[];return t.some(n=>u.resolve(n.repoPath)===u.resolve(e.repoPath)&&n.profile===e.profile)||t.push({source:"local",repositoryId:u.resolve(e.repoPath),repoPath:u.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}}),t}s(I,"profileConfigEntries");var kn=it(import.meta.url);function Cn(){return u.join(Ce(),"library","profiles","default-repo")}s(Cn,"defaultLocalProfileRepoPath");function ct(e=null){return{mode:"none",repoPath:null,activeProfile:null,sourcePath:null,manifestPath:null,agents:[],skills:[],evals:[],git:null,catalog:ce(e),skillCatalog:ue(e),actionCatalog:[],sourceSetupRequirements:[],setupGate:de(),diff:W(),hosted:null,summary:fe(e),lastCheck:null,error:e}}s(ct,"emptyProfileState");async function qo(e={}){let t=u.resolve(e.repoPath??Cn()),n=Se(e.profile),o=u.join("profiles",n),r=u.join(t,o),i=e.template??"blank-agent",a=i==="blank-profile";await E(t,{recursive:!0});let l=k(u.join(t,F)),c=await T(t).catch(()=>Tn(n,o));if(a&&l&&c.profiles[n])throw new Error(`Profile "${n}" already exists in ${t}.`);c.defaultProfile=c.defaultProfile||n,c.profiles[n]=Sn(c.profiles[n],o),a&&(c.profiles[n].enabledAgents=[]),a?await E(r,{recursive:!0}):await An(r,i,!!e.force),await pt(r),await In(t,r,n,{includeDefaultAgent:!a}),await X(t,c),await Le(t);let d=(await O()).openpondProfile;return await L({openpondProfile:Z(d,t,n)}),j()}s(qo,"initLocalProfileRepo");async function jo(e,t,n){let o=u.resolve(e),r=await T(o),i=Se(t??r.defaultProfile);ke(r,o,i);let a=(await O()).openpondProfile,l=Z(a,o,i);return ut(l,o,i,n),await L({openpondProfile:l}),j()}s(jo,"loadLocalProfileRepo");async function Fo(e,t,n){let o=u.resolve(e),r=await T(o),i=Se(t??r.defaultProfile);ke(r,o,i);let a=(await O()).openpondProfile,l=Z(a,o,i);return ut(l,o,i,n),a&&(l.repoPath=a.repoPath,l.profile=a.profile,l.lastCheck=a.lastCheck,l.lastPush=a.lastPush),await L({openpondProfile:l}),Rn(he({repoPath:o,profile:i,source:n?.source,repositoryId:n?.repositoryId}))}s(Fo,"registerLocalProfileRepo");function ut(e,t,n,o){o&&(e.profiles=I(e).map(r=>u.resolve(r.repoPath)===t&&r.profile===n?{...r,source:o.source,repositoryId:o.repositoryId}:r))}s(ut,"applyProfileIdentity");async function To(e,t){let n=e.trim(),o=Fn(t);if(!n)throw new Error("Agent ID is required.");let i=(await O()).openpondProfile;if(!i)throw new Error("No active local Profile.");let a=await T(i.repoPath),l=a.profiles[i.profile];if(!l)throw new Error(`Profile "${i.profile}" was not found.`);let c=l.defaultAgent??A;if(!(l.enabledAgents??[c]).includes(n))throw new Error(`Agent "${n}" was not found in Profile "${i.profile}".`);let g={...l.agentNames??{}};return o===n?delete g[n]:g[n]=o,Object.keys(g).length?l.agentNames=g:delete l.agentNames,await X(i.repoPath,a),j()}s(To,"renameActiveProfileAgent");async function Ho(e){let t=e.agentPackage;if(Hn(t),!/^[a-z0-9][a-z0-9._-]{0,190}$/.test(t.agentId))throw new Error("Agent package ID is not safe for a local Profile.");let n=await Q(),o=n.state.sourcePath;await pt(o);let r=u.join(o,"agents");await E(r,{recursive:!0});let i=u.join(r,t.agentId),a=k(i);if(a&&e.overwrite!==!0)throw new Error(`Agent "${t.agentId}" already exists. Confirm replacement to install this version.`);let l=u.join(r,`.${t.agentId}.${et()}.installing`),c=u.join(r,`.${t.agentId}.${et()}.backup`),d=await T(n.config.repoPath),g=JSON.stringify(d),P=!1,x=!1;try{await Gn(l,t),a&&(await me(i,c),P=!0),await me(l,i),x=!0;let S=d.profiles[n.config.profile];if(!S)throw new Error(`Profile "${n.config.profile}" was not found.`);let M=new Set(S.enabledAgents??[]);M.add(t.agentId),S.enabledAgents=[...M],S.defaultAgent||(S.defaultAgent=t.agentId),S.agentNames={...S.agentNames??{},[t.agentId]:t.title},await X(n.config.repoPath,d),P&&await Pe(c,{recursive:!0,force:!0})}catch(S){throw await Pe(l,{recursive:!0,force:!0}),x&&await Pe(i,{recursive:!0,force:!0}),P&&k(c)&&await me(c,i),JSON.stringify(d)!==g&&await X(n.config.repoPath,JSON.parse(g)).catch(()=>{}),S}return{state:await j(),agentId:t.agentId,versionId:t.versionId,digest:t.digest}}s(Ho,"installAgentPackageIntoActiveProfile");async function j(){let t=(await O()).openpondProfile;return t?we(t):ct()}s(j,"loadOpenPondProfileState");function he(e){return{source:e.source??"local",repositoryId:e.repositoryId?.trim()||u.resolve(e.repoPath),profileId:e.profile}}s(he,"openPondProfileRef");async function On(){let e=(await O()).openpondProfile;if(!e)return{lastUsed:null,profiles:[]};let t=I(e),n=await Promise.all(t.map(async o=>{let r=await we({repoPath:o.repoPath,profile:o.profile,mode:"local",...o.lastCheck?{lastCheck:o.lastCheck}:{},...o.lastPush?{lastPush:o.lastPush}:{}});return{ref:he(o),name:o.profile,repoPath:o.repoPath,sourcePath:r.sourcePath,state:r}}));return{lastUsed:he({repoPath:e.repoPath,profile:e.profile,source:I(e).find(o=>u.resolve(o.repoPath)===u.resolve(e.repoPath)&&o.profile===e.profile)?.source,repositoryId:I(e).find(o=>u.resolve(o.repoPath)===u.resolve(e.repoPath)&&o.profile===e.profile)?.repositoryId}),profiles:n}}s(On,"loadOpenPondProfileLibrary");async function Rn(e){if(!e)return j();let t=(await O()).openpondProfile,n=I(t).find(o=>o.source===e.source&&o.repositoryId===e.repositoryId&&o.profile===e.profileId);return n?we({repoPath:n.repoPath,profile:n.profile,mode:"local",...n.lastCheck?{lastCheck:n.lastCheck}:{},...n.lastPush?{lastPush:n.lastPush}:{}}):ct(`Profile "${e.profileId}" is not installed on this device.`)}s(Rn,"loadOpenPondProfileStateForRef");async function Go(e){let t=(await O()).openpondProfile,n=I(t).find(o=>o.source===e.source&&o.repositoryId===e.repositoryId&&o.profile===e.profileId);if(!n)throw new Error(`Profile "${e.profileId}" is not installed on this device.`);return await L({openpondProfile:Z(t,n.repoPath,n.profile)}),j()}s(Go,"selectOpenPondProfile");async function No(e){let t=(await O()).openpondProfile;if(!t)return{lastUsed:null,profiles:[]};let n=I(t).filter(i=>i.source!==e.source||i.repositoryId!==e.repositoryId||i.profile!==e.profileId);if(n.length===0)return await L({openpondProfile:null}),{lastUsed:null,profiles:[]};let r=u.resolve(t.repoPath)===u.resolve(I(t).find(i=>i.source===e.source&&i.repositoryId===e.repositoryId&&i.profile===e.profileId)?.repoPath??"")&&t.profile===e.profileId?n[0]:n.find(i=>u.resolve(i.repoPath)===u.resolve(t.repoPath)&&i.profile===t.profile)??n[0];return await L({openpondProfile:{repoPath:r.repoPath,profile:r.profile,mode:"local",profiles:n,...r.lastCheck?{lastCheck:r.lastCheck}:{},...r.lastPush?{lastPush:r.lastPush}:{}}}),On()}s(No,"removeOpenPondProfile");async function we(e){try{let t=await T(e.repoPath),n=ke(t,e.repoPath,e.profile),o=await xn(t,e.profile),r=gt({manifest:t,profile:e.profile,profileSourcePath:n,agents:o}),[i,a,l,c]=await Promise.all([N(e.repoPath),Be(r),Ze(n),_n(n,r)]),d=nt(e),g=qn(i,e.profile),P=J({actionCatalog:a.actionCatalog,sourceSetupRequirements:a.sourceSetupRequirements}),x=Ln({agents:o,actionCatalog:a.actionCatalog,catalog:a.catalog,diff:g,git:i,hosted:d,lastCheck:e.lastCheck??null,error:null});return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:n,manifestPath:u.join(e.repoPath,F),agents:o,skills:l.skills,evals:c,git:i,catalog:a.catalog,skillCatalog:l.skillCatalog,actionCatalog:a.actionCatalog,sourceSetupRequirements:a.sourceSetupRequirements,setupGate:P,diff:g,hosted:d,summary:x,lastCheck:e.lastCheck??null,error:null}}catch(t){let n=await N(e.repoPath).catch(()=>null),o=t instanceof Error?t.message:String(t);return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:null,manifestPath:u.join(e.repoPath,F),agents:[],skills:[],evals:[],git:n,catalog:ce(o),skillCatalog:ue(o),actionCatalog:[],sourceSetupRequirements:[],setupGate:de(),diff:W(),hosted:nt(e),summary:fe(o),lastCheck:e.lastCheck??null,error:o}}}s(we,"loadOpenPondProfileStateForConfig");async function Q(){let e=(await O()).openpondProfile;if(!e)throw new Error("No active OpenPond profile. Run `openpond init` or `openpond profile load --path <dir>`.");let t=await j();if(t.error)throw new Error(t.error);if(!t.sourcePath)throw new Error("Active OpenPond profile has no source path.");return{config:e,state:t}}s(Q,"requireActiveLocalProfile");async function Uo(e){let t=await Q(),n=e.command==="run"?e.args??[]:[],o=e.command==="run"?t.state.actionCatalog.find(l=>l.id===n[0]):null,r=u.resolve(e.cwd??o?.sourcePath??t.state.sourcePath),i=e.command==="run"?tt(r,e.args??[],o?.sourceActionId??null):null;if(e.command==="run"&&i){let l=i[0],c=u.resolve(t.state.sourcePath)===r?{actionCatalog:t.state.actionCatalog,sourceSetupRequirements:t.state.sourceSetupRequirements}:await De(r);ne(l,J({actionCatalog:c.actionCatalog,sourceSetupRequirements:c.sourceSetupRequirements,actionId:l}))}let a=await dt({command:e.command,args:e.command==="run"?i??tt(r,e.args??[]):e.args,cwd:r,inherit:e.inherit,throwOnFailure:!1});if((e.command==="inspect"||e.command==="build"||e.command==="validate"||e.command==="eval")&&await ft(e.command,a.code),a.code!==0){let l=a.stderr.trim()||a.stdout.trim();throw new Error(l||`${e.command} failed with exit code ${a.code??"unknown"}`)}return a}s(Uo,"runProfileSdkCommand");async function dt(e){let t=u.resolve(e.cwd),n=Un(),o=e.command==="run"?[...n.args,e.command,...e.args??[]]:[...n.args,e.command,"--cwd",t,...e.args??[]],r=await yt(n.command,o,{cwd:t,inherit:e.inherit,timeoutMs:e.timeoutMs,maxOutputBytes:e.maxOutputBytes});if(e.throwOnFailure!==!1&&r.code!==0){let i=wt(r,e.command);throw new Error(i||`${e.command} failed with exit code ${r.code??"unknown"}`)}return r}s(dt,"runAgentSdkProjectCommand");function tt(e,t,n=null){let[o,...r]=t;if(!o||o.startsWith("--"))throw new Error("run requires an action name");return[n??o,"--cwd",e,...r]}s(tt,"runCommandArgs");async function Do(e){let t=!e||e==="all"?["inspect","build","validate","eval"]:[e],n=await Q(),o=await T(n.config.repoPath),r=gt({manifest:o,profile:n.config.profile,profileSourcePath:n.state.sourcePath,agents:n.state.agents});for(let i of t){if(i!=="inspect"&&i!=="build"&&i!=="validate"&&i!=="eval")throw new Error("check kind must be one of inspect, build, validate, eval, all");for(let a of r)await bn({command:i,source:a,profileSourcePath:n.state.sourcePath,sourceCount:r.length})}}s(Do,"runProfileCheck");async function bn(e){let t=e.command==="inspect"||e.command==="validate"||e.command==="eval"?["--json"]:[];if(e.sourceCount>1){let o=u.relative(e.profileSourcePath,e.source.sourcePath)||".";console.log(`
9
+ [profile:${e.source.agentId}] ${e.command} ${o}`)}let n=await dt({command:e.command,args:t,cwd:e.source.sourcePath,inherit:!1,throwOnFailure:!1});if(n.stdout.trim()&&console.log(n.stdout.trim()),n.stderr.trim()&&console.error(n.stderr.trim()),await ft(e.command,n.code),n.code!==0){let o=wt(n,e.command);throw new Error([`Profile check failed for enabled agent ${e.source.agentId} at ${e.source.sourcePath}.`,o||`${e.command} failed with exit code ${n.code??"unknown"}`].join(`
10
+ `))}}s(bn,"runProfileCheckForSource");async function Bo(e){let t=await Q();if(!t.state.repoPath)throw new Error("Active OpenPond profile has no repo path.");let n=await Me(t.state.repoPath,e?.trim()||`Update OpenPond profile ${t.state.activeProfile??lt}`);return{committed:n.committed,stdout:n.stdout,stderr:n.stderr,state:await j()}}s(Bo,"commitActiveProfileChanges");async function zo(e){let t=(await O()).openpondProfile;if(!t)return;let n=I(t).map(o=>u.resolve(o.repoPath)===u.resolve(t.repoPath)&&o.profile===t.profile?{...o,lastPush:e}:o);await L({openpondProfile:{...t,lastPush:e,profiles:n}})}s(zo,"saveProfilePushStatus");async function ft(e,t){let n=(await O()).openpondProfile;if(!n)return;let o=await $e(n.repoPath).catch(()=>null),r={command:e,status:t===0?"passed":"failed",checkedAt:new Date().toISOString(),exitCode:t,sourceHead:o},i=I(n).map(a=>u.resolve(a.repoPath)===u.resolve(n.repoPath)&&a.profile===n.profile?{...a,lastCheck:r}:a);await L({openpondProfile:{...n,lastCheck:r,profiles:i}})}s(ft,"saveProfileCheckStatus");async function An(e,t,n){if(await E(e,{recursive:!0}),(await at(e)).length>0&&!n)return;let r=ee(),i=u.join(r,"templates",t);if(!k(i))throw new Error(`Unknown agent template "${t}".`);await hn(i,e,{recursive:!0,force:n,errorOnExist:!1}),await vn(e,r)}s(An,"ensureProfileSource");async function In(e,t,n,o={}){await E(u.join(e,"profiles"),{recursive:!0});for(let a of["agents","skills","actions","extensions","prompts","goals","evals","settings","traces"])await E(u.join(t,a),{recursive:!0});let r=u.join(t,wn);if(!k(r)){let a=o.includeDefaultAgent===!1?["agents: []"]:["agents:",` - id: ${A}`," path: agent/agent.ts"," enabled: true"];await D(r,["schema: openpond.profile.v1",`profile: ${n}`,...a,""].join(`
11
+ `),"utf8")}let i=u.join(t,"openpond.lock");k(i)||await D(i,`# OpenPond profile lockfile placeholder
12
+ `,"utf8")}s(In,"ensureProfileScaffoldFiles");async function vn(e,t){let n=u.join(e,"package.json"),o=await st(n,"utf8"),r=JSON.parse(o);r.dependencies={...r.dependencies??{},"openpond-agent-sdk":`file:${t}`},await D(n,`${JSON.stringify(r,null,2)}
13
+ `,"utf8")}s(vn,"rewriteTemplateSdkDependency");async function pt(e){if(!k(u.join(e,"package.json")))return;let t=ee();await En(t);let n=u.join(e,"node_modules"),o=u.join(n,"openpond-agent-sdk");await E(n,{recursive:!0}),k(o)||await yn(t,o,"dir")}s(pt,"ensureProfileDependencies");async function En(e){if(k(u.join(e,"dist","cli.js"))&&k(u.join(e,"dist","primitives","index.js")))return;let t=u.join(e,"scripts","build.ts");if(!k(t))throw new Error(`Resolved openpond-agent-sdk at ${e}, but built SDK files are missing.`);let n=await yt(process.execPath,[ht(e),t],{cwd:e});if(n.code!==0){let o=n.stderr.trim()||n.stdout.trim();throw new Error(o||`openpond-agent-sdk build failed with exit code ${n.code??"unknown"}`)}}s(En,"ensureAgentSdkBuilt");async function xn(e,t){let n=e.profiles[t];if(!n)return[];let o=n.defaultAgent??A,r=new Set(n.enabledAgents??[o]);return Array.from(r).map(i=>({id:i,name:n.agentNames?.[i]?.trim()||i,path:i===A?"agent/agent.ts":`agents/${i}`,enabled:!0}))}s(xn,"listProfileAgents");function gt(e){let t=e.manifest.profiles[e.profile]?.defaultAgent??A;return(e.agents.length>0?e.agents:[{id:A,name:A,path:"agent/agent.ts",enabled:!0}]).map(o=>({agentId:o.id,sourcePath:o.id===A?e.profileSourcePath:u.join(e.profileSourcePath,"agents",o.id),preferred:o.id===t}))}s(gt,"profileCatalogSources");async function _n(e,t){let n=new Map,o=[{root:u.join(e,"evals"),agentId:null},...t.flatMap(r=>[{root:u.join(r.sourcePath,"agent","evals"),agentId:r.agentId},{root:u.join(r.sourcePath,"evals"),agentId:r.agentId}])];for(let r of o)for(let i of await mt(r.root)){let a=u.relative(e,i).split(u.sep).join("/");n.has(a)||n.set(a,{id:a,name:u.basename(i).replace(/\.eval\.[^.]+$/i,"").replace(/\.[^.]+$/i,""),path:a,agentId:r.agentId,sourcePath:i})}return[...n.values()].sort((r,i)=>r.name.localeCompare(i.name)||r.path.localeCompare(i.path))}s(_n,"loadProfileEvals");async function mt(e){if(!k(e))return[];let t=[];for(let n of await at(e,{withFileTypes:!0})){let o=u.join(e,n.name);n.isDirectory()?t.push(...await mt(o)):n.isFile()&&/\.eval\.(?:[cm]?[jt]sx?)$/i.test(n.name)&&t.push(o)}return t}s(mt,"listEvalSourceFiles");function nt(e){let t=e.lastPush;return t?{teamId:t.teamId??null,projectId:t.projectId??null,sourceRef:t.sourceRef??null,sourceCommitSha:t.hostedHead??null,lastPushedAt:t.pushedAt,lastPushedLocalHead:t.localHead??null,lastPushedHostedHead:t.hostedHead??null,promotionStatus:t.promotionStatus??null,hostedRunStatus:t.hostedRunStatus??null,hostedRunAgentId:t.hostedRunAgentId??null,hostedRunId:t.hostedRunId??null,hostedRunAt:t.hostedRunAt??null,hostedSourceMaterialization:t.hostedSourceMaterialization??null,hostedSourceCheck:t.hostedSourceCheck??null,hostedPublish:t.hostedPublish??null,hostedRun:t.hostedRun??null}:null}s(nt,"hostedBindingFromConfig");function Ln(e){let t=e.actionCatalog.find(r=>r.id==="chat")?.id??e.actionCatalog.find(r=>r.name==="chat")?.id??e.actionCatalog.find(r=>r.id.endsWith(".chat"))?.id??null,n=!!(e.lastCheck&&e.lastCheck.status==="passed"&&e.lastCheck.sourceHead&&e.lastCheck.sourceHead===e.git.head&&!e.git.dirty&&!e.catalog.stale),o=Mn({catalog:e.catalog,git:e.git,lastCheck:e.lastCheck});return e.error?{state:"error",message:e.error,agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:e.git.isRepo?e.git.head?e.git.dirty?{state:"dirty",message:$n(e.diff),agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"ready",message:e.catalog.stale?"Profile source is clean; action catalog needs inspect/build.":"Profile source is clean.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"pending_commit",message:"Profile source is ready for its first commit.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:!1,checkStaleReason:"Profile source has no committed head.",localHead:null,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"error",message:"Profile source is not Git-backed.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:!1,checkStaleReason:"Profile source is not Git-backed.",localHead:null,hostedHead:e.hosted?.sourceCommitSha??null}}s(Ln,"summarizeProfileState");function Mn(e){return e.catalog.error?`Catalog error: ${e.catalog.error}`:e.catalog.stale?"Action catalog artifacts are missing or stale.":e.lastCheck?e.lastCheck.status!=="passed"?`Last ${e.lastCheck.command} check failed.`:e.lastCheck.sourceHead?e.git.head&&e.lastCheck.sourceHead!==e.git.head?"Profile source changed since the last check.":e.git.dirty?"Profile has uncommitted source changes.":null:"Last check did not record a source head.":"Profile checks have not run."}s(Mn,"profileCheckStaleReason");function $n(e){let t=[];return e.changedAgents.length>0&&t.push(`${e.changedAgents.length} changed agent(s)`),e.newAgents.length>0&&t.push(`${e.newAgents.length} new agent(s)`),e.deletedAgents.length>0&&t.push(`${e.deletedAgents.length} deleted agent(s)`),e.changedSkills.length>0&&t.push(`${e.changedSkills.length} changed skill(s)`),e.changedActions.length>0&&t.push(`${e.changedActions.length} changed action(s)`),e.changedExtensions.length>0&&t.push(`${e.changedExtensions.length} changed extension(s)`),e.setupChanges.length>0&&t.push(`${e.setupChanges.length} setup change(s)`),e.envRequirementChanges.length>0&&t.push(`${e.envRequirementChanges.length} env requirement change(s)`),t.length>0?`Profile has ${t.join(", ")}.`:"Profile has uncommitted source changes."}s($n,"profileDirtyMessage");function qn(e,t){let n=W();n.files=e.files;let o=`profiles/${t}/`;for(let r of e.files){let i=r.path.replace(/\\/g,"/");if(i===F||i===".gitignore"){v(n.setupChanges,i);continue}if(!i.startsWith(o))continue;let a=i.slice(o.length);jn(n,r,a)}return n}s(qn,"summarizeProfileDiff");function jn(e,t,n){let o=n.split("/")[0]??"";if(o==="agent")ot(e,A,t.category);else if(o==="agents"){let r=n.split("/")[1];r&&ot(e,r,t.category)}else o==="skills"?v(e.changedSkills,n.split("/")[1]??n):o==="actions"?v(e.changedActions,n.split("/")[1]??n):o==="extensions"?v(e.changedExtensions,n.split("/")[1]??n):(o==="settings"||n==="package.json"||n==="openpond.yaml"||n==="openpond.lock")&&v(e.setupChanges,n);n.toLowerCase().includes("env")&&v(e.envRequirementChanges,n),n.startsWith(".openpond/")&&v(e.changedActions,"catalog")}s(jn,"classifyProfileFileChange");function ot(e,t,n){if(n==="added"||n==="untracked"){v(e.newAgents,t);return}if(n==="deleted"){v(e.deletedAgents,t);return}v(e.changedAgents,t)}s(ot,"addAgentChange");function v(e,t){!t||e.includes(t)||e.push(t)}s(v,"addUnique");function Se(e){let t=e?.trim();if(!t)return lt;if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new Error("profile name may only contain letters, numbers, dots, underscores, and hyphens");return t}s(Se,"normalizeProfileName");function Fn(e){let t=e.trim().replace(/\s+/g," ");if(!t)throw new Error("Agent name is required.");if(t.length>80)throw new Error("Agent name must be 80 characters or fewer.");if(/[\u0000-\u001f\u007f]/.test(t))throw new Error("Agent name cannot contain control characters.");return t}s(Fn,"normalizeAgentDisplayName");function Tn(e,t){return{schema:"openpond.profileRepo.v1",defaultProfile:e,profiles:{[e]:{path:t,defaultAgent:A,enabledAgents:[A]}}}}s(Tn,"defaultProfileManifest");async function T(e){let t=u.join(e,F),n=await st(t,"utf8"),o=JSON.parse(n);if(o.schema!=="openpond.profileRepo.v1"||!o.profiles||typeof o.profiles!="object")throw new Error(`${t} is not an OpenPond profile repo manifest.`);return o}s(T,"readProfileManifest");async function X(e,t){await D(u.join(e,F),`${JSON.stringify(t,null,2)}
14
+ `,"utf8")}s(X,"writeProfileManifest");function ke(e,t,n){let o=e.profiles[n];if(!o)throw new Error(`Profile "${n}" was not found in ${u.join(t,F)}.`);let r=u.resolve(t,o.path);if(!k(r))throw new Error(`Profile source path does not exist: ${r}`);return r}s(ke,"profileSourcePath");function Hn(e){let t=0,n=new Set;for(let l of e.source.files){let c=Pt(l.path);if(n.has(c))throw new Error(`Agent package contains duplicate source path ${c}.`);n.add(c);let d=Buffer.from(l.contentsBase64,"base64");if(d.byteLength!==l.sizeBytes||Qe("sha256").update(d).digest("hex")!==l.sha256)throw new Error(`Agent package source checksum failed for ${c}.`);t+=d.byteLength}if(t!==e.source.totalSizeBytes)throw new Error("Agent package source size does not match its manifest.");let{digest:o,versionId:r,...i}=e,a=Qe("sha256").update(Nn(i)).digest("hex");if(a!==e.digest||e.versionId!==`agent-${a.slice(0,20)}`)throw new Error("Agent package content digest does not match its version.")}s(Hn,"verifyAgentPackageIntegrity");async function Gn(e,t){await E(e,{recursive:!0,mode:448});for(let o of t.source.files){let r=Pt(o.path),i=u.resolve(e,r);if(!i.startsWith(`${u.resolve(e)}${u.sep}`))throw new Error("Agent package source path escapes its install root.");await E(u.dirname(i),{recursive:!0,mode:448});let a=Buffer.from(o.contentsBase64,"base64");if(r==="package.json"){let l=JSON.parse(a.toString("utf8"));l.dependencies={...l.dependencies??{},"openpond-agent-sdk":`file:${ee()}`},a=Buffer.from(`${JSON.stringify(l,null,2)}
15
+ `,"utf8")}await D(i,a,{mode:384,flag:"wx"})}let n=u.join(e,".openpond","agent-package-origin.json");await E(u.dirname(n),{recursive:!0,mode:448}),await D(n,`${JSON.stringify({schema:"openpond.agent-package-origin.v1",agentId:t.agentId,versionId:t.versionId,digest:t.digest,validationReceiptIds:t.receipts.filter(o=>o.kind==="sdk_validation").map(o=>o.id),evalReceiptIds:t.receipts.filter(o=>o.kind==="sdk_eval").map(o=>o.id)},null,2)}
16
+ `,{mode:384,flag:"wx"})}s(Gn,"materializeAgentPackage");function Pt(e){let t=e.trim().replaceAll("\\","/"),n=u.posix.normalize(t);if(!n||n==="."||n===".."||n.startsWith("/")||n.startsWith("../")||n.split("/").some(o=>o===".."))throw new Error(`Agent package contains an invalid source path: ${e}.`);return n}s(Pt,"normalizeAgentPackagePath");function Nn(e){return JSON.stringify(ye(e))}s(Nn,"stableAgentPackageJson");function ye(e){return Array.isArray(e)?e.map(ye):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,ye(n)]))}s(ye,"sortAgentPackageJson");function ee(){let e=kn.resolve("openpond-agent-sdk/package.json");return u.dirname(e)}s(ee,"resolveAgentSdkRoot");function Un(){let e=ee(),t=u.join(e,"dist","cli.js");if(k(t))return{command:process.execPath,args:[t]};let n=u.join(e,"src","cli.ts");if(k(n))return{command:process.execPath,args:[ht(e),n]};throw new Error(`openpond-agent CLI was not found under ${e}`)}s(Un,"resolveAgentSdkCliLaunch");function ht(e){return it(u.join(e,"package.json")).resolve("tsx/cli")}s(ht,"resolveTsxCli");async function yt(e,t,n={}){return new Promise((o,r)=>{let i=Pn(e,t,{cwd:n.cwd,stdio:n.inherit?"inherit":"pipe"}),a="",l="",c=!1,d=!1,g=!1,P=n.timeoutMs??600*1e3,x=n.maxOutputBytes??2*1024*1024,S=P>0?setTimeout(()=>{g=!0,i.kill("SIGTERM")},P):null,M=P>0?setTimeout(()=>{g&&i.exitCode===null&&i.kill("SIGKILL")},P+5e3):null;n.inherit||(i.stdout?.on("data",_=>{let m=rt(a,String(_),x,c);a=m.text,c=m.truncated}),i.stderr?.on("data",_=>{let m=rt(l,String(_),x,d);l=m.text,d=m.truncated}));let H=s(()=>{S&&clearTimeout(S),M&&clearTimeout(M)},"clearTimers");i.on("error",_=>{H(),r(_)}),i.on("close",_=>{H(),o({code:_,stdout:a,stderr:l,timedOut:g,stdoutTruncated:c,stderrTruncated:d})})})}s(yt,"spawnCommand");function rt(e,t,n,o){if(o)return{text:e,truncated:!0};let r=`${e}${t}`;return Buffer.byteLength(r,"utf8")<=n?{text:r,truncated:!1}:{text:`${Buffer.from(r).subarray(0,Math.max(0,n)).toString("utf8")}
17
+ [truncated after ${n} bytes]
18
+ `,truncated:!0}}s(rt,"appendBoundedOutput");function wt(e,t){let n=e.stderr.trim()||e.stdout.trim(),o=[e.timedOut?`${t} timed out`:"",e.stdoutTruncated?"stdout truncated":"",e.stderrTruncated?"stderr truncated":""].filter(Boolean);return[n,...o].filter(Boolean).join(`
19
+ `)}s(wt,"commandFailureDetail");export{ln as a,z as b,J as c,ne as d,Ot as e,Ft as f,Ht as g,Gt as h,Nt as i,Ut as j,F as k,wn as l,lt as m,A as n,Sn as o,Z as p,Cn as q,ct as r,qo as s,jo as t,Fo as u,To as v,Ho as w,j as x,he as y,On as z,Rn as A,Go as B,No as C,Q as D,Uo as E,dt as F,Do as G,Bo as H,zo as I};
@@ -0,0 +1,10 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{a as k}from"./chunk-6FA3GG5B.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as r}from"./chunk-FTQLQJQV.js";var b=3e3,h=9999,l="openpond.yaml",ie="openpond-template-plan.json",M="openpond.sandboxTemplate.buildPlan.v1",C=["google","github","x"],S=new Set([22,2222,2375,2376,3108,5900,5901,6080,7818]),w=e.array(e.string().trim().min(1).max(1e3)).max(50),d=e.string().trim().min(1).max(4096).refine(N,{message:"path must be a relative workspace path"}),O=e.string().trim().min(1).max(500).refine(t=>!t.includes("\0")&&!/\s/.test(t),"image ref must be a single OCI reference"),D=e.string().trim().regex(/^sha256:[0-9a-f]{64}$/i),R=e.string().trim().min(1).max(500).refine(t=>t.startsWith("/")&&!t.includes("\0"),"workspaceRoot must be an absolute guest path"),$=e.object({ref:O,digest:D.optional(),registrySecretRef:e.string().trim().min(1).max(500).optional(),platform:e.literal("linux/amd64").optional(),workspaceRoot:R.optional()}).strict(),q=e.object({context:d.default("."),path:d.default("Dockerfile"),target:e.string().trim().min(1).max(191).optional(),buildArgs:e.record(e.string().max(191),e.string().max(500)).optional(),registrySecretRefs:e.array(e.string().trim().min(1).max(500)).max(10).optional(),platform:e.literal("linux/amd64").optional(),workspaceRoot:R.optional()}).strict(),L=e.object({base:e.string().trim().min(1).max(120).optional(),snapshot:e.string().trim().min(1).max(191).optional(),image:$.optional(),dockerfile:q.optional()}).strict().superRefine((t,a)=>{[t.base,t.snapshot,t.image,t.dockerfile].filter(Boolean).length!==1&&a.addIssue({code:e.ZodIssueCode.custom,message:"runtime must declare exactly one of base, snapshot, image, or dockerfile"})}),T=e.object({cpu:e.number().positive().max(8).optional(),memoryGb:e.number().positive().max(32).optional(),diskGb:e.number().positive().max(100).optional()}).strict(),V=e.object({provider:e.enum(C),scopes:e.array(e.string().trim().min(1).max(200)).max(100).default([]),capabilities:e.array(e.string().trim().min(1).max(200)).max(100).default([])}).strict(),z=e.object({models:e.array(e.string().trim().min(1).max(200)).max(100).default([]),scopes:e.array(e.string().trim().min(1).max(200)).max(100).default([])}).strict(),Z=e.object({opchat:z.optional()}).catchall(e.record(e.string(),e.unknown())).default({}),j=e.object({name:e.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_-]*$/).max(63).optional(),mountPath:e.string().trim().min(1).max(256).optional(),storageGb:e.number().int().positive().max(100).optional(),deleteOnSandboxDelete:e.boolean().optional()}).strict(),E=e.object({port:e.number().int().min(b).max(h).refine(t=>!S.has(t),{message:"preview port is reserved"}),protocol:e.literal("http").default("http"),label:e.string().trim().min(1).max(80).optional(),access:e.enum(["private","public"]).default("private"),path:e.string().trim().min(1).max(512).refine(t=>t.startsWith("/"),{message:"preview path must start with /"}).default("/")}).strict(),_=e.object({command:e.string().trim().min(1).max(1e3),cwd:d.optional(),timeoutSeconds:e.number().int().positive().max(86400).optional(),requiresStart:e.boolean().default(!1),ports:e.array(E).max(20).default([]),artifactPaths:e.array(d).max(100).default([])}).strict(),I=_.extend({name:e.string().trim().min(1).max(80)}).strict(),F=e.object({name:e.string().trim().min(1).max(80).optional(),service:e.string().trim().min(1).max(80).optional(),port:e.number().int().min(b).max(h).refine(t=>!S.has(t),{message:"app MCP port is reserved"}),path:e.string().trim().min(1).max(512).refine(t=>t.startsWith("/"),{message:"app MCP path must start with /"}).default("/mcp")}).strict(),B=e.object({name:e.string().trim().min(1).max(80).optional(),port:e.number().int().min(b).max(h).refine(t=>!S.has(t),{message:"validation probe port is reserved"}),path:e.string().trim().min(1).max(512).refine(t=>t.startsWith("/"),{message:"validation probe path must start with /"}).default("/"),expectedStatus:e.number().int().min(100).max(599).default(200)}).strict(),W=e.record(e.string(),e.unknown()).refine(t=>t.type==="object","input schema must be a JSON schema object"),J=e.object({name:e.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),required:e.boolean().default(!1),secret:e.boolean().default(!0),description:e.string().trim().max(500).optional()}).strict(),g=e.string().trim().min(1).max(120),G=e.object({name:e.string().trim().min(1).max(120),description:e.string().trim().max(500).optional(),cron:e.string().trim().min(1).max(500).optional(),rate:e.string().trim().min(1).max(500).optional(),once:g.optional(),scheduleType:e.enum(["rate","cron","once"]).optional(),scheduleExpression:e.string().trim().min(1).max(500).optional(),timezone:e.string().trim().min(1).max(100).optional(),enabled:e.boolean().default(!0),startAt:g.optional(),endAt:g.optional(),maxRuns:e.number().int().positive().nullable().optional(),runtimePolicy:e.enum(["run_and_stop","run_and_archive","run_and_delete","use_existing_running"]).default("run_and_stop"),action:e.string().trim().min(1).max(120).optional(),actionName:e.string().trim().min(1).max(120).optional(),command:e.string().trim().min(1).max(2e3).optional(),target:e.object({kind:e.enum(["start","action","service","command"]).optional(),name:e.string().trim().min(1).max(120).optional(),actionName:e.string().trim().min(1).max(120).optional(),command:e.string().trim().min(1).max(2e3).optional(),requiresStart:e.boolean().optional()}).strict().optional(),requiresStart:e.boolean().optional(),budget:e.object({maxUsd:e.string().trim().min(1).max(40).optional()}).strict().optional(),resources:T.optional(),quotas:e.record(e.string(),e.unknown()).optional(),lifecycle:e.record(e.string(),e.unknown()).optional(),retentionPolicy:e.record(e.string(),e.unknown()).optional(),env:e.array(e.object({name:e.string().trim().regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(191),value:e.string().optional(),secretRef:e.string().optional()}).strict()).max(100).optional(),integrationLeases:e.array(e.record(e.string(),e.unknown())).max(20).optional(),metadata:e.record(e.string(),e.unknown()).optional()}).strict().superRefine((t,a)=>{[t.cron,t.rate,t.once,t.scheduleExpression].filter(m=>typeof m=="string"&&m.trim()).length!==1&&a.addIssue({code:e.ZodIssueCode.custom,path:["scheduleExpression"],message:"schedule must declare exactly one of cron, rate, once, or scheduleExpression"}),t.scheduleExpression&&!t.scheduleType&&a.addIssue({code:e.ZodIssueCode.custom,path:["scheduleType"],message:"scheduleType is required with scheduleExpression"});let i=t.command??t.target?.command??null,o=t.target?.name??null,s=t.actionName??t.action??t.target?.actionName??(t.target?.kind==="action"?o:null),c=t.target?.kind??(i?"command":"action");c==="action"&&!s&&a.addIssue({code:e.ZodIssueCode.custom,path:["action"],message:"schedule action target is required"}),c==="service"&&!o&&a.addIssue({code:e.ZodIssueCode.custom,path:["target","name"],message:"schedule service target name is required"}),c==="command"&&!i&&a.addIssue({code:e.ZodIssueCode.custom,path:["command"],message:"schedule command target is required"})}),v=e.object({schemaVersion:e.literal(1),name:e.string().trim().min(1).max(80).regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/),version:e.string().trim().min(1).max(40),useCase:e.string().trim().min(1).max(80),description:e.string().trim().min(1).max(500),runtime:L,resources:T.optional(),setup:e.object({commands:w.default([])}).strict().default({commands:[]}),validation:e.object({commands:w.min(1),probes:e.array(B).max(20).default([])}).strict(),start:_,actions:e.array(I).max(20).default([]),services:e.array(I).max(20).default([]),schedules:e.array(G).max(20).default([]),mcp:e.object({endpoints:e.array(F).max(10).default([])}).strict().default({endpoints:[]}),volumes:e.array(j).max(5).default([]),integrations:e.object({requiredLeases:e.array(V).max(20).default([])}).strict().default({requiredLeases:[]}),permissions:Z,inputs:e.object({schema:W.default({type:"object"}),env:e.array(J).max(100).default([])}).strict().default({schema:{type:"object"},env:[]}),artifacts:e.object({paths:e.array(d).max(100).default([])}).strict().default({paths:[]}),network:e.object({egress:e.enum(["restricted","allow","block"]).default("restricted")}).strict().default({egress:"restricted"})}).strict().superRefine((t,a)=>{Q(t,a),y(a,t.volumes.flatMap(n=>n.name?[n.name]:[]),"volume names must be unique","volumes"),ee(t,a),te(t,a),ae(t,a),ne(t,a)}),me=e.object({path:e.string(),message:e.string(),code:e.string()});function K(t){let a;try{a=k.load(t)}catch(n){return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_yaml",message:n instanceof Error?n.message:"Invalid YAML"}]}}return U(a)}r(K,"validateSandboxTemplateYaml");function U(t){if(!t||typeof t!="object"||Array.isArray(t))return{ok:!1,manifest:null,diagnostics:[{path:"$",code:"invalid_type",message:`${l} must be an object`}]};if(Object.prototype.hasOwnProperty.call(t,"databases"))return{ok:!1,manifest:null,diagnostics:[{path:"$.databases",code:"database_resources_removed",message:"managed database requests are unsupported for Firecracker sandbox templates; use a durable volume with SQLite or files instead"}]};let a=v.safeParse(t);return a.success?{ok:!0,manifest:a.data,diagnostics:[]}:{ok:!1,manifest:null,diagnostics:a.error.issues.map(n=>({path:H(n.path),code:n.code,message:n.message}))}}r(U,"validateSandboxTemplateManifest");function ce(t){let a=K(t);if(!a.ok)throw new Error(X(a.diagnostics));return a.manifest}r(ce,"parseSandboxTemplateYaml");function X(t){return t.map(a=>`${a.path}: ${a.message}`).join(`
3
+ `)}r(X,"formatSandboxTemplateDiagnostics");function pe(t){return v.parse(t)}r(pe,"defineSandboxTemplate");function de(t={}){return T.parse(t)}r(de,"sandboxTemplateResources");function le(t){return j.parse({...t,deleteOnSandboxDelete:t.deleteOnSandboxDelete??!1})}r(le,"sandboxTemplateDurableVolume");function ue(t,a={}){return E.parse({...a,port:t})}r(ue,"sandboxTemplatePreviewPort");function ge(t){let a=d.parse(t.targetPath),n=t.accept?.map(s=>s.trim()).filter(s=>s.length>0),i={targetPath:a,...n&&n.length>0?{accept:n}:{}},o={...t.title?.trim()?{title:t.title.trim()}:{},...t.description?.trim()?{description:t.description.trim()}:{},"x-openpond-upload":i};return t.multiple?{...o,"x-openpond-upload":{...i,multiple:!0},type:"array",items:{type:"string",format:"file"}}:{...o,type:"string",format:"file"}}r(ge,"sandboxTemplateFileInput");function A(t){return[{kind:"start",name:"start",...t.start,artifactPaths:f(t.start,t)},...t.actions.map(a=>({kind:"action",name:a.name,command:a.command,cwd:a.cwd,timeoutSeconds:a.timeoutSeconds,requiresStart:a.requiresStart,ports:a.ports,artifactPaths:f(a,t)})),...t.services.map(a=>({kind:"service",name:a.name,command:a.command,cwd:a.cwd,timeoutSeconds:a.timeoutSeconds,requiresStart:a.requiresStart,ports:a.ports,artifactPaths:f(a,t)}))]}r(A,"sandboxTemplateExecutableEntries");function Y(t){let a=A(t);return{template:{name:t.name,version:t.version,useCase:t.useCase,runtime:t.runtime},resources:t.resources??null,volumes:t.volumes,executables:a.map(n=>({kind:n.kind,name:n.name,command:n.command,cwd:n.cwd??null,timeoutSeconds:n.timeoutSeconds??null,requiresStart:n.requiresStart,ports:n.ports.map(i=>i.port),artifactPaths:n.artifactPaths})),ports:a.flatMap(n=>n.ports.map(i=>({executable:n.name,kind:n.kind,port:i.port,access:i.access,label:i.label??null}))),appMcpEndpoints:t.mcp.endpoints.map(n=>({name:n.name??null,service:n.service??null,port:n.port,path:n.path})),validation:{commands:t.validation.commands,probes:t.validation.probes},schedules:t.schedules}}r(Y,"sandboxTemplateBuildMetadata");function xe(t){return{kind:M,schemaVersion:1,manifestFile:t.manifestFile,projectRoot:t.projectRoot,manifest:t.manifest,metadata:Y(t.manifest),executables:A(t.manifest)}}r(xe,"sandboxTemplateBuildPlan");function fe(t){let a=t.name.trim()||"Sandbox Template",n=se(a),i=t.description?.trim()||`Local scaffold for ${a}.`;return{".gitignore":["node_modules","artifacts",".DS_Store",""].join(`
4
+ `),"README.md":[`# ${a}`,"","Local sandbox template scaffold.","","## Commands","","- `pnpm dev` starts the preview service on port 3000.","- `pnpm process` writes a sample artifact.",`- \`pnpm validate\` validates ${l}.`,""].join(`
5
+ `),"package.json":`${JSON.stringify({private:!0,type:"module",scripts:{dev:"node src/server.ts",process:"node scripts/process.ts",validate:`openpond sandbox-template validate --file ${l}`}},null,2)}
6
+ `,[l]:["schemaVersion: 1",`name: ${n}`,"version: 0.1.0","useCase: sandbox-template-scaffold",`description: ${i}`,"runtime:"," base: node-bun-workspace","resources:"," cpu: 1"," memoryGb: 1"," diskGb: 8","setup:"," commands:"," - mkdir -p artifacts","validation:"," commands:"," - test -f src/server.ts"," - test -f scripts/process.ts","start:"," command: pnpm process"," timeoutSeconds: 300"," ports: []"," artifactPaths:"," - artifacts/result.json","actions: []","schedules: []","services:"," - name: web"," command: pnpm dev"," timeoutSeconds: 3600"," ports:"," - port: 3000"," protocol: http"," label: web"," access: private"," path: /"," artifactPaths: []","inputs:"," env:"," - name: FOO_API_KEY"," required: false"," secret: true"," description: API key used by the sample action."," schema:"," type: object"," properties:"," subject:"," type: string"," title: Subject"," default: Example","artifacts:"," paths:"," - artifacts/result.json","network:"," egress: restricted",""].join(`
7
+ `),"src/server.ts":["import { createServer } from 'node:http';","","createServer((_request, response) => {"," response.setHeader('content-type', 'application/json');"," response.end(JSON.stringify({ ok: true, template: 'sandbox-template-scaffold' }));","}).listen(3000, '0.0.0.0');",""].join(`
8
+ `),"scripts/process.ts":["import { mkdir, writeFile } from 'node:fs/promises';","","const raw = process.env.OPENPOND_REPLAY_PARAMS_BASE64;","const params = raw ? JSON.parse(Buffer.from(raw, 'base64').toString('utf8')).input ?? {} : {};","await mkdir('artifacts', { recursive: true });","await writeFile('artifacts/result.json', JSON.stringify({ ok: true, input: params }, null, 2));","console.log('wrote artifacts/result.json');",""].join(`
9
+ `),"fixtures/input.txt":`Example input
10
+ `}}r(fe,"sandboxTemplateScaffoldFiles");function be(){return e.toJSONSchema(v)}r(be,"sandboxTemplateJsonSchema");function N(t){return!t.includes("\0")&&!t.startsWith("/")&&!t.split(/[\\/]+/).some(a=>a===".."||a==="")}r(N,"isSafeRelativeWorkspacePath");function H(t){return t.length===0?"$":`$${t.map(a=>typeof a=="number"?`[${a}]`:`.${String(a)}`).join("")}`}r(H,"formatIssuePath");function y(t,a,n,i){let o=new Set;for(let s of a){if(o.has(s)){t.addIssue({code:e.ZodIssueCode.custom,path:[i],message:n});return}o.add(s)}}r(y,"addDuplicateNameIssue");function Q(t,a){let n=["start",...t.actions.map(i=>i.name),...t.services.map(i=>i.name)];y(a,n,"start, action, and service names must be unique","actions")}r(Q,"validateExecutableNames");function ee(t,a){let n=x(t.inputs.schema.properties),i=new Set(t.volumes.map(o=>o.name).filter(o=>!!o));for(let[o,s]of Object.entries(n)){let c=x(s),m=x(c["x-openpond-upload"]??c.xOpenPondUpload),p=typeof m.targetPath=="string"&&m.targetPath.trim()?m.targetPath.trim():typeof m.path=="string"&&m.path.trim()?m.path.trim():"";if(!p)continue;let P=p.replace(/^workspace\//,"").replace(/^\/+/,"").replace(/\/+$/,"");if(!N(P)){a.addIssue({code:e.ZodIssueCode.custom,path:["inputs","schema","properties",o,"x-openpond-upload","targetPath"],message:"upload target must be a relative workspace path"});continue}let u=P.split("/");u[0]==="volumes"&&(!u[1]||!i.has(u[1]))&&a.addIssue({code:e.ZodIssueCode.custom,path:["inputs","schema","properties",o,"x-openpond-upload","targetPath"],message:"upload target references an undeclared volume"})}}r(ee,"validateInputSchemaUploadTargets");function te(t,a){y(a,t.inputs.env.map(n=>n.name),"env input names must be unique","inputs")}r(te,"validateEnvInputs");function ae(t,a){let n=new Map(t.services.map(o=>[o.name,new Set(o.ports.map(s=>s.port))])),i=new Set([...t.start.ports.map(o=>o.port),...t.services.flatMap(o=>o.ports.map(s=>s.port))]);for(let[o,s]of t.mcp.endpoints.entries()){if(s.service){let c=n.get(s.service);if(!c){a.addIssue({code:e.ZodIssueCode.custom,path:["mcp","endpoints",o,"service"],message:`app MCP service does not exist: ${s.service}`});continue}c.has(s.port)||a.addIssue({code:e.ZodIssueCode.custom,path:["mcp","endpoints",o,"port"],message:`app MCP port ${s.port} is not declared on service ${s.service}`});continue}i.has(s.port)||a.addIssue({code:e.ZodIssueCode.custom,path:["mcp","endpoints",o,"port"],message:`app MCP port ${s.port} is not declared on start or services`})}}r(ae,"validateMcpEndpoints");function ne(t,a){let n=new Set(t.actions.map(o=>o.name)),i=new Set(t.services.map(o=>o.name));for(let[o,s]of t.schedules.entries()){let c=s.command??s.target?.command??null;if(s.target?.kind==="command"||c)continue;let m=s.actionName??s.action??s.target?.actionName??(s.target?.kind==="action"?s.target?.name:null);if(m&&!n.has(m)&&a.addIssue({code:e.ZodIssueCode.custom,path:["schedules",o,"action"],message:`schedule action target does not exist: ${m}`}),s.target?.kind==="service"){let p=s.target.name??"";p&&!i.has(p)&&a.addIssue({code:e.ZodIssueCode.custom,path:["schedules",o,"target","name"],message:`schedule service target does not exist: ${p}`})}}}r(ne,"validateScheduleTargets");function x(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}r(x,"asRecord");function f(t,a){return t.artifactPaths.length>0?t.artifactPaths:a.artifacts.paths}r(f,"commandArtifactPaths");function se(t){return t.toLowerCase().replace(/[^a-z0-9-]+/g,"-").replace(/^-+|-+$/g,"").replace(/-{2,}/g,"-").slice(0,80)||"sandbox-template"}r(se,"slug");export{b as a,h as b,l as c,ie as d,M as e,v as f,me as g,K as h,U as i,ce as j,X as k,pe as l,de as m,le as n,ue as o,ge as p,A as q,Y as r,xe as s,fe as t,be as u};