openpond 0.2.43 → 0.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (210) hide show
  1. package/dist/app-server.d.ts +18127 -5586
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/actions-command-CRDLSPFA.js +2 -0
  4. package/dist/chunks/{app-layer-OV7RVSQW.js → app-layer-MDJFV3HZ.js} +1 -1
  5. package/dist/chunks/app-server-runtime-PJONTCCO.js +2 -0
  6. package/dist/chunks/apps-MD2DKEDW.js +2 -0
  7. package/dist/chunks/{chunk-T5QA4W2H.js → chunk-25GCTLAZ.js} +5 -5
  8. package/dist/chunks/chunk-3BJ4P5LI.js +520 -0
  9. package/dist/chunks/chunk-3SRIPOJQ.js +2 -0
  10. package/dist/chunks/{chunk-7EDOA6KD.js → chunk-4EGDKOYP.js} +3 -3
  11. package/dist/chunks/{chunk-QUNRWDVO.js → chunk-5ZFEQLRI.js} +3 -3
  12. package/dist/chunks/chunk-6BL2ZIAP.js +184 -0
  13. package/dist/chunks/chunk-6QUICEQA.js +5 -0
  14. package/dist/chunks/chunk-7D2WMUWK.js +3 -0
  15. package/dist/chunks/chunk-7KIBRK3A.js +4 -0
  16. package/dist/chunks/{chunk-O277DPTX.js → chunk-B6LYKEMU.js} +1 -1
  17. package/dist/chunks/{chunk-ZG7QX66E.js → chunk-CR6CDOKS.js} +8 -8
  18. package/dist/chunks/chunk-CXS3WXL3.js +2 -0
  19. package/dist/chunks/chunk-DWGB536R.js +19 -0
  20. package/dist/chunks/{chunk-6UPCR6EL.js → chunk-EG55BFQ4.js} +1 -1
  21. package/dist/chunks/chunk-ELNJUG64.js +17 -0
  22. package/dist/chunks/{chunk-HI7W3IVO.js → chunk-FXIUKYUR.js} +12 -12
  23. package/dist/chunks/chunk-GEDEVI4Y.js +2 -0
  24. package/dist/chunks/chunk-H3C4ZYEA.js +16 -0
  25. package/dist/chunks/chunk-HUBI3RUK.js +2 -0
  26. package/dist/chunks/{chunk-IE2WZ3I3.js → chunk-IYRHG54Q.js} +1 -1
  27. package/dist/chunks/chunk-J65BMG5Q.js +2 -0
  28. package/dist/chunks/chunk-KOR2AZVB.js +24 -0
  29. package/dist/chunks/{chunk-LLNCHGE4.js → chunk-LL4QP2IM.js} +1 -1
  30. package/dist/chunks/chunk-M2YXYBSP.js +2 -0
  31. package/dist/chunks/chunk-NPOHW5OU.js +2 -0
  32. package/dist/chunks/{chunk-KRC2S5QF.js → chunk-NXUCGKY2.js} +3 -3
  33. package/dist/chunks/chunk-PDIT2QS7.js +8 -0
  34. package/dist/chunks/{chunk-T7MJBBHE.js → chunk-PGKEDR3S.js} +1 -1
  35. package/dist/chunks/chunk-QVRNOGAU.js +21 -0
  36. package/dist/chunks/chunk-TNXILYI6.js +2 -0
  37. package/dist/chunks/chunk-TVQE3JMI.js +2 -0
  38. package/dist/chunks/chunk-U6SFIFDM.js +2409 -0
  39. package/dist/chunks/chunk-V6WBSW5Q.js +3 -0
  40. package/dist/chunks/chunk-VESOG2SS.js +2 -0
  41. package/dist/chunks/chunk-VFTUP5NQ.js +2 -0
  42. package/dist/chunks/{chunk-G2WJC6DE.js → chunk-VVV5I22A.js} +2 -2
  43. package/dist/chunks/chunk-XPB6NY7L.js +42 -0
  44. package/dist/chunks/{chunk-VG7XO6PR.js → chunk-XWLI7WJH.js} +2 -24
  45. package/dist/chunks/{chunk-KIGN4FI6.js → chunk-YWX7FKLM.js} +1 -1
  46. package/dist/chunks/cli-BKBH6FZY.js +2 -0
  47. package/dist/chunks/{configuration-command-ANYM5UYG.js → configuration-command-75ZCMZ6X.js} +1 -1
  48. package/dist/chunks/connected-evidence-UPUVVQ6P.js +2 -0
  49. package/dist/chunks/{continual-MHMPLLUZ.js → continual-WWPXK2LO.js} +1 -1
  50. package/dist/chunks/core-commands-SS2GV7WU.js +2 -0
  51. package/dist/chunks/datasets-TCLXV34N.js +2 -0
  52. package/dist/chunks/desktop-test-7ZHZHUB6.js +3 -0
  53. package/dist/chunks/{dist-GC7DXKTI.js → dist-VDN6E54A.js} +1 -1
  54. package/dist/chunks/evaluation-coordination-ZX5GLMRC.js +2 -0
  55. package/dist/chunks/experiment-improvements-O6DCQXCX.js +2 -0
  56. package/dist/chunks/experiments-JOQOBQXY.js +2 -0
  57. package/dist/chunks/{extension-5LQRULQP.js → extension-3M2CSWZB.js} +1 -1
  58. package/dist/chunks/{help-NTSTG6RR.js → help-RLRU33WN.js} +1 -1
  59. package/dist/chunks/hosted-experiment-improvement-IKO677PI.js +3 -0
  60. package/dist/chunks/hosted-harness-runtime-H2Q2SNZT.js +2 -0
  61. package/dist/chunks/hosted-profile-candidate-FHHSLJNO.js +3 -0
  62. package/dist/chunks/hosted-profile-compiler-5B256VV3.js +2 -0
  63. package/dist/chunks/hosted-profile-evaluation-control-Z25TZOW4.js +2 -0
  64. package/dist/chunks/hosted-profile-evaluation-inspection-MFYPLTZQ.js +3 -0
  65. package/dist/chunks/hosted-profile-evaluation-preparation-MAB2PSCC.js +3 -0
  66. package/dist/chunks/human-review-6H3BW7OZ.js +2 -0
  67. package/dist/chunks/learning-Y6WNDVQW.js +2 -0
  68. package/dist/chunks/{opchat-77PRAQ5W.js → opchat-3E4FH3DC.js} +1 -1
  69. package/dist/chunks/{organizations-2KWTYIPU.js → organizations-PRVCUPMN.js} +1 -1
  70. package/dist/chunks/{profile-HVLH672B.js → profile-DC4UEVVG.js} +1 -1
  71. package/dist/chunks/project-agent-ZX3CELKI.js +2 -0
  72. package/dist/chunks/sandbox-command-HHQMZK3G.js +2 -0
  73. package/dist/chunks/{sandbox-template-QMB6DSTS.js → sandbox-template-DFHWHCIQ.js} +1 -1
  74. package/dist/chunks/{src-N447LUPO.js → src-CREVQF7M.js} +1 -1
  75. package/dist/chunks/src-MAZ7OBVY.js +327 -0
  76. package/dist/chunks/taskset-TB2ICAZU.js +2 -0
  77. package/dist/chunks/{teams-bot-RNHQMPQA.js → teams-bot-BNBL57S5.js} +1 -1
  78. package/dist/chunks/training-FW5FOGR3.js +2 -0
  79. package/dist/chunks/{workspaces-V5YTXJLV.js → workspaces-WTPFRJMS.js} +1 -1
  80. package/dist/cli.js +1 -1
  81. package/dist/index.js +1 -1
  82. package/dist/profile/local-profile.d.ts +2 -0
  83. package/dist/web/assets/App-BgeSqoRS.css +1 -0
  84. package/dist/web/assets/App-C6EWFrLP.js +227 -0
  85. package/dist/web/assets/{AppDialog-v-BfV1lA.js → AppDialog-Cgn_fTGR.js} +1 -1
  86. package/dist/web/assets/AppTerminalPanel-cNYkSvM2.js +2 -0
  87. package/dist/web/assets/{AppsView-Dl-37F0w.js → AppsView-9zpKBSLv.js} +1 -1
  88. package/dist/web/assets/{BrowserSidebar-DltF217k.js → BrowserSidebar-Xo21N1ej.js} +1 -1
  89. package/dist/web/assets/{CartesianChart-gK-Ll3kX.js → CartesianChart-Bg3Lm5mZ.js} +1 -1
  90. package/dist/web/assets/{CollaborationTabs-BuWquQYn.js → CollaborationTabs-BIfgIy5X.js} +1 -1
  91. package/dist/web/assets/{CommandMenu-Cs5S8t-Q.js → CommandMenu-D9BimyPx.js} +1 -1
  92. package/dist/web/assets/{CommunityView-BJBkQEMV.js → CommunityView-BoW-yLju.js} +1 -1
  93. package/dist/web/assets/{ComposerCreateImproveStrip-C36fKc-v.js → ComposerCreateImproveStrip-BIKVEgr1.js} +1 -1
  94. package/dist/web/assets/{GetStartedView-9A49MgYA.js → GetStartedView-B99v4-hh.js} +1 -1
  95. package/dist/web/assets/HostedModelLearningReview-DEScpX2Z.js +1 -0
  96. package/dist/web/assets/HostedModelLearningSettings-4HT5eEiL.js +1 -0
  97. package/dist/web/assets/LabModelVersionDetailPage-DkYdI7gr.js +1 -0
  98. package/dist/web/assets/{LabSkillSidebar-BAKym5GY.js → LabSkillSidebar-Bp5XYipm.js} +1 -1
  99. package/dist/web/assets/LabsRoute-ACN76d2j.css +1 -0
  100. package/dist/web/assets/LabsRoute-VopO7n34.js +105 -0
  101. package/dist/web/assets/MainChatThread-3Gg0oDZT.js +2 -0
  102. package/dist/web/assets/{MainPane-gPkr0OWu.js → MainPane-CUqMVG9-.js} +11 -11
  103. package/dist/web/assets/{MarkdownText-B-au2zEv.js → MarkdownText-De0WzrEw.js} +1 -1
  104. package/dist/web/assets/{NativeSkillSidebar-DHFKZ7P1.js → NativeSkillSidebar-B4jtf5RO.js} +1 -1
  105. package/dist/web/assets/{NewExperienceSwitcher-Dhbf5KJT.js → NewExperienceSwitcher-Bg1DVr96.js} +1 -1
  106. package/dist/web/assets/{NewProjectDialog-hlAzFK2Y.js → NewProjectDialog-i_wvIBw-.js} +1 -1
  107. package/dist/web/assets/{OutputsPage-C0N2rOxE.js → OutputsPage-CZiPxLyN.js} +1 -1
  108. package/dist/web/assets/{ProjectsPage-CkHBgLPx.js → ProjectsPage-BD0eml0M.js} +1 -1
  109. package/dist/web/assets/{RightChatPanelStack-BiW6ZzPN.js → RightChatPanelStack-CEBFPHKP.js} +1 -1
  110. package/dist/web/assets/{RightSidebarHomePanel-BS9YSdYB.js → RightSidebarHomePanel-BTpU5wGh.js} +1 -1
  111. package/dist/web/assets/{ScheduledWorkPage-819sQcDR.js → ScheduledWorkPage-Y6XGoh-X.js} +1 -1
  112. package/dist/web/assets/{SettingsView-BZrOUPZb.js → SettingsView-Kh14f463.js} +3 -3
  113. package/dist/web/assets/{TeamChatView-CUNcbSa7.js → TeamChatView-5LjuRNd6.js} +1 -1
  114. package/dist/web/assets/{TerminalOverlay-MIlGPpXe.js → TerminalOverlay-BCWBSotQ.js} +1 -1
  115. package/dist/web/assets/{TrainingCreationPanel-BNcyNoa8.js → TrainingCreationPanel-hvOHRVJx.js} +1 -1
  116. package/dist/web/assets/{TrainingDraftPanel-CKV16LNC.js → TrainingDraftPanel-CGEHGljE.js} +1 -1
  117. package/dist/web/assets/{UsageSettingsSection-SVgUHnUL.js → UsageSettingsSection-B8nbqhag.js} +1 -1
  118. package/dist/web/assets/{WorkSidebarPanel-CfkaaFHA.js → WorkSidebarPanel-B6hlPEIs.js} +1 -1
  119. package/dist/web/assets/{WorkspaceDiffPanel-CQhqlqg5.js → WorkspaceDiffPanel-q8A15-0x.js} +9 -9
  120. package/dist/web/assets/{WorkspaceEnvironmentMenu-CJB-z2tS.js → WorkspaceEnvironmentMenu-BiFTPWtC.js} +1 -1
  121. package/dist/web/assets/{WorkspaceGitDialogs-B3xtasTt.js → WorkspaceGitDialogs-Dyx4Rbiy.js} +1 -1
  122. package/dist/web/assets/{WorkspaceMonacoEditor-DVfyICNZ.js → WorkspaceMonacoEditor-B1dKexHo.js} +60 -60
  123. package/dist/web/assets/{arrow-up-right-CYG4Vm07.js → arrow-up-right-CCj7SOGp.js} +1 -1
  124. package/dist/web/assets/chunk-DJWHN7NU-1eQoMoKO.js +1 -0
  125. package/dist/web/assets/{clipboard-DGSnfljX.js → clipboard-BY6ELc9Z.js} +1 -1
  126. package/dist/web/assets/{cloud-upload-Bw_zrS2y.js → cloud-upload-BOka5EKK.js} +1 -1
  127. package/dist/web/assets/cssMode-C34j8ti5.js +1 -0
  128. package/dist/web/assets/{folder-open-CcGOldH7.js → folder-open-CX2jidFj.js} +1 -1
  129. package/dist/web/assets/{folder-plus-DEIDaX2B.js → folder-plus-Dh2Q9LP3.js} +1 -1
  130. package/dist/web/assets/{git-commit-horizontal-B-Ao6y--.js → git-commit-horizontal-CfevriuT.js} +1 -1
  131. package/dist/web/assets/htmlMode-BORwVkZg.js +1 -0
  132. package/dist/web/assets/index-B9VSiz_z.css +1 -0
  133. package/dist/web/assets/{index-C8_8-lW7.js → index-BBjRfC--.js} +6 -6
  134. package/dist/web/assets/{info-DwOXHkN_.js → info-Bv3dbs3G.js} +1 -1
  135. package/dist/web/assets/{jsonMode-txmGM7K6.js → jsonMode-BYWtZ6AK.js} +4 -4
  136. package/dist/web/assets/{lspLanguageFeatures-D59Drc_9.js → lspLanguageFeatures-CEAdFSpU.js} +1 -1
  137. package/dist/web/assets/{minimize-2-C5UCV16_.js → minimize-2-MhorZwY5.js} +1 -1
  138. package/dist/web/assets/{monaco.contribution-BOmcYK8k.js → monaco.contribution-CDhPpbIo.js} +2 -2
  139. package/dist/web/assets/{monaco.contribution-CbK7796k.js → monaco.contribution-CN7AWJNd.js} +2 -2
  140. package/dist/web/assets/monaco.contribution-DHA7FuJX.js +2 -0
  141. package/dist/web/assets/{monaco.contribution-5HcktwaM.js → monaco.contribution-ZUUVx_3M.js} +2 -2
  142. package/dist/web/assets/{monitor-D4hpNTai.js → monitor-DLcrkfM5.js} +1 -1
  143. package/dist/web/assets/{python-Cie4Ghu8.js → python-CXwvPmc4.js} +1 -1
  144. package/dist/web/assets/{refresh-cw-CIOzrJnj.js → refresh-cw-BTfIxHb3.js} +1 -1
  145. package/dist/web/assets/{save-D7EtdMHG.js → save-DaN65kMq.js} +1 -1
  146. package/dist/web/assets/{square-JpDfrqp_.js → square-zRgIUdSv.js} +1 -1
  147. package/dist/web/assets/toggleHighContrast-BgpFWRpS.css +1 -0
  148. package/dist/web/assets/{toggleHighContrast-DdGkc-Be.js → toggleHighContrast-DWeRZFzr.js} +1 -1
  149. package/dist/web/assets/{tsMode-DwgEL7oI.js → tsMode-nLBhKngY.js} +1 -1
  150. package/dist/web/assets/{upload-BkwOzqS-.js → upload-BfUu4Eu1.js} +1 -1
  151. package/dist/web/assets/{useLocalAgentSchedules-bO0Qycih.js → useLocalAgentSchedules-BCITWhg2.js} +1 -1
  152. package/dist/web/assets/{useSessionTurnCache-DxUh5scW.js → useSessionTurnCache-BQMWfV8u.js} +1 -1
  153. package/dist/web/assets/{wifi-off-D6Keejtn.js → wifi-off-bdka5es5.js} +1 -1
  154. package/dist/web/assets/{workers-BgG66q0n.js → workers-z7XHFFNs.js} +1 -1
  155. package/dist/web/assets/{yaml-COMRGPWg.js → yaml-BTr4i4DD.js} +1 -1
  156. package/dist/web/index.html +5 -5
  157. package/docs/command-reference.md +85 -1
  158. package/package.json +6 -2
  159. package/dist/chunks/actions-command-DWQ3VGGP.js +0 -2
  160. package/dist/chunks/app-server-runtime-JVLXE5LF.js +0 -2
  161. package/dist/chunks/apps-5DQAYDNI.js +0 -2
  162. package/dist/chunks/chunk-3D4QN4NM.js +0 -19
  163. package/dist/chunks/chunk-45UOD2DA.js +0 -2
  164. package/dist/chunks/chunk-5IN3HQJU.js +0 -2
  165. package/dist/chunks/chunk-6KKQXETR.js +0 -5
  166. package/dist/chunks/chunk-6XF4GI35.js +0 -2
  167. package/dist/chunks/chunk-7KC5LWCU.js +0 -2
  168. package/dist/chunks/chunk-7R7O2XXP.js +0 -2
  169. package/dist/chunks/chunk-DGD52VZC.js +0 -13
  170. package/dist/chunks/chunk-E6WT4HWF.js +0 -3
  171. package/dist/chunks/chunk-EWQZASG4.js +0 -2400
  172. package/dist/chunks/chunk-IFI24VF6.js +0 -5
  173. package/dist/chunks/chunk-KDOS6YMH.js +0 -2
  174. package/dist/chunks/chunk-MDE3HHLH.js +0 -2
  175. package/dist/chunks/chunk-P45OSKQL.js +0 -4
  176. package/dist/chunks/chunk-ROJX6IYW.js +0 -578
  177. package/dist/chunks/chunk-SXN3QOW4.js +0 -3
  178. package/dist/chunks/chunk-V44RF57H.js +0 -2
  179. package/dist/chunks/chunk-VJJ3UXOI.js +0 -42
  180. package/dist/chunks/chunk-W3NG7YLC.js +0 -8
  181. package/dist/chunks/chunk-XMKAMR7M.js +0 -2
  182. package/dist/chunks/cli-7D7CYCIY.js +0 -2
  183. package/dist/chunks/core-commands-TYWE3TNW.js +0 -2
  184. package/dist/chunks/datasets-FM3UBK4R.js +0 -13
  185. package/dist/chunks/desktop-test-Z5IKJU3P.js +0 -3
  186. package/dist/chunks/experiments-IWBRIDQE.js +0 -2
  187. package/dist/chunks/hosted-harness-runtime-S75BLD57.js +0 -2
  188. package/dist/chunks/hosted-profile-compiler-JNNYWLC7.js +0 -2
  189. package/dist/chunks/hosted-profile-evaluation-control-IK4Y2EQZ.js +0 -2
  190. package/dist/chunks/hosted-profile-evaluation-inspection-YWKUB7RT.js +0 -3
  191. package/dist/chunks/hosted-profile-evaluation-preparation-JXOF73BB.js +0 -3
  192. package/dist/chunks/project-agent-7NLKJMAM.js +0 -2
  193. package/dist/chunks/sandbox-command-FNS4JBVC.js +0 -2
  194. package/dist/chunks/src-TZBL6NA7.js +0 -325
  195. package/dist/chunks/taskset-BZYQT65N.js +0 -2
  196. package/dist/chunks/training-7PST5HZU.js +0 -2
  197. package/dist/web/assets/App-7h_oHCFd.css +0 -1
  198. package/dist/web/assets/App-BEQmrTGQ.js +0 -226
  199. package/dist/web/assets/AppTerminalPanel-CnKcllS2.js +0 -2
  200. package/dist/web/assets/HostedModelLearningReview-JgxDUDio.js +0 -1
  201. package/dist/web/assets/HostedModelLearningSettings-CH7CsAhw.js +0 -1
  202. package/dist/web/assets/LabModelVersionDetailPage-N2qcy1Yv.js +0 -1
  203. package/dist/web/assets/LabsRoute-DooCmsN8.css +0 -1
  204. package/dist/web/assets/LabsRoute-Y992kQoQ.js +0 -52
  205. package/dist/web/assets/MainChatThread-CPhREQso.js +0 -2
  206. package/dist/web/assets/cssMode-CSpYOKj-.js +0 -1
  207. package/dist/web/assets/htmlMode-DstkgJXG.js +0 -1
  208. package/dist/web/assets/index-DUIWDN8o.css +0 -1
  209. package/dist/web/assets/monaco.contribution-BomZ1gys.js +0 -2
  210. package/dist/web/assets/toggleHighContrast-B7NOMXDY.css +0 -1
@@ -1,23 +1,23 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as Et,b as Pe}from"./chunk-L3KS6MOV.js";import{x as bt}from"./chunk-3D4QN4NM.js";import{b as j,d as ye,e as we}from"./chunk-Z3D4C7BG.js";import{E as Ne,F as je,P as Ct,Q as vt,_ as De,f as ge}from"./chunk-ALZRXBEC.js";import{f as L,h as me,p as Le,r as It}from"./chunk-H7IWJN7L.js";import{a}from"./chunk-FTQLQJQV.js";import{createRequire as Po}from"node:module";import{createHash as po,randomUUID as ho}from"node:crypto";import{spawn as Pr}from"node:child_process";import{existsSync as U}from"node:fs";import{cp as Sr,mkdir as F,readFile as So,readdir as Ao,rename as at,rm as it,symlink as Ar,writeFile as ie}from"node:fs/promises";import d from"node:path";import Sn from"node:path";var Se="default",Rt=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}a(W,"hasOwn");function z(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}a(z,"normalizeHandle");function _(e){if(typeof e!="string")return null;let t=e.trim();return t?t.replace(/\/$/,""):null}a(_,"normalizeBaseUrl");function Bt(e){let t=z(e);if(!t)throw new Error("profile handle must be non-empty");return t}a(Bt,"requireHandle");function An(e){if(typeof e!="string")throw new Error("apiKey must be a non-empty string");let t=e.trim();if(!t)throw new Error("apiKey must be a non-empty string");return t}a(An,"requireApiKey");function de(e,t){let o=z(e),n=z(t);return!!(o&&n&&o.toLowerCase()===n.toLowerCase())}a(de,"handleEquals");function qe(e,t,o){let n=_(o);return e.findIndex(r=>de(r.handle,t)?n?_(r.baseUrl)===n:!0:!1)}a(qe,"findAccountIndex");function ne(e){let t=z(e.handle)??Se,o=_(e.baseUrl);return o?{handle:t,baseUrl:o}:{handle:t}}a(ne,"selectorFromAccount");function oe(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n=_(typeof t.baseUrl=="string"?t.baseUrl:void 0);return n?{handle:o,baseUrl:n}:{handle:o}}a(oe,"sanitizeActiveProfile");function Fe(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o=typeof t.repoPath=="string"?t.repoPath.trim():"",n=typeof t.profile=="string"&&t.profile.trim()?t.profile.trim():"default";if(!o)return;let r={repoPath:o,profile:n,mode:"local"};if(t.lastCheck&&typeof t.lastCheck=="object"&&!Array.isArray(t.lastCheck)){let s=t.lastCheck,i=s.command,c=s.status,l=s.checkedAt;(i==="inspect"||i==="build"||i==="validate"||i==="eval"||i==="run")&&(c==="passed"||c==="failed")&&typeof l=="string"&&(r.lastCheck={command:i,status:c,checkedAt:l,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(t.lastPush&&typeof t.lastPush=="object"&&!Array.isArray(t.lastPush)){let s=t.lastPush,i=s.status,c=s.pushedAt;(i==="pushed"||i==="failed")&&typeof c=="string"&&(r.lastPush={status:i,pushedAt:c,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},..._t(s.hostedSourceMaterialization)?{hostedSourceMaterialization:_t(s.hostedSourceMaterialization)}:{},...$t(s.hostedSourceCheck)?{hostedSourceCheck:$t(s.hostedSourceCheck)}:{},...Ot(s.hostedPublish)?{hostedPublish:Ot(s.hostedPublish)}:{},...Tt(s.hostedRun)?{hostedRun:Tt(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(t.profiles)){let s=t.profiles.flatMap(i=>{let c=Fe(i);if(!c)return[];let l=i,u=l.source==="github"||l.source==="openpond_git"?l.source:"local",p=typeof l.repositoryId=="string"&&l.repositoryId.trim()?l.repositoryId.trim():Sn.resolve(c.repoPath);return[{source:u,repositoryId:p,repoPath:c.repoPath,profile:c.profile,...c.lastCheck?{lastCheck:c.lastCheck}:{},...c.lastPush?{lastPush:c.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}a(Fe,"sanitizeLocalOpenPondProfile");function _t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=Ae(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runtimeAgentId"),...m(t,"projectId"),...m(t,"sourceRoot"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"manifestSyncedAt"),...Ut(t,"fileCount"),...Ut(t,"totalBytes"),...m(t,"generatedManifestPath"),...He(t,"synthesizedOpenPondYaml"),...m(t,"uploadMetadataPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...m(t,"materializedAt"),...m(t,"error")}:null}a(_t,"sanitizeHostedMaterializationStatus");function $t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=Ae(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"deployPlanStatus"),...He(t,"canRun"),...He(t,"canDeploy"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...O(t,"requiredChecks"),...O(t,"evalNames"),...O(t,"blockedReasons"),...O(t,"staleReasons"),...m(t,"runtimeId"),...m(t,"sandboxId"),...O(t,"traceArtifactRefs"),...O(t,"evalResultArtifactRefs"),...O(t,"validatorArtifactRefs"),...m(t,"checkedAt"),...m(t,"error")}:null}a($t,"sanitizeHostedSourceCheckStatus");function Ot(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=Ae(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"snapshotId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"buildStatus"),...m(t,"validationStatus"),...m(t,"evalStatus"),...m(t,"publishedAt"),...m(t,"error")}:null}a(Ot,"sanitizeHostedPublishStatus");function Tt(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=Ae(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runId"),...m(t,"runtimeId"),...m(t,"sandboxId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"setupGateStatus"),...O(t,"setupRequirementRefs"),...O(t,"artifactRefs"),...O(t,"traceArtifactRefs"),...O(t,"evalArtifactRefs"),...m(t,"startedAt"),...m(t,"completedAt"),...m(t,"error")}:null}a(Tt,"sanitizeHostedRunSummary");function m(e,t){let o=e[t];return typeof o=="string"||o===null?{[t]:o}:{}}a(m,"nullableStringProp");function He(e,t){let o=e[t];return typeof o=="boolean"||o===null?{[t]:o}:{}}a(He,"nullableBooleanProp");function Ut(e,t){let o=e[t];return typeof o=="number"||o===null?{[t]:o}:{}}a(Ut,"nullableNumberProp");function O(e,t){let o=e[t];if(!Array.isArray(o))return{};let n=o.filter(r=>typeof r=="string");return{[t]:n}}a(O,"stringArrayProp");function Ae(e){return typeof e=="string"&&e.trim()?e.trim():null}a(Ae,"stringField");function Lt(e,t){if(!de(e.handle,t.handle))return!1;let o=_(t.baseUrl);return o?_(e.baseUrl)===o:!_(e.baseUrl)}a(Lt,"accountMatchesSelector");function Ge(e,t,o={}){let n=_(t.baseUrl);if(n)return qe(e,t.handle,n);let r=e.findIndex(i=>Lt(i,t));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>de(i.handle,t.handle));if(s.length>1&&o.requireUnambiguous)throw new Error(`multiple profiles found for ${t.handle}; pass --base-url to select one`);return s[0]?.index??-1}a(Ge,"findAccountIndexForSelector");function xn(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o={};return typeof t.token=="string"&&(o.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(o.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(o.conversationId=t.conversationId),Object.keys(o).length>0?o:void 0}a(xn,"sanitizeSession");function kn(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n={handle:o};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl),typeof t.environment=="string"&&(n.environment=t.environment);let r=xn(t.session);return r&&(n.session=r),n}a(kn,"sanitizeAccount");function bn(e){let t={};return typeof e.token=="string"&&(t.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(t.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(t.conversationId=e.conversationId),Object.keys(t).length>0?t:void 0}a(bn,"extractLegacySession");function In(e,t){let o={handle:t};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl);let n=bn(e);return n&&(o.session=n),o}a(In,"extractLegacyAccount");function Nt(e){let t={};typeof e.lspEnabled=="boolean"&&(t.lspEnabled=e.lspEnabled),(e.executionMode==="local"||e.executionMode==="hosted")&&(t.executionMode=e.executionMode),(e.mode==="general"||e.mode==="builder")&&(t.mode=e.mode);let o=Fe(e.openpondProfile);o&&(t.openpondProfile=o);let n=[],r=Array.isArray(e.accounts)?e.accounts:[];for(let l of r){let u=kn(l);u&&qe(n,u.handle,u.baseUrl)===-1&&n.push(u)}if(n.length===0){let l=oe(e.activeProfile)?.handle||Se;n.push(In(e,l))}let s=oe(e.activeProfile),i=s?Ge(n,s):-1,c=n[i===-1?0:i];return t.accounts=n,t.activeProfile=ne(c),t}a(Nt,"normalizeGlobalConfig");function Cn(e,t,o){let n=e.accounts??[],r=_(o??process.env.OPENPOND_BASE_URL),s=z(t);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let i=z(process.env.OPENPOND_ACCOUNT);if(i)return r?{handle:i,baseUrl:r}:{handle:i};let c=oe(e.activeProfile);return c?r?{handle:c.handle,baseUrl:r}:c:n[0]?ne(n[0]):{handle:Se}}a(Cn,"resolveRequestedProfile");function jt(e,t,o){let n=_(o);if(n){let s=qe(e,t,n);if(s!==-1)return e[s]}else{let s=e.filter(i=>de(i.handle,t));if(s.length>1)throw new Error(`multiple profiles found for ${t}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:t};return n&&(r.baseUrl=n),e.push(r),r}a(jt,"ensureAccount");function Mt(e){e.session&&Object.keys(e.session).length===0&&delete e.session}a(Mt,"cleanupAccount");function vn(e,t,o,n){let r=o===null||o===void 0&&n.undefinedDeletes;switch(t){case"apiKey":{if(r){delete e.apiKey;return}typeof o=="string"&&(e.apiKey=o);return}case"baseUrl":{if(r){delete e.baseUrl;return}typeof o=="string"&&(e.baseUrl=o);return}case"apiBaseUrl":{if(r){delete e.apiBaseUrl;return}typeof o=="string"&&(e.apiBaseUrl=o);return}case"chatApiBaseUrl":{if(r){delete e.chatApiBaseUrl;return}typeof o=="string"&&(e.chatApiBaseUrl=o);return}case"token":case"appId":case"conversationId":{if(e.session||(e.session={}),r){delete e.session[t],Mt(e);return}(typeof o=="string"||o===null)&&(e.session[t]=o),Mt(e);return}}}a(vn,"applyScopedKey");function En(e,t,o){if(!Rt.some(l=>W(t,l)))return!1;let r=e.accounts??[],s=oe(t.activeProfile)??Cn(e),i=_(W(t,"baseUrl")?t.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),c=jt(r,s.handle,i);for(let l of Rt)W(t,l)&&vn(c,l,t[l],o);return e.accounts=r,e.activeProfile=ne(c),!0}a(En,"applyAccountPatch");function Rn(e,t){if(W(t,"lspEnabled")&&(typeof t.lspEnabled=="boolean"?e.lspEnabled=t.lspEnabled:t.lspEnabled===null&&delete e.lspEnabled),W(t,"executionMode")&&(t.executionMode==="local"||t.executionMode==="hosted"?e.executionMode=t.executionMode:t.executionMode===null&&delete e.executionMode),W(t,"mode")&&(t.mode==="general"||t.mode==="builder"?e.mode=t.mode:t.mode===null&&delete e.mode),W(t,"activeProfile")){let o=oe(t.activeProfile);if(o){let n=Ge(e.accounts??[],o);e.activeProfile=n===-1?o:ne((e.accounts??[])[n])}else t.activeProfile===null&&delete e.activeProfile}if(W(t,"openpondProfile")){let o=Fe(t.openpondProfile);o?e.openpondProfile=o:t.openpondProfile===null&&delete e.openpondProfile}}a(Rn,"applyTopLevelPatch");async function xe(e){let t=L();return await De(t),await vt(t,o=>{let n=Nt(o);return e(n),n})}a(xe,"updateGlobalConfig");async function T(){let e=L();return await De(e),Nt(await Ct(e))}a(T,"loadGlobalConfig");async function ze(){let e=await T(),t=oe(e.activeProfile);return(e.accounts??[]).map(o=>{let n=z(o.handle)??Se;return{handle:n,baseUrl:_(o.baseUrl),apiBaseUrl:_(o.apiBaseUrl),chatApiBaseUrl:_(o.chatApiBaseUrl),environment:o.environment?.trim()||null,isActive:!!(t&&Lt({...o,handle:n},t)),hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!o.session?.token?.trim(),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null}})}a(ze,"listConfiguredProfiles");async function _n(e,t={}){let o=Bt(e),n=_(t.baseUrl),r=-1;await xe(i=>{let c=i.accounts??[];if(r=Ge(c,n?{handle:o,baseUrl:n}:{handle:o},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${o}`);i.activeProfile=ne(c[r])});let s=await ze();return s.find(i=>i.isActive)??s[r]}a(_n,"setActiveProfile");async function $n(e){let t=Bt(e.handle),o=An(e.apiKey),n=_(e.baseUrl),r=_(e.apiBaseUrl),s=_(e.chatApiBaseUrl),i={handle:t};await xe(u=>{let p=u.accounts??[],h=jt(p,t,n);h.apiKey=o,n&&(h.baseUrl=n),r?h.apiBaseUrl=r:e.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:e.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,e.environment===null?delete h.environment:typeof e.environment=="string"&&e.environment.trim()&&(h.environment=e.environment.trim()),u.accounts=p,i=ne(h),e.setActive!==!1&&(u.activeProfile=i)});let l=(await ze()).find(u=>de(u.handle,i.handle)?n?_(u.baseUrl)===n:!0:!1);if(!l)throw new Error(`failed to save profile: ${t}`);return l}a($n,"saveProfileApiKey");async function H(e){await xe(t=>{Rn(t,e),En(t,e,{undefinedDeletes:!1})})}a(H,"saveGlobalConfig");function Je(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}a(Je,"emptyProfileCatalogState");function Ke(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}a(Ke,"emptyProfileSkillCatalogState");function We(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}a(We,"emptyProfileSetupGate");function ke(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}a(ke,"emptyProfileDiffSummary");function Ve(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}a(Ve,"emptyProfileSummary");import{existsSync as re}from"node:fs";import{readFile as On,stat as Tn}from"node:fs/promises";import be from"node:path";var Dt=".openpond/agent-manifest.json",Ht=".openpond/action-registry.json",Un=".openpond/source-upload-metadata.json",Mn=".openpond/agent-package-origin.json";async function Gt(e){return Jt({agentId:"default",sourcePath:e,preferred:!0})}a(Gt,"loadProfileActionCatalog");async function zt(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!1,error:null},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(c=>c.preferred),...e.filter(c=>!c.preferred)],o=await Promise.all(t.map(Jt)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let u=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=u===l.id?l:{...l,id:u};n.set(u,p),r.push(p)}let s=Ln(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:s,manifestPath:o.find(c=>c.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:o.find(c=>c.catalog.registryPath)?.catalog.registryPath??null,stale:o.some(c=>c.catalog.stale),error:i.length>0?i.join("; "):null},actionCatalog:r,sourceSetupRequirements:o.flatMap(c=>c.sourceSetupRequirements)}}a(zt,"loadProfileActionCatalogForSources");async function Jt(e){let t=e.sourcePath,o=be.join(t,Dt),n=be.join(t,Ht),r=be.join(t,Un),s=be.join(t,Mn);try{let i=await Ie(o),c=await Ie(n),l=await Ie(r),u=$(await Ie(s)),p=$($(i)?.inputSchemas),h=Ft($(l)?.setupRequirements)??[],k=Nn(h),C=new Map;for(let f of[...Ye($(i)?.actionCatalog),...Ye($(c)?.actions),...Ye($(i)?.actions)]){let y=b(f.id)??b(f.name);if(!y)continue;let x=C.get(y),v=jn({sourceRequirementsByAction:k,actionId:y,actionName:b(f.name)}),B=Dn(Ft(f.setupRequirements)??x?.setupRequirements??[],v),K={id:y,agentId:e.agentId,sourcePath:t,sourceActionId:y,name:b(f.name)??x?.name??y,label:b(f.label)??x?.label??zn(y),description:b(f.description)??x?.description??null,visibility:b(f.visibility)??x?.visibility??"default",inputSchema:Gn(f.inputSchema,p)??x?.inputSchema??null,outputSchema:Kt(f.outputSchema)??x?.outputSchema??null,approvalPolicy:$(f.approvalPolicy)??x?.approvalPolicy??null,artifactPolicy:$(f.artifactPolicy)??x?.artifactPolicy??null,setupRequirements:B,mcp:$(f.mcp)??x?.mcp??null,schedulePolicy:$(f.schedulePolicy)??x?.schedulePolicy??null,trace:Bn($(f.trace)??x?.trace??null,u),implementation:$(f.implementation)??x?.implementation??null,invokesModel:typeof f.invokesModel=="boolean"?f.invokesModel:x?.invokesModel};C.set(y,K)}let P=Array.from(C.values()).filter(f=>f.visibility!=="internal"&&f.visibility!=="debug"),g=[...i?[]:[Dt],...c?[]:[Ht]],S=await Fn([o,n]);return{catalog:{actionCount:P.length,generatedAt:S,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:g.length>0,error:g.length>0?qn(e,g):null},actionCatalog:P,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}a(Jt,"loadProfileActionCatalogSource");function Bn(e,t){if(!t)return e;let o=b(t.versionId),n=b(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:qt(t.validationReceiptIds),evalReceiptIds:qt(t.evalReceiptIds)}}a(Bn,"mergeAgentPackageTrace");function qt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(qt,"stringArray");function Ln(e){let t=0;for(let o of e){if(!o)continue;let n=Date.parse(o);Number.isFinite(n)&&(t=Math.max(t,n))}return t>0?new Date(t).toISOString():null}a(Ln,"latestIso");function Nn(e){let t=new Map;for(let o of e){let n=[b(o.actionId),b(o.sourceActionId),b(o.actionName)].filter(r=>!!r);for(let r of n){let s=t.get(r)??[];s.push(o),t.set(r,s)}}return t}a(Nn,"sourceSetupRequirementsByAction");function jn(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(o=>({...o,source:"source_upload_metadata"}))}a(jn,"setupRequirementsForActionSource");function Dn(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let s=Hn(r);n.has(s)||(n.add(s),o.push(r))}return o}a(Dn,"mergeSetupRequirements");function Hn(e){return[b(e.actionId)??b(e.sourceActionId)??b(e.actionName)??"",b(e.kind)??b(e.type)??"",b(e.name)??b(e.key)??b(e.provider)??b(e.tool)??b(e.command)??b(e.packageName)??b(e.path)??b(e.repo)??b(e.url)??b(e.id)??""].join(":")}a(Hn,"setupRequirementIdentity");function qn(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}a(qn,"missingSourceArtifactsMessage");async function Ie(e){return re(e)?JSON.parse(await On(e,"utf8")):null}a(Ie,"readJsonIfExists");async function Fn(e){let t=0;for(let o of e){if(!re(o))continue;let n=await Tn(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}a(Fn,"latestMtime");function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a($,"asRecord");function Ye(e){return Array.isArray(e)?e.filter(t=>!!$(t)):[]}a(Ye,"records");function Ft(e){return Array.isArray(e)?e.filter(t=>!!$(t)):null}a(Ft,"recordArray");function b(e){return typeof e=="string"&&e.trim()?e.trim():null}a(b,"text");function Kt(e){return b(e)??$(e)}a(Kt,"schemaValue");function Gn(e,t){let o=Kt(e);return typeof o!="string"?o:$(t?.[o])??o}a(Gn,"resolvedSchemaValue");function zn(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}a(zn,"titleFromActionId");var Ce=class extends Error{static{a(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,o){let n=o.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,n.length?`Missing setup: ${n.join(", ")}`:""].filter(Boolean).join(`
3
- `)),this.name="OpenPondProfileSetupRequiredError",this.details={error:"agent_source_setup_required",actionId:t,setupGate:o,missing:n,blockingSetupRequirements:o.blockingRequirements,setupRequirements:o.requirements}}};function ve(e){let t=new Map;for(let i of e.sourceSetupRequirements??[]){let c=Kn(i);if(e.actionId&&c&&c!==e.actionId&&E(i.actionName)!==e.actionId&&E(i.sourceActionId)!==e.actionId)continue;let l=Wt({record:i,source:"source_upload_metadata",actionId:c});l&&t.set(l.ref,l)}for(let i of e.actionCatalog)if(!(e.actionId&&i.id!==e.actionId&&i.name!==e.actionId))for(let c of i.setupRequirements??[]){let l=Wt({record:c,source:"action_catalog",actionId:i.id});l&&t.set(l.ref,l)}let o=Array.from(t.values()),n=o.filter(i=>i.blocking),r=o.filter(i=>!i.required&&!Xe(i.status)).length,s=o.filter(i=>Xe(i.status)).length;return{status:Vn(n),requirementCount:o.length,blockingCount:n.length,optionalMissingCount:r,readyCount:s,requirements:o,blockingRequirements:n}}a(ve,"buildOpenPondProfileSetupGate");function Ze(e,t){if(t.blockingRequirements.length>0)throw new Ce(e,t)}a(Ze,"assertOpenPondProfileActionReady");function Jn(e){let t=e.actionId?`${e.actionId}: `:"",o=e.required?"required":"optional";return`${t}${e.label} (${o}, ${e.status})`}a(Jn,"formatOpenPondProfileSetupRequirement");function Wt(e){let t=e.source==="action_catalog"&&E(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,o=E(e.record.kind)??E(e.record.type),n=E(e.record.label)??E(e.record.name)??E(e.record.key)??E(e.record.provider)??E(e.record.tool)??E(e.record.command)??E(e.record.packageName)??E(e.record.path)??E(e.record.repo)??E(e.record.url)??E(e.record.id)??o??"setup requirement",r=e.record.required!==!1,s=Wn(e.record);return{ref:[t,e.actionId??"source",o??"requirement",n].join(":"),source:t,actionId:e.actionId,kind:o,label:n,status:s,required:r,blocking:r&&!Xe(s)}}a(Wt,"setupRequirementFromRecord");function Kn(e){return E(e.actionId)??E(e.sourceActionId)??E(e.actionName)}a(Kn,"setupRequirementActionId");function Wn(e){let t=E(e.status)??E(e.state);return t?t==="satisfied"||t==="connected"||t==="provided"?"ready":t:typeof e.satisfied=="boolean"?e.satisfied?"ready":"setup_required":typeof e.ready=="boolean"&&e.ready?"ready":"setup_required"}a(Wn,"setupStatus");function Vn(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}a(Vn,"gateStatus");function Xe(e){return e==="ready"||e==="disabled"}a(Xe,"isReadyStatus");function E(e){return typeof e=="string"&&e.trim()?e.trim():null}a(E,"text");import{spawn as Yn}from"node:child_process";import{randomUUID as Xn}from"node:crypto";import{existsSync as Qe}from"node:fs";import{readFile as Zn,rm as Qn,writeFile as Xt}from"node:fs/promises";import Ee from"node:path";var Zt=["**/node_modules/","**/.bun/","**/.env","**/.env.*","**/.openpond/traces/","**/.openpond/vendor/","**/.openpond/eval-results.json","**/.openpond/artifact-index.json","**/.openpond/source-upload-cache.json",""].join(`
4
- `);async function Qt(e){if(!Qe(Ee.join(e,".git"))){let s=await M(e,["init","-b","main"]);if(s.code!==0)throw new Error(Y("git init",s))}let t=Ee.join(e,".gitignore");if(Qe(t)?await er(t):await Xt(t,Zt,"utf8"),await or(e))return;let o=await X(e);if(!o.dirty&&o.files.length===0)return;let n=await M(e,["add","-A"]);if(n.code!==0)throw new Error(Y("git add",n));let r=await M(e,["commit","-m","Initialize OpenPond profile"],{env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}});if(r.code!==0&&!/nothing to commit/i.test(r.stdout+r.stderr))throw new Error(Y("git commit",r))}a(Qt,"ensureProfileGitRepo");async function er(e){let t=await Zn(e,"utf8").catch(()=>""),o=Zt.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(s=>s.trim()===r));if(o.length===0)return;let n=t.endsWith(`
2
+ import{a as Et,b as Se}from"./chunk-L3KS6MOV.js";import{w as bt}from"./chunk-ELNJUG64.js";import{b as j,d as we,e as Pe}from"./chunk-Z3D4C7BG.js";import{E as Ne,F as je,P as Ct,Q as vt,_ as De,f as ye}from"./chunk-ALZRXBEC.js";import{f as L,h as ge,p as Le,r as It}from"./chunk-H7IWJN7L.js";import{a}from"./chunk-FTQLQJQV.js";import{createRequire as Po}from"node:module";import{createHash as po,randomUUID as ho}from"node:crypto";import{spawn as Pr}from"node:child_process";import{existsSync as U}from"node:fs";import{cp as Sr,mkdir as F,readFile as So,readdir as Ao,rename as at,rm as it,symlink as Ar,writeFile as ie}from"node:fs/promises";import d from"node:path";import Sn from"node:path";var Ae="default",Rt=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function W(e,t){return Object.prototype.hasOwnProperty.call(e,t)}a(W,"hasOwn");function z(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}a(z,"normalizeHandle");function _(e){if(typeof e!="string")return null;let t=e.trim();return t?t.replace(/\/$/,""):null}a(_,"normalizeBaseUrl");function Bt(e){let t=z(e);if(!t)throw new Error("profile handle must be non-empty");return t}a(Bt,"requireHandle");function An(e){if(typeof e!="string")throw new Error("apiKey must be a non-empty string");let t=e.trim();if(!t)throw new Error("apiKey must be a non-empty string");return t}a(An,"requireApiKey");function de(e,t){let o=z(e),n=z(t);return!!(o&&n&&o.toLowerCase()===n.toLowerCase())}a(de,"handleEquals");function qe(e,t,o){let n=_(o);return e.findIndex(r=>de(r.handle,t)?n?_(r.baseUrl)===n:!0:!1)}a(qe,"findAccountIndex");function ne(e){let t=z(e.handle)??Ae,o=_(e.baseUrl);return o?{handle:t,baseUrl:o}:{handle:t}}a(ne,"selectorFromAccount");function oe(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n=_(typeof t.baseUrl=="string"?t.baseUrl:void 0);return n?{handle:o,baseUrl:n}:{handle:o}}a(oe,"sanitizeActiveProfile");function Fe(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o=typeof t.repoPath=="string"?t.repoPath.trim():"",n=typeof t.profile=="string"&&t.profile.trim()?t.profile.trim():"default";if(!o)return;let r={repoPath:o,profile:n,mode:"local"};if(t.lastCheck&&typeof t.lastCheck=="object"&&!Array.isArray(t.lastCheck)){let s=t.lastCheck,i=s.command,c=s.status,l=s.checkedAt;(i==="inspect"||i==="build"||i==="validate"||i==="eval"||i==="run")&&(c==="passed"||c==="failed")&&typeof l=="string"&&(r.lastCheck={command:i,status:c,checkedAt:l,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(t.lastPush&&typeof t.lastPush=="object"&&!Array.isArray(t.lastPush)){let s=t.lastPush,i=s.status,c=s.pushedAt;(i==="pushed"||i==="failed")&&typeof c=="string"&&(r.lastPush={status:i,pushedAt:c,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},..._t(s.hostedSourceMaterialization)?{hostedSourceMaterialization:_t(s.hostedSourceMaterialization)}:{},...$t(s.hostedSourceCheck)?{hostedSourceCheck:$t(s.hostedSourceCheck)}:{},...Ot(s.hostedPublish)?{hostedPublish:Ot(s.hostedPublish)}:{},...Tt(s.hostedRun)?{hostedRun:Tt(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(t.profiles)){let s=t.profiles.flatMap(i=>{let c=Fe(i);if(!c)return[];let l=i,u=l.source==="github"||l.source==="openpond_git"?l.source:"local",p=typeof l.repositoryId=="string"&&l.repositoryId.trim()?l.repositoryId.trim():Sn.resolve(c.repoPath);return[{source:u,repositoryId:p,repoPath:c.repoPath,profile:c.profile,...c.lastCheck?{lastCheck:c.lastCheck}:{},...c.lastPush?{lastPush:c.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}a(Fe,"sanitizeLocalOpenPondProfile");function _t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runtimeAgentId"),...m(t,"projectId"),...m(t,"sourceRoot"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"manifestSyncedAt"),...Ut(t,"fileCount"),...Ut(t,"totalBytes"),...m(t,"generatedManifestPath"),...He(t,"synthesizedOpenPondYaml"),...m(t,"uploadMetadataPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...m(t,"materializedAt"),...m(t,"error")}:null}a(_t,"sanitizeHostedMaterializationStatus");function $t(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"deployPlanStatus"),...He(t,"canRun"),...He(t,"canDeploy"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...O(t,"setupCommands"),...O(t,"validationCommands"),...O(t,"requiredChecks"),...O(t,"evalNames"),...O(t,"blockedReasons"),...O(t,"staleReasons"),...m(t,"runtimeId"),...m(t,"sandboxId"),...O(t,"traceArtifactRefs"),...O(t,"evalResultArtifactRefs"),...O(t,"validatorArtifactRefs"),...m(t,"checkedAt"),...m(t,"error")}:null}a($t,"sanitizeHostedSourceCheckStatus");function Ot(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"snapshotId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"manifestPath"),...m(t,"buildStatus"),...m(t,"validationStatus"),...m(t,"evalStatus"),...m(t,"publishedAt"),...m(t,"error")}:null}a(Ot,"sanitizeHostedPublishStatus");function Tt(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=xe(t.status);return o?{status:o,...m(t,"agentId"),...m(t,"runId"),...m(t,"runtimeId"),...m(t,"sandboxId"),...m(t,"sourceRef"),...m(t,"sourceCommitSha"),...m(t,"manifestHash"),...m(t,"setupGateStatus"),...O(t,"setupRequirementRefs"),...O(t,"artifactRefs"),...O(t,"traceArtifactRefs"),...O(t,"evalArtifactRefs"),...m(t,"startedAt"),...m(t,"completedAt"),...m(t,"error")}:null}a(Tt,"sanitizeHostedRunSummary");function m(e,t){let o=e[t];return typeof o=="string"||o===null?{[t]:o}:{}}a(m,"nullableStringProp");function He(e,t){let o=e[t];return typeof o=="boolean"||o===null?{[t]:o}:{}}a(He,"nullableBooleanProp");function Ut(e,t){let o=e[t];return typeof o=="number"||o===null?{[t]:o}:{}}a(Ut,"nullableNumberProp");function O(e,t){let o=e[t];if(!Array.isArray(o))return{};let n=o.filter(r=>typeof r=="string");return{[t]:n}}a(O,"stringArrayProp");function xe(e){return typeof e=="string"&&e.trim()?e.trim():null}a(xe,"stringField");function Lt(e,t){if(!de(e.handle,t.handle))return!1;let o=_(t.baseUrl);return o?_(e.baseUrl)===o:!_(e.baseUrl)}a(Lt,"accountMatchesSelector");function Ge(e,t,o={}){let n=_(t.baseUrl);if(n)return qe(e,t.handle,n);let r=e.findIndex(i=>Lt(i,t));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>de(i.handle,t.handle));if(s.length>1&&o.requireUnambiguous)throw new Error(`multiple profiles found for ${t.handle}; pass --base-url to select one`);return s[0]?.index??-1}a(Ge,"findAccountIndexForSelector");function xn(e){if(!e||typeof e!="object"||Array.isArray(e))return;let t=e,o={};return typeof t.token=="string"&&(o.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(o.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(o.conversationId=t.conversationId),Object.keys(o).length>0?o:void 0}a(xn,"sanitizeSession");function kn(e){if(!e||typeof e!="object"||Array.isArray(e))return null;let t=e,o=z(typeof t.handle=="string"?t.handle:void 0);if(!o)return null;let n={handle:o};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl),typeof t.environment=="string"&&(n.environment=t.environment);let r=xn(t.session);return r&&(n.session=r),n}a(kn,"sanitizeAccount");function bn(e){let t={};return typeof e.token=="string"&&(t.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(t.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(t.conversationId=e.conversationId),Object.keys(t).length>0?t:void 0}a(bn,"extractLegacySession");function In(e,t){let o={handle:t};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl);let n=bn(e);return n&&(o.session=n),o}a(In,"extractLegacyAccount");function Nt(e){let t={};typeof e.lspEnabled=="boolean"&&(t.lspEnabled=e.lspEnabled),(e.executionMode==="local"||e.executionMode==="hosted")&&(t.executionMode=e.executionMode),(e.mode==="general"||e.mode==="builder")&&(t.mode=e.mode);let o=Fe(e.openpondProfile);o&&(t.openpondProfile=o);let n=[],r=Array.isArray(e.accounts)?e.accounts:[];for(let l of r){let u=kn(l);u&&qe(n,u.handle,u.baseUrl)===-1&&n.push(u)}if(n.length===0){let l=oe(e.activeProfile)?.handle||Ae;n.push(In(e,l))}let s=oe(e.activeProfile),i=s?Ge(n,s):-1,c=n[i===-1?0:i];return t.accounts=n,t.activeProfile=ne(c),t}a(Nt,"normalizeGlobalConfig");function Cn(e,t,o){let n=e.accounts??[],r=_(o??process.env.OPENPOND_BASE_URL),s=z(t);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let i=z(process.env.OPENPOND_ACCOUNT);if(i)return r?{handle:i,baseUrl:r}:{handle:i};let c=oe(e.activeProfile);return c?r?{handle:c.handle,baseUrl:r}:c:n[0]?ne(n[0]):{handle:Ae}}a(Cn,"resolveRequestedProfile");function jt(e,t,o){let n=_(o);if(n){let s=qe(e,t,n);if(s!==-1)return e[s]}else{let s=e.filter(i=>de(i.handle,t));if(s.length>1)throw new Error(`multiple profiles found for ${t}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:t};return n&&(r.baseUrl=n),e.push(r),r}a(jt,"ensureAccount");function Mt(e){e.session&&Object.keys(e.session).length===0&&delete e.session}a(Mt,"cleanupAccount");function vn(e,t,o,n){let r=o===null||o===void 0&&n.undefinedDeletes;switch(t){case"apiKey":{if(r){delete e.apiKey;return}typeof o=="string"&&(e.apiKey=o);return}case"baseUrl":{if(r){delete e.baseUrl;return}typeof o=="string"&&(e.baseUrl=o);return}case"apiBaseUrl":{if(r){delete e.apiBaseUrl;return}typeof o=="string"&&(e.apiBaseUrl=o);return}case"chatApiBaseUrl":{if(r){delete e.chatApiBaseUrl;return}typeof o=="string"&&(e.chatApiBaseUrl=o);return}case"token":case"appId":case"conversationId":{if(e.session||(e.session={}),r){delete e.session[t],Mt(e);return}(typeof o=="string"||o===null)&&(e.session[t]=o),Mt(e);return}}}a(vn,"applyScopedKey");function En(e,t,o){if(!Rt.some(l=>W(t,l)))return!1;let r=e.accounts??[],s=oe(t.activeProfile)??Cn(e),i=_(W(t,"baseUrl")?t.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),c=jt(r,s.handle,i);for(let l of Rt)W(t,l)&&vn(c,l,t[l],o);return e.accounts=r,e.activeProfile=ne(c),!0}a(En,"applyAccountPatch");function Rn(e,t){if(W(t,"lspEnabled")&&(typeof t.lspEnabled=="boolean"?e.lspEnabled=t.lspEnabled:t.lspEnabled===null&&delete e.lspEnabled),W(t,"executionMode")&&(t.executionMode==="local"||t.executionMode==="hosted"?e.executionMode=t.executionMode:t.executionMode===null&&delete e.executionMode),W(t,"mode")&&(t.mode==="general"||t.mode==="builder"?e.mode=t.mode:t.mode===null&&delete e.mode),W(t,"activeProfile")){let o=oe(t.activeProfile);if(o){let n=Ge(e.accounts??[],o);e.activeProfile=n===-1?o:ne((e.accounts??[])[n])}else t.activeProfile===null&&delete e.activeProfile}if(W(t,"openpondProfile")){let o=Fe(t.openpondProfile);o?e.openpondProfile=o:t.openpondProfile===null&&delete e.openpondProfile}}a(Rn,"applyTopLevelPatch");async function ke(e){let t=L();return await De(t),await vt(t,o=>{let n=Nt(o);return e(n),n})}a(ke,"updateGlobalConfig");async function T(){let e=L();return await De(e),Nt(await Ct(e))}a(T,"loadGlobalConfig");async function ze(){let e=await T(),t=oe(e.activeProfile);return(e.accounts??[]).map(o=>{let n=z(o.handle)??Ae;return{handle:n,baseUrl:_(o.baseUrl),apiBaseUrl:_(o.apiBaseUrl),chatApiBaseUrl:_(o.chatApiBaseUrl),environment:o.environment?.trim()||null,isActive:!!(t&&Lt({...o,handle:n},t)),hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!o.session?.token?.trim(),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null}})}a(ze,"listConfiguredProfiles");async function _n(e,t={}){let o=Bt(e),n=_(t.baseUrl),r=-1;await ke(i=>{let c=i.accounts??[];if(r=Ge(c,n?{handle:o,baseUrl:n}:{handle:o},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${o}`);i.activeProfile=ne(c[r])});let s=await ze();return s.find(i=>i.isActive)??s[r]}a(_n,"setActiveProfile");async function $n(e){let t=Bt(e.handle),o=An(e.apiKey),n=_(e.baseUrl),r=_(e.apiBaseUrl),s=_(e.chatApiBaseUrl),i={handle:t};await ke(u=>{let p=u.accounts??[],h=jt(p,t,n);h.apiKey=o,n&&(h.baseUrl=n),r?h.apiBaseUrl=r:e.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:e.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,e.environment===null?delete h.environment:typeof e.environment=="string"&&e.environment.trim()&&(h.environment=e.environment.trim()),u.accounts=p,i=ne(h),e.setActive!==!1&&(u.activeProfile=i)});let l=(await ze()).find(u=>de(u.handle,i.handle)?n?_(u.baseUrl)===n:!0:!1);if(!l)throw new Error(`failed to save profile: ${t}`);return l}a($n,"saveProfileApiKey");async function H(e){await ke(t=>{Rn(t,e),En(t,e,{undefinedDeletes:!1})})}a(H,"saveGlobalConfig");function Je(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}a(Je,"emptyProfileCatalogState");function Ke(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}a(Ke,"emptyProfileSkillCatalogState");function We(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}a(We,"emptyProfileSetupGate");function be(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}a(be,"emptyProfileDiffSummary");function Ve(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}a(Ve,"emptyProfileSummary");import{existsSync as re}from"node:fs";import{readFile as On,stat as Tn}from"node:fs/promises";import Ie from"node:path";var Dt=".openpond/agent-manifest.json",Ht=".openpond/action-registry.json",Un=".openpond/source-upload-metadata.json",Mn=".openpond/agent-package-origin.json";async function Gt(e){return Jt({agentId:"default",sourcePath:e,preferred:!0})}a(Gt,"loadProfileActionCatalog");async function zt(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!1,error:null},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(c=>c.preferred),...e.filter(c=>!c.preferred)],o=await Promise.all(t.map(Jt)),n=new Map,r=[];for(let c of o)for(let l of c.actionCatalog){let u=n.has(l.id)?`${l.agentId??"agent"}.${l.sourceActionId??l.id}`:l.id,p=u===l.id?l:{...l,id:u};n.set(u,p),r.push(p)}let s=Ln(o.map(c=>c.catalog.generatedAt)),i=o.map(c=>c.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:s,manifestPath:o.find(c=>c.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:o.find(c=>c.catalog.registryPath)?.catalog.registryPath??null,stale:o.some(c=>c.catalog.stale),error:i.length>0?i.join("; "):null},actionCatalog:r,sourceSetupRequirements:o.flatMap(c=>c.sourceSetupRequirements)}}a(zt,"loadProfileActionCatalogForSources");async function Jt(e){let t=e.sourcePath,o=Ie.join(t,Dt),n=Ie.join(t,Ht),r=Ie.join(t,Un),s=Ie.join(t,Mn);try{let i=await Ce(o),c=await Ce(n),l=await Ce(r),u=$(await Ce(s)),p=$($(i)?.inputSchemas),h=Ft($(l)?.setupRequirements)??[],k=Nn(h),C=new Map;for(let f of[...Ye($(i)?.actionCatalog),...Ye($(c)?.actions),...Ye($(i)?.actions)]){let y=b(f.id)??b(f.name);if(!y)continue;let x=C.get(y),v=jn({sourceRequirementsByAction:k,actionId:y,actionName:b(f.name)}),B=Dn(Ft(f.setupRequirements)??x?.setupRequirements??[],v),K={id:y,agentId:e.agentId,sourcePath:t,sourceActionId:y,name:b(f.name)??x?.name??y,label:b(f.label)??x?.label??zn(y),description:b(f.description)??x?.description??null,visibility:b(f.visibility)??x?.visibility??"default",inputSchema:Gn(f.inputSchema,p)??x?.inputSchema??null,outputSchema:Kt(f.outputSchema)??x?.outputSchema??null,approvalPolicy:$(f.approvalPolicy)??x?.approvalPolicy??null,artifactPolicy:$(f.artifactPolicy)??x?.artifactPolicy??null,setupRequirements:B,mcp:$(f.mcp)??x?.mcp??null,schedulePolicy:$(f.schedulePolicy)??x?.schedulePolicy??null,trace:Bn($(f.trace)??x?.trace??null,u),implementation:$(f.implementation)??x?.implementation??null,invokesModel:typeof f.invokesModel=="boolean"?f.invokesModel:x?.invokesModel};C.set(y,K)}let P=Array.from(C.values()).filter(f=>f.visibility!=="internal"&&f.visibility!=="debug"),g=[...i?[]:[Dt],...c?[]:[Ht]],S=await Fn([o,n]);return{catalog:{actionCount:P.length,generatedAt:S,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:g.length>0,error:g.length>0?qn(e,g):null},actionCatalog:P,sourceSetupRequirements:h}}catch(i){return{catalog:{actionCount:0,generatedAt:null,manifestPath:re(o)?o:null,registryPath:re(n)?n:null,stale:!0,error:i instanceof Error?i.message:String(i)},actionCatalog:[],sourceSetupRequirements:[]}}}a(Jt,"loadProfileActionCatalogSource");function Bn(e,t){if(!t)return e;let o=b(t.versionId),n=b(t.digest);return!o||!n?e:{...e??{},agentVersionId:o,agentPackageDigest:n,validationReceiptIds:qt(t.validationReceiptIds),evalReceiptIds:qt(t.evalReceiptIds)}}a(Bn,"mergeAgentPackageTrace");function qt(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(qt,"stringArray");function Ln(e){let t=0;for(let o of e){if(!o)continue;let n=Date.parse(o);Number.isFinite(n)&&(t=Math.max(t,n))}return t>0?new Date(t).toISOString():null}a(Ln,"latestIso");function Nn(e){let t=new Map;for(let o of e){let n=[b(o.actionId),b(o.sourceActionId),b(o.actionName)].filter(r=>!!r);for(let r of n){let s=t.get(r)??[];s.push(o),t.set(r,s)}}return t}a(Nn,"sourceSetupRequirementsByAction");function jn(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(o=>({...o,source:"source_upload_metadata"}))}a(jn,"setupRequirementsForActionSource");function Dn(e,t){if(t.length===0)return e;let o=[],n=new Set;for(let r of[...e,...t]){let s=Hn(r);n.has(s)||(n.add(s),o.push(r))}return o}a(Dn,"mergeSetupRequirements");function Hn(e){return[b(e.actionId)??b(e.sourceActionId)??b(e.actionName)??"",b(e.kind)??b(e.type)??"",b(e.name)??b(e.key)??b(e.provider)??b(e.tool)??b(e.command)??b(e.packageName)??b(e.path)??b(e.repo)??b(e.url)??b(e.id)??""].join(":")}a(Hn,"setupRequirementIdentity");function qn(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}a(qn,"missingSourceArtifactsMessage");async function Ce(e){return re(e)?JSON.parse(await On(e,"utf8")):null}a(Ce,"readJsonIfExists");async function Fn(e){let t=0;for(let o of e){if(!re(o))continue;let n=await Tn(o);t=Math.max(t,n.mtimeMs)}return t>0?new Date(t).toISOString():null}a(Fn,"latestMtime");function $(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a($,"asRecord");function Ye(e){return Array.isArray(e)?e.filter(t=>!!$(t)):[]}a(Ye,"records");function Ft(e){return Array.isArray(e)?e.filter(t=>!!$(t)):null}a(Ft,"recordArray");function b(e){return typeof e=="string"&&e.trim()?e.trim():null}a(b,"text");function Kt(e){return b(e)??$(e)}a(Kt,"schemaValue");function Gn(e,t){let o=Kt(e);return typeof o!="string"?o:$(t?.[o])??o}a(Gn,"resolvedSchemaValue");function zn(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,o=>o.toUpperCase()):e}a(zn,"titleFromActionId");var ve=class extends Error{static{a(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,o){let n=o.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,n.length?`Missing setup: ${n.join(", ")}`:""].filter(Boolean).join(`
3
+ `)),this.name="OpenPondProfileSetupRequiredError",this.details={error:"agent_source_setup_required",actionId:t,setupGate:o,missing:n,blockingSetupRequirements:o.blockingRequirements,setupRequirements:o.requirements}}};function Ee(e){let t=new Map;for(let i of e.sourceSetupRequirements??[]){let c=Kn(i);if(e.actionId&&c&&c!==e.actionId&&E(i.actionName)!==e.actionId&&E(i.sourceActionId)!==e.actionId)continue;let l=Wt({record:i,source:"source_upload_metadata",actionId:c});l&&t.set(l.ref,l)}for(let i of e.actionCatalog)if(!(e.actionId&&i.id!==e.actionId&&i.name!==e.actionId))for(let c of i.setupRequirements??[]){let l=Wt({record:c,source:"action_catalog",actionId:i.id});l&&t.set(l.ref,l)}let o=Array.from(t.values()),n=o.filter(i=>i.blocking),r=o.filter(i=>!i.required&&!Xe(i.status)).length,s=o.filter(i=>Xe(i.status)).length;return{status:Vn(n),requirementCount:o.length,blockingCount:n.length,optionalMissingCount:r,readyCount:s,requirements:o,blockingRequirements:n}}a(Ee,"buildOpenPondProfileSetupGate");function Ze(e,t){if(t.blockingRequirements.length>0)throw new ve(e,t)}a(Ze,"assertOpenPondProfileActionReady");function Jn(e){let t=e.actionId?`${e.actionId}: `:"",o=e.required?"required":"optional";return`${t}${e.label} (${o}, ${e.status})`}a(Jn,"formatOpenPondProfileSetupRequirement");function Wt(e){let t=e.source==="action_catalog"&&E(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,o=E(e.record.kind)??E(e.record.type),n=E(e.record.label)??E(e.record.name)??E(e.record.key)??E(e.record.provider)??E(e.record.tool)??E(e.record.command)??E(e.record.packageName)??E(e.record.path)??E(e.record.repo)??E(e.record.url)??E(e.record.id)??o??"setup requirement",r=e.record.required!==!1,s=Wn(e.record);return{ref:[t,e.actionId??"source",o??"requirement",n].join(":"),source:t,actionId:e.actionId,kind:o,label:n,status:s,required:r,blocking:r&&!Xe(s)}}a(Wt,"setupRequirementFromRecord");function Kn(e){return E(e.actionId)??E(e.sourceActionId)??E(e.actionName)}a(Kn,"setupRequirementActionId");function Wn(e){let t=E(e.status)??E(e.state);return t?t==="satisfied"||t==="connected"||t==="provided"?"ready":t:typeof e.satisfied=="boolean"?e.satisfied?"ready":"setup_required":typeof e.ready=="boolean"&&e.ready?"ready":"setup_required"}a(Wn,"setupStatus");function Vn(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}a(Vn,"gateStatus");function Xe(e){return e==="ready"||e==="disabled"}a(Xe,"isReadyStatus");function E(e){return typeof e=="string"&&e.trim()?e.trim():null}a(E,"text");import{spawn as Yn}from"node:child_process";import{randomUUID as Xn}from"node:crypto";import{existsSync as Qe}from"node:fs";import{readFile as Zn,rm as Qn,writeFile as Xt}from"node:fs/promises";import Re from"node:path";var Zt=["**/node_modules/","**/.bun/","**/.env","**/.env.*","**/.openpond/traces/","**/.openpond/vendor/","**/.openpond/eval-results.json","**/.openpond/artifact-index.json","**/.openpond/source-upload-cache.json",""].join(`
4
+ `);async function Qt(e){if(!Qe(Re.join(e,".git"))){let s=await M(e,["init","-b","main"]);if(s.code!==0)throw new Error(Y("git init",s))}let t=Re.join(e,".gitignore");if(Qe(t)?await er(t):await Xt(t,Zt,"utf8"),await or(e))return;let o=await X(e);if(!o.dirty&&o.files.length===0)return;let n=await M(e,["add","-A"]);if(n.code!==0)throw new Error(Y("git add",n));let r=await M(e,["commit","-m","Initialize OpenPond profile"],{env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}});if(r.code!==0&&!/nothing to commit/i.test(r.stdout+r.stderr))throw new Error(Y("git commit",r))}a(Qt,"ensureProfileGitRepo");async function er(e){let t=await Zn(e,"utf8").catch(()=>""),o=Zt.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(s=>s.trim()===r));if(o.length===0)return;let n=t.endsWith(`
5
5
  `)||t.length===0?"":`
6
6
  `;await Xt(e,`${t}${n}${o.join(`
7
7
  `)}
8
- `,"utf8")}a(er,"ensureProfileGitignoreRules");async function X(e){if(!Qe(Ee.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 M(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[o,n,r,s,i]=await Promise.all([ae(e,["branch","--show-current"]),ae(e,["rev-parse","HEAD"]),M(e,["status","--porcelain=v1","-uall"]),ae(e,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),ae(e,["remote","get-url","origin"])]),c=r.code===0?rr(r.stdout):[],l=s?await nr(e):{ahead:null,behind:null},u=n||null;return{isRepo:!0,branch:o||null,head:u,shortHead:u?u.slice(0,12):null,dirty:c.length>0,upstream:s,ahead:l.ahead,behind:l.behind,remoteUrl:i,files:c,error:r.code===0?null:Y("git status",r)}}a(X,"loadProfileGitState");async function eo(e,t){let o=await X(e);if(!o.isRepo)throw new Error(o.error??"Active OpenPond profile source is not a Git repo.");if(!o.dirty)return{committed:!1,stdout:"",stderr:"",state:o};let n=await M(e,["add","-A"]);if(n.code!==0)throw new Error(Y("git add",n));let r=await M(e,["commit","-m",t]);if(r.code!==0)throw new Error(Y("git commit",r));return{committed:!0,stdout:r.stdout,stderr:r.stderr,state:await X(e)}}a(eo,"commitProfileChanges");async function to(e){return ae(e,["rev-parse","HEAD"])}a(to,"profileGitHead");async function Ca(e){let t=await X(e.repoPath);if(!t.isRepo)throw new Error(t.error??"Active OpenPond profile source is not a Git repo.");let o=e.baseCommit??t.head;if(!o)throw new Error("A Profile benchmark requires an admitted Git commit.");let r=`refs/openpond/benchmarks/${tr(e.runId)}`,s=await ae(e.repoPath,["rev-parse","--verify",r]);if(s)return{ref:r,commit:s,baseCommit:o,paths:e.files.map(u=>Vt(u.path)).sort()};let i=e.files.map(u=>({...u,path:Vt(u.path)})).sort((u,p)=>u.path.localeCompare(p.path));if(!i.length)throw new Error("A Profile benchmark commit requires at least one file.");if(new Set(i.map(u=>u.path)).size!==i.length)throw new Error("A Profile benchmark commit cannot contain duplicate paths.");let c=Ee.join(e.repoPath,".git",`openpond-benchmark-index-${Xn()}`),l={...process.env,GIT_INDEX_FILE:c,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"};try{await se(e.repoPath,["read-tree",o],"git read-tree",{env:l});for(let h of i){let k=await se(e.repoPath,["hash-object","-w","--stdin"],`git hash-object ${h.path}`,{env:l,input:h.contents});await se(e.repoPath,["update-index","--add","--cacheinfo",`100644,${k.stdout.trim()},${h.path}`],`git update-index ${h.path}`,{env:l})}let u=await se(e.repoPath,["write-tree"],"git write-tree",{env:l}),p=await se(e.repoPath,["commit-tree",u.stdout.trim(),"-p",o,"-m",e.message??`Preserve OpenPond benchmark ${e.runId}`],"git commit-tree",{env:l});return await se(e.repoPath,["update-ref",r,p.stdout.trim()],"git update-ref",{env:l}),{ref:r,commit:p.stdout.trim(),baseCommit:o,paths:i.map(h=>h.path)}}finally{await Qn(c,{force:!0}).catch(()=>{})}}a(Ca,"commitProfileBenchmarkRef");function tr(e){let t=e.trim().replace(/[^A-Za-z0-9._-]+/g,"-");if(!t||t==="."||t==="..")throw new Error("Benchmark run id cannot form a safe Git ref.");return t}a(tr,"safeGitSegment");function Vt(e){let t=e.trim().replaceAll("\\","/");if(!t||t.startsWith("/")||t.split("/").some(o=>!o||o==="."||o==="..")||t.includes("\0"))throw new Error(`Unsafe benchmark Git path: ${e}`);return t}a(Vt,"safeGitPath");async function or(e){return(await M(e,["rev-parse","--verify","HEAD"])).code===0}a(or,"hasGitHead");async function nr(e){let t=await M(e,["rev-list","--left-right","--count","@{u}...HEAD"]);if(t.code!==0)return{ahead:null,behind:null};let[o,n]=t.stdout.trim().split(/\s+/),r=o?Number.parseInt(o,10):Number.NaN,s=n?Number.parseInt(n,10):Number.NaN;return{ahead:Number.isFinite(s)?s:null,behind:Number.isFinite(r)?r:null}}a(nr,"loadAheadBehind");async function ae(e,t){let o=await M(e,t);return o.code!==0?null:o.stdout.trim()||null}a(ae,"gitText");function rr(e){return e.split(/\r?\n/).map(t=>t.trimEnd()).filter(Boolean).map(t=>{let o=t[0]??" ",n=t[1]??" ",r=`${o}${n}`.trim()||"changed",s=t.slice(3),i=s.split(" -> "),c=o===" "?null:o,l=n===" "?null:n,u=i.length===2?i[1]:s,p=i.length===2?i[0]:null;return{path:Yt(u),originalPath:p?Yt(p):null,indexStatus:c,worktreeStatus:l,status:r,category:sr(c,l)}})}a(rr,"parsePorcelainStatus");function sr(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"}a(sr,"gitChangeCategory");function Yt(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}a(Yt,"unquoteGitPath");function Y(e,t){return t.stderr.trim()||t.stdout.trim()||`${e} failed with exit code ${t.code??"unknown"}`}a(Y,"gitFailureMessage");async function M(e,t,o={}){return new Promise((n,r)=>{let s=Yn("git",t,{cwd:e,env:o.env,stdio:"pipe"}),i="",c="";s.stdout?.on("data",l=>{i+=String(l)}),s.stderr?.on("data",l=>{c+=String(l)}),s.on("error",r),s.on("close",l=>{n({code:l,stdout:i,stderr:c})}),o.input!==void 0?s.stdin?.end(o.input):s.stdin?.end()})}a(M,"runGitCommand");async function se(e,t,o,n={}){let r=await M(e,t,n);if(r.code!==0)throw new Error(Y(o,r));return r}a(se,"requireGitSuccess");import{stat as lr}from"node:fs/promises";import ot from"node:path";import{createHash as et}from"node:crypto";import{readFile as ar}from"node:fs/promises";import ir from"node:path";var oo=".openpond/source-upload-cache.json",no="openpond.source-upload-cache.v1";async function ro(e){try{let o=(await Ne(L(),"source-upload.v1",io(e)))?.payload;if(!o)return new Map;if(o.schema!==no||!o.entries)return new Map;let n=new Map;for(let[r,s]of Object.entries(o.entries))!cr(s)||r!==tt(s)||n.set(r,s);return n}catch{return new Map}}a(ro,"readSourceUploadCache");async function so(e,t){let o=await ar(e.absolutePath),n=et("sha256").update(o).digest("hex"),r=tt({...e,sha256:n}),s=t.get(r);return s&&s.sha256===n&&et("sha256").update(Buffer.from(s.contentsBase64,"base64")).digest("hex")===n?{file:e,entry:{path:e.path,type:"file",contentsBase64:s.contentsBase64},sha256:s.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:o.toString("base64")},sha256:n}}a(so,"materializeSourceUploadFile");async function ao(e,t){let o={};for(let n of t){let r={path:n.file.path,size:n.file.size,mtimeMs:n.file.mtimeMs,ctimeMs:n.file.ctimeMs,sha256:n.sha256,contentsBase64:n.entry.contentsBase64};o[tt(r)]=r}await je(L(),"source-upload.v1",io(e),{schema:no,generatedAt:new Date().toISOString(),entries:o})}a(ao,"writeSourceUploadCache");function tt(e){return`${e.path}\0${e.sha256}`}a(tt,"cacheKeyForFile");function cr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.path=="string"&&typeof t.size=="number"&&typeof t.mtimeMs=="number"&&typeof t.ctimeMs=="number"&&typeof t.sha256=="string"&&typeof t.contentsBase64=="string"}a(cr,"isCacheEntry");function io(e){return et("sha256").update(ir.resolve(e)).digest("hex")}a(io,"sourceScope");var nt=1500,uo=8*1024*1024,rt=100*1024*1024,st=8,ur={maxFiles:nt,maxFileBytes:uo,maxTotalBytes:rt,concurrency:st},dr={mode:"single_json_payload",chunkingSupported:!1};async function fr(e){let t=await M(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 o=t.stdout.split("\0").map(l=>l.trim()).filter(Boolean).filter(l=>{let u=l.replace(/\\/g,"/");return lo(u)&&!pr(u)}).sort();if(o.length===0)throw new Error("No committed profile source files found to upload.");if(o.length>nt)throw new Error(`Too many profile source files to upload: ${o.length} > ${nt}`);let n=(await co(o,st,async l=>{let u=ot.resolve(e,l),p=ot.relative(e,u).replace(/\\/g,"/");if(!lo(p))throw new Error(`Profile source path escapes repo: ${l}`);let h=await lr(u);if(!h.isFile())return null;if(h.size>uo)throw new Error(`Profile source file is too large: ${l} (${h.size} bytes)`);return{path:p,absolutePath:u,size:h.size,mtimeMs:Math.trunc(h.mtimeMs),ctimeMs:Math.trunc(h.ctimeMs)}})).filter(l=>l!==null),r=0;for(let l of n)if(r+=l.size,r>rt)throw new Error(`Profile source upload is too large: ${r} > ${rt}`);let s=await ro(e),i=await co(n,st,async l=>so(l,s));await ao(e,i).catch(()=>{});let c=i.map(l=>l.entry);return{entries:c,fileCount:c.length,totalBytes:r,limits:ur,transport:dr}}a(fr,"collectProfileSourceUploadEntries");async function co(e,t,o){let n=new Array(e.length),r=0,s=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:s},async()=>{for(;r<e.length;){let i=r;r+=1,n[i]=await o(e[i],i)}})),n}a(co,"mapWithConcurrency");function lo(e){return e.length>0&&!e.includes("\0")&&!ot.isAbsolute(e)&&!e.split(/[\\/]+/).some(t=>!t||t==="."||t==="..")}a(lo,"isSafeProfileSourcePath");function pr(e){return e.split(/[\\/]+/).some((t,o,n)=>{let r=t.toLowerCase();if(r===".git"||r==="node_modules"||r===".bun"||r===".env"||r.startsWith(".env.")||e.replace(/\\/g,"/")===oo)return!0;if(r!==".openpond")return!1;let s=n[o+1]?.toLowerCase();return s==="goals"||s==="traces"||s==="vendor"||s==="eval-results.json"||s==="artifact-index.json"})}a(pr,"shouldSkipProfileSourcePath");function hr(e){let t=R(e.checkResult),o=R(t?.deployPlan)??R(e.deployPlan),n=R(o?.source),r=R(o?.checks),s=R(t?.sourceCheckStatus);return{status:e.status,agentId:e.agentId,deployPlanStatus:w(o?.status),canRun:fo(o?.canRun),canDeploy:fo(o?.canDeploy),sourceRef:w(n?.sourceRef),sourceCommitSha:w(n?.sourceCommitSha),manifestHash:w(n?.manifestHash),manifestPath:w(n?.manifestPath),setupCommands:N(r?.setupCommands),validationCommands:N(r?.validationCommands),requiredChecks:N(r?.requiredChecks),evalNames:N(r?.evalNames),blockedReasons:N(o?.blockedReasons),staleReasons:N(o?.staleReasons),runtimeId:w(s?.latestRuntimeId),sandboxId:w(s?.latestSandboxId),traceArtifactRefs:N(s?.traceArtifactRefs),evalResultArtifactRefs:N(s?.evalResultArtifactRefs),validatorArtifactRefs:N(s?.validatorArtifactRefs),checkedAt:e.checkedAt??new Date().toISOString(),error:e.error??null}}a(hr,"hostedSourceCheckStatusFromPayload");function mr(e){let t=R(e.publishResult),o=R(t?.activeManifestSnapshot)??R(t?.manifestSnapshot)??R(t?.snapshot);return{status:e.status??"published",agentId:e.agentId,snapshotId:w(o?.id),sourceRef:w(o?.sourceRef),sourceCommitSha:w(o?.sourceCommitSha),manifestHash:w(o?.manifestHash),manifestPath:w(o?.manifestPath),buildStatus:w(o?.buildStatus),validationStatus:w(o?.validationStatus),evalStatus:w(o?.evalStatus),publishedAt:w(t?.publishedAt)??w(o?.publishedAt),error:e.error??null}}a(mr,"hostedPublishStatusFromPayload");function gr(e){let t=R(e.runResult),o=R(t?.run),n=R(o?.runtimeSource),r=R(o?.metadata),s=R(r?.sourceSummary),i=R(r?.setupGate),c=R(r?.responseSummary),l=R(r?.traceSummary),u=R(r?.evalSummary);return{status:w(o?.status)??(e.error?"failed":"running"),agentId:w(o?.agentId)??e.agentId,runId:w(o?.id),runtimeId:w(o?.runtimeId),sandboxId:w(o?.sandboxId),sourceRef:w(n?.sourceRef)??w(s?.sourceRef)??w(r?.sourceRef),sourceCommitSha:w(n?.sourceCommitSha)??w(s?.sourceCommitSha)??w(r?.hostedHead),manifestHash:w(n?.manifestHash)??w(s?.manifestHash),setupGateStatus:w(i?.status),setupRequirementRefs:wr(i),artifactRefs:N(c?.artifactRefs),traceArtifactRefs:N(l?.artifactRefs),evalArtifactRefs:N(u?.artifactRefs),startedAt:w(o?.createdAt),completedAt:w(o?.completedAt),error:e.error??null}}a(gr,"hostedRunSummaryFromPayload");function yr(e){return e?.status?e.status==="succeeded"||e.status==="passed"?"passed":e.status==="failed"||e.status==="cancelled"?"failed":"running":"not_started"}a(yr,"hostedRunStatusFromRunSummary");function wr(e){return e?(Array.isArray(e.requirements)?e.requirements:Array.isArray(e.blockingRequirements)?e.blockingRequirements:[]).map(o=>{let n=R(o);return w(n?.ref)??w(n?.id)??w(n?.label)}).filter(o=>!!o):[]}a(wr,"setupRequirementRefs");function R(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a(R,"record");function w(e){return typeof e=="string"&&e.trim()?e.trim():null}a(w,"text");function fo(e){return typeof e=="boolean"?e:null}a(fo,"booleanValue");function N(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(N,"textArray");var Z="openpond-profile.json",xr="settings/profile.yaml",xo="default",G="default";function kr(e,t){let o=e?.defaultAgent??G,n=e?.enabledAgents&&e.enabledAgents.length>0?e.enabledAgents:[o];return{...e??{},path:t,defaultAgent:o,enabledAgents:n}}a(kr,"mergeProfileRepoManifestEntry");function _e(e,t,o){let n=D(e);if(e){let c=n.findIndex(u=>d.resolve(u.repoPath)===d.resolve(e.repoPath)&&u.profile===e.profile),l={source:n[c]?.source??"local",repositoryId:n[c]?.repositoryId??d.resolve(e.repoPath),repoPath:d.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}};c>=0?n[c]=l:n.push(l)}let r=n.findIndex(c=>d.resolve(c.repoPath)===d.resolve(t)&&c.profile===o),s=r>=0?n[r]:{source:"local",repositoryId:d.resolve(t),repoPath:d.resolve(t),profile:o};return r<0&&n.push(s),{repoPath:d.resolve(t),profile:o,mode:"local",profiles:n,...s.lastCheck?{lastCheck:s.lastCheck}:{},...s.lastPush?{lastPush:s.lastPush}:{}}}a(_e,"mergeActiveLocalProfileConfig");function D(e){if(!e)return[];let t=e.profiles?.map(o=>({...o}))??[];return t.some(o=>d.resolve(o.repoPath)===d.resolve(e.repoPath)&&o.profile===e.profile)||t.push({source:"local",repositoryId:d.resolve(e.repoPath),repoPath:d.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}}),t}a(D,"profileConfigEntries");var br=Po(import.meta.url);function Ir(){return d.join(L(),"library","profiles","default-repo")}a(Ir,"defaultLocalProfileRepoPath");function ko(e=null){return{mode:"none",repoPath:null,activeProfile:null,sourcePath:null,manifestPath:null,agents:[],skills:[],evals:[],git:null,catalog:Je(e),skillCatalog:Ke(e),actionCatalog:[],sourceSetupRequirements:[],setupGate:We(),diff:ke(),hosted:null,summary:Ve(e),lastCheck:null,error:e}}a(ko,"emptyProfileState");async function ni(e={}){let t=d.resolve(e.repoPath??Ir()),o=dt(e.profile),n=d.join("profiles",o),r=d.join(t,n),s=e.template??"blank-agent",i=s==="blank-profile";await F(t,{recursive:!0});let c=U(d.join(t,Z)),l=await Q(t).catch(()=>Dr(o,n));if(i&&c&&l.profiles[o])throw new Error(`Profile "${o}" already exists in ${t}.`);l.defaultProfile=l.defaultProfile||o,l.profiles[o]=kr(l.profiles[o],n),i&&(l.profiles[o].enabledAgents=[]),i?await F(r,{recursive:!0}):await Rr(r,s,!!e.force),await Co(r),await _r(t,r,o,{includeDefaultAgent:!i}),await Re(t,l),await Qt(t);let u=(await T()).openpondProfile;return await H({openpondProfile:_e(u,t,o)}),J()}a(ni,"initLocalProfileRepo");async function ri(e,t,o){let n=d.resolve(e),r=await Q(n),s=dt(t??r.defaultProfile);ft(r,n,s);let i=(await T()).openpondProfile,c=_e(i,n,s);return bo(c,n,s,o),await H({openpondProfile:c}),J()}a(ri,"loadLocalProfileRepo");async function si(e,t,o){let n=d.resolve(e),r=await Q(n),s=dt(t??r.defaultProfile);ft(r,n,s);let i=(await T()).openpondProfile,c=_e(i,n,s);return bo(c,n,s,o),i&&(c.repoPath=i.repoPath,c.profile=i.profile,c.lastCheck=i.lastCheck,c.lastPush=i.lastPush),await H({openpondProfile:c}),vr(ct({repoPath:n,profile:s,source:o?.source,repositoryId:o?.repositoryId}))}a(si,"registerLocalProfileRepo");function bo(e,t,o,n){n&&(e.profiles=D(e).map(r=>d.resolve(r.repoPath)===t&&r.profile===o?{...r,source:n.source,repositoryId:n.repositoryId}:r))}a(bo,"applyProfileIdentity");async function ai(e,t){let o=e.trim(),n=jr(t);if(!o)throw new Error("Agent ID is required.");let s=(await T()).openpondProfile;if(!s)throw new Error("No active local Profile.");let i=await Q(s.repoPath),c=i.profiles[s.profile];if(!c)throw new Error(`Profile "${s.profile}" was not found.`);let l=c.defaultAgent??G;if(!(c.enabledAgents??[l]).includes(o))throw new Error(`Agent "${o}" was not found in Profile "${s.profile}".`);let p={...c.agentNames??{}};return n===o?delete p[o]:p[o]=n,Object.keys(p).length?c.agentNames=p:delete c.agentNames,await Re(s.repoPath,i),J()}a(ai,"renameActiveProfileAgent");async function ii(e){let t=e.agentPackage;if(Hr(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 o=await Oe(),n=o.state.sourcePath;await Co(n);let r=d.join(n,"agents");await F(r,{recursive:!0});let s=d.join(r,t.agentId),i=U(s);if(i&&e.overwrite!==!0)throw new Error(`Agent "${t.agentId}" already exists. Confirm replacement to install this version.`);let c=d.join(r,`.${t.agentId}.${ho()}.installing`),l=d.join(r,`.${t.agentId}.${ho()}.backup`),u=await Q(o.config.repoPath),p=JSON.stringify(u),h=!1,k=!1;try{await qr(c,t),i&&(await at(s,l),h=!0),await at(c,s),k=!0;let C=u.profiles[o.config.profile];if(!C)throw new Error(`Profile "${o.config.profile}" was not found.`);let P=new Set(C.enabledAgents??[]);P.add(t.agentId),C.enabledAgents=[...P],C.defaultAgent||(C.defaultAgent=t.agentId),C.agentNames={...C.agentNames??{},[t.agentId]:t.title},await Re(o.config.repoPath,u),h&&await it(l,{recursive:!0,force:!0})}catch(C){throw await it(c,{recursive:!0,force:!0}),k&&await it(s,{recursive:!0,force:!0}),h&&U(l)&&await at(l,s),JSON.stringify(u)!==p&&await Re(o.config.repoPath,JSON.parse(p)).catch(()=>{}),C}return{state:await J(),agentId:t.agentId,versionId:t.versionId,digest:t.digest}}a(ii,"installAgentPackageIntoActiveProfile");async function J(){let t=(await T()).openpondProfile;return t?$e(t):ko()}a(J,"loadOpenPondProfileState");function ct(e){return{source:e.source??"local",repositoryId:e.repositoryId?.trim()||d.resolve(e.repoPath),profileId:e.profile}}a(ct,"openPondProfileRef");async function Cr(){let e=(await T()).openpondProfile;if(!e)return{lastUsed:null,profiles:[]};let t=D(e),o=await Promise.all(t.map(async n=>{let r=await $e({repoPath:n.repoPath,profile:n.profile,mode:"local",...n.lastCheck?{lastCheck:n.lastCheck}:{},...n.lastPush?{lastPush:n.lastPush}:{}});return{ref:ct(n),name:n.profile,repoPath:n.repoPath,sourcePath:r.sourcePath,state:r}}));return{lastUsed:ct({repoPath:e.repoPath,profile:e.profile,source:D(e).find(n=>d.resolve(n.repoPath)===d.resolve(e.repoPath)&&n.profile===e.profile)?.source,repositoryId:D(e).find(n=>d.resolve(n.repoPath)===d.resolve(e.repoPath)&&n.profile===e.profile)?.repositoryId}),profiles:o}}a(Cr,"loadOpenPondProfileLibrary");async function vr(e){if(!e)return J();let t=(await T()).openpondProfile,o=D(t).find(n=>n.source===e.source&&n.repositoryId===e.repositoryId&&n.profile===e.profileId);return o?$e({repoPath:o.repoPath,profile:o.profile,mode:"local",...o.lastCheck?{lastCheck:o.lastCheck}:{},...o.lastPush?{lastPush:o.lastPush}:{}}):ko(`Profile "${e.profileId}" is not installed on this device.`)}a(vr,"loadOpenPondProfileStateForRef");async function ci(e){let t=(await T()).openpondProfile,o=D(t).find(n=>n.source===e.source&&n.repositoryId===e.repositoryId&&n.profile===e.profileId);if(!o)throw new Error(`Profile "${e.profileId}" is not installed on this device.`);return await H({openpondProfile:_e(t,o.repoPath,o.profile)}),J()}a(ci,"selectOpenPondProfile");async function li(e){let t=(await T()).openpondProfile;if(!t)return{lastUsed:null,profiles:[]};let o=D(t).filter(s=>s.source!==e.source||s.repositoryId!==e.repositoryId||s.profile!==e.profileId);if(o.length===0)return await H({openpondProfile:null}),{lastUsed:null,profiles:[]};let r=d.resolve(t.repoPath)===d.resolve(D(t).find(s=>s.source===e.source&&s.repositoryId===e.repositoryId&&s.profile===e.profileId)?.repoPath??"")&&t.profile===e.profileId?o[0]:o.find(s=>d.resolve(s.repoPath)===d.resolve(t.repoPath)&&s.profile===t.profile)??o[0];return await H({openpondProfile:{repoPath:r.repoPath,profile:r.profile,mode:"local",profiles:o,...r.lastCheck?{lastCheck:r.lastCheck}:{},...r.lastPush?{lastPush:r.lastPush}:{}}}),Cr()}a(li,"removeOpenPondProfile");async function $e(e){try{let t=await Q(e.repoPath),o=ft(t,e.repoPath,e.profile),n=await Or(t,e.profile),r=Eo({manifest:t,profile:e.profile,profileSourcePath:o,agents:n}),[s,i,c,l]=await Promise.all([X(e.repoPath),zt(r),Et(o),Tr(o,r)]),u=go(e),p=Lr(s,e.profile),h=ve({actionCatalog:i.actionCatalog,sourceSetupRequirements:i.sourceSetupRequirements}),k=Ur({agents:n,actionCatalog:i.actionCatalog,catalog:i.catalog,diff:p,git:s,hosted:u,lastCheck:e.lastCheck??null,error:null});return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:o,manifestPath:d.join(e.repoPath,Z),agents:n,skills:c.skills,evals:l,git:s,catalog:i.catalog,skillCatalog:c.skillCatalog,actionCatalog:i.actionCatalog,sourceSetupRequirements:i.sourceSetupRequirements,setupGate:h,diff:p,hosted:u,summary:k,lastCheck:e.lastCheck??null,error:null}}catch(t){let o=await X(e.repoPath).catch(()=>null),n=t instanceof Error?t.message:String(t);return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:null,manifestPath:d.join(e.repoPath,Z),agents:[],skills:[],evals:[],git:o,catalog:Je(n),skillCatalog:Ke(n),actionCatalog:[],sourceSetupRequirements:[],setupGate:We(),diff:ke(),hosted:go(e),summary:Ve(n),lastCheck:e.lastCheck??null,error:n}}}a($e,"loadOpenPondProfileStateForConfig");async function ui(e){return $e({repoPath:d.resolve(e.repoPath),profile:e.profileId,mode:"local"})}a(ui,"loadOpenPondProfileStateFromSource");async function Oe(){let e=(await T()).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}}a(Oe,"requireActiveLocalProfile");async function di(e){let t=await Oe(),o=e.command==="run"?e.args??[]:[],n=e.command==="run"?t.state.actionCatalog.find(c=>c.id===o[0]):null,r=d.resolve(e.cwd??n?.sourcePath??t.state.sourcePath),s=e.command==="run"?mo(r,e.args??[],n?.sourceActionId??null):null;if(e.command==="run"&&s){let c=s[0],l=d.resolve(t.state.sourcePath)===r?{actionCatalog:t.state.actionCatalog,sourceSetupRequirements:t.state.sourceSetupRequirements}:await Gt(r);Ze(c,ve({actionCatalog:l.actionCatalog,sourceSetupRequirements:l.sourceSetupRequirements,actionId:c}))}let i=await Io({command:e.command,args:e.command==="run"?s??mo(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 ut(e.command,i.code),i.code!==0){let c=i.stderr.trim()||i.stdout.trim();throw new Error(c||`${e.command} failed with exit code ${i.code??"unknown"}`)}return i}a(di,"runProfileSdkCommand");async function Io(e){let t=d.resolve(e.cwd),o=Gr(),n=e.command==="run"?[...o.args,e.command,...e.args??[]]:[...o.args,e.command,"--cwd",t,...e.args??[]],r=await Oo(o.command,n,{cwd:t,inherit:e.inherit,timeoutMs:e.timeoutMs,maxOutputBytes:e.maxOutputBytes});if(e.throwOnFailure!==!1&&r.code!==0){let s=To(r,e.command);throw new Error(s||`${e.command} failed with exit code ${r.code??"unknown"}`)}return r}a(Io,"runAgentSdkProjectCommand");function mo(e,t,o=null){let[n,...r]=t;if(!n||n.startsWith("--"))throw new Error("run requires an action name");return[o??n,"--cwd",e,...r]}a(mo,"runCommandArgs");async function fi(e){let t=!e||e==="all"?["inspect","build","validate","eval"]:[e],o=await Oe(),n=await Q(o.config.repoPath),r=Eo({manifest:n,profile:o.config.profile,profileSourcePath:o.state.sourcePath,agents:o.state.agents});if(r.length===0){if(t.some(s=>s!=="inspect"&&s!=="build"&&s!=="validate"&&s!=="eval"))throw new Error("check kind must be one of inspect, build, validate, eval, all");await ut("validate",0);return}for(let s of t){if(s!=="inspect"&&s!=="build"&&s!=="validate"&&s!=="eval")throw new Error("check kind must be one of inspect, build, validate, eval, all");for(let i of r)await Er({command:s,source:i,profileSourcePath:o.state.sourcePath,sourceCount:r.length})}}a(fi,"runProfileCheck");async function Er(e){let t=e.command==="inspect"||e.command==="validate"||e.command==="eval"?["--json"]:[];if(e.sourceCount>1){let n=d.relative(e.profileSourcePath,e.source.sourcePath)||".";console.log(`
8
+ `,"utf8")}a(er,"ensureProfileGitignoreRules");async function X(e){if(!Qe(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 M(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[o,n,r,s,i]=await Promise.all([ae(e,["branch","--show-current"]),ae(e,["rev-parse","HEAD"]),M(e,["status","--porcelain=v1","-uall"]),ae(e,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),ae(e,["remote","get-url","origin"])]),c=r.code===0?rr(r.stdout):[],l=s?await nr(e):{ahead:null,behind:null},u=n||null;return{isRepo:!0,branch:o||null,head:u,shortHead:u?u.slice(0,12):null,dirty:c.length>0,upstream:s,ahead:l.ahead,behind:l.behind,remoteUrl:i,files:c,error:r.code===0?null:Y("git status",r)}}a(X,"loadProfileGitState");async function eo(e,t){let o=await X(e);if(!o.isRepo)throw new Error(o.error??"Active OpenPond profile source is not a Git repo.");if(!o.dirty)return{committed:!1,stdout:"",stderr:"",state:o};let n=await M(e,["add","-A"]);if(n.code!==0)throw new Error(Y("git add",n));let r=await M(e,["commit","-m",t]);if(r.code!==0)throw new Error(Y("git commit",r));return{committed:!0,stdout:r.stdout,stderr:r.stderr,state:await X(e)}}a(eo,"commitProfileChanges");async function to(e){return ae(e,["rev-parse","HEAD"])}a(to,"profileGitHead");async function Ca(e){let t=await X(e.repoPath);if(!t.isRepo)throw new Error(t.error??"Active OpenPond profile source is not a Git repo.");let o=e.baseCommit??t.head;if(!o)throw new Error("A Profile benchmark requires an admitted Git commit.");let r=`refs/openpond/benchmarks/${tr(e.runId)}`,s=await ae(e.repoPath,["rev-parse","--verify",r]);if(s)return{ref:r,commit:s,baseCommit:o,paths:e.files.map(u=>Vt(u.path)).sort()};let i=e.files.map(u=>({...u,path:Vt(u.path)})).sort((u,p)=>u.path.localeCompare(p.path));if(!i.length)throw new Error("A Profile benchmark commit requires at least one file.");if(new Set(i.map(u=>u.path)).size!==i.length)throw new Error("A Profile benchmark commit cannot contain duplicate paths.");let c=Re.join(e.repoPath,".git",`openpond-benchmark-index-${Xn()}`),l={...process.env,GIT_INDEX_FILE:c,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"};try{await se(e.repoPath,["read-tree",o],"git read-tree",{env:l});for(let h of i){let k=await se(e.repoPath,["hash-object","-w","--stdin"],`git hash-object ${h.path}`,{env:l,input:h.contents});await se(e.repoPath,["update-index","--add","--cacheinfo",`100644,${k.stdout.trim()},${h.path}`],`git update-index ${h.path}`,{env:l})}let u=await se(e.repoPath,["write-tree"],"git write-tree",{env:l}),p=await se(e.repoPath,["commit-tree",u.stdout.trim(),"-p",o,"-m",e.message??`Preserve OpenPond benchmark ${e.runId}`],"git commit-tree",{env:l});return await se(e.repoPath,["update-ref",r,p.stdout.trim()],"git update-ref",{env:l}),{ref:r,commit:p.stdout.trim(),baseCommit:o,paths:i.map(h=>h.path)}}finally{await Qn(c,{force:!0}).catch(()=>{})}}a(Ca,"commitProfileBenchmarkRef");function tr(e){let t=e.trim().replace(/[^A-Za-z0-9._-]+/g,"-");if(!t||t==="."||t==="..")throw new Error("Benchmark run id cannot form a safe Git ref.");return t}a(tr,"safeGitSegment");function Vt(e){let t=e.trim().replaceAll("\\","/");if(!t||t.startsWith("/")||t.split("/").some(o=>!o||o==="."||o==="..")||t.includes("\0"))throw new Error(`Unsafe benchmark Git path: ${e}`);return t}a(Vt,"safeGitPath");async function or(e){return(await M(e,["rev-parse","--verify","HEAD"])).code===0}a(or,"hasGitHead");async function nr(e){let t=await M(e,["rev-list","--left-right","--count","@{u}...HEAD"]);if(t.code!==0)return{ahead:null,behind:null};let[o,n]=t.stdout.trim().split(/\s+/),r=o?Number.parseInt(o,10):Number.NaN,s=n?Number.parseInt(n,10):Number.NaN;return{ahead:Number.isFinite(s)?s:null,behind:Number.isFinite(r)?r:null}}a(nr,"loadAheadBehind");async function ae(e,t){let o=await M(e,t);return o.code!==0?null:o.stdout.trim()||null}a(ae,"gitText");function rr(e){return e.split(/\r?\n/).map(t=>t.trimEnd()).filter(Boolean).map(t=>{let o=t[0]??" ",n=t[1]??" ",r=`${o}${n}`.trim()||"changed",s=t.slice(3),i=s.split(" -> "),c=o===" "?null:o,l=n===" "?null:n,u=i.length===2?i[1]:s,p=i.length===2?i[0]:null;return{path:Yt(u),originalPath:p?Yt(p):null,indexStatus:c,worktreeStatus:l,status:r,category:sr(c,l)}})}a(rr,"parsePorcelainStatus");function sr(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"}a(sr,"gitChangeCategory");function Yt(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}a(Yt,"unquoteGitPath");function Y(e,t){return t.stderr.trim()||t.stdout.trim()||`${e} failed with exit code ${t.code??"unknown"}`}a(Y,"gitFailureMessage");async function M(e,t,o={}){return new Promise((n,r)=>{let s=Yn("git",t,{cwd:e,env:o.env,stdio:"pipe"}),i="",c="";s.stdout?.on("data",l=>{i+=String(l)}),s.stderr?.on("data",l=>{c+=String(l)}),s.on("error",r),s.on("close",l=>{n({code:l,stdout:i,stderr:c})}),o.input!==void 0?s.stdin?.end(o.input):s.stdin?.end()})}a(M,"runGitCommand");async function se(e,t,o,n={}){let r=await M(e,t,n);if(r.code!==0)throw new Error(Y(o,r));return r}a(se,"requireGitSuccess");import{stat as lr}from"node:fs/promises";import ot from"node:path";import{createHash as et}from"node:crypto";import{readFile as ar}from"node:fs/promises";import ir from"node:path";var oo=".openpond/source-upload-cache.json",no="openpond.source-upload-cache.v1";async function ro(e){try{let o=(await Ne(L(),"source-upload.v1",io(e)))?.payload;if(!o)return new Map;if(o.schema!==no||!o.entries)return new Map;let n=new Map;for(let[r,s]of Object.entries(o.entries))!cr(s)||r!==tt(s)||n.set(r,s);return n}catch{return new Map}}a(ro,"readSourceUploadCache");async function so(e,t){let o=await ar(e.absolutePath),n=et("sha256").update(o).digest("hex"),r=tt({...e,sha256:n}),s=t.get(r);return s&&s.sha256===n&&et("sha256").update(Buffer.from(s.contentsBase64,"base64")).digest("hex")===n?{file:e,entry:{path:e.path,type:"file",contentsBase64:s.contentsBase64},sha256:s.sha256}:{file:e,entry:{path:e.path,type:"file",contentsBase64:o.toString("base64")},sha256:n}}a(so,"materializeSourceUploadFile");async function ao(e,t){let o={};for(let n of t){let r={path:n.file.path,size:n.file.size,mtimeMs:n.file.mtimeMs,ctimeMs:n.file.ctimeMs,sha256:n.sha256,contentsBase64:n.entry.contentsBase64};o[tt(r)]=r}await je(L(),"source-upload.v1",io(e),{schema:no,generatedAt:new Date().toISOString(),entries:o})}a(ao,"writeSourceUploadCache");function tt(e){return`${e.path}\0${e.sha256}`}a(tt,"cacheKeyForFile");function cr(e){if(!e||typeof e!="object"||Array.isArray(e))return!1;let t=e;return typeof t.path=="string"&&typeof t.size=="number"&&typeof t.mtimeMs=="number"&&typeof t.ctimeMs=="number"&&typeof t.sha256=="string"&&typeof t.contentsBase64=="string"}a(cr,"isCacheEntry");function io(e){return et("sha256").update(ir.resolve(e)).digest("hex")}a(io,"sourceScope");var nt=1500,uo=8*1024*1024,rt=100*1024*1024,st=8,ur={maxFiles:nt,maxFileBytes:uo,maxTotalBytes:rt,concurrency:st},dr={mode:"single_json_payload",chunkingSupported:!1};async function fr(e){let t=await M(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 o=t.stdout.split("\0").map(l=>l.trim()).filter(Boolean).filter(l=>{let u=l.replace(/\\/g,"/");return lo(u)&&!pr(u)}).sort();if(o.length===0)throw new Error("No committed profile source files found to upload.");if(o.length>nt)throw new Error(`Too many profile source files to upload: ${o.length} > ${nt}`);let n=(await co(o,st,async l=>{let u=ot.resolve(e,l),p=ot.relative(e,u).replace(/\\/g,"/");if(!lo(p))throw new Error(`Profile source path escapes repo: ${l}`);let h=await lr(u);if(!h.isFile())return null;if(h.size>uo)throw new Error(`Profile source file is too large: ${l} (${h.size} bytes)`);return{path:p,absolutePath:u,size:h.size,mtimeMs:Math.trunc(h.mtimeMs),ctimeMs:Math.trunc(h.ctimeMs)}})).filter(l=>l!==null),r=0;for(let l of n)if(r+=l.size,r>rt)throw new Error(`Profile source upload is too large: ${r} > ${rt}`);let s=await ro(e),i=await co(n,st,async l=>so(l,s));await ao(e,i).catch(()=>{});let c=i.map(l=>l.entry);return{entries:c,fileCount:c.length,totalBytes:r,limits:ur,transport:dr}}a(fr,"collectProfileSourceUploadEntries");async function co(e,t,o){let n=new Array(e.length),r=0,s=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:s},async()=>{for(;r<e.length;){let i=r;r+=1,n[i]=await o(e[i],i)}})),n}a(co,"mapWithConcurrency");function lo(e){return e.length>0&&!e.includes("\0")&&!ot.isAbsolute(e)&&!e.split(/[\\/]+/).some(t=>!t||t==="."||t==="..")}a(lo,"isSafeProfileSourcePath");function pr(e){return e.split(/[\\/]+/).some((t,o,n)=>{let r=t.toLowerCase();if(r===".git"||r==="node_modules"||r===".bun"||r===".env"||r.startsWith(".env.")||e.replace(/\\/g,"/")===oo)return!0;if(r!==".openpond")return!1;let s=n[o+1]?.toLowerCase();return s==="goals"||s==="traces"||s==="vendor"||s==="eval-results.json"||s==="artifact-index.json"})}a(pr,"shouldSkipProfileSourcePath");function hr(e){let t=R(e.checkResult),o=R(t?.deployPlan)??R(e.deployPlan),n=R(o?.source),r=R(o?.checks),s=R(t?.sourceCheckStatus);return{status:e.status,agentId:e.agentId,deployPlanStatus:w(o?.status),canRun:fo(o?.canRun),canDeploy:fo(o?.canDeploy),sourceRef:w(n?.sourceRef),sourceCommitSha:w(n?.sourceCommitSha),manifestHash:w(n?.manifestHash),manifestPath:w(n?.manifestPath),setupCommands:N(r?.setupCommands),validationCommands:N(r?.validationCommands),requiredChecks:N(r?.requiredChecks),evalNames:N(r?.evalNames),blockedReasons:N(o?.blockedReasons),staleReasons:N(o?.staleReasons),runtimeId:w(s?.latestRuntimeId),sandboxId:w(s?.latestSandboxId),traceArtifactRefs:N(s?.traceArtifactRefs),evalResultArtifactRefs:N(s?.evalResultArtifactRefs),validatorArtifactRefs:N(s?.validatorArtifactRefs),checkedAt:e.checkedAt??new Date().toISOString(),error:e.error??null}}a(hr,"hostedSourceCheckStatusFromPayload");function mr(e){let t=R(e.publishResult),o=R(t?.activeManifestSnapshot)??R(t?.manifestSnapshot)??R(t?.snapshot);return{status:e.status??"published",agentId:e.agentId,snapshotId:w(o?.id),sourceRef:w(o?.sourceRef),sourceCommitSha:w(o?.sourceCommitSha),manifestHash:w(o?.manifestHash),manifestPath:w(o?.manifestPath),buildStatus:w(o?.buildStatus),validationStatus:w(o?.validationStatus),evalStatus:w(o?.evalStatus),publishedAt:w(t?.publishedAt)??w(o?.publishedAt),error:e.error??null}}a(mr,"hostedPublishStatusFromPayload");function gr(e){let t=R(e.runResult),o=R(t?.run),n=R(o?.runtimeSource),r=R(o?.metadata),s=R(r?.sourceSummary),i=R(r?.setupGate),c=R(r?.responseSummary),l=R(r?.traceSummary),u=R(r?.evalSummary);return{status:w(o?.status)??(e.error?"failed":"running"),agentId:w(o?.agentId)??e.agentId,runId:w(o?.id),runtimeId:w(o?.runtimeId),sandboxId:w(o?.sandboxId),sourceRef:w(n?.sourceRef)??w(s?.sourceRef)??w(r?.sourceRef),sourceCommitSha:w(n?.sourceCommitSha)??w(s?.sourceCommitSha)??w(r?.hostedHead),manifestHash:w(n?.manifestHash)??w(s?.manifestHash),setupGateStatus:w(i?.status),setupRequirementRefs:wr(i),artifactRefs:N(c?.artifactRefs),traceArtifactRefs:N(l?.artifactRefs),evalArtifactRefs:N(u?.artifactRefs),startedAt:w(o?.createdAt),completedAt:w(o?.completedAt),error:e.error??null}}a(gr,"hostedRunSummaryFromPayload");function yr(e){return e?.status?e.status==="succeeded"||e.status==="passed"?"passed":e.status==="failed"||e.status==="cancelled"?"failed":"running":"not_started"}a(yr,"hostedRunStatusFromRunSummary");function wr(e){return e?(Array.isArray(e.requirements)?e.requirements:Array.isArray(e.blockingRequirements)?e.blockingRequirements:[]).map(o=>{let n=R(o);return w(n?.ref)??w(n?.id)??w(n?.label)}).filter(o=>!!o):[]}a(wr,"setupRequirementRefs");function R(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}a(R,"record");function w(e){return typeof e=="string"&&e.trim()?e.trim():null}a(w,"text");function fo(e){return typeof e=="boolean"?e:null}a(fo,"booleanValue");function N(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}a(N,"textArray");var Z="openpond-profile.json",xr="settings/profile.yaml",xo="default",G="default";function kr(e,t){let o=e?.defaultAgent??G,n=e?.enabledAgents&&e.enabledAgents.length>0?e.enabledAgents:[o];return{...e??{},path:t,defaultAgent:o,enabledAgents:n}}a(kr,"mergeProfileRepoManifestEntry");function $e(e,t,o){let n=D(e);if(e){let c=n.findIndex(u=>d.resolve(u.repoPath)===d.resolve(e.repoPath)&&u.profile===e.profile),l={source:n[c]?.source??"local",repositoryId:n[c]?.repositoryId??d.resolve(e.repoPath),repoPath:d.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}};c>=0?n[c]=l:n.push(l)}let r=n.findIndex(c=>d.resolve(c.repoPath)===d.resolve(t)&&c.profile===o),s=r>=0?n[r]:{source:"local",repositoryId:d.resolve(t),repoPath:d.resolve(t),profile:o};return r<0&&n.push(s),{repoPath:d.resolve(t),profile:o,mode:"local",profiles:n,...s.lastCheck?{lastCheck:s.lastCheck}:{},...s.lastPush?{lastPush:s.lastPush}:{}}}a($e,"mergeActiveLocalProfileConfig");function D(e){if(!e)return[];let t=e.profiles?.map(o=>({...o}))??[];return t.some(o=>d.resolve(o.repoPath)===d.resolve(e.repoPath)&&o.profile===e.profile)||t.push({source:"local",repositoryId:d.resolve(e.repoPath),repoPath:d.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}}),t}a(D,"profileConfigEntries");var br=Po(import.meta.url);function Ir(){return d.join(L(),"library","profiles","default-repo")}a(Ir,"defaultLocalProfileRepoPath");function ko(e=null){return{mode:"none",repoPath:null,activeProfile:null,sourcePath:null,manifestPath:null,agents:[],skills:[],evals:[],git:null,catalog:Je(e),skillCatalog:Ke(e),actionCatalog:[],sourceSetupRequirements:[],setupGate:We(),diff:be(),hosted:null,summary:Ve(e),lastCheck:null,error:e}}a(ko,"emptyProfileState");async function ni(e={}){let t=d.resolve(e.repoPath??Ir()),o=dt(e.profile),n=d.join("profiles",o),r=d.join(t,n),s=e.template??"blank-agent",i=s==="blank-profile";await F(t,{recursive:!0});let c=U(d.join(t,Z)),l=await Q(t).catch(()=>Dr(o,n));if(i&&c&&l.profiles[o])throw new Error(`Profile "${o}" already exists in ${t}.`);l.defaultProfile=l.defaultProfile||o,l.profiles[o]=kr(l.profiles[o],n),i&&(l.profiles[o].enabledAgents=[]),i?await F(r,{recursive:!0}):await Rr(r,s,!!e.force),await Co(r),await _r(t,r,o,{includeDefaultAgent:!i}),await _e(t,l),await Qt(t);let u=(await T()).openpondProfile;return await H({openpondProfile:$e(u,t,o)}),J()}a(ni,"initLocalProfileRepo");async function ri(e,t,o){let n=d.resolve(e),r=await Q(n),s=dt(t??r.defaultProfile);ft(r,n,s);let i=(await T()).openpondProfile,c=$e(i,n,s);return bo(c,n,s,o),await H({openpondProfile:c}),J()}a(ri,"loadLocalProfileRepo");async function si(e,t,o){let n=d.resolve(e),r=await Q(n),s=dt(t??r.defaultProfile);ft(r,n,s);let i=(await T()).openpondProfile,c=$e(i,n,s);return bo(c,n,s,o),i&&(c.repoPath=i.repoPath,c.profile=i.profile,c.lastCheck=i.lastCheck,c.lastPush=i.lastPush),await H({openpondProfile:c}),vr(ct({repoPath:n,profile:s,source:o?.source,repositoryId:o?.repositoryId}))}a(si,"registerLocalProfileRepo");function bo(e,t,o,n){n&&(e.profiles=D(e).map(r=>d.resolve(r.repoPath)===t&&r.profile===o?{...r,source:n.source,repositoryId:n.repositoryId}:r))}a(bo,"applyProfileIdentity");async function ai(e,t){let o=e.trim(),n=jr(t);if(!o)throw new Error("Agent ID is required.");let s=(await T()).openpondProfile;if(!s)throw new Error("No active local Profile.");let i=await Q(s.repoPath),c=i.profiles[s.profile];if(!c)throw new Error(`Profile "${s.profile}" was not found.`);let l=c.defaultAgent??G;if(!(c.enabledAgents??[l]).includes(o))throw new Error(`Agent "${o}" was not found in Profile "${s.profile}".`);let p={...c.agentNames??{}};return n===o?delete p[o]:p[o]=n,Object.keys(p).length?c.agentNames=p:delete c.agentNames,await _e(s.repoPath,i),J()}a(ai,"renameActiveProfileAgent");async function ii(e){let t=e.agentPackage;if(Hr(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 o=await Oe(),n=o.state.sourcePath;await Co(n);let r=d.join(n,"agents");await F(r,{recursive:!0});let s=d.join(r,t.agentId),i=U(s);if(i&&e.overwrite!==!0)throw new Error(`Agent "${t.agentId}" already exists. Confirm replacement to install this version.`);let c=d.join(r,`.${t.agentId}.${ho()}.installing`),l=d.join(r,`.${t.agentId}.${ho()}.backup`),u=await Q(o.config.repoPath),p=JSON.stringify(u),h=!1,k=!1;try{await qr(c,t),i&&(await at(s,l),h=!0),await at(c,s),k=!0;let C=u.profiles[o.config.profile];if(!C)throw new Error(`Profile "${o.config.profile}" was not found.`);let P=new Set(C.enabledAgents??[]);P.add(t.agentId),C.enabledAgents=[...P],C.defaultAgent||(C.defaultAgent=t.agentId),C.agentNames={...C.agentNames??{},[t.agentId]:t.title},await _e(o.config.repoPath,u),h&&await it(l,{recursive:!0,force:!0})}catch(C){throw await it(c,{recursive:!0,force:!0}),k&&await it(s,{recursive:!0,force:!0}),h&&U(l)&&await at(l,s),JSON.stringify(u)!==p&&await _e(o.config.repoPath,JSON.parse(p)).catch(()=>{}),C}return{state:await J(),agentId:t.agentId,versionId:t.versionId,digest:t.digest}}a(ii,"installAgentPackageIntoActiveProfile");async function J(){let t=(await T()).openpondProfile;return t?fe(t):ko()}a(J,"loadOpenPondProfileState");function ct(e){return{source:e.source??"local",repositoryId:e.repositoryId?.trim()||d.resolve(e.repoPath),profileId:e.profile}}a(ct,"openPondProfileRef");async function Cr(){let e=(await T()).openpondProfile;if(!e)return{lastUsed:null,profiles:[]};let t=D(e),o=await Promise.all(t.map(async n=>{let r=await fe({repoPath:n.repoPath,profile:n.profile,mode:"local",...n.lastCheck?{lastCheck:n.lastCheck}:{},...n.lastPush?{lastPush:n.lastPush}:{}});return{ref:ct(n),name:n.profile,repoPath:n.repoPath,sourcePath:r.sourcePath,state:r}}));return{lastUsed:ct({repoPath:e.repoPath,profile:e.profile,source:D(e).find(n=>d.resolve(n.repoPath)===d.resolve(e.repoPath)&&n.profile===e.profile)?.source,repositoryId:D(e).find(n=>d.resolve(n.repoPath)===d.resolve(e.repoPath)&&n.profile===e.profile)?.repositoryId}),profiles:o}}a(Cr,"loadOpenPondProfileLibrary");async function vr(e){if(!e)return J();let t=(await T()).openpondProfile,o=D(t).find(n=>n.source===e.source&&n.repositoryId===e.repositoryId&&n.profile===e.profileId);return o?fe({repoPath:o.repoPath,profile:o.profile,mode:"local",...o.lastCheck?{lastCheck:o.lastCheck}:{},...o.lastPush?{lastPush:o.lastPush}:{}}):ko(`Profile "${e.profileId}" is not installed on this device.`)}a(vr,"loadOpenPondProfileStateForRef");async function ci(e){let t=(await T()).openpondProfile,o=D(t).find(n=>n.source===e.source&&n.repositoryId===e.repositoryId&&n.profile===e.profileId);if(!o)throw new Error(`Profile "${e.profileId}" is not installed on this device.`);return await H({openpondProfile:$e(t,o.repoPath,o.profile)}),J()}a(ci,"selectOpenPondProfile");async function li(e){let t=(await T()).openpondProfile;if(!t)return{lastUsed:null,profiles:[]};let o=D(t).filter(s=>s.source!==e.source||s.repositoryId!==e.repositoryId||s.profile!==e.profileId);if(o.length===0)return await H({openpondProfile:null}),{lastUsed:null,profiles:[]};let r=d.resolve(t.repoPath)===d.resolve(D(t).find(s=>s.source===e.source&&s.repositoryId===e.repositoryId&&s.profile===e.profileId)?.repoPath??"")&&t.profile===e.profileId?o[0]:o.find(s=>d.resolve(s.repoPath)===d.resolve(t.repoPath)&&s.profile===t.profile)??o[0];return await H({openpondProfile:{repoPath:r.repoPath,profile:r.profile,mode:"local",profiles:o,...r.lastCheck?{lastCheck:r.lastCheck}:{},...r.lastPush?{lastPush:r.lastPush}:{}}}),Cr()}a(li,"removeOpenPondProfile");async function ui(e,t){return fe({mode:"local",repoPath:e,profile:t})}a(ui,"inspectOpenPondProfileSource");async function fe(e){try{let t=await Q(e.repoPath),o=ft(t,e.repoPath,e.profile),n=await Or(t,e.profile),r=Eo({manifest:t,profile:e.profile,profileSourcePath:o,agents:n}),[s,i,c,l]=await Promise.all([X(e.repoPath),zt(r),Et(o),Tr(o,r)]),u=go(e),p=Lr(s,e.profile),h=Ee({actionCatalog:i.actionCatalog,sourceSetupRequirements:i.sourceSetupRequirements}),k=Ur({agents:n,actionCatalog:i.actionCatalog,catalog:i.catalog,diff:p,git:s,hosted:u,lastCheck:e.lastCheck??null,error:null});return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:o,manifestPath:d.join(e.repoPath,Z),agents:n,skills:c.skills,evals:l,git:s,catalog:i.catalog,skillCatalog:c.skillCatalog,actionCatalog:i.actionCatalog,sourceSetupRequirements:i.sourceSetupRequirements,setupGate:h,diff:p,hosted:u,summary:k,lastCheck:e.lastCheck??null,error:null}}catch(t){let o=await X(e.repoPath).catch(()=>null),n=t instanceof Error?t.message:String(t);return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:null,manifestPath:d.join(e.repoPath,Z),agents:[],skills:[],evals:[],git:o,catalog:Je(n),skillCatalog:Ke(n),actionCatalog:[],sourceSetupRequirements:[],setupGate:We(),diff:be(),hosted:go(e),summary:Ve(n),lastCheck:e.lastCheck??null,error:n}}}a(fe,"loadOpenPondProfileStateForConfig");async function di(e){return fe({repoPath:d.resolve(e.repoPath),profile:e.profileId,mode:"local"})}a(di,"loadOpenPondProfileStateFromSource");async function Oe(){let e=(await T()).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}}a(Oe,"requireActiveLocalProfile");async function fi(e){let t=await Oe(),o=e.command==="run"?e.args??[]:[],n=e.command==="run"?t.state.actionCatalog.find(c=>c.id===o[0]):null,r=d.resolve(e.cwd??n?.sourcePath??t.state.sourcePath),s=e.command==="run"?mo(r,e.args??[],n?.sourceActionId??null):null;if(e.command==="run"&&s){let c=s[0],l=d.resolve(t.state.sourcePath)===r?{actionCatalog:t.state.actionCatalog,sourceSetupRequirements:t.state.sourceSetupRequirements}:await Gt(r);Ze(c,Ee({actionCatalog:l.actionCatalog,sourceSetupRequirements:l.sourceSetupRequirements,actionId:c}))}let i=await Io({command:e.command,args:e.command==="run"?s??mo(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 ut(e.command,i.code),i.code!==0){let c=i.stderr.trim()||i.stdout.trim();throw new Error(c||`${e.command} failed with exit code ${i.code??"unknown"}`)}return i}a(fi,"runProfileSdkCommand");async function Io(e){let t=d.resolve(e.cwd),o=Gr(),n=e.command==="run"?[...o.args,e.command,...e.args??[]]:[...o.args,e.command,"--cwd",t,...e.args??[]],r=await Oo(o.command,n,{cwd:t,inherit:e.inherit,timeoutMs:e.timeoutMs,maxOutputBytes:e.maxOutputBytes});if(e.throwOnFailure!==!1&&r.code!==0){let s=To(r,e.command);throw new Error(s||`${e.command} failed with exit code ${r.code??"unknown"}`)}return r}a(Io,"runAgentSdkProjectCommand");function mo(e,t,o=null){let[n,...r]=t;if(!n||n.startsWith("--"))throw new Error("run requires an action name");return[o??n,"--cwd",e,...r]}a(mo,"runCommandArgs");async function pi(e){let t=!e||e==="all"?["inspect","build","validate","eval"]:[e],o=await Oe(),n=await Q(o.config.repoPath),r=Eo({manifest:n,profile:o.config.profile,profileSourcePath:o.state.sourcePath,agents:o.state.agents});if(r.length===0){if(t.some(s=>s!=="inspect"&&s!=="build"&&s!=="validate"&&s!=="eval"))throw new Error("check kind must be one of inspect, build, validate, eval, all");await ut("validate",0);return}for(let s of t){if(s!=="inspect"&&s!=="build"&&s!=="validate"&&s!=="eval")throw new Error("check kind must be one of inspect, build, validate, eval, all");for(let i of r)await Er({command:s,source:i,profileSourcePath:o.state.sourcePath,sourceCount:r.length})}}a(pi,"runProfileCheck");async function Er(e){let t=e.command==="inspect"||e.command==="validate"||e.command==="eval"?["--json"]:[];if(e.sourceCount>1){let n=d.relative(e.profileSourcePath,e.source.sourcePath)||".";console.log(`
9
9
  [profile:${e.source.agentId}] ${e.command} ${n}`)}let o=await Io({command:e.command,args:t,cwd:e.source.sourcePath,inherit:!1,throwOnFailure:!1});if(o.stdout.trim()&&console.log(o.stdout.trim()),o.stderr.trim()&&console.error(o.stderr.trim()),await ut(e.command,o.code),o.code!==0){let n=To(o,e.command);throw new Error([`Profile check failed for enabled agent ${e.source.agentId} at ${e.source.sourcePath}.`,n||`${e.command} failed with exit code ${o.code??"unknown"}`].join(`
10
- `))}}a(Er,"runProfileCheckForSource");async function pi(e){let t=await Oe();if(!t.state.repoPath)throw new Error("Active OpenPond profile has no repo path.");let o=await eo(t.state.repoPath,e?.trim()||`Update OpenPond profile ${t.state.activeProfile??xo}`);return{committed:o.committed,stdout:o.stdout,stderr:o.stderr,state:await J()}}a(pi,"commitActiveProfileChanges");async function hi(e){let t=(await T()).openpondProfile;if(!t)return;let o=D(t).map(n=>d.resolve(n.repoPath)===d.resolve(t.repoPath)&&n.profile===t.profile?{...n,lastPush:e}:n);await H({openpondProfile:{...t,lastPush:e,profiles:o}})}a(hi,"saveProfilePushStatus");async function ut(e,t){let o=(await T()).openpondProfile;if(!o)return;let n=await to(o.repoPath).catch(()=>null),r={command:e,status:t===0?"passed":"failed",checkedAt:new Date().toISOString(),exitCode:t,sourceHead:n},s=D(o).map(i=>d.resolve(i.repoPath)===d.resolve(o.repoPath)&&i.profile===o.profile?{...i,lastCheck:r}:i);await H({openpondProfile:{...o,lastCheck:r,profiles:s}})}a(ut,"saveProfileCheckStatus");async function Rr(e,t,o){if(await F(e,{recursive:!0}),(await Ao(e)).length>0&&!o)return;let r=fe(),s=d.join(r,"templates",t);if(!U(s))throw new Error(`Unknown agent template "${t}".`);await Sr(s,e,{recursive:!0,force:o,errorOnExist:!1}),await $r(e,r)}a(Rr,"ensureProfileSource");async function _r(e,t,o,n={}){if(await F(d.join(e,"profiles"),{recursive:!0}),n.includeDefaultAgent===!1)return;for(let i of["agents","skills","workflows","actions","extensions","prompts","goals","evals","settings","traces"])await F(d.join(t,i),{recursive:!0});let r=d.join(t,xr);U(r)||await ie(r,["schema: openpond.profile.v1",`profile: ${o}`,"agents:",` - id: ${G}`," path: agent/agent.ts"," enabled: true",""].join(`
10
+ `))}}a(Er,"runProfileCheckForSource");async function hi(e){let t=await Oe();if(!t.state.repoPath)throw new Error("Active OpenPond profile has no repo path.");let o=await eo(t.state.repoPath,e?.trim()||`Update OpenPond profile ${t.state.activeProfile??xo}`);return{committed:o.committed,stdout:o.stdout,stderr:o.stderr,state:await J()}}a(hi,"commitActiveProfileChanges");async function mi(e){let t=(await T()).openpondProfile;if(!t)return;let o=D(t).map(n=>d.resolve(n.repoPath)===d.resolve(t.repoPath)&&n.profile===t.profile?{...n,lastPush:e}:n);await H({openpondProfile:{...t,lastPush:e,profiles:o}})}a(mi,"saveProfilePushStatus");async function ut(e,t){let o=(await T()).openpondProfile;if(!o)return;let n=await to(o.repoPath).catch(()=>null),r={command:e,status:t===0?"passed":"failed",checkedAt:new Date().toISOString(),exitCode:t,sourceHead:n},s=D(o).map(i=>d.resolve(i.repoPath)===d.resolve(o.repoPath)&&i.profile===o.profile?{...i,lastCheck:r}:i);await H({openpondProfile:{...o,lastCheck:r,profiles:s}})}a(ut,"saveProfileCheckStatus");async function Rr(e,t,o){if(await F(e,{recursive:!0}),(await Ao(e)).length>0&&!o)return;let r=pe(),s=d.join(r,"templates",t);if(!U(s))throw new Error(`Unknown agent template "${t}".`);await Sr(s,e,{recursive:!0,force:o,errorOnExist:!1}),await $r(e,r)}a(Rr,"ensureProfileSource");async function _r(e,t,o,n={}){if(await F(d.join(e,"profiles"),{recursive:!0}),n.includeDefaultAgent===!1)return;for(let i of["agents","skills","workflows","actions","extensions","prompts","goals","evals","settings","traces"])await F(d.join(t,i),{recursive:!0});let r=d.join(t,xr);U(r)||await ie(r,["schema: openpond.profile.v1",`profile: ${o}`,"agents:",` - id: ${G}`," path: agent/agent.ts"," enabled: true",""].join(`
11
11
  `),"utf8");let s=d.join(t,"openpond.lock");U(s)||await ie(s,`# OpenPond profile lockfile placeholder
12
12
  `,"utf8")}a(_r,"ensureProfileScaffoldFiles");async function $r(e,t){let o=d.join(e,"package.json"),n=await So(o,"utf8"),r=JSON.parse(n);r.dependencies={...r.dependencies??{},"openpond-agent-sdk":`file:${t}`},await ie(o,`${JSON.stringify(r,null,2)}
13
- `,"utf8")}a($r,"rewriteTemplateSdkDependency");async function Co(e){if(!U(d.join(e,"package.json")))return;let t=fe();await vo(t);let o=d.join(e,"node_modules"),n=d.join(o,"openpond-agent-sdk");await F(o,{recursive:!0}),U(n)||await Ar(t,n,"dir")}a(Co,"ensureProfileDependencies");async function vo(e){if(U(d.join(e,"dist","cli.js"))&&U(d.join(e,"dist","primitives","index.js")))return;let t=d.join(e,"scripts","build.ts");if(!U(t))throw new Error(`Resolved openpond-agent-sdk at ${e}, but built SDK files are missing.`);let o=await Oo(process.execPath,[$o(e),t],{cwd:e});if(o.code!==0){let n=o.stderr.trim()||o.stdout.trim();throw new Error(n||`openpond-agent-sdk build failed with exit code ${o.code??"unknown"}`)}}a(vo,"ensureAgentSdkBuilt");async function Or(e,t){let o=e.profiles[t];if(!o)return[];let n=o.defaultAgent??G,r=new Set(o.enabledAgents??[n]);return Array.from(r).map(s=>({id:s,name:o.agentNames?.[s]?.trim()||s,path:s===G?"agent/agent.ts":`agents/${s}`,enabled:!0}))}a(Or,"listProfileAgents");function Eo(e){let t=e.manifest.profiles[e.profile]?.defaultAgent??G;return e.agents.map(o=>({agentId:o.id,sourcePath:o.id===G?e.profileSourcePath:d.join(e.profileSourcePath,"agents",o.id),preferred:o.id===t}))}a(Eo,"profileCatalogSources");async function Tr(e,t){let o=new Map,n=[{root:d.join(e,"evals"),agentId:null},...t.flatMap(r=>[{root:d.join(r.sourcePath,"agent","evals"),agentId:r.agentId},{root:d.join(r.sourcePath,"evals"),agentId:r.agentId}])];for(let r of n)for(let s of await Ro(r.root)){let i=d.relative(e,s).split(d.sep).join("/");o.has(i)||o.set(i,{id:i,name:d.basename(s).replace(/\.eval\.[^.]+$/i,"").replace(/\.[^.]+$/i,""),path:i,agentId:r.agentId,sourcePath:s})}return[...o.values()].sort((r,s)=>r.name.localeCompare(s.name)||r.path.localeCompare(s.path))}a(Tr,"loadProfileEvals");async function Ro(e){if(!U(e))return[];let t=[];for(let o of await Ao(e,{withFileTypes:!0})){let n=d.join(e,o.name);o.isDirectory()?t.push(...await Ro(n)):o.isFile()&&/\.eval\.(?:[cm]?[jt]sx?)$/i.test(o.name)&&t.push(n)}return t}a(Ro,"listEvalSourceFiles");function go(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}a(go,"hostedBindingFromConfig");function Ur(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,o=!!(!e.catalog.stale&&!e.git.dirty&&e.git.head&&(e.agents.length===0||e.lastCheck?.status==="passed"&&e.lastCheck.sourceHead===e.git.head)),n=e.agents.length===0&&!e.catalog.stale&&!e.git.dirty?null:Mr({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:o,checkStaleReason:n,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:e.git.isRepo?e.git.head?e.git.dirty?{state:"dirty",message:Br(e.diff),agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:o,checkStaleReason:n,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:o,checkStaleReason:n,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}}a(Ur,"summarizeProfileState");function Mr(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."}a(Mr,"profileCheckStaleReason");function Br(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."}a(Br,"profileDirtyMessage");function Lr(e,t){let o=ke();o.files=e.files;let n=`profiles/${t}/`;for(let r of e.files){let s=r.path.replace(/\\/g,"/");if(s===Z||s===".gitignore"){q(o.setupChanges,s);continue}if(!s.startsWith(n))continue;let i=s.slice(n.length);Nr(o,r,i)}return o}a(Lr,"summarizeProfileDiff");function Nr(e,t,o){let n=o.split("/")[0]??"";if(n==="agent")yo(e,G,t.category);else if(n==="agents"){let r=o.split("/")[1];r&&yo(e,r,t.category)}else n==="skills"?q(e.changedSkills,o.split("/")[1]??o):n==="actions"?q(e.changedActions,o.split("/")[1]??o):n==="extensions"?q(e.changedExtensions,o.split("/")[1]??o):(n==="settings"||o==="package.json"||o==="openpond.yaml"||o==="openpond.lock")&&q(e.setupChanges,o);o.toLowerCase().includes("env")&&q(e.envRequirementChanges,o),o.startsWith(".openpond/")&&q(e.changedActions,"catalog")}a(Nr,"classifyProfileFileChange");function yo(e,t,o){if(o==="added"||o==="untracked"){q(e.newAgents,t);return}if(o==="deleted"){q(e.deletedAgents,t);return}q(e.changedAgents,t)}a(yo,"addAgentChange");function q(e,t){!t||e.includes(t)||e.push(t)}a(q,"addUnique");function dt(e){let t=e?.trim();if(!t)return xo;if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new Error("profile name may only contain letters, numbers, dots, underscores, and hyphens");return t}a(dt,"normalizeProfileName");function jr(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}a(jr,"normalizeAgentDisplayName");function Dr(e,t){return{schema:"openpond.profileRepo.v1",defaultProfile:e,profiles:{[e]:{path:t,defaultAgent:G,enabledAgents:[G]}}}}a(Dr,"defaultProfileManifest");async function Q(e){let t=d.join(e,Z),o=await So(t,"utf8"),n=JSON.parse(o);if(n.schema!=="openpond.profileRepo.v1"||!n.profiles||typeof n.profiles!="object")throw new Error(`${t} is not an OpenPond profile repo manifest.`);return n}a(Q,"readProfileManifest");async function Re(e,t){await ie(d.join(e,Z),`${JSON.stringify(t,null,2)}
14
- `,"utf8")}a(Re,"writeProfileManifest");function ft(e,t,o){let n=e.profiles[o];if(!n)throw new Error(`Profile "${o}" was not found in ${d.join(t,Z)}.`);let r=d.resolve(t,n.path);if(!U(r))throw new Error(`Profile source path does not exist: ${r}`);return r}a(ft,"profileSourcePath");function Hr(e){let t=0,o=new Set;for(let c of e.source.files){let l=_o(c.path);if(o.has(l))throw new Error(`Agent package contains duplicate source path ${l}.`);o.add(l);let u=Buffer.from(c.contentsBase64,"base64");if(u.byteLength!==c.sizeBytes||po("sha256").update(u).digest("hex")!==c.sha256)throw new Error(`Agent package source checksum failed for ${l}.`);t+=u.byteLength}if(t!==e.source.totalSizeBytes)throw new Error("Agent package source size does not match its manifest.");let{digest:n,versionId:r,...s}=e,i=po("sha256").update(Fr(s)).digest("hex");if(i!==e.digest||e.versionId!==`agent-${i.slice(0,20)}`)throw new Error("Agent package content digest does not match its version.")}a(Hr,"verifyAgentPackageIntegrity");async function qr(e,t){await F(e,{recursive:!0,mode:448});for(let n of t.source.files){let r=_o(n.path),s=d.resolve(e,r);if(!s.startsWith(`${d.resolve(e)}${d.sep}`))throw new Error("Agent package source path escapes its install root.");await F(d.dirname(s),{recursive:!0,mode:448});let i=Buffer.from(n.contentsBase64,"base64");if(r==="package.json"){let c=JSON.parse(i.toString("utf8"));c.dependencies={...c.dependencies??{},"openpond-agent-sdk":`file:${fe()}`},i=Buffer.from(`${JSON.stringify(c,null,2)}
13
+ `,"utf8")}a($r,"rewriteTemplateSdkDependency");async function Co(e){if(!U(d.join(e,"package.json")))return;let t=pe();await vo(t);let o=d.join(e,"node_modules"),n=d.join(o,"openpond-agent-sdk");await F(o,{recursive:!0}),U(n)||await Ar(t,n,"dir")}a(Co,"ensureProfileDependencies");async function vo(e){if(U(d.join(e,"dist","cli.js"))&&U(d.join(e,"dist","primitives","index.js")))return;let t=d.join(e,"scripts","build.ts");if(!U(t))throw new Error(`Resolved openpond-agent-sdk at ${e}, but built SDK files are missing.`);let o=await Oo(process.execPath,[$o(e),t],{cwd:e});if(o.code!==0){let n=o.stderr.trim()||o.stdout.trim();throw new Error(n||`openpond-agent-sdk build failed with exit code ${o.code??"unknown"}`)}}a(vo,"ensureAgentSdkBuilt");async function Or(e,t){let o=e.profiles[t];if(!o)return[];let n=o.defaultAgent??G,r=new Set(o.enabledAgents??[n]);return Array.from(r).map(s=>({id:s,name:o.agentNames?.[s]?.trim()||s,path:s===G?"agent/agent.ts":`agents/${s}`,enabled:!0}))}a(Or,"listProfileAgents");function Eo(e){let t=e.manifest.profiles[e.profile]?.defaultAgent??G;return e.agents.map(o=>({agentId:o.id,sourcePath:o.id===G?e.profileSourcePath:d.join(e.profileSourcePath,"agents",o.id),preferred:o.id===t}))}a(Eo,"profileCatalogSources");async function Tr(e,t){let o=new Map,n=[{root:d.join(e,"evals"),agentId:null},...t.flatMap(r=>[{root:d.join(r.sourcePath,"agent","evals"),agentId:r.agentId},{root:d.join(r.sourcePath,"evals"),agentId:r.agentId}])];for(let r of n)for(let s of await Ro(r.root)){let i=d.relative(e,s).split(d.sep).join("/");o.has(i)||o.set(i,{id:i,name:d.basename(s).replace(/\.eval\.[^.]+$/i,"").replace(/\.[^.]+$/i,""),path:i,agentId:r.agentId,sourcePath:s})}return[...o.values()].sort((r,s)=>r.name.localeCompare(s.name)||r.path.localeCompare(s.path))}a(Tr,"loadProfileEvals");async function Ro(e){if(!U(e))return[];let t=[];for(let o of await Ao(e,{withFileTypes:!0})){let n=d.join(e,o.name);o.isDirectory()?t.push(...await Ro(n)):o.isFile()&&/\.eval\.(?:[cm]?[jt]sx?)$/i.test(o.name)&&t.push(n)}return t}a(Ro,"listEvalSourceFiles");function go(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}a(go,"hostedBindingFromConfig");function Ur(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,o=!!(!e.catalog.stale&&!e.git.dirty&&e.git.head&&(e.agents.length===0||e.lastCheck?.status==="passed"&&e.lastCheck.sourceHead===e.git.head)),n=e.agents.length===0&&!e.catalog.stale&&!e.git.dirty?null:Mr({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:o,checkStaleReason:n,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:e.git.isRepo?e.git.head?e.git.dirty?{state:"dirty",message:Br(e.diff),agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:o,checkStaleReason:n,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:o,checkStaleReason:n,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}}a(Ur,"summarizeProfileState");function Mr(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."}a(Mr,"profileCheckStaleReason");function Br(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."}a(Br,"profileDirtyMessage");function Lr(e,t){let o=be();o.files=e.files;let n=`profiles/${t}/`;for(let r of e.files){let s=r.path.replace(/\\/g,"/");if(s===Z||s===".gitignore"){q(o.setupChanges,s);continue}if(!s.startsWith(n))continue;let i=s.slice(n.length);Nr(o,r,i)}return o}a(Lr,"summarizeProfileDiff");function Nr(e,t,o){let n=o.split("/")[0]??"";if(n==="agent")yo(e,G,t.category);else if(n==="agents"){let r=o.split("/")[1];r&&yo(e,r,t.category)}else n==="skills"?q(e.changedSkills,o.split("/")[1]??o):n==="actions"?q(e.changedActions,o.split("/")[1]??o):n==="extensions"?q(e.changedExtensions,o.split("/")[1]??o):(n==="settings"||o==="package.json"||o==="openpond.yaml"||o==="openpond.lock")&&q(e.setupChanges,o);o.toLowerCase().includes("env")&&q(e.envRequirementChanges,o),o.startsWith(".openpond/")&&q(e.changedActions,"catalog")}a(Nr,"classifyProfileFileChange");function yo(e,t,o){if(o==="added"||o==="untracked"){q(e.newAgents,t);return}if(o==="deleted"){q(e.deletedAgents,t);return}q(e.changedAgents,t)}a(yo,"addAgentChange");function q(e,t){!t||e.includes(t)||e.push(t)}a(q,"addUnique");function dt(e){let t=e?.trim();if(!t)return xo;if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new Error("profile name may only contain letters, numbers, dots, underscores, and hyphens");return t}a(dt,"normalizeProfileName");function jr(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}a(jr,"normalizeAgentDisplayName");function Dr(e,t){return{schema:"openpond.profileRepo.v1",defaultProfile:e,profiles:{[e]:{path:t,defaultAgent:G,enabledAgents:[G]}}}}a(Dr,"defaultProfileManifest");async function Q(e){let t=d.join(e,Z),o=await So(t,"utf8"),n=JSON.parse(o);if(n.schema!=="openpond.profileRepo.v1"||!n.profiles||typeof n.profiles!="object")throw new Error(`${t} is not an OpenPond profile repo manifest.`);return n}a(Q,"readProfileManifest");async function _e(e,t){await ie(d.join(e,Z),`${JSON.stringify(t,null,2)}
14
+ `,"utf8")}a(_e,"writeProfileManifest");function ft(e,t,o){let n=e.profiles[o];if(!n)throw new Error(`Profile "${o}" was not found in ${d.join(t,Z)}.`);let r=d.resolve(t,n.path);if(!U(r))throw new Error(`Profile source path does not exist: ${r}`);return r}a(ft,"profileSourcePath");function Hr(e){let t=0,o=new Set;for(let c of e.source.files){let l=_o(c.path);if(o.has(l))throw new Error(`Agent package contains duplicate source path ${l}.`);o.add(l);let u=Buffer.from(c.contentsBase64,"base64");if(u.byteLength!==c.sizeBytes||po("sha256").update(u).digest("hex")!==c.sha256)throw new Error(`Agent package source checksum failed for ${l}.`);t+=u.byteLength}if(t!==e.source.totalSizeBytes)throw new Error("Agent package source size does not match its manifest.");let{digest:n,versionId:r,...s}=e,i=po("sha256").update(Fr(s)).digest("hex");if(i!==e.digest||e.versionId!==`agent-${i.slice(0,20)}`)throw new Error("Agent package content digest does not match its version.")}a(Hr,"verifyAgentPackageIntegrity");async function qr(e,t){await F(e,{recursive:!0,mode:448});for(let n of t.source.files){let r=_o(n.path),s=d.resolve(e,r);if(!s.startsWith(`${d.resolve(e)}${d.sep}`))throw new Error("Agent package source path escapes its install root.");await F(d.dirname(s),{recursive:!0,mode:448});let i=Buffer.from(n.contentsBase64,"base64");if(r==="package.json"){let c=JSON.parse(i.toString("utf8"));c.dependencies={...c.dependencies??{},"openpond-agent-sdk":`file:${pe()}`},i=Buffer.from(`${JSON.stringify(c,null,2)}
15
15
  `,"utf8")}await ie(s,i,{mode:384,flag:"wx"})}let o=d.join(e,".openpond","agent-package-origin.json");await F(d.dirname(o),{recursive:!0,mode:448}),await ie(o,`${JSON.stringify({schema:"openpond.agent-package-origin.v1",agentId:t.agentId,versionId:t.versionId,digest:t.digest,validationReceiptIds:t.receipts.filter(n=>n.kind==="sdk_validation").map(n=>n.id),evalReceiptIds:t.receipts.filter(n=>n.kind==="sdk_eval").map(n=>n.id)},null,2)}
16
- `,{mode:384,flag:"wx"})}a(qr,"materializeAgentPackage");function _o(e){let t=e.trim().replaceAll("\\","/"),o=d.posix.normalize(t);if(!o||o==="."||o===".."||o.startsWith("/")||o.startsWith("../")||o.split("/").some(n=>n===".."))throw new Error(`Agent package contains an invalid source path: ${e}.`);return o}a(_o,"normalizeAgentPackagePath");function Fr(e){return JSON.stringify(lt(e))}a(Fr,"stableAgentPackageJson");function lt(e){return Array.isArray(e)?e.map(lt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[o])=>t.localeCompare(o)).map(([t,o])=>[t,lt(o)]))}a(lt,"sortAgentPackageJson");function fe(){let e=br.resolve("openpond-agent-sdk/package.json");return d.dirname(e)}a(fe,"resolveAgentSdkRoot");async function mi(){let e=fe();return await vo(e),e}a(mi,"prepareAgentSdkRuntimePackage");function Gr(){let e=fe(),t=d.join(e,"dist","cli.js");if(U(t))return{command:process.execPath,args:[t]};let o=d.join(e,"src","cli.ts");if(U(o))return{command:process.execPath,args:[$o(e),o]};throw new Error(`openpond-agent CLI was not found under ${e}`)}a(Gr,"resolveAgentSdkCliLaunch");function $o(e){return Po(d.join(e,"package.json")).resolve("tsx/cli")}a($o,"resolveTsxCli");async function Oo(e,t,o={}){return new Promise((n,r)=>{let s=Pr(e,t,{cwd:o.cwd,stdio:o.inherit?"inherit":"pipe"}),i="",c="",l=!1,u=!1,p=!1,h=o.timeoutMs??600*1e3,k=o.maxOutputBytes??2*1024*1024,C=h>0?setTimeout(()=>{p=!0,s.kill("SIGTERM")},h):null,P=h>0?setTimeout(()=>{p&&s.exitCode===null&&s.kill("SIGKILL")},h+5e3):null;o.inherit||(s.stdout?.on("data",S=>{let f=wo(i,String(S),k,l);i=f.text,l=f.truncated}),s.stderr?.on("data",S=>{let f=wo(c,String(S),k,u);c=f.text,u=f.truncated}));let g=a(()=>{C&&clearTimeout(C),P&&clearTimeout(P)},"clearTimers");s.on("error",S=>{g(),r(S)}),s.on("close",S=>{g(),n({code:S,stdout:i,stderr:c,timedOut:p,stdoutTruncated:l,stderrTruncated:u})})})}a(Oo,"spawnCommand");function wo(e,t,o,n){if(n)return{text:e,truncated:!0};let r=`${e}${t}`;return Buffer.byteLength(r,"utf8")<=o?{text:r,truncated:!1}:{text:`${Buffer.from(r).subarray(0,Math.max(0,o)).toString("utf8")}
16
+ `,{mode:384,flag:"wx"})}a(qr,"materializeAgentPackage");function _o(e){let t=e.trim().replaceAll("\\","/"),o=d.posix.normalize(t);if(!o||o==="."||o===".."||o.startsWith("/")||o.startsWith("../")||o.split("/").some(n=>n===".."))throw new Error(`Agent package contains an invalid source path: ${e}.`);return o}a(_o,"normalizeAgentPackagePath");function Fr(e){return JSON.stringify(lt(e))}a(Fr,"stableAgentPackageJson");function lt(e){return Array.isArray(e)?e.map(lt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[o])=>t.localeCompare(o)).map(([t,o])=>[t,lt(o)]))}a(lt,"sortAgentPackageJson");function pe(){let e=br.resolve("openpond-agent-sdk/package.json");return d.dirname(e)}a(pe,"resolveAgentSdkRoot");async function gi(){let e=pe();return await vo(e),e}a(gi,"prepareAgentSdkRuntimePackage");function Gr(){let e=pe(),t=d.join(e,"dist","cli.js");if(U(t))return{command:process.execPath,args:[t]};let o=d.join(e,"src","cli.ts");if(U(o))return{command:process.execPath,args:[$o(e),o]};throw new Error(`openpond-agent CLI was not found under ${e}`)}a(Gr,"resolveAgentSdkCliLaunch");function $o(e){return Po(d.join(e,"package.json")).resolve("tsx/cli")}a($o,"resolveTsxCli");async function Oo(e,t,o={}){return new Promise((n,r)=>{let s=Pr(e,t,{cwd:o.cwd,stdio:o.inherit?"inherit":"pipe"}),i="",c="",l=!1,u=!1,p=!1,h=o.timeoutMs??600*1e3,k=o.maxOutputBytes??2*1024*1024,C=h>0?setTimeout(()=>{p=!0,s.kill("SIGTERM")},h):null,P=h>0?setTimeout(()=>{p&&s.exitCode===null&&s.kill("SIGKILL")},h+5e3):null;o.inherit||(s.stdout?.on("data",S=>{let f=wo(i,String(S),k,l);i=f.text,l=f.truncated}),s.stderr?.on("data",S=>{let f=wo(c,String(S),k,u);c=f.text,u=f.truncated}));let g=a(()=>{C&&clearTimeout(C),P&&clearTimeout(P)},"clearTimers");s.on("error",S=>{g(),r(S)}),s.on("close",S=>{g(),n({code:S,stdout:i,stderr:c,timedOut:p,stdoutTruncated:l,stderrTruncated:u})})})}a(Oo,"spawnCommand");function wo(e,t,o,n){if(n)return{text:e,truncated:!0};let r=`${e}${t}`;return Buffer.byteLength(r,"utf8")<=o?{text:r,truncated:!1}:{text:`${Buffer.from(r).subarray(0,Math.max(0,o)).toString("utf8")}
17
17
  [truncated after ${o} bytes]
18
18
  `,truncated:!0}}a(wo,"appendBoundedOutput");function To(e,t){let o=e.stderr.trim()||e.stdout.trim(),n=[e.timedOut?`${t} timed out`:"",e.stdoutTruncated?"stdout truncated":"",e.stderrTruncated?"stderr truncated":""].filter(Boolean);return[o,...n].filter(Boolean).join(`
19
- `)}a(To,"commandFailureDetail");var vi=new URL(we).hostname,Ei=new URL(ye).hostname;async function Ho(e,t,o){let n=new URLSearchParams;o?.handle&&n.set("handle",o.handle),typeof o?.limit=="number"&&Number.isFinite(o.limit)&&n.set("limit",String(Math.max(1,Math.floor(o.limit)))),typeof o?.offset=="number"&&Number.isFinite(o.offset)&&n.set("offset",String(Math.max(0,Math.floor(o.offset)))),typeof o?.includeScheduled=="boolean"&&n.set("includeScheduled",o.includeScheduled?"true":"false");let r=n.toString(),s=await j(e,t,`/apps/list${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let c=await s.text().catch(()=>"");throw new Error(`Apps list failed: ${s.status} ${c}`)}let i=await s.json().catch(()=>({}));return Array.isArray(i.apps)?i.apps:[]}a(Ho,"listApps");async function qo(e,t,o){let n=await j(e,t,"/apps/repo/create",{method:"POST",body:JSON.stringify(o)});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Repo create failed: ${n.status} ${r}`)}return await n.json()}a(qo,"createRepo");async function Ri(e,t,o,n){let r=await j(e,t,`/apps/${encodeURIComponent(o)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:n})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Code visibility update failed: ${r.status} ${s}`)}return await r.json()}a(Ri,"updateAppCodeVisibility");async function Fo(e,t,o){let n=await j(e,t,`/v4/apps/${o}/environment`,{method:"GET"});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Environment get failed: ${n.status} ${r}`)}return await n.json()}a(Fo,"getAppEnvironment");async function Go(e,t){let o=await j(e,t,"/v1/account",{method:"GET"});if(!o.ok){let n=await o.text().catch(()=>"");throw new Error(`Account lookup failed: ${o.status} ${n}`)}return await o.json()}a(Go,"getOpenPondAccount");var zo=3600*1e3;async function Uc(e,t,o,n={}){let r=await(n.apiFetch??j)(e,t,n.path??bt,{method:"POST",signal:n.signal,body:JSON.stringify(o)}),s=await r.json().catch(()=>({})),i=r.status!==404&&r.status!==405&&r.status!==501;return r.ok?{ok:typeof s.ok=="boolean"?s.ok:!0,status:r.status,endpointAvailable:i,output:Yo(s),data:Xo(s)}:{ok:!1,status:r.status,endpointAvailable:i,output:Yo(s)??(i?`Connected app tool call failed with status ${r.status}.`:`Connected app tool-call endpoint is not available (${r.status}).`),data:Xo(s)}}a(Uc,"executeConnectedAppToolCall");function Yo(e){return typeof e.output=="string"&&e.output.trim()?e.output.trim():typeof e.message=="string"&&e.message.trim()?e.message.trim():typeof e.error=="string"&&e.error.trim()?e.error.trim():null}a(Yo,"responsePayloadMessage");function Xo(e){return"data"in e?e.data:"result"in e?e.result:null}a(Xo,"responsePayloadData");var A=class extends Error{static{a(this,"GithubExtensionError")}code;status;constructor(t,o){super(t),this.name="GithubExtensionError",this.code=o.code,this.status=o.status??400}};import{createHash as nn}from"node:crypto";import ht from"node:path";var Zo="HEAD",Qo=64,en=512,rn=20*1024*1024,mt=5*1024*1024,sn=8,vs=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,tn=/^[A-Za-z0-9_.-]+$/,on=new Set(["agents","assets","references","scripts"]);function an(e={}){let t=e.fetch??fetch,o=e.githubToken?.trim()||process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim()||null;return{async resolve(n){let r=await Es(n,t,o);return{preview:await Rs(r,t,o),files:cn(r)}},async download(n,r){await Ts({resolution:n,fetchImpl:t,githubToken:o,writeFile:r})}}}a(an,"createGithubSourceClient");function V(e){let t=e.trim(),o="",n="";if(/^(?:https?:\/\/)?github\.com\//i.test(t)){let i=new URL(t.startsWith("http")?t:`https://${t}`);if(i.hostname.toLowerCase()!=="github.com")throw Te(e);let c=i.pathname.replace(/^\/+|\/+$/g,"").split("/");if(c.length!==2)throw Te(e);[o="",n=""]=c}else{let c=t.replace(/^github:/i,"").replace(/^\/+|\/+$/g,"").split("/");if(c.length!==2)throw Te(e);[o="",n=""]=c}if(n=n.replace(/\.git$/i,""),!tn.test(o)||!tn.test(n))throw Te(e);let r=o.toLowerCase(),s=n.toLowerCase();return{id:`github:${r}/${s}`,owner:r,repo:s,repositoryUrl:`https://github.com/${r}/${s}`}}a(V,"parseGithubExtensionSource");async function Es(e,t,o){let n=V(e.source),r=e.ref?.trim()||Zo,s=await pt(t,o,`/repos/${n.owner}/${n.repo}`),i=r===Zo?s.default_branch?.trim()||"main":r,c=await pt(t,o,`/repos/${n.owner}/${n.repo}/commits/${encodeURIComponent(i)}`),l=c.sha?.trim(),u=c.commit?.tree?.sha?.trim();if(!l||!u)throw new A("GitHub returned an incomplete commit response.",{code:"github_invalid_commit",status:502});let p=await pt(t,o,`/repos/${n.owner}/${n.repo}/git/trees/${u}?recursive=1`);if(p.truncated)throw new A("The GitHub repository tree is too large to install safely.",{code:"github_tree_truncated"});let h=(p.tree??[]).filter(Bs),k=$s(h);if(k.length===0)throw new A("No skills found. Add SKILL.md at the repository root or use a standard agent skills directory.",{code:"extension_no_skills"});if(k.length>Qo)throw new A(`Extension contains more than ${Qo} skills.`,{code:"extension_too_many_skills"});Ms(k);let C=h.find(P=>P.type==="blob"&&/^readme(?:\.[^/]+)?$/i.test(P.path))??null;return{identity:n,requestedRef:r,resolvedCommit:l,tree:h,skillPackages:k,readme:C}}a(Es,"resolveSource");async function Rs(e,t,o){let n=await dn(e.skillPackages,sn,async c=>{let l=await Us(e,c.entry,t,o);return _s(c,l)}),r=js(n.map(c=>c.name));for(let c of n)r.has(c.name)&&(c.validationStatus="error",c.validationMessages=[...c.validationMessages,`Duplicate skill name: ${c.name}`]);let s=n.flatMap(c=>c.validationMessages.map(l=>`${c.relativePath}: ${l}`)),i=cn(e);return{...e.identity,source:"github",requestedRef:e.requestedRef,resolvedCommit:e.resolvedCommit,sourcePath:null,readmePath:e.readme?.path??null,packageHash:Ls(i),skills:n.sort((c,l)=>c.name.localeCompare(l.name)),validationStatus:s.length===0?"valid":"error",validationMessages:s}}a(Rs,"buildPreview");function _s(e,t){let o=Pe(t),n=e.root==="."?null:ht.posix.basename(e.root),r=o.name??n??"invalid-skill",s=[...o.messages];vs.test(r)||s.push("Skill name must be lowercase kebab-case."),n&&r!==n&&s.push(`Skill name must match its directory name (${n}).`);let i=e.files.filter(c=>c.path!==e.entry.path).map(c=>Ns(e.root,c.path)).sort();return{name:r,description:o.description??"",relativePath:e.root==="."?"SKILL.md":`${e.root}/SKILL.md`,sourcePath:"",charCount:t.length,sourceHash:nn("sha256").update(t).digest("hex"),resourceFiles:i,validationStatus:s.length===0?"valid":"error",validationMessages:[...new Set(s)]}}a(_s,"previewSkill");function $s(e){let t=[],o=e.find(c=>c.type==="blob"&&c.path==="SKILL.md");o&&t.push({root:".",entry:o});let n=e.filter(c=>c.type==="blob"&&c.path.endsWith("/SKILL.md")),r=n.filter(c=>Os(c.path)),s=r.length>0?r:n,i=new Set(s.map(c=>ht.posix.dirname(c.path)));for(let c of s){let l=ht.posix.dirname(c.path);[...i].some(u=>u!==l&&l.startsWith(`${u}/`))||t.push({root:l,entry:c})}return t.map(({root:c,entry:l})=>{let u=e.filter(k=>{if(k.type!=="blob")return!1;if(c!==".")return k.path.startsWith(`${c}/`);if(k.path==="SKILL.md")return!0;let C=k.path.split("/",1)[0]??"";return on.has(C)}),p=e.find(k=>k.type!=="blob"&&k.type!=="tree"&&(c==="."?k.path==="SKILL.md"||on.has(k.path.split("/",1)[0]??""):k.path.startsWith(`${c}/`))),h=u.find(k=>k.mode==="120000");if(p||h)throw new A(`Skill package ${c} contains a symlink or submodule.`,{code:"extension_unsafe_entry"});return{root:c,entry:l,files:u}})}a($s,"discoverSkillPackages");function Os(e){let t=e.split("/");if(t.at(-1)!=="SKILL.md")return!1;let o=t.slice(0,-1);if(o.length<2)return!1;let n=o.lastIndexOf("skills");if(n<0||n>2)return!1;let r=o.slice(0,n),s=o.slice(n+1);if(s.length<1||s.length>2)return!1;if(n===0)return!0;let i=r[0]??"";return i.startsWith(".")||i==="agent"||i==="data"}a(Os,"isStandardAgentSkillsPath");function cn(e){let t=new Map;e.readme&&t.set(e.readme.path,e.readme);for(let o of e.skillPackages)for(let n of o.files)t.set(n.path,n);return[...t.values()].sort((o,n)=>o.path.localeCompare(n.path))}a(cn,"filesToDownload");async function Ts(e){let t=0;await dn(e.resolution.files,sn,async o=>{let n=await ln({owner:e.resolution.preview.owner,repo:e.resolution.preview.repo,commit:e.resolution.preview.resolvedCommit,file:o,fetchImpl:e.fetchImpl,githubToken:e.githubToken});if(t+=n.byteLength,t>rn)throw new A("Extension download exceeds the maximum allowed size.",{code:"extension_too_large"});await e.writeFile(o.path,n,o.mode==="100755")})}a(Ts,"downloadFiles");async function Us(e,t,o,n){let r=await ln({owner:e.identity.owner,repo:e.identity.repo,commit:e.resolvedCommit,file:t,fetchImpl:o,githubToken:n});return new TextDecoder("utf-8",{fatal:!0}).decode(r)}a(Us,"downloadText");async function ln(e){let t=e.file.path.split("/").map(encodeURIComponent).join("/"),o=`https://raw.githubusercontent.com/${e.owner}/${e.repo}/${e.commit}/${t}`,n=await e.fetchImpl(o,{headers:un(e.githubToken,"application/vnd.github.raw"),redirect:"follow"});if(!n.ok)throw new A(`GitHub file download failed (${n.status}): ${e.file.path}`,{code:"github_download_failed",status:n.status});let r=Number(n.headers.get("content-length"));if(Number.isFinite(r)&&r>mt)throw new A(`Extension file is too large: ${e.file.path}`,{code:"extension_file_too_large"});let s=new Uint8Array(await n.arrayBuffer());if(s.byteLength>mt)throw new A(`Extension file is too large: ${e.file.path}`,{code:"extension_file_too_large"});return s}a(ln,"downloadBytes");async function pt(e,t,o){let n=await e(`https://api.github.com${o}`,{headers:un(t,"application/vnd.github+json")});if(!n.ok){let r=await n.json().catch(()=>null),s=typeof r?.message=="string"?`: ${r.message}`:"";throw new A(`GitHub request failed (${n.status})${s}`,{code:n.status===404?"github_repository_not_found":"github_request_failed",status:n.status})}return await n.json()}a(pt,"githubJson");function un(e,t){let o=new Headers({Accept:t,"User-Agent":"openpond-extension-installer","X-GitHub-Api-Version":"2022-11-28"});return e&&o.set("Authorization",`Bearer ${e}`),o}a(un,"githubHeaders");function Ms(e){let t=new Map;for(let n of e)for(let r of n.files)t.set(r.path,r);if(t.size>en)throw new A(`Extension contains more than ${en} skill files.`,{code:"extension_too_many_files"});let o=0;for(let n of t.values()){if((n.size??0)>mt)throw new A(`Extension file is too large: ${n.path}`,{code:"extension_file_too_large"});o+=n.size??0}if(o>rn)throw new A("Extension exceeds the maximum allowed size.",{code:"extension_too_large"})}a(Ms,"validateDownloadLimits");function Bs(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.path=="string"&&!t.path.startsWith("/")&&!t.path.split("/").includes("..")&&typeof t.mode=="string"&&(t.type==="blob"||t.type==="tree"||t.type==="commit")&&typeof t.sha=="string"}a(Bs,"validTreeEntry");function Ls(e){let t=nn("sha256");for(let o of e)t.update(`${o.path}\0${o.sha}\0${o.size??""}
20
- `);return t.digest("hex")}a(Ls,"hashTree");function Ns(e,t){return e==="."?t:t.slice(e.length+1)}a(Ns,"relativeSkillPath");function js(e){let t=new Set,o=new Set;for(let n of e)t.has(n)&&o.add(n),t.add(n);return o}a(js,"duplicateValues");async function dn(e,t,o){let n=new Array(e.length),r=0;async function s(){for(;r<e.length;){let i=r;r+=1,n[i]=await o(e[i])}}return a(s,"worker"),await Promise.all(Array.from({length:Math.min(t,e.length)},s)),n}a(dn,"mapConcurrent");function Te(e){return new A(`Invalid GitHub extension source: ${e}. Use owner/repo or https://github.com/owner/repo.`,{code:"github_invalid_source"})}a(Te,"invalidSource");import{createHash as Ds,randomUUID as yn}from"node:crypto";import{existsSync as te}from"node:fs";import{mkdir as gt,readFile as Hs,rename as le,rm as ue,stat as qs,writeFile as fn}from"node:fs/promises";import I from"node:path";var Me=1,Fs=15e3;function el(e={}){let t=I.resolve(e.home??e.rootPath??L()),o=I.resolve(e.rootPath??I.join(t,"library","extensions")),n=me(t).database,r=an({fetch:e.fetch,githubToken:e.githubToken}),s=e.now??(()=>new Date);async function i(){try{let P=await ee(t),g=await Promise.all(P.extensions.map(S=>yt(o,S)));return Ks(g,await ce(e.reservedSkillNames)),{rootPath:o,registryPath:n,extensions:g.sort(At),error:null}}catch(P){return{rootPath:o,registryPath:n,extensions:[],error:P instanceof Error?P.message:String(P)}}}a(i,"list");async function c(P){let g=await r.resolve(P),S=await ee(t),f=S.extensions.find(y=>y.id===g.preview.id)??null;return pe(g.preview,S.extensions.filter(y=>y.id!==f?.id),await ce(e.reservedSkillNames)),g.preview}a(c,"preview");async function l(P){let g=V(P.source);return Pt(o,g.id,async()=>{let S=await ee(t);if(S.extensions.some(v=>v.id===g.id))throw new A(`${g.owner}/${g.repo} is already installed.`,{code:"extension_already_installed",status:409});let f=await r.resolve(P);gn(f.preview),pe(f.preview,S.extensions,await ce(e.reservedSkillNames));let y=s().toISOString(),x=await pn({rootPath:o,resolution:f,installedAt:y,updatedAt:y,github:r});try{let v=await ce(e.reservedSkillNames);return await wt(t,s,B=>({...B,extensions:zs(B,x,v)})),await hn(o,x.id),x}catch(v){throw await mn(o,x.id),v}})}a(l,"add");async function u(P){let g=V(P.source);return Pt(o,g.id,async()=>{let S=await ee(t),f=Ue(S,g.id),y=await r.resolve({source:f.repositoryUrl,ref:P.ref?.trim()||f.requestedRef});if(gn(y.preview),pe(y.preview,S.extensions.filter(v=>v.id!==f.id),await ce(e.reservedSkillNames)),f.resolvedCommit===y.preview.resolvedCommit&&f.packageHash===y.preview.packageHash&&f.requestedRef===y.preview.requestedRef)return yt(o,f);let x=await pn({rootPath:o,resolution:y,installedAt:f.installedAt,updatedAt:s().toISOString(),github:r});try{let v=await ce(e.reservedSkillNames);return await wt(t,s,B=>({...B,extensions:Js(B,x,v)})),await hn(o,x.id),x}catch(v){throw await mn(o,x.id),v}})}a(u,"update");async function p(){let P=await i();if(P.error)throw new A(P.error,{code:"extension_registry_error"});let g={updated:[],unchanged:[],failed:[]};for(let S of P.extensions)try{let f=await u({source:S.repositoryUrl,ref:S.requestedRef});f.resolvedCommit===S.resolvedCommit&&f.packageHash===S.packageHash?g.unchanged.push(f):g.updated.push(f)}catch(f){g.failed.push({id:S.id,error:f instanceof Error?f.message:String(f)})}return g}a(p,"updateAll");async function h(P){let g=V(P),S=await ee(t);return yt(o,Ue(S,g.id))}a(h,"inspect");async function k(P){let g=V(P);return Pt(o,g.id,async()=>{let S=await ee(t),f=Ue(S,g.id),y=he(o,g.owner,g.repo),x=`${y}.${yn()}.remove`;te(y)&&await le(y,x);try{return await wt(t,s,v=>({...v,extensions:v.extensions.filter(B=>B.id!==f.id)})),await ue(x,{recursive:!0,force:!0}),f}catch(v){throw te(x)&&!te(y)&&await le(x,y),v}})}a(k,"remove");async function C(P){let g=P.trim();if(!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(g))throw new A("Extension skill name must be lowercase kebab-case.",{code:"extension_skill_invalid_name"});let S=await i();if(S.error)throw new A(S.error,{code:"extension_registry_error"});let f=S.extensions.flatMap(kt=>kt.skills.filter(Be=>Be.name===g).map(Be=>({extension:kt,skill:Be})));if(f.length===0)throw new A(`Extension skill not found: ${g}`,{code:"extension_skill_not_found",status:404});if(f.length>1)throw new A(`Extension skill name is ambiguous: ${g}`,{code:"extension_skill_conflict",status:409});let y=f[0];if(y.extension.validationStatus!=="valid"||y.skill.validationStatus!=="valid")throw new A(`Extension skill ${g} is not valid.`,{code:"extension_skill_invalid"});let x=Pn(y.extension.sourcePath,y.skill.relativePath),v=await Hs(x,"utf8"),B=Ds("sha256").update(v).digest("hex");if(B!==y.skill.sourceHash)throw new A(`Extension skill ${g} changed on disk. Update or reinstall its extension before using it.`,{code:"extension_skill_modified"});let K=Pe(v);if(K.messages.length>0||K.name!==g||!K.description)throw new A(`Extension skill ${g} is not valid. ${K.messages.join(" ")}`.trim(),{code:"extension_skill_invalid"});return{name:g,description:K.description,body:K.body,path:y.skill.relativePath,sourcePath:y.extension.sourcePath,sourceHash:B,charCount:v.length,packagePath:I.dirname(x),resourceFiles:y.skill.resourceFiles}}return a(C,"readSkill"),{rootPath:o,registryPath:n,list:i,preview:c,add:l,update:u,updateAll:p,inspect:h,remove:k,readSkill:C}}a(el,"createGithubExtensionManager");async function pn(e){let t=e.resolution.preview,o=he(e.rootPath,t.owner,t.repo),n=`${o}.${yn()}.install`,r=St(e.rootPath,t.id),s=I.join(n,"current");await ue(n,{recursive:!0,force:!0}),await ue(r,{recursive:!0,force:!0}),await gt(s,{recursive:!0,mode:448});try{await e.github.download(e.resolution,async(c,l,u)=>{let p=Pn(s,c);await gt(I.dirname(p),{recursive:!0,mode:448}),await fn(p,l,{mode:u?448:384})});let i=Gs(t,o,e.installedAt,e.updatedAt);return await fn(I.join(n,"extension.json"),`${JSON.stringify(i,null,2)}
21
- `,{mode:384}),await gt(I.dirname(o),{recursive:!0,mode:448}),te(o)&&await le(o,r),await le(n,o),i}catch(i){throw await ue(n,{recursive:!0,force:!0}),te(r)&&!te(o)&&await le(r,o),i}}a(pn,"materializeExtension");function Gs(e,t,o,n){let r=I.join(t,"current");return{...e,sourcePath:r,readmePath:e.readmePath?I.join(r,e.readmePath):null,installedAt:o,updatedAt:n,skills:e.skills.map(s=>({...s,sourcePath:I.join(r,s.relativePath)}))}}a(Gs,"installedExtension");async function hn(e,t){await ue(St(e,t),{recursive:!0,force:!0})}a(hn,"finalizeMaterialization");async function mn(e,t){let o=V(t.replace(/^github:/,"")),n=he(e,o.owner,o.repo),r=St(e,t);await ue(n,{recursive:!0,force:!0}),te(r)&&await le(r,n)}a(mn,"rollbackMaterialization");async function yt(e,t){let o=he(e,t.owner,t.repo),n=I.join(o,"current"),r=(await qs(I.join(o,"extension.json")).catch(()=>null))?.isFile()??!1,s=t.validationMessages.filter(i=>i!=="Installed files are missing.");return r||s.push("Installed files are missing."),{...t,sourcePath:n,readmePath:t.readmePath?I.join(n,I.basename(t.readmePath)):null,skills:t.skills.map(i=>({...i,sourcePath:I.join(n,i.relativePath)})),validationStatus:s.length===0?"valid":"error",validationMessages:s}}a(yt,"hydrateExtension");function gn(e){if(e.validationStatus!=="valid")throw new A(`Extension contains invalid skills: ${e.validationMessages.join(" ")}`,{code:"extension_invalid"})}a(gn,"assertInstallable");function pe(e,t,o){let n=new Map;for(let s of o)n.set(s,"a shipped OpenPond skill");for(let s of t)for(let i of s.skills)n.set(i.name,s.id);let r=e.skills.map(s=>({name:s.name,owner:n.get(s.name)})).filter(s=>!!s.owner);if(r.length!==0)throw new A(`Skill name conflict: ${r.map(s=>`${s.name} (${s.owner})`).join(", ")}.`,{code:"extension_skill_conflict",status:409})}a(pe,"assertSkillNamesAvailable");function zs(e,t,o){if(e.extensions.some(n=>n.id===t.id))throw new A(`${t.owner}/${t.repo} is already installed.`,{code:"extension_already_installed",status:409});return pe(t,e.extensions,o),[...e.extensions,t].sort(At)}a(zs,"appendInstalledExtension");function Js(e,t,o){return Ue(e,t.id),pe(t,e.extensions.filter(n=>n.id!==t.id),o),e.extensions.map(n=>n.id===t.id?t:n).sort(At)}a(Js,"replaceInstalledExtension");function Ks(e,t){let o=new Map;for(let n of t)o.set(n,"built-in");for(let n of e)for(let r of n.skills){let s=o.get(r.name);if(!s){o.set(r.name,n.id);continue}let i=`Skill name conflicts with ${s}: ${r.name}`;r.validationStatus="error",r.validationMessages=[...new Set([...r.validationMessages,i])],n.validationStatus="error",n.validationMessages=[...new Set([...n.validationMessages,i])]}}a(Ks,"markInstalledSkillConflicts");async function ce(e){let t=typeof e=="function"?await e():e??[];return[...new Set(t.map(o=>o.trim()).filter(Boolean))]}a(ce,"reservedSkillNames");function Ue(e,t){let o=e.extensions.find(n=>n.id===t);if(o)return o;throw new A(`${t.replace(/^github:/,"")} is not installed.`,{code:"extension_not_installed",status:404})}a(Ue,"requireInstalled");async function ee(e){let t=Le(e,"extension_installations","registry")?.value;if(!t)return Vs();if(t.schemaVersion!==Me||!Array.isArray(t.extensions)||!t.extensions.every(wn))throw new Error("Extension registry has an unsupported format.");return Ws(t)}a(ee,"readRegistry");async function wt(e,t,o){await ge(I.join(me(e).runtime,"extension-registry"),async()=>{let n=Le(e,"extension_installations","registry"),r=o(await ee(e));It(e,"extension_installations","registry",{...r,schemaVersion:Me,updatedAt:t().toISOString()},n?.revision??null)})}a(wt,"writeRegistry");function Ws(e){return{schemaVersion:Me,updatedAt:typeof e?.updatedAt=="string"?e.updatedAt:null,extensions:Array.isArray(e?.extensions)?e.extensions.filter(wn):[]}}a(Ws,"normalizeRegistry");function Vs(){return{schemaVersion:Me,updatedAt:null,extensions:[]}}a(Vs,"emptyRegistry");function wn(e){if(!e||typeof e!="object")return!1;let t=e;return t.source==="github"&&typeof t.id=="string"&&typeof t.owner=="string"&&typeof t.repo=="string"&&typeof t.repositoryUrl=="string"&&typeof t.requestedRef=="string"&&typeof t.resolvedCommit=="string"&&Array.isArray(t.skills)}a(wn,"isStoredExtension");function Pn(e,t){if(I.isAbsolute(t)||t.split(/[\\/]/).includes(".."))throw new A(`Unsafe extension path: ${t}`,{code:"extension_unsafe_path"});let o=I.resolve(e,...t.split("/")),n=`${I.resolve(e)}${I.sep}`;if(!o.startsWith(n))throw new A(`Unsafe extension path: ${t}`,{code:"extension_unsafe_path"});return o}a(Pn,"safeDestination");function he(e,t,o){return I.join(e,"github",t,o)}a(he,"extensionDirectory");function St(e,t){let o=V(t.replace(/^github:/,""));return`${he(e,o.owner,o.repo)}.previous`}a(St,"backupDirectory");async function Pt(e,t,o){let n=t.replace(/[^a-z0-9.-]+/gi,"-");return ge(I.join(e,".locks",n),o,Fs)}a(Pt,"withExtensionLock");function At(e,t){return e.id.localeCompare(t.id)}a(At,"extensionSort");import{createHash as Ys,randomUUID as Xs}from"node:crypto";function cl(e){let t=e.explicitKey?.trim();if(t)return t;let o=e.sourceHead?.trim()||"unknown-source",n=e.targetProjectId?.trim()||"no-target-project",r=Zs(e.input).slice(0,16),s=`profile-push-run:${e.localHead}:${o}:${e.runtimeAgentId}:${n}:${r}`;return e.retry?`${s}:retry:${(e.randomId??Xs)()}`:s}a(cl,"buildHostedRunIdempotencyKey");function Zs(e){return Ys("sha256").update(xt(e)).digest("hex")}a(Zs,"hashStableJson");function xt(e){return e===void 0?"undefined":e===null||typeof e!="object"?JSON.stringify(e)??"null":Array.isArray(e)?`[${e.map(t=>xt(t)).join(",")}]`:`{${Object.entries(e).sort(([t],[o])=>t.localeCompare(o)).map(([t,o])=>`${JSON.stringify(t)}:${xt(o)}`).join(",")}}`}a(xt,"stableJsonStringify");async function fl(e,t){let o=Qs(e);if(!o)return null;let n=await t.loadProfileState();return o==="help"?ea(n):ta(n)}a(fl,"runProfileSkillCommand");function Qs(e){let t=/^\/skill(?:\s+([\s\S]*))?$/i.exec(e.trim());if(!t)return null;let o=t[1]?.trim().toLowerCase()??"";return!o||o==="list"?"list":o==="help"?"help":null}a(Qs,"readOnlyProfileSkillAction");function ea(e){return{handled:!0,action:"help",profile:e,message:["Profile skills support:","- /skill list","- /skill create <what the skill should help with>","- /skill create <skill-name>: <what the skill should help with>","- /skill create --name <skill-name> <what the skill should help with>","- /skill edit <skill-name> <change request>","","Create and edit run as normal model turns with the bundled OpenPond Skill Authoring skill. Skills may include SKILL.md plus focused scripts, references, and assets. Use an Agent when the workflow needs code, actions, durable runtime behavior, setup, or Evals."].join(`
19
+ `)}a(To,"commandFailureDetail");var Ei=new URL(Pe).hostname,Ri=new URL(we).hostname;async function Ho(e,t,o){let n=new URLSearchParams;o?.handle&&n.set("handle",o.handle),typeof o?.limit=="number"&&Number.isFinite(o.limit)&&n.set("limit",String(Math.max(1,Math.floor(o.limit)))),typeof o?.offset=="number"&&Number.isFinite(o.offset)&&n.set("offset",String(Math.max(0,Math.floor(o.offset)))),typeof o?.includeScheduled=="boolean"&&n.set("includeScheduled",o.includeScheduled?"true":"false");let r=n.toString(),s=await j(e,t,`/apps/list${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let c=await s.text().catch(()=>"");throw new Error(`Apps list failed: ${s.status} ${c}`)}let i=await s.json().catch(()=>({}));return Array.isArray(i.apps)?i.apps:[]}a(Ho,"listApps");async function qo(e,t,o){let n=await j(e,t,"/apps/repo/create",{method:"POST",body:JSON.stringify(o)});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Repo create failed: ${n.status} ${r}`)}return await n.json()}a(qo,"createRepo");async function _i(e,t,o,n){let r=await j(e,t,`/apps/${encodeURIComponent(o)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:n})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Code visibility update failed: ${r.status} ${s}`)}return await r.json()}a(_i,"updateAppCodeVisibility");async function Fo(e,t,o){let n=await j(e,t,`/v4/apps/${o}/environment`,{method:"GET"});if(!n.ok){let r=await n.text().catch(()=>"");throw new Error(`Environment get failed: ${n.status} ${r}`)}return await n.json()}a(Fo,"getAppEnvironment");async function Go(e,t){let o=await j(e,t,"/v1/account",{method:"GET"});if(!o.ok){let n=await o.text().catch(()=>"");throw new Error(`Account lookup failed: ${o.status} ${n}`)}return await o.json()}a(Go,"getOpenPondAccount");var zo=3600*1e3;async function Mc(e,t,o,n={}){let r=await(n.apiFetch??j)(e,t,n.path??bt,{method:"POST",signal:n.signal,body:JSON.stringify(o)}),s=await r.json().catch(()=>({})),i=r.status!==404&&r.status!==405&&r.status!==501;return r.ok?{ok:typeof s.ok=="boolean"?s.ok:!0,status:r.status,endpointAvailable:i,output:Yo(s),data:Xo(s)}:{ok:!1,status:r.status,endpointAvailable:i,output:Yo(s)??(i?`Connected app tool call failed with status ${r.status}.`:`Connected app tool-call endpoint is not available (${r.status}).`),data:Xo(s)}}a(Mc,"executeConnectedAppToolCall");function Yo(e){return typeof e.output=="string"&&e.output.trim()?e.output.trim():typeof e.message=="string"&&e.message.trim()?e.message.trim():typeof e.error=="string"&&e.error.trim()?e.error.trim():null}a(Yo,"responsePayloadMessage");function Xo(e){return"data"in e?e.data:"result"in e?e.result:null}a(Xo,"responsePayloadData");var A=class extends Error{static{a(this,"GithubExtensionError")}code;status;constructor(t,o){super(t),this.name="GithubExtensionError",this.code=o.code,this.status=o.status??400}};import{createHash as nn}from"node:crypto";import ht from"node:path";var Zo="HEAD",Qo=64,en=512,rn=20*1024*1024,mt=5*1024*1024,sn=8,vs=/^[a-z0-9]+(?:-[a-z0-9]+)*$/,tn=/^[A-Za-z0-9_.-]+$/,on=new Set(["agents","assets","references","scripts"]);function an(e={}){let t=e.fetch??fetch,o=e.githubToken?.trim()||process.env.GITHUB_TOKEN?.trim()||process.env.GH_TOKEN?.trim()||null;return{async resolve(n){let r=await Es(n,t,o);return{preview:await Rs(r,t,o),files:cn(r)}},async download(n,r){await Ts({resolution:n,fetchImpl:t,githubToken:o,writeFile:r})}}}a(an,"createGithubSourceClient");function V(e){let t=e.trim(),o="",n="";if(/^(?:https?:\/\/)?github\.com\//i.test(t)){let i=new URL(t.startsWith("http")?t:`https://${t}`);if(i.hostname.toLowerCase()!=="github.com")throw Te(e);let c=i.pathname.replace(/^\/+|\/+$/g,"").split("/");if(c.length!==2)throw Te(e);[o="",n=""]=c}else{let c=t.replace(/^github:/i,"").replace(/^\/+|\/+$/g,"").split("/");if(c.length!==2)throw Te(e);[o="",n=""]=c}if(n=n.replace(/\.git$/i,""),!tn.test(o)||!tn.test(n))throw Te(e);let r=o.toLowerCase(),s=n.toLowerCase();return{id:`github:${r}/${s}`,owner:r,repo:s,repositoryUrl:`https://github.com/${r}/${s}`}}a(V,"parseGithubExtensionSource");async function Es(e,t,o){let n=V(e.source),r=e.ref?.trim()||Zo,s=await pt(t,o,`/repos/${n.owner}/${n.repo}`),i=r===Zo?s.default_branch?.trim()||"main":r,c=await pt(t,o,`/repos/${n.owner}/${n.repo}/commits/${encodeURIComponent(i)}`),l=c.sha?.trim(),u=c.commit?.tree?.sha?.trim();if(!l||!u)throw new A("GitHub returned an incomplete commit response.",{code:"github_invalid_commit",status:502});let p=await pt(t,o,`/repos/${n.owner}/${n.repo}/git/trees/${u}?recursive=1`);if(p.truncated)throw new A("The GitHub repository tree is too large to install safely.",{code:"github_tree_truncated"});let h=(p.tree??[]).filter(Bs),k=$s(h);if(k.length===0)throw new A("No skills found. Add SKILL.md at the repository root or use a standard agent skills directory.",{code:"extension_no_skills"});if(k.length>Qo)throw new A(`Extension contains more than ${Qo} skills.`,{code:"extension_too_many_skills"});Ms(k);let C=h.find(P=>P.type==="blob"&&/^readme(?:\.[^/]+)?$/i.test(P.path))??null;return{identity:n,requestedRef:r,resolvedCommit:l,tree:h,skillPackages:k,readme:C}}a(Es,"resolveSource");async function Rs(e,t,o){let n=await dn(e.skillPackages,sn,async c=>{let l=await Us(e,c.entry,t,o);return _s(c,l)}),r=js(n.map(c=>c.name));for(let c of n)r.has(c.name)&&(c.validationStatus="error",c.validationMessages=[...c.validationMessages,`Duplicate skill name: ${c.name}`]);let s=n.flatMap(c=>c.validationMessages.map(l=>`${c.relativePath}: ${l}`)),i=cn(e);return{...e.identity,source:"github",requestedRef:e.requestedRef,resolvedCommit:e.resolvedCommit,sourcePath:null,readmePath:e.readme?.path??null,packageHash:Ls(i),skills:n.sort((c,l)=>c.name.localeCompare(l.name)),validationStatus:s.length===0?"valid":"error",validationMessages:s}}a(Rs,"buildPreview");function _s(e,t){let o=Se(t),n=e.root==="."?null:ht.posix.basename(e.root),r=o.name??n??"invalid-skill",s=[...o.messages];vs.test(r)||s.push("Skill name must be lowercase kebab-case."),n&&r!==n&&s.push(`Skill name must match its directory name (${n}).`);let i=e.files.filter(c=>c.path!==e.entry.path).map(c=>Ns(e.root,c.path)).sort();return{name:r,description:o.description??"",relativePath:e.root==="."?"SKILL.md":`${e.root}/SKILL.md`,sourcePath:"",charCount:t.length,sourceHash:nn("sha256").update(t).digest("hex"),resourceFiles:i,validationStatus:s.length===0?"valid":"error",validationMessages:[...new Set(s)]}}a(_s,"previewSkill");function $s(e){let t=[],o=e.find(c=>c.type==="blob"&&c.path==="SKILL.md");o&&t.push({root:".",entry:o});let n=e.filter(c=>c.type==="blob"&&c.path.endsWith("/SKILL.md")),r=n.filter(c=>Os(c.path)),s=r.length>0?r:n,i=new Set(s.map(c=>ht.posix.dirname(c.path)));for(let c of s){let l=ht.posix.dirname(c.path);[...i].some(u=>u!==l&&l.startsWith(`${u}/`))||t.push({root:l,entry:c})}return t.map(({root:c,entry:l})=>{let u=e.filter(k=>{if(k.type!=="blob")return!1;if(c!==".")return k.path.startsWith(`${c}/`);if(k.path==="SKILL.md")return!0;let C=k.path.split("/",1)[0]??"";return on.has(C)}),p=e.find(k=>k.type!=="blob"&&k.type!=="tree"&&(c==="."?k.path==="SKILL.md"||on.has(k.path.split("/",1)[0]??""):k.path.startsWith(`${c}/`))),h=u.find(k=>k.mode==="120000");if(p||h)throw new A(`Skill package ${c} contains a symlink or submodule.`,{code:"extension_unsafe_entry"});return{root:c,entry:l,files:u}})}a($s,"discoverSkillPackages");function Os(e){let t=e.split("/");if(t.at(-1)!=="SKILL.md")return!1;let o=t.slice(0,-1);if(o.length<2)return!1;let n=o.lastIndexOf("skills");if(n<0||n>2)return!1;let r=o.slice(0,n),s=o.slice(n+1);if(s.length<1||s.length>2)return!1;if(n===0)return!0;let i=r[0]??"";return i.startsWith(".")||i==="agent"||i==="data"}a(Os,"isStandardAgentSkillsPath");function cn(e){let t=new Map;e.readme&&t.set(e.readme.path,e.readme);for(let o of e.skillPackages)for(let n of o.files)t.set(n.path,n);return[...t.values()].sort((o,n)=>o.path.localeCompare(n.path))}a(cn,"filesToDownload");async function Ts(e){let t=0;await dn(e.resolution.files,sn,async o=>{let n=await ln({owner:e.resolution.preview.owner,repo:e.resolution.preview.repo,commit:e.resolution.preview.resolvedCommit,file:o,fetchImpl:e.fetchImpl,githubToken:e.githubToken});if(t+=n.byteLength,t>rn)throw new A("Extension download exceeds the maximum allowed size.",{code:"extension_too_large"});await e.writeFile(o.path,n,o.mode==="100755")})}a(Ts,"downloadFiles");async function Us(e,t,o,n){let r=await ln({owner:e.identity.owner,repo:e.identity.repo,commit:e.resolvedCommit,file:t,fetchImpl:o,githubToken:n});return new TextDecoder("utf-8",{fatal:!0}).decode(r)}a(Us,"downloadText");async function ln(e){let t=e.file.path.split("/").map(encodeURIComponent).join("/"),o=`https://raw.githubusercontent.com/${e.owner}/${e.repo}/${e.commit}/${t}`,n=await e.fetchImpl(o,{headers:un(e.githubToken,"application/vnd.github.raw"),redirect:"follow"});if(!n.ok)throw new A(`GitHub file download failed (${n.status}): ${e.file.path}`,{code:"github_download_failed",status:n.status});let r=Number(n.headers.get("content-length"));if(Number.isFinite(r)&&r>mt)throw new A(`Extension file is too large: ${e.file.path}`,{code:"extension_file_too_large"});let s=new Uint8Array(await n.arrayBuffer());if(s.byteLength>mt)throw new A(`Extension file is too large: ${e.file.path}`,{code:"extension_file_too_large"});return s}a(ln,"downloadBytes");async function pt(e,t,o){let n=await e(`https://api.github.com${o}`,{headers:un(t,"application/vnd.github+json")});if(!n.ok){let r=await n.json().catch(()=>null),s=typeof r?.message=="string"?`: ${r.message}`:"";throw new A(`GitHub request failed (${n.status})${s}`,{code:n.status===404?"github_repository_not_found":"github_request_failed",status:n.status})}return await n.json()}a(pt,"githubJson");function un(e,t){let o=new Headers({Accept:t,"User-Agent":"openpond-extension-installer","X-GitHub-Api-Version":"2022-11-28"});return e&&o.set("Authorization",`Bearer ${e}`),o}a(un,"githubHeaders");function Ms(e){let t=new Map;for(let n of e)for(let r of n.files)t.set(r.path,r);if(t.size>en)throw new A(`Extension contains more than ${en} skill files.`,{code:"extension_too_many_files"});let o=0;for(let n of t.values()){if((n.size??0)>mt)throw new A(`Extension file is too large: ${n.path}`,{code:"extension_file_too_large"});o+=n.size??0}if(o>rn)throw new A("Extension exceeds the maximum allowed size.",{code:"extension_too_large"})}a(Ms,"validateDownloadLimits");function Bs(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.path=="string"&&!t.path.startsWith("/")&&!t.path.split("/").includes("..")&&typeof t.mode=="string"&&(t.type==="blob"||t.type==="tree"||t.type==="commit")&&typeof t.sha=="string"}a(Bs,"validTreeEntry");function Ls(e){let t=nn("sha256");for(let o of e)t.update(`${o.path}\0${o.sha}\0${o.size??""}
20
+ `);return t.digest("hex")}a(Ls,"hashTree");function Ns(e,t){return e==="."?t:t.slice(e.length+1)}a(Ns,"relativeSkillPath");function js(e){let t=new Set,o=new Set;for(let n of e)t.has(n)&&o.add(n),t.add(n);return o}a(js,"duplicateValues");async function dn(e,t,o){let n=new Array(e.length),r=0;async function s(){for(;r<e.length;){let i=r;r+=1,n[i]=await o(e[i])}}return a(s,"worker"),await Promise.all(Array.from({length:Math.min(t,e.length)},s)),n}a(dn,"mapConcurrent");function Te(e){return new A(`Invalid GitHub extension source: ${e}. Use owner/repo or https://github.com/owner/repo.`,{code:"github_invalid_source"})}a(Te,"invalidSource");import{createHash as Ds,randomUUID as yn}from"node:crypto";import{existsSync as te}from"node:fs";import{mkdir as gt,readFile as Hs,rename as le,rm as ue,stat as qs,writeFile as fn}from"node:fs/promises";import I from"node:path";var Me=1,Fs=15e3;function tl(e={}){let t=I.resolve(e.home??e.rootPath??L()),o=I.resolve(e.rootPath??I.join(t,"library","extensions")),n=ge(t).database,r=an({fetch:e.fetch,githubToken:e.githubToken}),s=e.now??(()=>new Date);async function i(){try{let P=await ee(t),g=await Promise.all(P.extensions.map(S=>yt(o,S)));return Ks(g,await ce(e.reservedSkillNames)),{rootPath:o,registryPath:n,extensions:g.sort(At),error:null}}catch(P){return{rootPath:o,registryPath:n,extensions:[],error:P instanceof Error?P.message:String(P)}}}a(i,"list");async function c(P){let g=await r.resolve(P),S=await ee(t),f=S.extensions.find(y=>y.id===g.preview.id)??null;return he(g.preview,S.extensions.filter(y=>y.id!==f?.id),await ce(e.reservedSkillNames)),g.preview}a(c,"preview");async function l(P){let g=V(P.source);return Pt(o,g.id,async()=>{let S=await ee(t);if(S.extensions.some(v=>v.id===g.id))throw new A(`${g.owner}/${g.repo} is already installed.`,{code:"extension_already_installed",status:409});let f=await r.resolve(P);gn(f.preview),he(f.preview,S.extensions,await ce(e.reservedSkillNames));let y=s().toISOString(),x=await pn({rootPath:o,resolution:f,installedAt:y,updatedAt:y,github:r});try{let v=await ce(e.reservedSkillNames);return await wt(t,s,B=>({...B,extensions:zs(B,x,v)})),await hn(o,x.id),x}catch(v){throw await mn(o,x.id),v}})}a(l,"add");async function u(P){let g=V(P.source);return Pt(o,g.id,async()=>{let S=await ee(t),f=Ue(S,g.id),y=await r.resolve({source:f.repositoryUrl,ref:P.ref?.trim()||f.requestedRef});if(gn(y.preview),he(y.preview,S.extensions.filter(v=>v.id!==f.id),await ce(e.reservedSkillNames)),f.resolvedCommit===y.preview.resolvedCommit&&f.packageHash===y.preview.packageHash&&f.requestedRef===y.preview.requestedRef)return yt(o,f);let x=await pn({rootPath:o,resolution:y,installedAt:f.installedAt,updatedAt:s().toISOString(),github:r});try{let v=await ce(e.reservedSkillNames);return await wt(t,s,B=>({...B,extensions:Js(B,x,v)})),await hn(o,x.id),x}catch(v){throw await mn(o,x.id),v}})}a(u,"update");async function p(){let P=await i();if(P.error)throw new A(P.error,{code:"extension_registry_error"});let g={updated:[],unchanged:[],failed:[]};for(let S of P.extensions)try{let f=await u({source:S.repositoryUrl,ref:S.requestedRef});f.resolvedCommit===S.resolvedCommit&&f.packageHash===S.packageHash?g.unchanged.push(f):g.updated.push(f)}catch(f){g.failed.push({id:S.id,error:f instanceof Error?f.message:String(f)})}return g}a(p,"updateAll");async function h(P){let g=V(P),S=await ee(t);return yt(o,Ue(S,g.id))}a(h,"inspect");async function k(P){let g=V(P);return Pt(o,g.id,async()=>{let S=await ee(t),f=Ue(S,g.id),y=me(o,g.owner,g.repo),x=`${y}.${yn()}.remove`;te(y)&&await le(y,x);try{return await wt(t,s,v=>({...v,extensions:v.extensions.filter(B=>B.id!==f.id)})),await ue(x,{recursive:!0,force:!0}),f}catch(v){throw te(x)&&!te(y)&&await le(x,y),v}})}a(k,"remove");async function C(P){let g=P.trim();if(!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(g))throw new A("Extension skill name must be lowercase kebab-case.",{code:"extension_skill_invalid_name"});let S=await i();if(S.error)throw new A(S.error,{code:"extension_registry_error"});let f=S.extensions.flatMap(kt=>kt.skills.filter(Be=>Be.name===g).map(Be=>({extension:kt,skill:Be})));if(f.length===0)throw new A(`Extension skill not found: ${g}`,{code:"extension_skill_not_found",status:404});if(f.length>1)throw new A(`Extension skill name is ambiguous: ${g}`,{code:"extension_skill_conflict",status:409});let y=f[0];if(y.extension.validationStatus!=="valid"||y.skill.validationStatus!=="valid")throw new A(`Extension skill ${g} is not valid.`,{code:"extension_skill_invalid"});let x=Pn(y.extension.sourcePath,y.skill.relativePath),v=await Hs(x,"utf8"),B=Ds("sha256").update(v).digest("hex");if(B!==y.skill.sourceHash)throw new A(`Extension skill ${g} changed on disk. Update or reinstall its extension before using it.`,{code:"extension_skill_modified"});let K=Se(v);if(K.messages.length>0||K.name!==g||!K.description)throw new A(`Extension skill ${g} is not valid. ${K.messages.join(" ")}`.trim(),{code:"extension_skill_invalid"});return{name:g,description:K.description,body:K.body,path:y.skill.relativePath,sourcePath:y.extension.sourcePath,sourceHash:B,charCount:v.length,packagePath:I.dirname(x),resourceFiles:y.skill.resourceFiles}}return a(C,"readSkill"),{rootPath:o,registryPath:n,list:i,preview:c,add:l,update:u,updateAll:p,inspect:h,remove:k,readSkill:C}}a(tl,"createGithubExtensionManager");async function pn(e){let t=e.resolution.preview,o=me(e.rootPath,t.owner,t.repo),n=`${o}.${yn()}.install`,r=St(e.rootPath,t.id),s=I.join(n,"current");await ue(n,{recursive:!0,force:!0}),await ue(r,{recursive:!0,force:!0}),await gt(s,{recursive:!0,mode:448});try{await e.github.download(e.resolution,async(c,l,u)=>{let p=Pn(s,c);await gt(I.dirname(p),{recursive:!0,mode:448}),await fn(p,l,{mode:u?448:384})});let i=Gs(t,o,e.installedAt,e.updatedAt);return await fn(I.join(n,"extension.json"),`${JSON.stringify(i,null,2)}
21
+ `,{mode:384}),await gt(I.dirname(o),{recursive:!0,mode:448}),te(o)&&await le(o,r),await le(n,o),i}catch(i){throw await ue(n,{recursive:!0,force:!0}),te(r)&&!te(o)&&await le(r,o),i}}a(pn,"materializeExtension");function Gs(e,t,o,n){let r=I.join(t,"current");return{...e,sourcePath:r,readmePath:e.readmePath?I.join(r,e.readmePath):null,installedAt:o,updatedAt:n,skills:e.skills.map(s=>({...s,sourcePath:I.join(r,s.relativePath)}))}}a(Gs,"installedExtension");async function hn(e,t){await ue(St(e,t),{recursive:!0,force:!0})}a(hn,"finalizeMaterialization");async function mn(e,t){let o=V(t.replace(/^github:/,"")),n=me(e,o.owner,o.repo),r=St(e,t);await ue(n,{recursive:!0,force:!0}),te(r)&&await le(r,n)}a(mn,"rollbackMaterialization");async function yt(e,t){let o=me(e,t.owner,t.repo),n=I.join(o,"current"),r=(await qs(I.join(o,"extension.json")).catch(()=>null))?.isFile()??!1,s=t.validationMessages.filter(i=>i!=="Installed files are missing.");return r||s.push("Installed files are missing."),{...t,sourcePath:n,readmePath:t.readmePath?I.join(n,I.basename(t.readmePath)):null,skills:t.skills.map(i=>({...i,sourcePath:I.join(n,i.relativePath)})),validationStatus:s.length===0?"valid":"error",validationMessages:s}}a(yt,"hydrateExtension");function gn(e){if(e.validationStatus!=="valid")throw new A(`Extension contains invalid skills: ${e.validationMessages.join(" ")}`,{code:"extension_invalid"})}a(gn,"assertInstallable");function he(e,t,o){let n=new Map;for(let s of o)n.set(s,"a shipped OpenPond skill");for(let s of t)for(let i of s.skills)n.set(i.name,s.id);let r=e.skills.map(s=>({name:s.name,owner:n.get(s.name)})).filter(s=>!!s.owner);if(r.length!==0)throw new A(`Skill name conflict: ${r.map(s=>`${s.name} (${s.owner})`).join(", ")}.`,{code:"extension_skill_conflict",status:409})}a(he,"assertSkillNamesAvailable");function zs(e,t,o){if(e.extensions.some(n=>n.id===t.id))throw new A(`${t.owner}/${t.repo} is already installed.`,{code:"extension_already_installed",status:409});return he(t,e.extensions,o),[...e.extensions,t].sort(At)}a(zs,"appendInstalledExtension");function Js(e,t,o){return Ue(e,t.id),he(t,e.extensions.filter(n=>n.id!==t.id),o),e.extensions.map(n=>n.id===t.id?t:n).sort(At)}a(Js,"replaceInstalledExtension");function Ks(e,t){let o=new Map;for(let n of t)o.set(n,"built-in");for(let n of e)for(let r of n.skills){let s=o.get(r.name);if(!s){o.set(r.name,n.id);continue}let i=`Skill name conflicts with ${s}: ${r.name}`;r.validationStatus="error",r.validationMessages=[...new Set([...r.validationMessages,i])],n.validationStatus="error",n.validationMessages=[...new Set([...n.validationMessages,i])]}}a(Ks,"markInstalledSkillConflicts");async function ce(e){let t=typeof e=="function"?await e():e??[];return[...new Set(t.map(o=>o.trim()).filter(Boolean))]}a(ce,"reservedSkillNames");function Ue(e,t){let o=e.extensions.find(n=>n.id===t);if(o)return o;throw new A(`${t.replace(/^github:/,"")} is not installed.`,{code:"extension_not_installed",status:404})}a(Ue,"requireInstalled");async function ee(e){let t=Le(e,"extension_installations","registry")?.value;if(!t)return Vs();if(t.schemaVersion!==Me||!Array.isArray(t.extensions)||!t.extensions.every(wn))throw new Error("Extension registry has an unsupported format.");return Ws(t)}a(ee,"readRegistry");async function wt(e,t,o){await ye(I.join(ge(e).runtime,"extension-registry"),async()=>{let n=Le(e,"extension_installations","registry"),r=o(await ee(e));It(e,"extension_installations","registry",{...r,schemaVersion:Me,updatedAt:t().toISOString()},n?.revision??null)})}a(wt,"writeRegistry");function Ws(e){return{schemaVersion:Me,updatedAt:typeof e?.updatedAt=="string"?e.updatedAt:null,extensions:Array.isArray(e?.extensions)?e.extensions.filter(wn):[]}}a(Ws,"normalizeRegistry");function Vs(){return{schemaVersion:Me,updatedAt:null,extensions:[]}}a(Vs,"emptyRegistry");function wn(e){if(!e||typeof e!="object")return!1;let t=e;return t.source==="github"&&typeof t.id=="string"&&typeof t.owner=="string"&&typeof t.repo=="string"&&typeof t.repositoryUrl=="string"&&typeof t.requestedRef=="string"&&typeof t.resolvedCommit=="string"&&Array.isArray(t.skills)}a(wn,"isStoredExtension");function Pn(e,t){if(I.isAbsolute(t)||t.split(/[\\/]/).includes(".."))throw new A(`Unsafe extension path: ${t}`,{code:"extension_unsafe_path"});let o=I.resolve(e,...t.split("/")),n=`${I.resolve(e)}${I.sep}`;if(!o.startsWith(n))throw new A(`Unsafe extension path: ${t}`,{code:"extension_unsafe_path"});return o}a(Pn,"safeDestination");function me(e,t,o){return I.join(e,"github",t,o)}a(me,"extensionDirectory");function St(e,t){let o=V(t.replace(/^github:/,""));return`${me(e,o.owner,o.repo)}.previous`}a(St,"backupDirectory");async function Pt(e,t,o){let n=t.replace(/[^a-z0-9.-]+/gi,"-");return ye(I.join(e,".locks",n),o,Fs)}a(Pt,"withExtensionLock");function At(e,t){return e.id.localeCompare(t.id)}a(At,"extensionSort");import{createHash as Ys,randomUUID as Xs}from"node:crypto";function ll(e){let t=e.explicitKey?.trim();if(t)return t;let o=e.sourceHead?.trim()||"unknown-source",n=e.targetProjectId?.trim()||"no-target-project",r=Zs(e.input).slice(0,16),s=`profile-push-run:${e.localHead}:${o}:${e.runtimeAgentId}:${n}:${r}`;return e.retry?`${s}:retry:${(e.randomId??Xs)()}`:s}a(ll,"buildHostedRunIdempotencyKey");function Zs(e){return Ys("sha256").update(xt(e)).digest("hex")}a(Zs,"hashStableJson");function xt(e){return e===void 0?"undefined":e===null||typeof e!="object"?JSON.stringify(e)??"null":Array.isArray(e)?`[${e.map(t=>xt(t)).join(",")}]`:`{${Object.entries(e).sort(([t],[o])=>t.localeCompare(o)).map(([t,o])=>`${JSON.stringify(t)}:${xt(o)}`).join(",")}}`}a(xt,"stableJsonStringify");async function pl(e,t){let o=Qs(e);if(!o)return null;let n=await t.loadProfileState();return o==="help"?ea(n):ta(n)}a(pl,"runProfileSkillCommand");function Qs(e){let t=/^\/skill(?:\s+([\s\S]*))?$/i.exec(e.trim());if(!t)return null;let o=t[1]?.trim().toLowerCase()??"";return!o||o==="list"?"list":o==="help"?"help":null}a(Qs,"readOnlyProfileSkillAction");function ea(e){return{handled:!0,action:"help",profile:e,message:["Profile skills support:","- /skill list","- /skill create <what the skill should help with>","- /skill create <skill-name>: <what the skill should help with>","- /skill create --name <skill-name> <what the skill should help with>","- /skill edit <skill-name> <change request>","","Create and edit run as normal model turns with the bundled OpenPond Skill Authoring skill. Skills may include SKILL.md plus focused scripts, references, and assets. Use an Agent when the workflow needs code, actions, durable runtime behavior, setup, or Evals."].join(`
22
22
  `)}}a(ea,"profileSkillHelp");function ta(e){let t=e.skills.slice().sort((n,r)=>n.name.localeCompare(r.name));return{handled:!0,action:"list",message:t.length===0?"No profile skills found in the active profile.":[`Profile skills (${t.length}):`,...t.map(n=>{let r=n.validationStatus==="valid"?"valid":`invalid: ${n.validationMessages.join("; ")}`;return`- ${n.name} (${r}) ${n.path}`})].join(`
23
- `),skills:t,profile:e}}a(ta,"listProfileSkills");export{Ho as a,qo as b,Ri as c,Fo as d,Go as e,xe as f,T as g,ze as h,_n as i,$n as j,Uc as k,A as l,el as m,cl as n,ve as o,Jn as p,Ca as q,ro as r,so as s,ao as t,fr as u,hr as v,mr as w,gr as x,yr as y,Ir as z,ko as A,ni as B,ri as C,si as D,ai as E,ii as F,J as G,ct as H,Cr as I,vr as J,ci as K,li as L,ui as M,di as N,Io as O,fi as P,pi as Q,hi as R,mi as S,fl as T};
23
+ `),skills:t,profile:e}}a(ta,"listProfileSkills");export{Ho as a,qo as b,_i as c,Fo as d,Go as e,ke as f,T as g,ze as h,_n as i,$n as j,Mc as k,A as l,tl as m,ll as n,Ee as o,Jn as p,Ca as q,ro as r,so as s,ao as t,fr as u,hr as v,mr as w,gr as x,yr as y,Ir as z,ko as A,ni as B,ri as C,si as D,ai as E,ii as F,J as G,ct as H,Cr as I,vr as J,ci as K,li as L,ui as M,di as N,fi as O,Io as P,pi as Q,hi as R,mi as S,gi as T,pl as U};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{L as r}from"./chunk-6QUICEQA.js";import{P as o}from"./chunk-XWLI7WJH.js";import{d as t}from"./chunk-QVRNOGAU.js";import{e as a}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";var s=e.object({profileRef:r,manifest:o,metric:t,gradeRefs:e.array(a),receiptRefs:e.array(a),passRate:e.number().min(0).max(1),passed:e.boolean(),completedAt:e.string().datetime(),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict();export{s as a};