openpond 0.2.6 → 0.2.8
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.
- package/README.md +2 -0
- package/dist/api/core.d.ts +2 -0
- package/dist/app-server.d.ts +2693 -0
- package/dist/app-server.js +2 -0
- package/dist/chunks/{actions-command-R5R3KR5Q.js → actions-command-V5DZWEON.js} +1 -1
- package/dist/chunks/{app-layer-JNSKATX7.js → app-layer-SFV6ZPKZ.js} +1 -1
- package/dist/chunks/app-server-runtime-OYF6XBVI.js +2 -0
- package/dist/chunks/{apps-3TXUNF65.js → apps-SR7CAM42.js} +1 -1
- package/dist/chunks/{chunk-OD6AGGH6.js → chunk-4LLHOG7L.js} +1 -1
- package/dist/chunks/{chunk-NWI7H753.js → chunk-5N6YRABR.js} +2 -2
- package/dist/chunks/{chunk-3NDRIQTI.js → chunk-73KFNV3D.js} +1 -1
- package/dist/chunks/chunk-B6IIGPWS.js +6 -0
- package/dist/chunks/chunk-BB6DJKXX.js +19 -0
- package/dist/chunks/chunk-DY5RF2YE.js +26 -0
- package/dist/chunks/{chunk-37V5TT45.js → chunk-EEBLJPIB.js} +1 -1
- package/dist/chunks/{chunk-CCJG7GLE.js → chunk-G2VYRU27.js} +1 -1
- package/dist/chunks/chunk-J2S7BOZU.js +12 -0
- package/dist/chunks/chunk-KRNLKKN6.js +5 -0
- package/dist/chunks/{chunk-2LADHICK.js → chunk-LLJI6QAY.js} +1 -1
- package/dist/chunks/{chunk-FYCJSUFV.js → chunk-NNLI4OWY.js} +1 -1
- package/dist/chunks/{chunk-U6HOHOOI.js → chunk-O4IARD7H.js} +1 -1
- package/dist/chunks/{chunk-ZKA3XSM7.js → chunk-QOR55VHT.js} +1 -1
- package/dist/chunks/{chunk-A42DFLOR.js → chunk-QWE3RHNY.js} +1 -1
- package/dist/chunks/{chunk-4HIHSG5M.js → chunk-S64WASAO.js} +1 -1
- package/dist/chunks/chunk-SS3EG6S2.js +2 -0
- package/dist/chunks/{chunk-EESJULVS.js → chunk-T2GNPVRY.js} +7 -3
- package/dist/chunks/{chunk-FESS4IR4.js → chunk-UW4XDFLU.js} +439 -343
- package/dist/chunks/chunk-UW6ES5DM.js +28 -0
- package/dist/chunks/{chunk-K35OOAW2.js → chunk-V4ACXLID.js} +1 -1
- package/dist/chunks/{chunk-3ZEV5UKA.js → chunk-VJBEK64H.js} +1 -1
- package/dist/chunks/{chunk-RWSAGQTP.js → chunk-Y7ZYJQGZ.js} +1 -1
- package/dist/chunks/cli-MS4KADND.js +2 -0
- package/dist/chunks/{configuration-command-54D6TOEV.js → configuration-command-EBN7RH3X.js} +1 -1
- package/dist/chunks/{continual-D75WA7E7.js → continual-OJYXVTIZ.js} +1 -1
- package/dist/chunks/{core-commands-F35UFIXE.js → core-commands-2S4UQPXW.js} +1 -1
- package/dist/chunks/{desktop-test-U2MMP2NE.js → desktop-test-WN7ZLQVQ.js} +1 -1
- package/dist/chunks/{dist-NKLXFA37.js → dist-UA2RQUA4.js} +1 -1
- package/dist/chunks/extension-ERM5EUUO.js +6 -0
- package/dist/chunks/{help-VGDW6SBX.js → help-N25BKIHM.js} +1 -1
- package/dist/chunks/{opchat-QK2KIHN3.js → opchat-V4A4WCND.js} +1 -1
- package/dist/chunks/{organizations-MUDOF6VM.js → organizations-TSOT7MDT.js} +1 -1
- package/dist/chunks/{profile-FW5COIFH.js → profile-3JQ3XM6Q.js} +1 -1
- package/dist/chunks/{project-agent-G6GJOIVI.js → project-agent-S76FWVPV.js} +1 -1
- package/dist/chunks/{sandbox-command-H7INTQJZ.js → sandbox-command-YQDGQBBQ.js} +1 -1
- package/dist/chunks/{sandbox-template-7MXJQ3X4.js → sandbox-template-GM2A3437.js} +1 -1
- package/dist/chunks/{src-E7WA3OPU.js → src-BC7WOVGF.js} +1 -1
- package/dist/chunks/src-S7XTFQ4V.js +319 -0
- package/dist/chunks/{teams-bot-ZDTMGPCU.js → teams-bot-M6QLZAHA.js} +1 -1
- package/dist/chunks/{workspaces-UB2HJGNE.js → workspaces-MJVCPH22.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/profile/local-profile.d.ts +7 -0
- package/dist/sandbox/sandbox-instance-client.d.ts +2 -1
- package/dist/sandbox/types/client.d.ts +2 -0
- package/dist/skills/openpond-agent-authoring/references/profile-layout.md +9 -0
- package/dist/web/assets/App-7h_oHCFd.css +1 -0
- package/dist/web/assets/App-Dx38Dhlo.js +176 -0
- package/dist/web/assets/{AppDialog-CtqbY289.js → AppDialog-DdWbnFnr.js} +1 -1
- package/dist/web/assets/AppTerminalPanel-BotH-2y4.js +2 -0
- package/dist/web/assets/{AppsView-BeGbrJkU.js → AppsView-B3ybXi71.js} +1 -1
- package/dist/web/assets/BrowserSidebar-CLE27mjT.js +1 -0
- package/dist/web/assets/{BrowserSidebar-D9i7gQzw.css → BrowserSidebar-lNqqj4Ip.css} +1 -1
- package/dist/web/assets/{CartesianChart-Cp_-LaJY.js → CartesianChart-SB3Jq3CQ.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-BL6guh-3.js → CollaborationTabs-C3jO5y5v.js} +1 -1
- package/dist/web/assets/{CommandMenu-hNQCm8mw.css → CommandMenu-Cb3vNGJr.css} +1 -1
- package/dist/web/assets/{CommandMenu-B-DEtpTp.js → CommandMenu-DqtJane1.js} +1 -1
- package/dist/web/assets/{CommunityView-DaIS0cHw.css → CommunityView-CnZqWEjK.css} +1 -1
- package/dist/web/assets/{CommunityView-DcEhEMm_.js → CommunityView-Dg02tZmL.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-C4mCZcKl.js → ComposerCreateImproveStrip-BTJhG8aU.js} +1 -1
- package/dist/web/assets/{GetStartedView-BUlaCO6a.js → GetStartedView-BlyP6VY8.js} +1 -1
- package/dist/web/assets/HostedModelLearningReview-BwSAO9y6.js +1 -0
- package/dist/web/assets/HostedModelLearningSettings-CiY2K8Fz.js +1 -0
- package/dist/web/assets/{LabModelVersionDetailPage-Bb1XRvo_.js → LabModelVersionDetailPage-cE1kuSWk.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-CPucMztm.js → LabSkillSidebar-BrSa3H3m.js} +1 -1
- package/dist/web/assets/{LabsRoute-C_HDADl0.js → LabsRoute-CY7rB25U.js} +4 -4
- package/dist/web/assets/MainChatThread-BM8l-LiB.js +2 -0
- package/dist/web/assets/MainPane-CsAYR_EF.js +10 -0
- package/dist/web/assets/{MarkdownText-_zVYW4pN.js → MarkdownText-8GA7g1qR.js} +1 -1
- package/dist/web/assets/{Messages-DxctstDI.js → Messages-CX08x24k.js} +6 -6
- package/dist/web/assets/{NativeSkillSidebar-DV4AGiCD.js → NativeSkillSidebar-mSz4GlxA.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-CZCLJj99.js → NewExperienceSwitcher-CHAC2Zid.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-CQSipZ5d.js → NewProjectDialog-5B17C6Vh.js} +1 -1
- package/dist/web/assets/{OutputsPage-aPJP4mTV.js → OutputsPage-27Gp1K5N.js} +1 -1
- package/dist/web/assets/{ProjectsPage-CyThuXQv.js → ProjectsPage-DJpPuKBP.js} +1 -1
- package/dist/web/assets/RightChatPanelStack-C_4rbc1i.js +1 -0
- package/dist/web/assets/{RightSidebarHomePanel-CtH0vZ36.js → RightSidebarHomePanel-PHndCapL.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-BY_4jFm7.js → ScheduledWorkPage-CYQZ0Zal.js} +1 -1
- package/dist/web/assets/{SettingsView-ZPnupcpg.js → SettingsView-DQPMLKNH.js} +7 -7
- package/dist/web/assets/{TeamChatView-DWjwVxMp.js → TeamChatView-DRvqhiOV.js} +2 -2
- package/dist/web/assets/{TeamChatView-Br3VdxhD.css → TeamChatView-dL6B0qib.css} +1 -1
- package/dist/web/assets/{TerminalOverlay-DxuUGKYH.js → TerminalOverlay-C8FbaVVP.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-CjIPEoTX.js → TrainingCreationPanel-BGsd95vF.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-CxevAlkr.js → TrainingDraftPanel-Bm6j-IuS.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-CY1lQB_g.js → UsageSettingsSection-CTCDOE-_.js} +3 -3
- package/dist/web/assets/{WorkSidebarPanel-DMsiwOSi.js → WorkSidebarPanel-UaymQC_e.js} +1 -1
- package/dist/web/assets/WorkspaceDiffPanel-D6mKLQha.js +14 -0
- package/dist/web/assets/{WorkspaceEnvironmentMenu-7DSF_BpI.js → WorkspaceEnvironmentMenu-C4Uw5qMA.js} +3 -3
- package/dist/web/assets/{WorkspaceGitDialogs-Ck8BzH11.js → WorkspaceGitDialogs--t9VpTCT.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-gsEP4W37.js → WorkspaceMonacoEditor-CElU0vIN.js} +3 -3
- package/dist/web/assets/{arrow-up-right-BK6EpHpC.js → arrow-up-right-C0HJHPjq.js} +1 -1
- package/dist/web/assets/{chat-file-links-BQe708gU.js → chat-file-links-D5q1as_h.js} +1 -1
- package/dist/web/assets/chevron-up-B3Cyo8SJ.js +1 -0
- package/dist/web/assets/{clipboard-DOmCP7eR.js → clipboard-wiphvxrN.js} +1 -1
- package/dist/web/assets/{cloud-upload-DLtawDYW.js → cloud-upload-Bgm5_SSr.js} +1 -1
- package/dist/web/assets/{cssMode-C0Qw8i_8.js → cssMode-DudNT1l3.js} +1 -1
- package/dist/web/assets/{folder-open-B_Ayxxo8.js → folder-open-DLuZSDXn.js} +1 -1
- package/dist/web/assets/{folder-plus-CPgtt3pN.js → folder-plus-DXN0q9GR.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-23xCJjd8.js → git-commit-horizontal-CdiI4K5M.js} +1 -1
- package/dist/web/assets/{htmlMode-DuQ7zaau.js → htmlMode-B2sAXhgB.js} +1 -1
- package/dist/web/assets/index-C5EoPZr0.css +1 -0
- package/dist/web/assets/{index-BoaTQ0Rb.js → index-DSK9XSir.js} +2 -1
- package/dist/web/assets/{info-CQ2kJJ5E.js → info-DcmIP9D3.js} +1 -1
- package/dist/web/assets/{jsonMode-DVQSEPUy.js → jsonMode-aQlrpuz5.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-DWKH3min.js → lspLanguageFeatures-BMskOvs7.js} +1 -1
- package/dist/web/assets/{minimize-2-1M-fFBeP.js → minimize-2-CvKd6Q_r.js} +1 -1
- package/dist/web/assets/{monaco.contribution-jXX7-l5p.js → monaco.contribution-BHv_qQG9.js} +2 -2
- package/dist/web/assets/{monaco.contribution-ytVV-s22.js → monaco.contribution-BSRllZgB.js} +2 -2
- package/dist/web/assets/{monaco.contribution-B5Jz7f4W.js → monaco.contribution-VS3RCwFP.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DB7pp5Y-.js → monaco.contribution-tZUXzebU.js} +2 -2
- package/dist/web/assets/{play-D9jaK5MP.js → play-BzfQJMmu.js} +1 -1
- package/dist/web/assets/{python-_yRitN2I.js → python-Bm9eN64d.js} +1 -1
- package/dist/web/assets/{refresh-cw-DZHqZGos.js → refresh-cw-Cvy0BqFv.js} +1 -1
- package/dist/web/assets/{save-DOT3oYfU.js → save-miVdIz56.js} +1 -1
- package/dist/web/assets/{square-D_1V6onE.js → square-DlJ_-dur.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-C06C-luq.js → toggleHighContrast-B8jte8Lm.js} +1 -1
- package/dist/web/assets/{tsMode-CTMYvh-R.js → tsMode-CmAPBzqb.js} +1 -1
- package/dist/web/assets/{upload-EAAHd0Nx.js → upload-C71OnfRd.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-DBsx4aIY.js → useLocalAgentSchedules-D9hDhAba.js} +1 -1
- package/dist/web/assets/{wifi-off-DYRTrfYa.js → wifi-off-DhI7P9WW.js} +1 -1
- package/dist/web/assets/{workers-DAytqxd3.js → workers-BDI2xQio.js} +1 -1
- package/dist/web/assets/{yaml-iZnWWABr.js → yaml-DNSpZj5_.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +6 -2
- package/dist/chunks/app-server-runtime-FV4KHBTY.js +0 -2
- package/dist/chunks/chunk-CWQWV2T3.js +0 -2
- package/dist/chunks/chunk-DUA3QP6Y.js +0 -19
- package/dist/chunks/chunk-K4QLUFGX.js +0 -5
- package/dist/chunks/chunk-KDXLNQNF.js +0 -12
- package/dist/chunks/chunk-LYWUCJTV.js +0 -28
- package/dist/chunks/chunk-QUW7WK32.js +0 -24
- package/dist/chunks/chunk-VYUMTRB3.js +0 -5
- package/dist/chunks/cli-ZZTJVJRT.js +0 -2
- package/dist/chunks/extension-WY2RL5ZH.js +0 -5
- package/dist/chunks/src-4QYE5G3N.js +0 -319
- package/dist/web/assets/App-DNZ5VhFd.js +0 -176
- package/dist/web/assets/AppTerminalPanel-C1U1RKU6.js +0 -2
- package/dist/web/assets/BrowserSidebar-XgQLeXw1.js +0 -1
- package/dist/web/assets/HostedModelLearningReview-CZyb95R_.js +0 -1
- package/dist/web/assets/HostedModelLearningSettings-D2o7rh0w.js +0 -1
- package/dist/web/assets/MainChatThread-CnXHxCy3.js +0 -2
- package/dist/web/assets/MainPane-DjnT-kvm.js +0 -8
- package/dist/web/assets/RightChatPanelStack-jsP9CukH.js +0 -1
- package/dist/web/assets/WorkspaceDiffPanel-HdfItqu2.js +0 -14
- package/dist/web/assets/chevron-up-CHxYR4AX.js +0 -1
- package/dist/web/assets/index-BGMzUaup.css +0 -1
package/dist/web/assets/{useLocalAgentSchedules-DBsx4aIY.js → useLocalAgentSchedules-D9hDhAba.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as v,
|
|
1
|
+
import{c as v,v as s}from"./App-Dx38Dhlo.js";import{r as c}from"./index-DSK9XSir.js";const m=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}]],x=v("rotate-ccw",m),I=5e3;function C(t){const[S,n]=c.useState([]),[y,r]=c.useState(!1),[p,l]=c.useState(null),[o,w]=c.useState(()=>new Set);c.useEffect(()=>{if(!t){n([]),l(null),r(!1);return}const e=t;let a=!1;async function d(g){if(!a){g&&r(!0);try{const h=await s.localAgentSchedules(e);if(a)return;n(h.schedules),l(null)}catch(h){a||l(f(h))}finally{!a&&g&&r(!1)}}}d(!0);const u=window.setInterval(()=>{d(!1)},I);return()=>{a=!0,window.clearInterval(u)}},[t]);async function L(){if(t){r(!0);try{const e=await s.syncLocalAgentSchedules(t);n(e.schedules),l(null)}catch(e){l(f(e))}finally{r(!1)}}}async function A(e){if(!(!t||o.has(e.id))){i(e.id,!0);try{await s.runLocalAgentSchedule(t,e.id);const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{i(e.id,!1)}}}async function E(e){if(!(!t||o.has(e.id))){i(e.id,!0);try{await s.patchLocalAgentSchedule(t,e.id,{enabled:!e.enabled});const a=await s.localAgentSchedules(t);n(a.schedules),l(null)}catch(a){l(f(a))}finally{i(e.id,!1)}}}function i(e,a){w(d=>{const u=new Set(d);return a?u.add(e):u.delete(e),u})}return{error:p,loading:y,pendingScheduleIds:o,refresh:L,run:A,schedules:S,toggle:E}}function f(t){return t instanceof Error?t.message:String(t)}export{x as R,C as u};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as a}from"./App-
|
|
1
|
+
import{c as a}from"./App-Dx38Dhlo.js";const e=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326",key:"11g9vi"}]],y=a("bell",e);const t=[["path",{d:"M10.268 21a2 2 0 0 0 3.464 0",key:"vwvbt9"}],["path",{d:"M17 17H4a1 1 0 0 1-.74-1.673C4.59 13.956 6 12.499 6 8a6 6 0 0 1 .258-1.742",key:"178tsu"}],["path",{d:"m2 2 20 20",key:"1ooewy"}],["path",{d:"M8.668 3.01A6 6 0 0 1 18 8c0 2.687.77 4.653 1.707 6.05",key:"1hqiys"}]],c=a("bell-off",t);const o=[["path",{d:"M15 12h-5",key:"r7krc0"}],["path",{d:"M15 8h-5",key:"1khuty"}],["path",{d:"M19 17V5a2 2 0 0 0-2-2H4",key:"zz82l3"}],["path",{d:"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3",key:"1ph1d7"}]],k=a("scroll-text",o);const h=[["path",{d:"M12 20h.01",key:"zekei9"}],["path",{d:"M8.5 16.429a5 5 0 0 1 7 0",key:"1bycff"}],["path",{d:"M5 12.859a10 10 0 0 1 5.17-2.69",key:"1dl1wf"}],["path",{d:"M19 12.859a10 10 0 0 0-2.007-1.523",key:"4k23kn"}],["path",{d:"M2 8.82a15 15 0 0 1 4.177-2.643",key:"1grhjp"}],["path",{d:"M22 8.82a15 15 0 0 0-11.288-3.764",key:"z3jwby"}],["path",{d:"m2 2 20 20",key:"1ooewy"}]],p=a("wifi-off",h);export{c as B,k as S,p as W,y as a};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{j7 as c}from"./WorkspaceMonacoEditor-
|
|
1
|
+
import{j7 as c}from"./WorkspaceMonacoEditor-CElU0vIN.js";import"./toggleHighContrast-B8jte8Lm.js";function a(e,o){const r=globalThis.MonacoEnvironment;if(r?.createTrustedTypesPolicy)try{return r.createTrustedTypesPolicy(e,o)}catch(t){console.error(t);return}try{return globalThis.trustedTypes?.createPolicy(e,o)}catch(t){console.error(t);return}}let n;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?n=globalThis.workerttPolicy:n=a("defaultWorkerFactory",{createScriptURL:e=>e});function l(e){const o=e.label,r=globalThis.MonacoEnvironment;if(r){if(typeof r.getWorker=="function")return r.getWorker("workerMain.js",o);if(typeof r.getWorkerUrl=="function"){const t=r.getWorkerUrl("workerMain.js",o);return new Worker(n?n.createScriptURL(t):t,{name:o,type:"module"})}}if(e.createWorker)return e.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function u(e){const o=Promise.resolve(l({label:e.label??"monaco-editor-worker",moduleId:e.moduleId,createWorker:e.createWorker})).then(r=>(r.postMessage("ignore"),r.postMessage(e.createData),r));return c.createWebWorker({worker:o,host:e.host,keepIdleModels:e.keepIdleModels})}export{u as c};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{l as e}from"./WorkspaceMonacoEditor-
|
|
1
|
+
import{l as e}from"./WorkspaceMonacoEditor-CElU0vIN.js";import"./toggleHighContrast-B8jte8Lm.js";import"./index-DSK9XSir.js";const r={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},l={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};export{r as conf,l as language};
|
package/dist/web/index.html
CHANGED
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<link rel="icon" type="image/png" sizes="16x16" href="./favicon-16x16.png" />
|
|
8
8
|
<link rel="apple-touch-icon" href="./openpond-icon.png" />
|
|
9
9
|
<title>OpenPond App</title>
|
|
10
|
-
<script type="module" crossorigin src="./assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
10
|
+
<script type="module" crossorigin src="./assets/index-DSK9XSir.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="./assets/index-C5EoPZr0.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openpond",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"openpondReleaseVersioned": true,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "OpenPond CLI and local harness",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"build:cli": "tsx ../../scripts/build/bundle-cli.ts cli",
|
|
21
21
|
"build:package": "tsx ../../scripts/build/bundle-cli.ts package",
|
|
22
22
|
"build:local-assets": "node scripts/stage-local-assets.mjs",
|
|
23
|
-
"build:types": "tsc --project tsconfig.package.json && node scripts/flatten-types.mjs",
|
|
23
|
+
"build:types": "tsc --project tsconfig.package.json && node scripts/flatten-types.mjs && tsx ../../scripts/build/app-server-types.ts",
|
|
24
24
|
"docs:commands": "tsx scripts/generate-command-reference.mjs",
|
|
25
25
|
"lint": "pnpm run typecheck",
|
|
26
26
|
"typecheck": "tsc --noEmit --project tsconfig.json",
|
|
@@ -59,6 +59,10 @@
|
|
|
59
59
|
"./sandbox-template": {
|
|
60
60
|
"import": "./dist/sandbox-template/manifest.js",
|
|
61
61
|
"types": "./dist/sandbox-template/manifest.d.ts"
|
|
62
|
+
},
|
|
63
|
+
"./app-server": {
|
|
64
|
+
"types": "./dist/app-server.d.ts",
|
|
65
|
+
"import": "./dist/app-server.js"
|
|
62
66
|
}
|
|
63
67
|
},
|
|
64
68
|
"dependencies": {
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{Uc as a,Vc as b}from"./chunk-FESS4IR4.js";import"./chunk-3ZEV5UKA.js";import"./chunk-VYUMTRB3.js";import"./chunk-37V5TT45.js";import"./chunk-2LADHICK.js";import"./chunk-XEOEKFG6.js";import"./chunk-QUW7WK32.js";import"./chunk-4HIHSG5M.js";import"./chunk-6MI4KKWF.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-6FA3GG5B.js";import"./chunk-U6HOHOOI.js";import"./chunk-KDXLNQNF.js";import"./chunk-LYWUCJTV.js";import"./chunk-FYCJSUFV.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{a as APP_SERVER_COMPOSITION,b as createOpenPondAppServer};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as W,b as X}from"./chunk-GLUWATL5.js";import{Ja as Y,Ka as q,Ua as L,ya as V,za as D}from"./chunk-FYCJSUFV.js";import{f as P,h as F}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";var I=class extends Error{constructor(n,o){super(`API request timed out after ${n}ms: ${o}`);this.timeoutMs=n;this.requestUrl=o;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{i(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},E=class extends Error{constructor(n,o){super(`API response exceeded ${n} bytes: ${o}`);this.maximumBytes=n;this.requestUrl=o;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{i(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},N=class extends Error{constructor(n,o,r,s=null){let a=s||o;super(`${r} failed: ${n}${a?` ${a}`:""}`);this.status=n;this.apiMessage=s;this.name="OpenPondApiError",this.code=o||"OPENPOND_API_ERROR"}status;apiMessage;static{i(this,"OpenPondApiError")}code};async function c(t,e,n,o={}){let{timeoutMs:r=3e4,maxResponseBytes:s=8388608,...a}=o,l=`${t}${n}`,p=new Headers(a.headers);p.set("Content-Type","application/json");let d=process.env.OPENPOND_API_KEY,g=e?.trim()||"",h=g.startsWith("opk_"),f=d||(h?g:null);f&&!p.has("openpond-api-key")&&p.set("openpond-api-key",f),e?p.set("Authorization",h?`ApiKey ${g}`:`Bearer ${e}`):d&&!p.has("Authorization")&&p.set("Authorization",`ApiKey ${d}`);let x=new AbortController,T=new I(r,l),O=r>0?setTimeout(()=>x.abort(T),r):null;O?.unref?.();let _=he(a.signal,x.signal,r),k=i(()=>{O&&clearTimeout(O)},"cleanup");try{let B=await fetch(l,{...a,headers:p,signal:_});return ge(B,{cleanup:k,maximumBytes:s,requestUrl:l,timeoutController:x,timeoutError:T})}catch(B){throw k(),x.signal.aborted?T:B}}i(c,"apiFetch");async function y(t,e){let n;try{let o=await t.text();n=o?JSON.parse(o):{}}catch(o){if(o instanceof I||o instanceof E)throw o;n={}}if(!t.ok){let o=typeof n.error=="string"?n.error:null,r=typeof n.message=="string"?n.message:null;throw new N(t.status,o,e,r)}return n}i(y,"readApiJson");function ge(t,e){if(!t.body)return e.cleanup(),t;let n=Number(t.headers.get("content-length"));if(e.maximumBytes>0&&Number.isFinite(n)&&n>e.maximumBytes)throw e.cleanup(),t.body.cancel(),new E(e.maximumBytes,e.requestUrl);let o=t.body.getReader(),r=0,s=new ReadableStream({async pull(a){try{let l=await o.read();if(l.done){e.cleanup(),a.close();return}if(r+=l.value.byteLength,e.maximumBytes>0&&r>e.maximumBytes){e.cleanup(),await o.cancel(),a.error(new E(e.maximumBytes,e.requestUrl));return}a.enqueue(l.value)}catch(l){e.cleanup(),a.error(e.timeoutController.signal.aborted?e.timeoutError:l)}},async cancel(a){e.cleanup(),await o.cancel(a)}});return new Response(s,{headers:t.headers,status:t.status,statusText:t.statusText})}i(ge,"boundedResponse");function he(t,e,n){return n<=0?t??void 0:t?AbortSignal.any([t,e]):e}i(he,"composedSignal");async function ye(t,e,n,o,r){let s=await c(t,e,`/v4/apps/${n}/commits`,{method:"POST",body:JSON.stringify({files:o,message:r})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Commit failed: ${s.status} ${a}`)}return await s.json()}i(ye,"commitFiles");async function Re(t,e,n,o){let r=o?.environment??"production",s=await c(t,e,`/v4/apps/${n}/deployments`,{method:"POST",body:JSON.stringify({environment:r,...o?.commitSha?{commitSha:o.commitSha}:{},...o?.branch?{branch:o.branch}:{}})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Deploy failed: ${s.status} ${a}`)}return await s.json()}i(Re,"deployApp");async function Pe(t,e,n,o){let r=await c(t,e,`/v4/apps/${encodeURIComponent(n)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(o)});return y(r,"Preview promotion")}i(Pe,"promotePreviewToProduction");async function Ae(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/lifecycle/start`,{method:"POST",body:JSON.stringify(o)});return y(r,"App lifecycle start")}i(Ae,"startAppLifecycle");async function Se(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/logs`,{method:"GET"});if(!o.ok){let a=await o.text().catch(()=>"");throw new Error(`Deployment logs failed: ${o.status} ${a}`)}let r=await o.json().catch(()=>({}));return(Array.isArray(r.logs)?r.logs:[]).map(a=>{let l=typeof a.createdAt=="string"?a.createdAt:a.createdAt instanceof Date?a.createdAt.toISOString():new Date().toISOString();return{id:typeof a.id=="string"?a.id:`${Math.random()}`,type:typeof a.type=="string"?a.type:void 0,message:typeof a.message=="string"?a.message:"",createdAt:l}})}i(Se,"getDeploymentLogs");async function we(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/status`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment status failed: ${o.status} ${s}`)}return{status:(await o.json().catch(()=>({}))).deployment?.status}}i(we,"getDeploymentStatus");async function xe(t,e,n,o){let r=new URLSearchParams;o?.status&&o.status.length>0&&r.set("status",o.status.join(",")),o?.createdAfter&&r.set("createdAfter",o.createdAfter),o?.branch&&r.set("branch",o.branch);let s=r.toString(),a=await c(t,e,`/apps/${n}/deployments/latest${s?`?${s}`:""}`,{method:"GET"});if(!a.ok){let p=await a.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${a.status} ${p}`)}let l=await a.json().catch(()=>({}));return l.deployment?{id:l.deployment.id,status:l.deployment.status}:null}i(xe,"getLatestDeploymentForApp");async function be(t,e,n){let o=await c(t,e,`/apps/deployments/${n}`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${o.status} ${s}`)}return(await o.json().catch(()=>({}))).deployment??null}i(be,"getDeploymentDetail");var Te=new URL(X).hostname,Oe=new URL(W).hostname;async function Ye(t,e,n){let o=new URLSearchParams;n?.handle&&o.set("handle",n.handle),typeof n?.limit=="number"&&Number.isFinite(n.limit)&&o.set("limit",String(Math.max(1,Math.floor(n.limit)))),typeof n?.offset=="number"&&Number.isFinite(n.offset)&&o.set("offset",String(Math.max(0,Math.floor(n.offset)))),typeof n?.includeScheduled=="boolean"&&o.set("includeScheduled",n.includeScheduled?"true":"false");let r=o.toString(),s=await c(t,e,`/apps/list${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let l=await s.text().catch(()=>"");throw new Error(`Apps list failed: ${s.status} ${l}`)}let a=await s.json().catch(()=>({}));return Array.isArray(a.apps)?a.apps:[]}i(Ye,"listApps");async function We(t,e,n){let o=await c(t,e,"/api/projects/local",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Create project failed: ${o.status} ${r}`)}return await o.json()}i(We,"createLocalProject");async function Xe(t,e,n){let o=await c(t,e,"/apps/repo/create",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Repo create failed: ${o.status} ${r}`)}return await o.json()}i(Xe,"createRepo");async function Qe(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:o})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Code visibility update failed: ${r.status} ${s}`)}return await r.json()}i(Qe,"updateAppCodeVisibility");async function Ze(t,e,n,o){let r=await c(t,e,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:n,...o?{teamId:o}:{}})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Headless create failed: ${r.status} ${s}`)}return await r.json()}i(Ze,"createHeadlessApps");async function et(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/status`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template status failed: ${o.status} ${r}`)}return await o.json()}i(et,"getTemplateStatus");async function tt(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/branches`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template branches failed: ${o.status} ${r}`)}return await o.json()}i(tt,"listTemplateBranches");async function nt(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/template/deploy-latest`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Template deploy failed: ${r.status} ${s}`)}return await r.json()}i(nt,"deployLatestTemplate");async function ot(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/environment`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Environment update failed: ${r.status} ${s}`)}return await r.json()}i(ot,"updateAppEnvironment");async function st(t,e,n){let o=await c(t,e,`/v4/apps/${n}/environment`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Environment get failed: ${o.status} ${r}`)}return await o.json()}i(st,"getAppEnvironment");async function rt(t,e){let n=await c(t,e,"/api/tools/manifest",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${n.status} ${o}`)}return await n.json()}i(rt,"fetchToolManifest");async function it(t,e){let n=await c(t,e,"/apps/tools",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Tools lookup failed: ${n.status} ${o}`)}return await n.json()}i(it,"listUserTools");async function at(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${o.status} ${s}`)}let r=await o.json().catch(()=>({}));return{schedules:Array.isArray(r.schedules)?r.schedules:[]}}i(at,"listAppSchedules");async function lt(t,e,n={}){let o=new URLSearchParams;n.domain&&o.set("domain",n.domain),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion),typeof n.limit=="number"&&o.set("limit",String(n.limit));for(let a of n.tags??[])o.append("tag",a);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe list")}i(lt,"listOpenToolRecipes");async function ct(t,e,n){let o=await c(t,e,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool recipe search")}i(ct,"searchOpenToolRecipes");async function ut(t,e,n){let o=new URLSearchParams;typeof n.includeExamples=="boolean"&&o.set("includeExamples",String(n.includeExamples)),typeof n.includeTests=="boolean"&&o.set("includeTests",String(n.includeTests)),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes/${encodeURIComponent(n.id)}${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe get")}i(ut,"getOpenToolRecipe");async function pt(t,e,n){let o=await c(t,e,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool rules get")}i(pt,"getOpenToolRules");function H(t){let e=new URLSearchParams;typeof t=="number"&&Number.isFinite(t)&&e.set("limit",String(Math.max(1,Math.floor(t))));let n=e.toString();return n?`?${n}`:""}i(H,"buildLimitQuery");function Q(t){if(Array.isArray(t))return t;if(!t||typeof t!="object")return[];let e=t;return Array.isArray(e.logs)?e.logs:Array.isArray(e.runs)?e.runs:Array.isArray(e.scheduleRuns)?e.scheduleRuns:Array.isArray(e.items)?e.items:[]}i(Q,"normalizeScheduleExecutionLogs");async function dt(t,e,n,o){let r={...o?.preferredScheduleId?{preferredScheduleId:o.preferredScheduleId}:{},...o?.scheduleId?{scheduleId:o.scheduleId}:{},...o?.startAt?{startAt:o.startAt}:{},...o&&"endAt"in o?{endAt:o.endAt??null}:{}},s=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/start`,{method:"POST",body:JSON.stringify(r)});return y(s,"Schedule start")}i(dt,"startAppSchedules");async function ft(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return y(o,"Schedule stop")}i(ft,"stopAppSchedules");async function mt(t,e){let n=await c(t,e,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return y(n,"Current schedule stop")}i(mt,"stopCurrentAppSchedules");async function gt(t,e,n){let o=await c(t,e,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:n.scheduleId})});return y(o,"Schedule run")}i(gt,"runScheduleNow");async function ht(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/${encodeURIComponent(o)}`,{method:"DELETE"});return y(r,"Schedule delete")}i(ht,"deleteOrArchiveSchedule");async function yt(t,e,n,o){let r=await c(t,e,`/v1/schedules/${encodeURIComponent(n)}/execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Schedule execution logs");return{logs:Q(s)}}i(yt,"listScheduleExecutionLogs");async function Rt(t,e,n,o){let r=await c(t,e,`/v1/deployments/${encodeURIComponent(n)}/schedule-execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Deployment schedule execution logs");return{logs:Q(s)}}i(Rt,"listDeploymentScheduleExecutionLogs");async function Pt(t,e,n){let o=await c(t,e,`/v1/schedule-execution-logs/${encodeURIComponent(n)}`,{method:"GET"});return y(o,"Schedule execution log")}i(Pt,"getScheduleExecutionLog");async function At(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/execution-timeline${H(o?.limit)}`,{method:"GET"});return y(r,"App execution timeline")}i(At,"getAppExecutionTimeline");async function St(t,e,n){return c(t,e,"/apps/agent/create",{method:"POST",body:JSON.stringify(n)})}i(St,"createAgentFromPrompt");async function wt(t,e,n){let o=new URLSearchParams;n?.appId&&o.set("appId",n.appId);let r=o.toString(),s=await c(t,e,`/apps/performance${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Performance lookup failed: ${s.status} ${a}`)}return await s.json()}i(wt,"getUserPerformance");async function xt(t,e,n){let o=new URLSearchParams({appId:n}),r=await c(t,e,`/apps/summary?${o.toString()}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Summary lookup failed: ${r.status} ${s}`)}return await r.json()}i(xt,"getAppRuntimeSummary");async function Ee(t,e){let n=await c(t,e,"/v1/account",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Account lookup failed: ${n.status} ${o}`)}return await n.json()}i(Ee,"getOpenPondAccount");async function bt(t,e){let n=new Date().toISOString(),o=Date.now(),r=t.replace(/\/$/,"");try{let s=await c(r,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),a=Date.now()-o,l=await s.json().catch(()=>({})),p=null,d=null;if(e?.trim())try{let g=await Ee(r,e);p=!0,d=g.account}catch{p=!1}return{reachable:s.ok,authenticated:p,apiBase:r,latencyMs:a,status:s.status,service:typeof l.service=="string"?l.service:null,checkedAt:n,account:d,...s.ok?{}:{error:s.statusText||`HTTP ${s.status}`}}}catch(s){return{reachable:!1,authenticated:e?.trim()?!1:null,apiBase:r,latencyMs:Date.now()-o,status:null,service:null,checkedAt:n,error:s instanceof Error?s.message:String(s)}}}i(bt,"checkOpenPondApiHealth");async function Tt(t,e,n){let o=await c(t,e,"/apps/assistant/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Assistant run failed: ${o.status} ${r}`)}return await o.json()}i(Tt,"runAssistantMode");async function Ot(t,e,n){let o=await c(t,e,"/apps/agent/digest",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Agent digest failed: ${o.status} ${r}`)}return await o.json()}i(Ot,"postAgentDigest");async function Et(t,e,n){let o=await c(t,e,"/apps/tools/execute",{method:"POST",body:JSON.stringify(n)}),r=await o.text().catch(()=>""),s=null;try{s=r?JSON.parse(r):null}catch{s=r}return o.ok?{ok:!0,status:o.status,data:s}:{ok:!1,status:o.status,error:s&&typeof s=="object"&&"error"in s?String(s.error):r||o.statusText}}i(Et,"executeUserTool");async function Ct(t,e,n){let o=await c(t,e,"/apps/backtests/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtest run failed: ${o.status} ${r}`)}return await o.json()}i(Ct,"submitBacktestRun");async function kt(t,e,n){let o=n.query&&Object.keys(n.query).length>0?`?${new URLSearchParams(n.query).toString()}`:"",r=await c(t,e,`/apps/backtests/tx${o}`,{method:n.method,body:n.method==="POST"&&n.body!==void 0?JSON.stringify(n.body):void 0});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtests request failed: ${r.status} ${s}`)}return await r.json()}i(kt,"submitBacktestTx");async function Lt(t,e,n){let o=new URLSearchParams(n).toString(),r=await c(t,e,`/apps/backtests/detail?${o}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtest detail failed: ${r.status} ${s}`)}return await r.json()}i(Lt,"submitBacktestDetail");function Ce(t){let e=t.trim().replace(/^\/+/,"");return encodeURIComponent(e||"tool")}i(Ce,"normalizeToolPathSegment");function ke(t){let e=t.replace(/\/$/,""),n=process.env.OPENPOND_TOOL_URL;if(n)return n.replace(/\/$/,"");try{let o=new URL(e),r=o.hostname.toLowerCase(),s=r==="apps.openpond.live"?null:r===Te||r===Oe||r==="openpond.live"||r==="www.openpond.live"?"https://apps.openpond.live":null;if(s)return s;let a=r==="localhost"||r==="127.0.0.1",l=o.port||(o.protocol==="https:"?"443":"80");if(a&&l==="3000")return e}catch{}return e}i(ke,"resolveWorkerBaseUrl");async function It(t,e,n){let o=ke(t),r=Ce(n.toolName),a=`${n.deploymentId?`/${n.appId}/deployments/${n.deploymentId}`:`/${n.appId}`}/${r}`,l=new Headers(n.headers||{}),p=n.method??"POST",d=n.body===void 0||p==="GET"?void 0:JSON.stringify(n.body),g=await c(o,e,a,{method:p,body:d,headers:l}),h=await g.text().catch(()=>""),f=null;try{f=h?JSON.parse(h):null}catch{f=h}let x=f&&typeof f=="object"&&"ok"in f?!!f.ok:!0,T=g.ok&&x,O=f&&typeof f=="object"&&"status"in f&&Number(f.status)||g.status,_=f&&typeof f=="object"&&"error"in f?String(f.error):g.ok?void 0:h||g.statusText,k=f&&typeof f=="object"&&"data"in f?f.data:f;return{ok:T,status:O,data:k,error:_}}i(It,"executeHostedTool");import Le from"node:path";var U="default",Z=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function qt(){return Ie()}i(qt,"getConfigPath");function Ie(){return F(P()).config}i(Ie,"getGlobalConfigPath");function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}i(S,"hasOwn");function A(t){if(typeof t!="string")return null;let e=t.trim();return e.length>0?e:null}i(A,"normalizeHandle");function m(t){if(typeof t!="string")return null;let e=t.trim();return e?e.replace(/\/$/,""):null}i(m,"normalizeBaseUrl");function ie(t){let e=A(t);if(!e)throw new Error("profile handle must be non-empty");return e}i(ie,"requireHandle");function Ue(t){if(typeof t!="string")throw new Error("apiKey must be a non-empty string");let e=t.trim();if(!e)throw new Error("apiKey must be a non-empty string");return e}i(Ue,"requireApiKey");function C(t,e){let n=A(t),o=A(e);return!!(n&&o&&n.toLowerCase()===o.toLowerCase())}i(C,"handleEquals");function M(t,e,n){let o=m(n);return t.findIndex(r=>C(r.handle,e)?o?m(r.baseUrl)===o:!0:!1)}i(M,"findAccountIndex");function w(t){let e=A(t.handle)??U,n=m(t.baseUrl);return n?{handle:e,baseUrl:n}:{handle:e}}i(w,"selectorFromAccount");function b(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o=m(typeof e.baseUrl=="string"?e.baseUrl:void 0);return o?{handle:n,baseUrl:o}:{handle:n}}i(b,"sanitizeActiveProfile");function G(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.repoPath=="string"?e.repoPath.trim():"",o=typeof e.profile=="string"&&e.profile.trim()?e.profile.trim():"default";if(!n)return;let r={repoPath:n,profile:o,mode:"local"};if(e.lastCheck&&typeof e.lastCheck=="object"&&!Array.isArray(e.lastCheck)){let s=e.lastCheck,a=s.command,l=s.status,p=s.checkedAt;(a==="inspect"||a==="build"||a==="validate"||a==="eval"||a==="run")&&(l==="passed"||l==="failed")&&typeof p=="string"&&(r.lastCheck={command:a,status:l,checkedAt:p,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(e.lastPush&&typeof e.lastPush=="object"&&!Array.isArray(e.lastPush)){let s=e.lastPush,a=s.status,l=s.pushedAt;(a==="pushed"||a==="failed")&&typeof l=="string"&&(r.lastPush={status:a,pushedAt:l,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},...ee(s.hostedSourceMaterialization)?{hostedSourceMaterialization:ee(s.hostedSourceMaterialization)}:{},...te(s.hostedSourceCheck)?{hostedSourceCheck:te(s.hostedSourceCheck)}:{},...ne(s.hostedPublish)?{hostedPublish:ne(s.hostedPublish)}:{},...oe(s.hostedRun)?{hostedRun:oe(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(e.profiles)){let s=e.profiles.flatMap(a=>{let l=G(a);if(!l)return[];let p=a,d=p.source==="github"||p.source==="openpond_git"?p.source:"local",g=typeof p.repositoryId=="string"&&p.repositoryId.trim()?p.repositoryId.trim():Le.resolve(l.repoPath);return[{source:d,repositoryId:g,repoPath:l.repoPath,profile:l.profile,...l.lastCheck?{lastCheck:l.lastCheck}:{},...l.lastPush?{lastPush:l.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}i(G,"sanitizeLocalOpenPondProfile");function ee(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runtimeAgentId"),...u(e,"projectId"),...u(e,"sourceRoot"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"manifestSyncedAt"),...se(e,"fileCount"),...se(e,"totalBytes"),...u(e,"generatedManifestPath"),...j(e,"synthesizedOpenPondYaml"),...u(e,"uploadMetadataPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...u(e,"materializedAt"),...u(e,"error")}:null}i(ee,"sanitizeHostedMaterializationStatus");function te(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"deployPlanStatus"),...j(e,"canRun"),...j(e,"canDeploy"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...R(e,"requiredChecks"),...R(e,"evalNames"),...R(e,"blockedReasons"),...R(e,"staleReasons"),...u(e,"runtimeId"),...u(e,"sandboxId"),...R(e,"traceArtifactRefs"),...R(e,"evalResultArtifactRefs"),...R(e,"validatorArtifactRefs"),...u(e,"checkedAt"),...u(e,"error")}:null}i(te,"sanitizeHostedSourceCheckStatus");function ne(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"snapshotId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"buildStatus"),...u(e,"validationStatus"),...u(e,"evalStatus"),...u(e,"publishedAt"),...u(e,"error")}:null}i(ne,"sanitizeHostedPublishStatus");function oe(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runId"),...u(e,"runtimeId"),...u(e,"sandboxId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"setupGateStatus"),...R(e,"setupRequirementRefs"),...R(e,"artifactRefs"),...R(e,"traceArtifactRefs"),...R(e,"evalArtifactRefs"),...u(e,"startedAt"),...u(e,"completedAt"),...u(e,"error")}:null}i(oe,"sanitizeHostedRunSummary");function u(t,e){let n=t[e];return typeof n=="string"||n===null?{[e]:n}:{}}i(u,"nullableStringProp");function j(t,e){let n=t[e];return typeof n=="boolean"||n===null?{[e]:n}:{}}i(j,"nullableBooleanProp");function se(t,e){let n=t[e];return typeof n=="number"||n===null?{[e]:n}:{}}i(se,"nullableNumberProp");function R(t,e){let n=t[e];if(!Array.isArray(n))return{};let o=n.filter(r=>typeof r=="string");return{[e]:o}}i(R,"stringArrayProp");function v(t){return typeof t=="string"&&t.trim()?t.trim():null}i(v,"stringField");function ae(t,e){if(!C(t.handle,e.handle))return!1;let n=m(e.baseUrl);return n?m(t.baseUrl)===n:!m(t.baseUrl)}i(ae,"accountMatchesSelector");function $(t,e,n={}){let o=m(e.baseUrl);if(o)return M(t,e.handle,o);let r=t.findIndex(a=>ae(a,e));if(r!==-1)return r;let s=t.map((a,l)=>({account:a,index:l})).filter(({account:a})=>C(a.handle,e.handle));if(s.length>1&&n.requireUnambiguous)throw new Error(`multiple profiles found for ${e.handle}; pass --base-url to select one`);return s[0]?.index??-1}i($,"findAccountIndexForSelector");function ve(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n={};return typeof e.token=="string"&&(n.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(n.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(n.conversationId=e.conversationId),Object.keys(n).length>0?n:void 0}i(ve,"sanitizeSession");function $e(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o={handle:n};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl),typeof e.environment=="string"&&(o.environment=e.environment);let r=ve(e.session);return r&&(o.session=r),o}i($e,"sanitizeAccount");function _e(t){let e={};return typeof t.token=="string"&&(e.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(e.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(e.conversationId=t.conversationId),Object.keys(e).length>0?e:void 0}i(_e,"extractLegacySession");function Be(t,e){let n={handle:e};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl);let o=_e(t);return o&&(n.session=o),n}i(Be,"extractLegacyAccount");function z(t){let e={};typeof t.lspEnabled=="boolean"&&(e.lspEnabled=t.lspEnabled),(t.executionMode==="local"||t.executionMode==="hosted")&&(e.executionMode=t.executionMode),(t.mode==="general"||t.mode==="builder")&&(e.mode=t.mode);let n=G(t.openpondProfile);n&&(e.openpondProfile=n);let o=[],r=Array.isArray(t.accounts)?t.accounts:[];for(let p of r){let d=$e(p);d&&M(o,d.handle,d.baseUrl)===-1&&o.push(d)}if(o.length===0){let p=b(t.activeProfile)?.handle||U;o.push(Be(t,p))}let s=b(t.activeProfile),a=s?$(o,s):-1,l=o[a===-1?0:a];return e.accounts=o,e.activeProfile=w(l),e}i(z,"normalizeGlobalConfig");function le(t,e,n){let o=t.accounts??[],r=m(n??process.env.OPENPOND_BASE_URL),s=A(e);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let a=A(process.env.OPENPOND_ACCOUNT);if(a)return r?{handle:a,baseUrl:r}:{handle:a};let l=b(t.activeProfile);return l?r?{handle:l.handle,baseUrl:r}:l:o[0]?w(o[0]):{handle:U}}i(le,"resolveRequestedProfile");function ce(t,e,n){let o=m(n);if(o){let s=M(t,e,o);if(s!==-1)return t[s]}else{let s=t.filter(a=>C(a.handle,e));if(s.length>1)throw new Error(`multiple profiles found for ${e}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:e};return o&&(r.baseUrl=o),t.push(r),r}i(ce,"ensureAccount");function re(t){t.session&&Object.keys(t.session).length===0&&delete t.session}i(re,"cleanupAccount");function De(t,e,n,o){let r=n===null||n===void 0&&o.undefinedDeletes;switch(e){case"apiKey":{if(r){delete t.apiKey;return}typeof n=="string"&&(t.apiKey=n);return}case"baseUrl":{if(r){delete t.baseUrl;return}typeof n=="string"&&(t.baseUrl=n);return}case"apiBaseUrl":{if(r){delete t.apiBaseUrl;return}typeof n=="string"&&(t.apiBaseUrl=n);return}case"chatApiBaseUrl":{if(r){delete t.chatApiBaseUrl;return}typeof n=="string"&&(t.chatApiBaseUrl=n);return}case"token":case"appId":case"conversationId":{if(t.session||(t.session={}),r){delete t.session[e],re(t);return}(typeof n=="string"||n===null)&&(t.session[e]=n),re(t);return}}}i(De,"applyScopedKey");function ue(t,e,n){if(!Z.some(p=>S(e,p)))return!1;let r=t.accounts??[],s=b(e.activeProfile)??le(t),a=m(S(e,"baseUrl")?e.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),l=ce(r,s.handle,a);for(let p of Z)S(e,p)&&De(l,p,e[p],n);return t.accounts=r,t.activeProfile=w(l),!0}i(ue,"applyAccountPatch");function pe(t,e){if(S(e,"lspEnabled")&&(typeof e.lspEnabled=="boolean"?t.lspEnabled=e.lspEnabled:e.lspEnabled===null&&delete t.lspEnabled),S(e,"executionMode")&&(e.executionMode==="local"||e.executionMode==="hosted"?t.executionMode=e.executionMode:e.executionMode===null&&delete t.executionMode),S(e,"mode")&&(e.mode==="general"||e.mode==="builder"?t.mode=e.mode:e.mode===null&&delete t.mode),S(e,"activeProfile")){let n=b(e.activeProfile);if(n){let o=$(t.accounts??[],n);t.activeProfile=o===-1?n:w((t.accounts??[])[o])}else e.activeProfile===null&&delete t.activeProfile}if(S(e,"openpondProfile")){let n=G(e.openpondProfile);n?t.openpondProfile=n:e.openpondProfile===null&&delete t.openpondProfile}}i(pe,"applyTopLevelPatch");async function qe(t){let e=P();await L(e),await q(e,()=>t)}i(qe,"writeGlobalConfig");async function K(t){let e=P();return await L(e),await q(e,n=>{let o=z(n);return t(o),o})}i(K,"updateGlobalConfig");async function de(){let t=P();return await L(t),z(await Y(t))}i(de,"loadGlobalConfig");async function Nt(t={}){let e=await de(),n=e.accounts??[],o=le(e,t.account,t.baseUrl),r=$(n,o,{requireUnambiguous:!0}),s=r===-1?null:n[r],a=s?.session;return{...e,activeProfile:s?w(s):o,apiKey:s?.apiKey,baseUrl:s?.baseUrl,apiBaseUrl:s?.apiBaseUrl,chatApiBaseUrl:s?.chatApiBaseUrl,token:a?.token,appId:a?.appId,conversationId:a?.conversationId}}i(Nt,"loadConfig");async function fe(){let t=await de(),e=b(t.activeProfile);return(t.accounts??[]).map(n=>{let o=A(n.handle)??U;return{handle:o,baseUrl:m(n.baseUrl),apiBaseUrl:m(n.apiBaseUrl),chatApiBaseUrl:m(n.chatApiBaseUrl),environment:n.environment?.trim()||null,isActive:!!(e&&ae({...n,handle:o},e)),hasApiKey:!!n.apiKey?.trim(),hasSessionToken:!!n.session?.token?.trim(),sessionAppId:n.session?.appId??null,sessionConversationId:n.session?.conversationId??null}})}i(fe,"listConfiguredProfiles");async function Ht(t,e={}){let n=ie(t),o=m(e.baseUrl),r=-1;await K(a=>{let l=a.accounts??[];if(r=$(l,o?{handle:n,baseUrl:o}:{handle:n},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${n}`);a.activeProfile=w(l[r])});let s=await fe();return s.find(a=>a.isActive)??s[r]}i(Ht,"setActiveProfile");async function jt(t){let e=ie(t.handle),n=Ue(t.apiKey),o=m(t.baseUrl),r=m(t.apiBaseUrl),s=m(t.chatApiBaseUrl),a={handle:e};await K(d=>{let g=d.accounts??[],h=ce(g,e,o);h.apiKey=n,o&&(h.baseUrl=o),r?h.apiBaseUrl=r:t.apiBaseUrl===null&&delete h.apiBaseUrl,s?h.chatApiBaseUrl=s:t.chatApiBaseUrl===null&&delete h.chatApiBaseUrl,t.environment===null?delete h.environment:typeof t.environment=="string"&&t.environment.trim()&&(h.environment=t.environment.trim()),d.accounts=g,a=w(h),t.setActive!==!1&&(d.activeProfile=a)});let p=(await fe()).find(d=>C(d.handle,a.handle)?o?m(d.baseUrl)===o:!0:!1);if(!p)throw new Error(`failed to save profile: ${e}`);return p}i(jt,"saveProfileApiKey");async function Mt(t){let e=z(t);pe(e,t),ue(e,t,{undefinedDeletes:!0}),await qe(e)}i(Mt,"saveConfig");async function Gt(t){await K(e=>{pe(e,t),ue(e,t,{undefinedDeletes:!1})})}i(Gt,"saveGlobalConfig");import{createHash as Ne}from"node:crypto";var He=3600*1e3;function J(t){return Ne("sha256").update(JSON.stringify([t.apiBase.replace(/\/$/,""),t.apiKey.trim()])).digest("hex")}i(J,"buildCacheKey");async function me(t,e){let n=await V(P(),t,J(e),{allowStale:!0});return!n||Date.now()-Date.parse(n.updatedAt)>=(e.ttlMs??He)?null:n.payload}i(me,"cached");async function nn(t){return me("cloud.apps",t)}i(nn,"getCachedApps");async function on(t){await D(P(),"cloud.apps",J(t),t.apps)}i(on,"setCachedApps");async function sn(t){return me("cloud.tools",t)}i(sn,"getCachedTools");async function rn(t){await D(P(),"cloud.tools",J(t),t.tools)}i(rn,"setCachedTools");var cn=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{c as a,ye as b,Re as c,Pe as d,Ae as e,Se as f,we as g,xe as h,be as i,Ye as j,We as k,Xe as l,Qe as m,Ze as n,et as o,tt as p,nt as q,ot as r,st as s,rt as t,it as u,at as v,lt as w,ct as x,ut as y,pt as z,dt as A,ft as B,mt as C,gt as D,ht as E,yt as F,Rt as G,Pt as H,At as I,St as J,wt as K,xt as L,Ee as M,bt as N,Tt as O,Ot as P,Et as Q,Ct as R,kt as S,Lt as T,ke as U,It as V,qt as W,K as X,de as Y,Nt as Z,fe as _,Ht as $,jt as aa,Mt as ba,Gt as ca,He as da,nn as ea,on as fa,sn as ga,rn as ha,cn as ia};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as Re,b as be,c as Ae,d as Ie}from"./chunk-3NDRIQTI.js";import{a as Oe}from"./chunk-6FA3GG5B.js";import{Y as O,ca as L}from"./chunk-CWQWV2T3.js";import{f as Ce}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";var z=class extends Error{static{s(this,"OpenPondProfileSetupRequiredError")}code="agent_source_setup_required";details;constructor(t,n){let o=n.blockingRequirements.map(r=>r.label);super(["agent_source_setup_required",`Profile action ${t} has unresolved required setup.`,o.length?`Missing setup: ${o.join(", ")}`:""].filter(Boolean).join(`
|
|
3
|
-
`)),this.name="OpenPondProfileSetupRequiredError",this.details={error:"agent_source_setup_required",actionId:t,setupGate:n,missing:o,blockingSetupRequirements:n.blockingRequirements,setupRequirements:n.requirements}}};function J(e){let t=new Map;for(let a of e.sourceSetupRequirements??[]){let l=Rt(a);if(e.actionId&&l&&l!==e.actionId&&h(a.actionName)!==e.actionId&&h(a.sourceActionId)!==e.actionId)continue;let c=ve({record:a,source:"source_upload_metadata",actionId:l});c&&t.set(c.ref,c)}for(let a of e.actionCatalog)if(!(e.actionId&&a.id!==e.actionId&&a.name!==e.actionId))for(let l of a.setupRequirements??[]){let c=ve({record:l,source:"action_catalog",actionId:a.id});c&&t.set(c.ref,c)}let n=Array.from(t.values()),o=n.filter(a=>a.blocking),r=n.filter(a=>!a.required&&!te(a.status)).length,i=n.filter(a=>te(a.status)).length;return{status:At(o),requirementCount:n.length,blockingCount:o.length,optionalMissingCount:r,readyCount:i,requirements:n,blockingRequirements:o}}s(J,"buildOpenPondProfileSetupGate");function ne(e,t){if(t.blockingRequirements.length>0)throw new z(e,t)}s(ne,"assertOpenPondProfileActionReady");function Ot(e){let t=e.actionId?`${e.actionId}: `:"",n=e.required?"required":"optional";return`${t}${e.label} (${n}, ${e.status})`}s(Ot,"formatOpenPondProfileSetupRequirement");function ve(e){let t=e.source==="action_catalog"&&h(e.record.source)==="source_upload_metadata"?"source_upload_metadata":e.source,n=h(e.record.kind)??h(e.record.type),o=h(e.record.label)??h(e.record.name)??h(e.record.key)??h(e.record.provider)??h(e.record.tool)??h(e.record.command)??h(e.record.packageName)??h(e.record.path)??h(e.record.repo)??h(e.record.url)??h(e.record.id)??n??"setup requirement",r=e.record.required!==!1,i=bt(e.record);return{ref:[t,e.actionId??"source",n??"requirement",o].join(":"),source:t,actionId:e.actionId,kind:n,label:o,status:i,required:r,blocking:r&&!te(i)}}s(ve,"setupRequirementFromRecord");function Rt(e){return h(e.actionId)??h(e.sourceActionId)??h(e.actionName)}s(Rt,"setupRequirementActionId");function bt(e){let t=h(e.status)??h(e.state);return t?t==="satisfied"||t==="connected"||t==="provided"?"ready":t:typeof e.satisfied=="boolean"?e.satisfied?"ready":"setup_required":typeof e.ready=="boolean"&&e.ready?"ready":"setup_required"}s(bt,"setupStatus");function At(e){return e.length===0?"ready":e.some(t=>["blocked","unsupported","unsupported_dependency","stale"].includes(t.status))?"blocked":"setup_required"}s(At,"gateStatus");function te(e){return e==="ready"||e==="disabled"}s(te,"isReadyStatus");function h(e){return typeof e=="string"&&e.trim()?e.trim():null}s(h,"text");import{stat as $t}from"node:fs/promises";import ie from"node:path";import{spawn as It}from"node:child_process";import{existsSync as oe}from"node:fs";import{readFile as vt,rm as Kn,writeFile as xe}from"node:fs/promises";import re from"node:path";var _e=["**/node_modules/","**/.bun/","**/.env","**/.env.*","**/.openpond/traces/","**/.openpond/vendor/","**/.openpond/eval-results.json","**/.openpond/artifact-index.json","**/.openpond/source-upload-cache.json",""].join(`
|
|
4
|
-
`);async function Le(e){if(!oe(re.join(e,".git"))){let i=await R(e,["init","-b","main"]);if(i.code!==0)throw new Error(G("git init",i))}let t=re.join(e,".gitignore");if(oe(t)?await Et(t):await xe(t,_e,"utf8"),await xt(e))return;let n=await N(e);if(!n.dirty&&n.files.length===0)return;let o=await R(e,["add","-A"]);if(o.code!==0)throw new Error(G("git add",o));let r=await R(e,["commit","-m","Initialize OpenPond profile"],{env:{...process.env,GIT_AUTHOR_NAME:process.env.GIT_AUTHOR_NAME||"OpenPond",GIT_AUTHOR_EMAIL:process.env.GIT_AUTHOR_EMAIL||"openpond@example.invalid",GIT_COMMITTER_NAME:process.env.GIT_COMMITTER_NAME||"OpenPond",GIT_COMMITTER_EMAIL:process.env.GIT_COMMITTER_EMAIL||"openpond@example.invalid"}});if(r.code!==0&&!/nothing to commit/i.test(r.stdout+r.stderr))throw new Error(G("git commit",r))}s(Le,"ensureProfileGitRepo");async function Et(e){let t=await vt(e,"utf8").catch(()=>""),n=_e.split(/\r?\n/).map(r=>r.trim()).filter(Boolean).filter(r=>!t.split(/\r?\n/).some(i=>i.trim()===r));if(n.length===0)return;let o=t.endsWith(`
|
|
5
|
-
`)||t.length===0?"":`
|
|
6
|
-
`;await xe(e,`${t}${o}${n.join(`
|
|
7
|
-
`)}
|
|
8
|
-
`,"utf8")}s(Et,"ensureProfileGitignoreRules");async function N(e){if(!oe(re.join(e,".git")))return{isRepo:!1,branch:null,head:null,shortHead:null,dirty:!1,upstream:null,ahead:null,behind:null,remoteUrl:null,files:[],error:null};let t=await R(e,["rev-parse","--is-inside-work-tree"]);if(t.code!==0||t.stdout.trim()!=="true")return{isRepo:!1,branch:null,head:null,shortHead:null,dirty:!1,upstream:null,ahead:null,behind:null,remoteUrl:null,files:[],error:t.stderr.trim()||t.stdout.trim()||"not a Git work tree"};let[n,o,r,i,a]=await Promise.all([B(e,["branch","--show-current"]),B(e,["rev-parse","HEAD"]),R(e,["status","--porcelain=v1","-uall"]),B(e,["rev-parse","--abbrev-ref","--symbolic-full-name","@{u}"]),B(e,["remote","get-url","origin"])]),l=r.code===0?Lt(r.stdout):[],c=i?await _t(e):{ahead:null,behind:null},d=o||null;return{isRepo:!0,branch:n||null,head:d,shortHead:d?d.slice(0,12):null,dirty:l.length>0,upstream:i,ahead:c.ahead,behind:c.behind,remoteUrl:a,files:l,error:r.code===0?null:G("git status",r)}}s(N,"loadProfileGitState");async function Me(e,t){let n=await N(e);if(!n.isRepo)throw new Error(n.error??"Active OpenPond profile source is not a Git repo.");if(!n.dirty)return{committed:!1,stdout:"",stderr:"",state:n};let o=await R(e,["add","-A"]);if(o.code!==0)throw new Error(G("git add",o));let r=await R(e,["commit","-m",t]);if(r.code!==0)throw new Error(G("git commit",r));return{committed:!0,stdout:r.stdout,stderr:r.stderr,state:await N(e)}}s(Me,"commitProfileChanges");async function $e(e){return B(e,["rev-parse","HEAD"])}s($e,"profileGitHead");async function xt(e){return(await R(e,["rev-parse","--verify","HEAD"])).code===0}s(xt,"hasGitHead");async function _t(e){let t=await R(e,["rev-list","--left-right","--count","@{u}...HEAD"]);if(t.code!==0)return{ahead:null,behind:null};let[n,o]=t.stdout.trim().split(/\s+/),r=n?Number.parseInt(n,10):Number.NaN,i=o?Number.parseInt(o,10):Number.NaN;return{ahead:Number.isFinite(i)?i:null,behind:Number.isFinite(r)?r:null}}s(_t,"loadAheadBehind");async function B(e,t){let n=await R(e,t);return n.code!==0?null:n.stdout.trim()||null}s(B,"gitText");function Lt(e){return e.split(/\r?\n/).map(t=>t.trimEnd()).filter(Boolean).map(t=>{let n=t[0]??" ",o=t[1]??" ",r=`${n}${o}`.trim()||"changed",i=t.slice(3),a=i.split(" -> "),l=n===" "?null:n,c=o===" "?null:o,d=a.length===2?a[1]:i,g=a.length===2?a[0]:null;return{path:Ee(d),originalPath:g?Ee(g):null,indexStatus:l,worktreeStatus:c,status:r,category:Mt(l,c)}})}s(Lt,"parsePorcelainStatus");function Mt(e,t){return e==="?"&&t==="?"?"untracked":e==="R"||t==="R"?"renamed":e==="A"||t==="A"?"added":e==="D"||t==="D"?"deleted":e==="M"||t==="M"?"modified":"changed"}s(Mt,"gitChangeCategory");function Ee(e){let t=e.trim();if(!t.startsWith('"')||!t.endsWith('"'))return t;try{return JSON.parse(t)}catch{return t.slice(1,-1)}}s(Ee,"unquoteGitPath");function G(e,t){return t.stderr.trim()||t.stdout.trim()||`${e} failed with exit code ${t.code??"unknown"}`}s(G,"gitFailureMessage");async function R(e,t,n={}){return new Promise((o,r)=>{let i=It("git",t,{cwd:e,env:n.env,stdio:"pipe"}),a="",l="";i.stdout?.on("data",c=>{a+=String(c)}),i.stderr?.on("data",c=>{l+=String(c)}),i.on("error",r),i.on("close",c=>{o({code:c,stdout:a,stderr:l})}),n.input!==void 0?i.stdin?.end(n.input):i.stdin?.end()})}s(R,"runGitCommand");var se=1500,Fe=8*1024*1024,ae=100*1024*1024,le=8,qt={maxFiles:se,maxFileBytes:Fe,maxTotalBytes:ae,concurrency:le},jt={mode:"single_json_payload",chunkingSupported:!1};async function Ft(e){let t=await R(e,["ls-files","-z"]);if(t.code!==0)throw new Error(t.stderr.trim()||t.stdout.trim()||"git ls-files failed for profile source upload");let n=t.stdout.split("\0").map(c=>c.trim()).filter(Boolean).filter(c=>{let d=c.replace(/\\/g,"/");return je(d)&&!Tt(d)}).sort();if(n.length===0)throw new Error("No committed profile source files found to upload.");if(n.length>se)throw new Error(`Too many profile source files to upload: ${n.length} > ${se}`);let o=(await qe(n,le,async c=>{let d=ie.resolve(e,c),g=ie.relative(e,d).replace(/\\/g,"/");if(!je(g))throw new Error(`Profile source path escapes repo: ${c}`);let P=await $t(d);if(!P.isFile())return null;if(P.size>Fe)throw new Error(`Profile source file is too large: ${c} (${P.size} bytes)`);return{path:g,absolutePath:d,size:P.size,mtimeMs:Math.trunc(P.mtimeMs),ctimeMs:Math.trunc(P.ctimeMs)}})).filter(c=>c!==null),r=0;for(let c of o)if(r+=c.size,r>ae)throw new Error(`Profile source upload is too large: ${r} > ${ae}`);let i=await be(e),a=await qe(o,le,async c=>Ae(c,i));await Ie(e,a).catch(()=>{});let l=a.map(c=>c.entry);return{entries:l,fileCount:l.length,totalBytes:r,limits:qt,transport:jt}}s(Ft,"collectProfileSourceUploadEntries");async function qe(e,t,n){let o=new Array(e.length),r=0,i=Math.max(1,Math.min(t,e.length));return await Promise.all(Array.from({length:i},async()=>{for(;r<e.length;){let a=r;r+=1,o[a]=await n(e[a],a)}})),o}s(qe,"mapWithConcurrency");function je(e){return e.length>0&&!e.includes("\0")&&!ie.isAbsolute(e)&&!e.split(/[\\/]+/).some(t=>!t||t==="."||t==="..")}s(je,"isSafeProfileSourcePath");function Tt(e){return e.split(/[\\/]+/).some((t,n,o)=>{let r=t.toLowerCase();if(r===".git"||r==="node_modules"||r===".bun"||r===".env"||r.startsWith(".env.")||e.replace(/\\/g,"/")===Re)return!0;if(r!==".openpond")return!1;let i=o[n+1]?.toLowerCase();return i==="goals"||i==="traces"||i==="vendor"||i==="eval-results.json"||i==="artifact-index.json"})}s(Tt,"shouldSkipProfileSourcePath");function Ht(e){let t=y(e.checkResult),n=y(t?.deployPlan)??y(e.deployPlan),o=y(n?.source),r=y(n?.checks),i=y(t?.sourceCheckStatus);return{status:e.status,agentId:e.agentId,deployPlanStatus:f(n?.status),canRun:Te(n?.canRun),canDeploy:Te(n?.canDeploy),sourceRef:f(o?.sourceRef),sourceCommitSha:f(o?.sourceCommitSha),manifestHash:f(o?.manifestHash),manifestPath:f(o?.manifestPath),setupCommands:b(r?.setupCommands),validationCommands:b(r?.validationCommands),requiredChecks:b(r?.requiredChecks),evalNames:b(r?.evalNames),blockedReasons:b(n?.blockedReasons),staleReasons:b(n?.staleReasons),runtimeId:f(i?.latestRuntimeId),sandboxId:f(i?.latestSandboxId),traceArtifactRefs:b(i?.traceArtifactRefs),evalResultArtifactRefs:b(i?.evalResultArtifactRefs),validatorArtifactRefs:b(i?.validatorArtifactRefs),checkedAt:e.checkedAt??new Date().toISOString(),error:e.error??null}}s(Ht,"hostedSourceCheckStatusFromPayload");function Gt(e){let t=y(e.publishResult),n=y(t?.activeManifestSnapshot)??y(t?.manifestSnapshot)??y(t?.snapshot);return{status:e.status??"published",agentId:e.agentId,snapshotId:f(n?.id),sourceRef:f(n?.sourceRef),sourceCommitSha:f(n?.sourceCommitSha),manifestHash:f(n?.manifestHash),manifestPath:f(n?.manifestPath),buildStatus:f(n?.buildStatus),validationStatus:f(n?.validationStatus),evalStatus:f(n?.evalStatus),publishedAt:f(t?.publishedAt)??f(n?.publishedAt),error:e.error??null}}s(Gt,"hostedPublishStatusFromPayload");function Nt(e){let t=y(e.runResult),n=y(t?.run),o=y(n?.runtimeSource),r=y(n?.metadata),i=y(r?.sourceSummary),a=y(r?.setupGate),l=y(r?.responseSummary),c=y(r?.traceSummary),d=y(r?.evalSummary);return{status:f(n?.status)??(e.error?"failed":"running"),agentId:f(n?.agentId)??e.agentId,runId:f(n?.id),runtimeId:f(n?.runtimeId),sandboxId:f(n?.sandboxId),sourceRef:f(o?.sourceRef)??f(i?.sourceRef)??f(r?.sourceRef),sourceCommitSha:f(o?.sourceCommitSha)??f(i?.sourceCommitSha)??f(r?.hostedHead),manifestHash:f(o?.manifestHash)??f(i?.manifestHash),setupGateStatus:f(a?.status),setupRequirementRefs:Dt(a),artifactRefs:b(l?.artifactRefs),traceArtifactRefs:b(c?.artifactRefs),evalArtifactRefs:b(d?.artifactRefs),startedAt:f(n?.createdAt),completedAt:f(n?.completedAt),error:e.error??null}}s(Nt,"hostedRunSummaryFromPayload");function Ut(e){return e?.status?e.status==="succeeded"||e.status==="passed"?"passed":e.status==="failed"||e.status==="cancelled"?"failed":"running":"not_started"}s(Ut,"hostedRunStatusFromRunSummary");function Dt(e){return e?(Array.isArray(e.requirements)?e.requirements:Array.isArray(e.blockingRequirements)?e.blockingRequirements:[]).map(n=>{let o=y(n);return f(o?.ref)??f(o?.id)??f(o?.label)}).filter(n=>!!n):[]}s(Dt,"setupRequirementRefs");function y(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(y,"record");function f(e){return typeof e=="string"&&e.trim()?e.trim():null}s(f,"text");function Te(e){return typeof e=="boolean"?e:null}s(Te,"booleanValue");function b(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(b,"textArray");import{createRequire as it}from"node:module";import{createHash as Qe,randomUUID as et}from"node:crypto";import{spawn as Pn}from"node:child_process";import{existsSync as k}from"node:fs";import{cp as hn,mkdir as E,readFile as st,readdir as at,rename as me,rm as Pe,symlink as yn,writeFile as D}from"node:fs/promises";import u from"node:path";function ce(e=null){return{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:e}}s(ce,"emptyProfileCatalogState");function ue(e=null){return{skillCount:0,generatedAt:null,stale:!0,error:e}}s(ue,"emptyProfileSkillCatalogState");function de(){return{status:"ready",requirementCount:0,blockingCount:0,optionalMissingCount:0,readyCount:0,requirements:[],blockingRequirements:[]}}s(de,"emptyProfileSetupGate");function W(){return{changedAgents:[],newAgents:[],deletedAgents:[],changedSkills:[],changedActions:[],changedExtensions:[],setupChanges:[],envRequirementChanges:[],files:[]}}s(W,"emptyProfileDiffSummary");function fe(e=null){return{state:e?"error":"none",message:e??"No active OpenPond profile.",agentCount:0,actionCount:0,defaultAction:null,checkFresh:!1,checkStaleReason:e??"No active profile.",localHead:null,hostedHead:null}}s(fe,"emptyProfileSummary");import{existsSync as U}from"node:fs";import{readFile as Bt,stat as zt}from"node:fs/promises";import K from"node:path";var He=".openpond/agent-manifest.json",Ge=".openpond/action-registry.json",Jt=".openpond/source-upload-metadata.json",Wt=".openpond/agent-package-origin.json";async function De(e){return ze({agentId:"default",sourcePath:e,preferred:!0})}s(De,"loadProfileActionCatalog");async function Be(e){if(e.length===0)return{catalog:{actionCount:0,generatedAt:null,manifestPath:null,registryPath:null,stale:!0,error:"No profile agent sources are enabled."},actionCatalog:[],sourceSetupRequirements:[]};let t=[...e.filter(l=>l.preferred),...e.filter(l=>!l.preferred)],n=await Promise.all(t.map(ze)),o=new Map,r=[];for(let l of n)for(let c of l.actionCatalog){let d=o.has(c.id)?`${c.agentId??"agent"}.${c.sourceActionId??c.id}`:c.id,g=d===c.id?c:{...c,id:d};o.set(d,g),r.push(g)}let i=Yt(n.map(l=>l.catalog.generatedAt)),a=n.map(l=>l.catalog.error).filter(Boolean);return{catalog:{actionCount:r.length,generatedAt:i,manifestPath:n.find(l=>l.catalog.manifestPath)?.catalog.manifestPath??null,registryPath:n.find(l=>l.catalog.registryPath)?.catalog.registryPath??null,stale:n.some(l=>l.catalog.stale),error:a.length>0?a.join("; "):null},actionCatalog:r,sourceSetupRequirements:n.flatMap(l=>l.sourceSetupRequirements)}}s(Be,"loadProfileActionCatalogForSources");async function ze(e){let t=e.sourcePath,n=K.join(t,He),o=K.join(t,Ge),r=K.join(t,Jt),i=K.join(t,Wt);try{let a=await Y(n),l=await Y(o),c=await Y(r),d=w(await Y(i)),g=w(w(a)?.inputSchemas),P=Ue(w(c)?.setupRequirements)??[],x=Vt(P),S=new Map;for(let m of[...pe(w(a)?.actionCatalog),...pe(w(l)?.actions),...pe(w(a)?.actions)]){let $=p(m.id)??p(m.name);if(!$)continue;let C=S.get($),St=Xt({sourceRequirementsByAction:x,actionId:$,actionName:p(m.name)}),kt=Zt(Ue(m.setupRequirements)??C?.setupRequirements??[],St),Ct={id:$,agentId:e.agentId,sourcePath:t,sourceActionId:$,name:p(m.name)??C?.name??$,label:p(m.label)??C?.label??on($),description:p(m.description)??C?.description??null,visibility:p(m.visibility)??C?.visibility??"default",inputSchema:nn(m.inputSchema,g)??C?.inputSchema??null,outputSchema:Je(m.outputSchema)??C?.outputSchema??null,approvalPolicy:w(m.approvalPolicy)??C?.approvalPolicy??null,artifactPolicy:w(m.artifactPolicy)??C?.artifactPolicy??null,setupRequirements:kt,mcp:w(m.mcp)??C?.mcp??null,schedulePolicy:w(m.schedulePolicy)??C?.schedulePolicy??null,trace:Kt(w(m.trace)??C?.trace??null,d),implementation:w(m.implementation)??C?.implementation??null,invokesModel:typeof m.invokesModel=="boolean"?m.invokesModel:C?.invokesModel};S.set($,Ct)}let M=Array.from(S.values()).filter(m=>m.visibility!=="internal"&&m.visibility!=="debug"),H=[...a?[]:[He],...l?[]:[Ge]],_=await tn([n,o]);return{catalog:{actionCount:M.length,generatedAt:_,manifestPath:U(n)?n:null,registryPath:U(o)?o:null,stale:H.length>0,error:H.length>0?en(e,H):null},actionCatalog:M,sourceSetupRequirements:P}}catch(a){return{catalog:{actionCount:0,generatedAt:null,manifestPath:U(n)?n:null,registryPath:U(o)?o:null,stale:!0,error:a instanceof Error?a.message:String(a)},actionCatalog:[],sourceSetupRequirements:[]}}}s(ze,"loadProfileActionCatalogSource");function Kt(e,t){if(!t)return e;let n=p(t.versionId),o=p(t.digest);return!n||!o?e:{...e??{},agentVersionId:n,agentPackageDigest:o,validationReceiptIds:Ne(t.validationReceiptIds),evalReceiptIds:Ne(t.evalReceiptIds)}}s(Kt,"mergeAgentPackageTrace");function Ne(e){return Array.isArray(e)?e.filter(t=>typeof t=="string"&&t.trim().length>0):[]}s(Ne,"stringArray");function Yt(e){let t=0;for(let n of e){if(!n)continue;let o=Date.parse(n);Number.isFinite(o)&&(t=Math.max(t,o))}return t>0?new Date(t).toISOString():null}s(Yt,"latestIso");function Vt(e){let t=new Map;for(let n of e){let o=[p(n.actionId),p(n.sourceActionId),p(n.actionName)].filter(r=>!!r);for(let r of o){let i=t.get(r)??[];i.push(n),t.set(r,i)}}return t}s(Vt,"sourceSetupRequirementsByAction");function Xt(e){return[...e.sourceRequirementsByAction.get(e.actionId)??[],...e.actionName&&e.actionName!==e.actionId?e.sourceRequirementsByAction.get(e.actionName)??[]:[]].map(n=>({...n,source:"source_upload_metadata"}))}s(Xt,"setupRequirementsForActionSource");function Zt(e,t){if(t.length===0)return e;let n=[],o=new Set;for(let r of[...e,...t]){let i=Qt(r);o.has(i)||(o.add(i),n.push(r))}return n}s(Zt,"mergeSetupRequirements");function Qt(e){return[p(e.actionId)??p(e.sourceActionId)??p(e.actionName)??"",p(e.kind)??p(e.type)??"",p(e.name)??p(e.key)??p(e.provider)??p(e.tool)??p(e.command)??p(e.packageName)??p(e.path)??p(e.repo)??p(e.url)??p(e.id)??""].join(":")}s(Qt,"setupRequirementIdentity");function en(e,t){return[`Profile agent ${e.agentId} at ${e.sourcePath} is missing SDK catalog artifact(s): ${t.join(", ")}.`,"Run `openpond profile check --kind all` after source materialization so each enabled profile agent has inspect/build artifacts."].join(" ")}s(en,"missingSourceArtifactsMessage");async function Y(e){return U(e)?JSON.parse(await Bt(e,"utf8")):null}s(Y,"readJsonIfExists");async function tn(e){let t=0;for(let n of e){if(!U(n))continue;let o=await zt(n);t=Math.max(t,o.mtimeMs)}return t>0?new Date(t).toISOString():null}s(tn,"latestMtime");function w(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(w,"asRecord");function pe(e){return Array.isArray(e)?e.filter(t=>!!w(t)):[]}s(pe,"records");function Ue(e){return Array.isArray(e)?e.filter(t=>!!w(t)):null}s(Ue,"recordArray");function p(e){return typeof e=="string"&&e.trim()?e.trim():null}s(p,"text");function Je(e){return p(e)??w(e)}s(Je,"schemaValue");function nn(e,t){let n=Je(e);return typeof n!="string"?n:w(t?.[n])??n}s(nn,"resolvedSchemaValue");function on(e){let t=e.replace(/[._-]+/g," ").trim();return t?t.replace(/\b\w/g,n=>n.toUpperCase()):e}s(on,"titleFromActionId");import{createHash as rn}from"node:crypto";import{existsSync as Ve}from"node:fs";import{readdir as Xe,readFile as sn,stat as an}from"node:fs/promises";import q from"node:path";var ge="skills",V="SKILL.md",We=8e4;async function Ze(e){let t=q.join(e,ge);if(!Ve(t))return{skillCatalog:Ke({stale:!1}),skills:[]};try{let n=await Xe(t,{withFileTypes:!0}),o=(await Promise.all(n.filter(i=>i.isDirectory()).map(i=>cn(e,i.name)))).sort((i,a)=>i.name.localeCompare(a.name)||i.path.localeCompare(a.path));dn(o);let r=await fn(e,o);return{skillCatalog:{skillCount:o.length,generatedAt:r,stale:!1,error:null},skills:o}}catch(n){return{skillCatalog:Ke({stale:!0,error:n instanceof Error?n.message:String(n)}),skills:[]}}}s(Ze,"loadProfileSkills");function ln(e){let t=[],n=/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)([\s\S]*)$/.exec(e);if(!n)return{name:null,description:null,body:e.trim(),messages:["SKILL.md must start with YAML frontmatter bounded by ---."]};let o=n[1]??"",r=(n[2]??"").trim(),i;try{i=Oe.load(o)}catch(d){t.push(`SKILL.md frontmatter is invalid YAML: ${d instanceof Error?d.message:String(d)}`)}let a=gn(i),l=Ye(a?.name),c=Ye(a?.description);return l||t.push("Skill frontmatter must include a non-empty name."),c||t.push("Skill frontmatter must include a non-empty description."),r||t.push("Skill body must be non-empty markdown."),{name:l,description:c,body:r,messages:t}}s(ln,"parseProfileSkillMarkdown");function Ke(e={}){return{skillCount:0,generatedAt:null,stale:e.stale??!0,error:e.error??null}}s(Ke,"emptyProfileSkillCatalogState");async function cn(e,t){let n=q.join(ge,t,V).replace(/\\/g,"/"),o=q.join(e,n),r=[],i=q.join(e,ge,t),a=await un(i),l="";Ve(o)?l=await sn(o,"utf8"):r.push(`Missing ${V}.`),l.length>We&&r.push(`Skill markdown exceeds the limit of ${We} characters.`);let c=ln(l);r.push(...c.messages);let d=c.name??t,g=c.description??"";return pn(d)||r.push("Skill name must be lowercase kebab-case."),d!==t&&r.push(`Skill name must match its directory name (${t}).`),{name:d,description:g,path:n,scope:"profile",enabled:r.length===0,sourcePath:e,charCount:l.length,sourceHash:mn(l),validationStatus:r.length>0?"error":"valid",validationMessages:r,resourceFiles:a.filter(P=>P!==V)}}s(cn,"loadProfileSkillDirectory");async function un(e){let t=[];async function n(o,r){let i=await Xe(o,{withFileTypes:!0});await Promise.all(i.map(async a=>{let l=r?`${r}/${a.name}`:a.name;a.isDirectory()?await n(q.join(o,a.name),l):a.isFile()&&t.push(l)}))}return s(n,"visit"),await n(e,""),t.sort()}s(un,"listPackageFiles");function dn(e){let t=new Map;for(let n of e)t.set(n.name,(t.get(n.name)??0)+1);for(let n of e)(t.get(n.name)??0)<=1||(n.enabled=!1,n.validationStatus="error",n.validationMessages=[...n.validationMessages,`Duplicate skill name: ${n.name}`])}s(dn,"markDuplicateSkillNames");async function fn(e,t){let n=0;for(let o of t){let r=q.dirname(q.join(e,o.path)),i=[V,...o.resourceFiles];for(let a of i){let l=await an(q.join(r,a)).catch(()=>null);l?.isFile()&&(n=Math.max(n,l.mtimeMs))}}return n>0?new Date(n).toISOString():null}s(fn,"latestSkillMtime");function pn(e){return/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(e)}s(pn,"isKebabCaseSkillName");function gn(e){return e&&typeof e=="object"&&!Array.isArray(e)?e:null}s(gn,"asRecord");function Ye(e){if(typeof e!="string")return null;let t=e.trim();return t.length>0?t:null}s(Ye,"text");function mn(e){return rn("sha256").update(e).digest("hex")}s(mn,"sha256Hex");var F="openpond-profile.json",wn="settings/profile.yaml",lt="default",A="default";function Sn(e,t){let n=e?.defaultAgent??A,o=e?.enabledAgents&&e.enabledAgents.length>0?e.enabledAgents:[n];return{...e??{},path:t,defaultAgent:n,enabledAgents:o}}s(Sn,"mergeProfileRepoManifestEntry");function Z(e,t,n){let o=I(e);if(e){let l=o.findIndex(d=>u.resolve(d.repoPath)===u.resolve(e.repoPath)&&d.profile===e.profile),c={source:o[l]?.source??"local",repositoryId:o[l]?.repositoryId??u.resolve(e.repoPath),repoPath:u.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}};l>=0?o[l]=c:o.push(c)}let r=o.findIndex(l=>u.resolve(l.repoPath)===u.resolve(t)&&l.profile===n),i=r>=0?o[r]:{source:"local",repositoryId:u.resolve(t),repoPath:u.resolve(t),profile:n};return r<0&&o.push(i),{repoPath:u.resolve(t),profile:n,mode:"local",profiles:o,...i.lastCheck?{lastCheck:i.lastCheck}:{},...i.lastPush?{lastPush:i.lastPush}:{}}}s(Z,"mergeActiveLocalProfileConfig");function I(e){if(!e)return[];let t=e.profiles?.map(n=>({...n}))??[];return t.some(n=>u.resolve(n.repoPath)===u.resolve(e.repoPath)&&n.profile===e.profile)||t.push({source:"local",repositoryId:u.resolve(e.repoPath),repoPath:u.resolve(e.repoPath),profile:e.profile,...e.lastCheck?{lastCheck:e.lastCheck}:{},...e.lastPush?{lastPush:e.lastPush}:{}}),t}s(I,"profileConfigEntries");var kn=it(import.meta.url);function Cn(){return u.join(Ce(),"library","profiles","default-repo")}s(Cn,"defaultLocalProfileRepoPath");function ct(e=null){return{mode:"none",repoPath:null,activeProfile:null,sourcePath:null,manifestPath:null,agents:[],skills:[],evals:[],git:null,catalog:ce(e),skillCatalog:ue(e),actionCatalog:[],sourceSetupRequirements:[],setupGate:de(),diff:W(),hosted:null,summary:fe(e),lastCheck:null,error:e}}s(ct,"emptyProfileState");async function qo(e={}){let t=u.resolve(e.repoPath??Cn()),n=Se(e.profile),o=u.join("profiles",n),r=u.join(t,o),i=e.template??"blank-agent",a=i==="blank-profile";await E(t,{recursive:!0});let l=k(u.join(t,F)),c=await T(t).catch(()=>Tn(n,o));if(a&&l&&c.profiles[n])throw new Error(`Profile "${n}" already exists in ${t}.`);c.defaultProfile=c.defaultProfile||n,c.profiles[n]=Sn(c.profiles[n],o),a&&(c.profiles[n].enabledAgents=[]),a?await E(r,{recursive:!0}):await An(r,i,!!e.force),await pt(r),await In(t,r,n,{includeDefaultAgent:!a}),await X(t,c),await Le(t);let d=(await O()).openpondProfile;return await L({openpondProfile:Z(d,t,n)}),j()}s(qo,"initLocalProfileRepo");async function jo(e,t,n){let o=u.resolve(e),r=await T(o),i=Se(t??r.defaultProfile);ke(r,o,i);let a=(await O()).openpondProfile,l=Z(a,o,i);return ut(l,o,i,n),await L({openpondProfile:l}),j()}s(jo,"loadLocalProfileRepo");async function Fo(e,t,n){let o=u.resolve(e),r=await T(o),i=Se(t??r.defaultProfile);ke(r,o,i);let a=(await O()).openpondProfile,l=Z(a,o,i);return ut(l,o,i,n),a&&(l.repoPath=a.repoPath,l.profile=a.profile,l.lastCheck=a.lastCheck,l.lastPush=a.lastPush),await L({openpondProfile:l}),Rn(he({repoPath:o,profile:i,source:n?.source,repositoryId:n?.repositoryId}))}s(Fo,"registerLocalProfileRepo");function ut(e,t,n,o){o&&(e.profiles=I(e).map(r=>u.resolve(r.repoPath)===t&&r.profile===n?{...r,source:o.source,repositoryId:o.repositoryId}:r))}s(ut,"applyProfileIdentity");async function To(e,t){let n=e.trim(),o=Fn(t);if(!n)throw new Error("Agent ID is required.");let i=(await O()).openpondProfile;if(!i)throw new Error("No active local Profile.");let a=await T(i.repoPath),l=a.profiles[i.profile];if(!l)throw new Error(`Profile "${i.profile}" was not found.`);let c=l.defaultAgent??A;if(!(l.enabledAgents??[c]).includes(n))throw new Error(`Agent "${n}" was not found in Profile "${i.profile}".`);let g={...l.agentNames??{}};return o===n?delete g[n]:g[n]=o,Object.keys(g).length?l.agentNames=g:delete l.agentNames,await X(i.repoPath,a),j()}s(To,"renameActiveProfileAgent");async function Ho(e){let t=e.agentPackage;if(Hn(t),!/^[a-z0-9][a-z0-9._-]{0,190}$/.test(t.agentId))throw new Error("Agent package ID is not safe for a local Profile.");let n=await Q(),o=n.state.sourcePath;await pt(o);let r=u.join(o,"agents");await E(r,{recursive:!0});let i=u.join(r,t.agentId),a=k(i);if(a&&e.overwrite!==!0)throw new Error(`Agent "${t.agentId}" already exists. Confirm replacement to install this version.`);let l=u.join(r,`.${t.agentId}.${et()}.installing`),c=u.join(r,`.${t.agentId}.${et()}.backup`),d=await T(n.config.repoPath),g=JSON.stringify(d),P=!1,x=!1;try{await Gn(l,t),a&&(await me(i,c),P=!0),await me(l,i),x=!0;let S=d.profiles[n.config.profile];if(!S)throw new Error(`Profile "${n.config.profile}" was not found.`);let M=new Set(S.enabledAgents??[]);M.add(t.agentId),S.enabledAgents=[...M],S.defaultAgent||(S.defaultAgent=t.agentId),S.agentNames={...S.agentNames??{},[t.agentId]:t.title},await X(n.config.repoPath,d),P&&await Pe(c,{recursive:!0,force:!0})}catch(S){throw await Pe(l,{recursive:!0,force:!0}),x&&await Pe(i,{recursive:!0,force:!0}),P&&k(c)&&await me(c,i),JSON.stringify(d)!==g&&await X(n.config.repoPath,JSON.parse(g)).catch(()=>{}),S}return{state:await j(),agentId:t.agentId,versionId:t.versionId,digest:t.digest}}s(Ho,"installAgentPackageIntoActiveProfile");async function j(){let t=(await O()).openpondProfile;return t?we(t):ct()}s(j,"loadOpenPondProfileState");function he(e){return{source:e.source??"local",repositoryId:e.repositoryId?.trim()||u.resolve(e.repoPath),profileId:e.profile}}s(he,"openPondProfileRef");async function On(){let e=(await O()).openpondProfile;if(!e)return{lastUsed:null,profiles:[]};let t=I(e),n=await Promise.all(t.map(async o=>{let r=await we({repoPath:o.repoPath,profile:o.profile,mode:"local",...o.lastCheck?{lastCheck:o.lastCheck}:{},...o.lastPush?{lastPush:o.lastPush}:{}});return{ref:he(o),name:o.profile,repoPath:o.repoPath,sourcePath:r.sourcePath,state:r}}));return{lastUsed:he({repoPath:e.repoPath,profile:e.profile,source:I(e).find(o=>u.resolve(o.repoPath)===u.resolve(e.repoPath)&&o.profile===e.profile)?.source,repositoryId:I(e).find(o=>u.resolve(o.repoPath)===u.resolve(e.repoPath)&&o.profile===e.profile)?.repositoryId}),profiles:n}}s(On,"loadOpenPondProfileLibrary");async function Rn(e){if(!e)return j();let t=(await O()).openpondProfile,n=I(t).find(o=>o.source===e.source&&o.repositoryId===e.repositoryId&&o.profile===e.profileId);return n?we({repoPath:n.repoPath,profile:n.profile,mode:"local",...n.lastCheck?{lastCheck:n.lastCheck}:{},...n.lastPush?{lastPush:n.lastPush}:{}}):ct(`Profile "${e.profileId}" is not installed on this device.`)}s(Rn,"loadOpenPondProfileStateForRef");async function Go(e){let t=(await O()).openpondProfile,n=I(t).find(o=>o.source===e.source&&o.repositoryId===e.repositoryId&&o.profile===e.profileId);if(!n)throw new Error(`Profile "${e.profileId}" is not installed on this device.`);return await L({openpondProfile:Z(t,n.repoPath,n.profile)}),j()}s(Go,"selectOpenPondProfile");async function No(e){let t=(await O()).openpondProfile;if(!t)return{lastUsed:null,profiles:[]};let n=I(t).filter(i=>i.source!==e.source||i.repositoryId!==e.repositoryId||i.profile!==e.profileId);if(n.length===0)return await L({openpondProfile:null}),{lastUsed:null,profiles:[]};let r=u.resolve(t.repoPath)===u.resolve(I(t).find(i=>i.source===e.source&&i.repositoryId===e.repositoryId&&i.profile===e.profileId)?.repoPath??"")&&t.profile===e.profileId?n[0]:n.find(i=>u.resolve(i.repoPath)===u.resolve(t.repoPath)&&i.profile===t.profile)??n[0];return await L({openpondProfile:{repoPath:r.repoPath,profile:r.profile,mode:"local",profiles:n,...r.lastCheck?{lastCheck:r.lastCheck}:{},...r.lastPush?{lastPush:r.lastPush}:{}}}),On()}s(No,"removeOpenPondProfile");async function we(e){try{let t=await T(e.repoPath),n=ke(t,e.repoPath,e.profile),o=await xn(t,e.profile),r=gt({manifest:t,profile:e.profile,profileSourcePath:n,agents:o}),[i,a,l,c]=await Promise.all([N(e.repoPath),Be(r),Ze(n),_n(n,r)]),d=nt(e),g=qn(i,e.profile),P=J({actionCatalog:a.actionCatalog,sourceSetupRequirements:a.sourceSetupRequirements}),x=Ln({agents:o,actionCatalog:a.actionCatalog,catalog:a.catalog,diff:g,git:i,hosted:d,lastCheck:e.lastCheck??null,error:null});return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:n,manifestPath:u.join(e.repoPath,F),agents:o,skills:l.skills,evals:c,git:i,catalog:a.catalog,skillCatalog:l.skillCatalog,actionCatalog:a.actionCatalog,sourceSetupRequirements:a.sourceSetupRequirements,setupGate:P,diff:g,hosted:d,summary:x,lastCheck:e.lastCheck??null,error:null}}catch(t){let n=await N(e.repoPath).catch(()=>null),o=t instanceof Error?t.message:String(t);return{mode:"local",repoPath:e.repoPath,activeProfile:e.profile,sourcePath:null,manifestPath:u.join(e.repoPath,F),agents:[],skills:[],evals:[],git:n,catalog:ce(o),skillCatalog:ue(o),actionCatalog:[],sourceSetupRequirements:[],setupGate:de(),diff:W(),hosted:nt(e),summary:fe(o),lastCheck:e.lastCheck??null,error:o}}}s(we,"loadOpenPondProfileStateForConfig");async function Q(){let e=(await O()).openpondProfile;if(!e)throw new Error("No active OpenPond profile. Run `openpond init` or `openpond profile load --path <dir>`.");let t=await j();if(t.error)throw new Error(t.error);if(!t.sourcePath)throw new Error("Active OpenPond profile has no source path.");return{config:e,state:t}}s(Q,"requireActiveLocalProfile");async function Uo(e){let t=await Q(),n=e.command==="run"?e.args??[]:[],o=e.command==="run"?t.state.actionCatalog.find(l=>l.id===n[0]):null,r=u.resolve(e.cwd??o?.sourcePath??t.state.sourcePath),i=e.command==="run"?tt(r,e.args??[],o?.sourceActionId??null):null;if(e.command==="run"&&i){let l=i[0],c=u.resolve(t.state.sourcePath)===r?{actionCatalog:t.state.actionCatalog,sourceSetupRequirements:t.state.sourceSetupRequirements}:await De(r);ne(l,J({actionCatalog:c.actionCatalog,sourceSetupRequirements:c.sourceSetupRequirements,actionId:l}))}let a=await dt({command:e.command,args:e.command==="run"?i??tt(r,e.args??[]):e.args,cwd:r,inherit:e.inherit,throwOnFailure:!1});if((e.command==="inspect"||e.command==="build"||e.command==="validate"||e.command==="eval")&&await ft(e.command,a.code),a.code!==0){let l=a.stderr.trim()||a.stdout.trim();throw new Error(l||`${e.command} failed with exit code ${a.code??"unknown"}`)}return a}s(Uo,"runProfileSdkCommand");async function dt(e){let t=u.resolve(e.cwd),n=Un(),o=e.command==="run"?[...n.args,e.command,...e.args??[]]:[...n.args,e.command,"--cwd",t,...e.args??[]],r=await yt(n.command,o,{cwd:t,inherit:e.inherit,timeoutMs:e.timeoutMs,maxOutputBytes:e.maxOutputBytes});if(e.throwOnFailure!==!1&&r.code!==0){let i=wt(r,e.command);throw new Error(i||`${e.command} failed with exit code ${r.code??"unknown"}`)}return r}s(dt,"runAgentSdkProjectCommand");function tt(e,t,n=null){let[o,...r]=t;if(!o||o.startsWith("--"))throw new Error("run requires an action name");return[n??o,"--cwd",e,...r]}s(tt,"runCommandArgs");async function Do(e){let t=!e||e==="all"?["inspect","build","validate","eval"]:[e],n=await Q(),o=await T(n.config.repoPath),r=gt({manifest:o,profile:n.config.profile,profileSourcePath:n.state.sourcePath,agents:n.state.agents});for(let i of t){if(i!=="inspect"&&i!=="build"&&i!=="validate"&&i!=="eval")throw new Error("check kind must be one of inspect, build, validate, eval, all");for(let a of r)await bn({command:i,source:a,profileSourcePath:n.state.sourcePath,sourceCount:r.length})}}s(Do,"runProfileCheck");async function bn(e){let t=e.command==="inspect"||e.command==="validate"||e.command==="eval"?["--json"]:[];if(e.sourceCount>1){let o=u.relative(e.profileSourcePath,e.source.sourcePath)||".";console.log(`
|
|
9
|
-
[profile:${e.source.agentId}] ${e.command} ${o}`)}let n=await dt({command:e.command,args:t,cwd:e.source.sourcePath,inherit:!1,throwOnFailure:!1});if(n.stdout.trim()&&console.log(n.stdout.trim()),n.stderr.trim()&&console.error(n.stderr.trim()),await ft(e.command,n.code),n.code!==0){let o=wt(n,e.command);throw new Error([`Profile check failed for enabled agent ${e.source.agentId} at ${e.source.sourcePath}.`,o||`${e.command} failed with exit code ${n.code??"unknown"}`].join(`
|
|
10
|
-
`))}}s(bn,"runProfileCheckForSource");async function Bo(e){let t=await Q();if(!t.state.repoPath)throw new Error("Active OpenPond profile has no repo path.");let n=await Me(t.state.repoPath,e?.trim()||`Update OpenPond profile ${t.state.activeProfile??lt}`);return{committed:n.committed,stdout:n.stdout,stderr:n.stderr,state:await j()}}s(Bo,"commitActiveProfileChanges");async function zo(e){let t=(await O()).openpondProfile;if(!t)return;let n=I(t).map(o=>u.resolve(o.repoPath)===u.resolve(t.repoPath)&&o.profile===t.profile?{...o,lastPush:e}:o);await L({openpondProfile:{...t,lastPush:e,profiles:n}})}s(zo,"saveProfilePushStatus");async function ft(e,t){let n=(await O()).openpondProfile;if(!n)return;let o=await $e(n.repoPath).catch(()=>null),r={command:e,status:t===0?"passed":"failed",checkedAt:new Date().toISOString(),exitCode:t,sourceHead:o},i=I(n).map(a=>u.resolve(a.repoPath)===u.resolve(n.repoPath)&&a.profile===n.profile?{...a,lastCheck:r}:a);await L({openpondProfile:{...n,lastCheck:r,profiles:i}})}s(ft,"saveProfileCheckStatus");async function An(e,t,n){if(await E(e,{recursive:!0}),(await at(e)).length>0&&!n)return;let r=ee(),i=u.join(r,"templates",t);if(!k(i))throw new Error(`Unknown agent template "${t}".`);await hn(i,e,{recursive:!0,force:n,errorOnExist:!1}),await vn(e,r)}s(An,"ensureProfileSource");async function In(e,t,n,o={}){await E(u.join(e,"profiles"),{recursive:!0});for(let a of["agents","skills","actions","extensions","prompts","goals","evals","settings","traces"])await E(u.join(t,a),{recursive:!0});let r=u.join(t,wn);if(!k(r)){let a=o.includeDefaultAgent===!1?["agents: []"]:["agents:",` - id: ${A}`," path: agent/agent.ts"," enabled: true"];await D(r,["schema: openpond.profile.v1",`profile: ${n}`,...a,""].join(`
|
|
11
|
-
`),"utf8")}let i=u.join(t,"openpond.lock");k(i)||await D(i,`# OpenPond profile lockfile placeholder
|
|
12
|
-
`,"utf8")}s(In,"ensureProfileScaffoldFiles");async function vn(e,t){let n=u.join(e,"package.json"),o=await st(n,"utf8"),r=JSON.parse(o);r.dependencies={...r.dependencies??{},"openpond-agent-sdk":`file:${t}`},await D(n,`${JSON.stringify(r,null,2)}
|
|
13
|
-
`,"utf8")}s(vn,"rewriteTemplateSdkDependency");async function pt(e){if(!k(u.join(e,"package.json")))return;let t=ee();await En(t);let n=u.join(e,"node_modules"),o=u.join(n,"openpond-agent-sdk");await E(n,{recursive:!0}),k(o)||await yn(t,o,"dir")}s(pt,"ensureProfileDependencies");async function En(e){if(k(u.join(e,"dist","cli.js"))&&k(u.join(e,"dist","primitives","index.js")))return;let t=u.join(e,"scripts","build.ts");if(!k(t))throw new Error(`Resolved openpond-agent-sdk at ${e}, but built SDK files are missing.`);let n=await yt(process.execPath,[ht(e),t],{cwd:e});if(n.code!==0){let o=n.stderr.trim()||n.stdout.trim();throw new Error(o||`openpond-agent-sdk build failed with exit code ${n.code??"unknown"}`)}}s(En,"ensureAgentSdkBuilt");async function xn(e,t){let n=e.profiles[t];if(!n)return[];let o=n.defaultAgent??A,r=new Set(n.enabledAgents??[o]);return Array.from(r).map(i=>({id:i,name:n.agentNames?.[i]?.trim()||i,path:i===A?"agent/agent.ts":`agents/${i}`,enabled:!0}))}s(xn,"listProfileAgents");function gt(e){let t=e.manifest.profiles[e.profile]?.defaultAgent??A;return(e.agents.length>0?e.agents:[{id:A,name:A,path:"agent/agent.ts",enabled:!0}]).map(o=>({agentId:o.id,sourcePath:o.id===A?e.profileSourcePath:u.join(e.profileSourcePath,"agents",o.id),preferred:o.id===t}))}s(gt,"profileCatalogSources");async function _n(e,t){let n=new Map,o=[{root:u.join(e,"evals"),agentId:null},...t.flatMap(r=>[{root:u.join(r.sourcePath,"agent","evals"),agentId:r.agentId},{root:u.join(r.sourcePath,"evals"),agentId:r.agentId}])];for(let r of o)for(let i of await mt(r.root)){let a=u.relative(e,i).split(u.sep).join("/");n.has(a)||n.set(a,{id:a,name:u.basename(i).replace(/\.eval\.[^.]+$/i,"").replace(/\.[^.]+$/i,""),path:a,agentId:r.agentId,sourcePath:i})}return[...n.values()].sort((r,i)=>r.name.localeCompare(i.name)||r.path.localeCompare(i.path))}s(_n,"loadProfileEvals");async function mt(e){if(!k(e))return[];let t=[];for(let n of await at(e,{withFileTypes:!0})){let o=u.join(e,n.name);n.isDirectory()?t.push(...await mt(o)):n.isFile()&&/\.eval\.(?:[cm]?[jt]sx?)$/i.test(n.name)&&t.push(o)}return t}s(mt,"listEvalSourceFiles");function nt(e){let t=e.lastPush;return t?{teamId:t.teamId??null,projectId:t.projectId??null,sourceRef:t.sourceRef??null,sourceCommitSha:t.hostedHead??null,lastPushedAt:t.pushedAt,lastPushedLocalHead:t.localHead??null,lastPushedHostedHead:t.hostedHead??null,promotionStatus:t.promotionStatus??null,hostedRunStatus:t.hostedRunStatus??null,hostedRunAgentId:t.hostedRunAgentId??null,hostedRunId:t.hostedRunId??null,hostedRunAt:t.hostedRunAt??null,hostedSourceMaterialization:t.hostedSourceMaterialization??null,hostedSourceCheck:t.hostedSourceCheck??null,hostedPublish:t.hostedPublish??null,hostedRun:t.hostedRun??null}:null}s(nt,"hostedBindingFromConfig");function Ln(e){let t=e.actionCatalog.find(r=>r.id==="chat")?.id??e.actionCatalog.find(r=>r.name==="chat")?.id??e.actionCatalog.find(r=>r.id.endsWith(".chat"))?.id??null,n=!!(e.lastCheck&&e.lastCheck.status==="passed"&&e.lastCheck.sourceHead&&e.lastCheck.sourceHead===e.git.head&&!e.git.dirty&&!e.catalog.stale),o=Mn({catalog:e.catalog,git:e.git,lastCheck:e.lastCheck});return e.error?{state:"error",message:e.error,agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:e.git.isRepo?e.git.head?e.git.dirty?{state:"dirty",message:$n(e.diff),agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"ready",message:e.catalog.stale?"Profile source is clean; action catalog needs inspect/build.":"Profile source is clean.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:n,checkStaleReason:o,localHead:e.git.head,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"pending_commit",message:"Profile source is ready for its first commit.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:!1,checkStaleReason:"Profile source has no committed head.",localHead:null,hostedHead:e.hosted?.sourceCommitSha??null}:{state:"error",message:"Profile source is not Git-backed.",agentCount:e.agents.length,actionCount:e.actionCatalog.length,defaultAction:t,checkFresh:!1,checkStaleReason:"Profile source is not Git-backed.",localHead:null,hostedHead:e.hosted?.sourceCommitSha??null}}s(Ln,"summarizeProfileState");function Mn(e){return e.catalog.error?`Catalog error: ${e.catalog.error}`:e.catalog.stale?"Action catalog artifacts are missing or stale.":e.lastCheck?e.lastCheck.status!=="passed"?`Last ${e.lastCheck.command} check failed.`:e.lastCheck.sourceHead?e.git.head&&e.lastCheck.sourceHead!==e.git.head?"Profile source changed since the last check.":e.git.dirty?"Profile has uncommitted source changes.":null:"Last check did not record a source head.":"Profile checks have not run."}s(Mn,"profileCheckStaleReason");function $n(e){let t=[];return e.changedAgents.length>0&&t.push(`${e.changedAgents.length} changed agent(s)`),e.newAgents.length>0&&t.push(`${e.newAgents.length} new agent(s)`),e.deletedAgents.length>0&&t.push(`${e.deletedAgents.length} deleted agent(s)`),e.changedSkills.length>0&&t.push(`${e.changedSkills.length} changed skill(s)`),e.changedActions.length>0&&t.push(`${e.changedActions.length} changed action(s)`),e.changedExtensions.length>0&&t.push(`${e.changedExtensions.length} changed extension(s)`),e.setupChanges.length>0&&t.push(`${e.setupChanges.length} setup change(s)`),e.envRequirementChanges.length>0&&t.push(`${e.envRequirementChanges.length} env requirement change(s)`),t.length>0?`Profile has ${t.join(", ")}.`:"Profile has uncommitted source changes."}s($n,"profileDirtyMessage");function qn(e,t){let n=W();n.files=e.files;let o=`profiles/${t}/`;for(let r of e.files){let i=r.path.replace(/\\/g,"/");if(i===F||i===".gitignore"){v(n.setupChanges,i);continue}if(!i.startsWith(o))continue;let a=i.slice(o.length);jn(n,r,a)}return n}s(qn,"summarizeProfileDiff");function jn(e,t,n){let o=n.split("/")[0]??"";if(o==="agent")ot(e,A,t.category);else if(o==="agents"){let r=n.split("/")[1];r&&ot(e,r,t.category)}else o==="skills"?v(e.changedSkills,n.split("/")[1]??n):o==="actions"?v(e.changedActions,n.split("/")[1]??n):o==="extensions"?v(e.changedExtensions,n.split("/")[1]??n):(o==="settings"||n==="package.json"||n==="openpond.yaml"||n==="openpond.lock")&&v(e.setupChanges,n);n.toLowerCase().includes("env")&&v(e.envRequirementChanges,n),n.startsWith(".openpond/")&&v(e.changedActions,"catalog")}s(jn,"classifyProfileFileChange");function ot(e,t,n){if(n==="added"||n==="untracked"){v(e.newAgents,t);return}if(n==="deleted"){v(e.deletedAgents,t);return}v(e.changedAgents,t)}s(ot,"addAgentChange");function v(e,t){!t||e.includes(t)||e.push(t)}s(v,"addUnique");function Se(e){let t=e?.trim();if(!t)return lt;if(!/^[a-zA-Z0-9._-]+$/.test(t))throw new Error("profile name may only contain letters, numbers, dots, underscores, and hyphens");return t}s(Se,"normalizeProfileName");function Fn(e){let t=e.trim().replace(/\s+/g," ");if(!t)throw new Error("Agent name is required.");if(t.length>80)throw new Error("Agent name must be 80 characters or fewer.");if(/[\u0000-\u001f\u007f]/.test(t))throw new Error("Agent name cannot contain control characters.");return t}s(Fn,"normalizeAgentDisplayName");function Tn(e,t){return{schema:"openpond.profileRepo.v1",defaultProfile:e,profiles:{[e]:{path:t,defaultAgent:A,enabledAgents:[A]}}}}s(Tn,"defaultProfileManifest");async function T(e){let t=u.join(e,F),n=await st(t,"utf8"),o=JSON.parse(n);if(o.schema!=="openpond.profileRepo.v1"||!o.profiles||typeof o.profiles!="object")throw new Error(`${t} is not an OpenPond profile repo manifest.`);return o}s(T,"readProfileManifest");async function X(e,t){await D(u.join(e,F),`${JSON.stringify(t,null,2)}
|
|
14
|
-
`,"utf8")}s(X,"writeProfileManifest");function ke(e,t,n){let o=e.profiles[n];if(!o)throw new Error(`Profile "${n}" was not found in ${u.join(t,F)}.`);let r=u.resolve(t,o.path);if(!k(r))throw new Error(`Profile source path does not exist: ${r}`);return r}s(ke,"profileSourcePath");function Hn(e){let t=0,n=new Set;for(let l of e.source.files){let c=Pt(l.path);if(n.has(c))throw new Error(`Agent package contains duplicate source path ${c}.`);n.add(c);let d=Buffer.from(l.contentsBase64,"base64");if(d.byteLength!==l.sizeBytes||Qe("sha256").update(d).digest("hex")!==l.sha256)throw new Error(`Agent package source checksum failed for ${c}.`);t+=d.byteLength}if(t!==e.source.totalSizeBytes)throw new Error("Agent package source size does not match its manifest.");let{digest:o,versionId:r,...i}=e,a=Qe("sha256").update(Nn(i)).digest("hex");if(a!==e.digest||e.versionId!==`agent-${a.slice(0,20)}`)throw new Error("Agent package content digest does not match its version.")}s(Hn,"verifyAgentPackageIntegrity");async function Gn(e,t){await E(e,{recursive:!0,mode:448});for(let o of t.source.files){let r=Pt(o.path),i=u.resolve(e,r);if(!i.startsWith(`${u.resolve(e)}${u.sep}`))throw new Error("Agent package source path escapes its install root.");await E(u.dirname(i),{recursive:!0,mode:448});let a=Buffer.from(o.contentsBase64,"base64");if(r==="package.json"){let l=JSON.parse(a.toString("utf8"));l.dependencies={...l.dependencies??{},"openpond-agent-sdk":`file:${ee()}`},a=Buffer.from(`${JSON.stringify(l,null,2)}
|
|
15
|
-
`,"utf8")}await D(i,a,{mode:384,flag:"wx"})}let n=u.join(e,".openpond","agent-package-origin.json");await E(u.dirname(n),{recursive:!0,mode:448}),await D(n,`${JSON.stringify({schema:"openpond.agent-package-origin.v1",agentId:t.agentId,versionId:t.versionId,digest:t.digest,validationReceiptIds:t.receipts.filter(o=>o.kind==="sdk_validation").map(o=>o.id),evalReceiptIds:t.receipts.filter(o=>o.kind==="sdk_eval").map(o=>o.id)},null,2)}
|
|
16
|
-
`,{mode:384,flag:"wx"})}s(Gn,"materializeAgentPackage");function Pt(e){let t=e.trim().replaceAll("\\","/"),n=u.posix.normalize(t);if(!n||n==="."||n===".."||n.startsWith("/")||n.startsWith("../")||n.split("/").some(o=>o===".."))throw new Error(`Agent package contains an invalid source path: ${e}.`);return n}s(Pt,"normalizeAgentPackagePath");function Nn(e){return JSON.stringify(ye(e))}s(Nn,"stableAgentPackageJson");function ye(e){return Array.isArray(e)?e.map(ye):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,ye(n)]))}s(ye,"sortAgentPackageJson");function ee(){let e=kn.resolve("openpond-agent-sdk/package.json");return u.dirname(e)}s(ee,"resolveAgentSdkRoot");function Un(){let e=ee(),t=u.join(e,"dist","cli.js");if(k(t))return{command:process.execPath,args:[t]};let n=u.join(e,"src","cli.ts");if(k(n))return{command:process.execPath,args:[ht(e),n]};throw new Error(`openpond-agent CLI was not found under ${e}`)}s(Un,"resolveAgentSdkCliLaunch");function ht(e){return it(u.join(e,"package.json")).resolve("tsx/cli")}s(ht,"resolveTsxCli");async function yt(e,t,n={}){return new Promise((o,r)=>{let i=Pn(e,t,{cwd:n.cwd,stdio:n.inherit?"inherit":"pipe"}),a="",l="",c=!1,d=!1,g=!1,P=n.timeoutMs??600*1e3,x=n.maxOutputBytes??2*1024*1024,S=P>0?setTimeout(()=>{g=!0,i.kill("SIGTERM")},P):null,M=P>0?setTimeout(()=>{g&&i.exitCode===null&&i.kill("SIGKILL")},P+5e3):null;n.inherit||(i.stdout?.on("data",_=>{let m=rt(a,String(_),x,c);a=m.text,c=m.truncated}),i.stderr?.on("data",_=>{let m=rt(l,String(_),x,d);l=m.text,d=m.truncated}));let H=s(()=>{S&&clearTimeout(S),M&&clearTimeout(M)},"clearTimers");i.on("error",_=>{H(),r(_)}),i.on("close",_=>{H(),o({code:_,stdout:a,stderr:l,timedOut:g,stdoutTruncated:c,stderrTruncated:d})})})}s(yt,"spawnCommand");function rt(e,t,n,o){if(o)return{text:e,truncated:!0};let r=`${e}${t}`;return Buffer.byteLength(r,"utf8")<=n?{text:r,truncated:!1}:{text:`${Buffer.from(r).subarray(0,Math.max(0,n)).toString("utf8")}
|
|
17
|
-
[truncated after ${n} bytes]
|
|
18
|
-
`,truncated:!0}}s(rt,"appendBoundedOutput");function wt(e,t){let n=e.stderr.trim()||e.stdout.trim(),o=[e.timedOut?`${t} timed out`:"",e.stdoutTruncated?"stdout truncated":"",e.stderrTruncated?"stderr truncated":""].filter(Boolean);return[n,...o].filter(Boolean).join(`
|
|
19
|
-
`)}s(wt,"commandFailureDetail");export{ln as a,z as b,J as c,ne as d,Ot as e,Ft as f,Ht as g,Gt as h,Nt as i,Ut as j,F as k,wn as l,lt as m,A as n,Sn as o,Z as p,Cn as q,ct as r,qo as s,jo as t,Fo as u,To as v,Ho as w,j as x,he as y,On as z,Rn as A,Go as B,No as C,Q as D,Uo as E,dt as F,Do as G,Bo as H,zo as I};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{B as Q,D as ee,E as te,F as P,G as ne,H as oe,l as M,z as G}from"./chunk-U6HOHOOI.js";import{a as j,b as y,c as w,h as Z,i as E,j as B}from"./chunk-KDXLNQNF.js";import{Ha as Y,eb as $,wa as K,xb as F}from"./chunk-LYWUCJTV.js";import{a as l}from"./chunk-HZP5U2AA.js";import{b as a}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";var we="openpond-chat",Pe=24,Oe=4e4,N=2e4,H="outputs",D="inputs/previous-outputs",de="inputs/.openpond-context.json",be=100,re=100,se=100*1024*1024,x=class{static{d(this,"OpenPondWorkClient")}#e;#n;#t;#o;constructor(e){this.#e=e.apiKey,this.#n=e.apiBaseUrl,this.#t=e.chatApiBaseUrl,this.#o=e.sandboxes}async run(e){let t=e.prompt.trim();if(!t)throw new Error("Work prompt is required");e.signal?.throwIfAborted();let o=d(async m=>e.onEvent?.(m),"emit"),n=e.cleanup??"keep",s=Re(n),i=null,c=null,f=!1,g=ae(e.maxSteps,1,100,Pe),p="";try{await o({type:"status",message:"Preparing sandbox"}),i=await this.#l(e),await o({type:"sandbox",sandboxId:i.id,state:i.state}),await this.#c(i.id,e.inputs??[]),c=await this.#p(i.id);let m=[{role:"system",content:xe(i.id,(e.inputs?.length??0)>0)},...(e.history??[]).map(h=>({...h})),{role:"user",content:t}];for(let h=1;h<=g;h+=1){e.signal?.throwIfAborted(),await o({type:"status",message:`Thinking \xB7 step ${h}`});let X=(await B({apiBaseUrl:this.#t,token:this.#e,model:e.model?.trim()||we,messages:m,tools:ke,toolChoice:"auto",signal:e.signal,metadata:{source:"openpond-sdk-work",sandboxId:i.id,apiBaseUrl:this.#n,...e.metadata}})).choices?.[0],W=X?.message?.content?.trim()??"",L=X?.message?.tool_calls??[];if(m.push({role:"assistant",content:W||null,...L.length>0?{tool_calls:L}:{}}),W&&(p=W,await o({type:"assistant",text:W})),L.length===0){let b=await this.#i(i.id,c);for(let U of b)await o({type:"output",output:U});f=!0,await this.#s(i.id,b,e,s,o);let A={sandboxId:i.id,text:p,steps:h,outputs:b,lifecycle:s};return await o({type:"done",...A}),A}for(let[b,A]of L.entries()){let U=await this.#u(i.id,A,b,e.timeoutSeconds,o);m.push(U)}}throw new Error(`Work did not finish within ${g} steps`)}catch(m){if(i&&c&&!f)try{let h=await this.#i(i.id,c);for(let V of h)await o({type:"output",output:V});await this.#s(i.id,h,e,s,o)}catch(h){ie(m,s,h)}throw ie(m,s),m}}async deleteSandbox(e){(await this.#o.get(e)).state!=="deleted"&&await this.#o.delete(e)}async#c(e,t){if(t.length===0)return;if(t.length>re)throw new Error(`Work inputs exceed the ${re} file limit`);if(t.reduce((i,c)=>i+Buffer.byteLength(c.contentsBase64,"base64"),0)>se)throw new Error(`Work inputs exceed the ${se} byte limit`);await this.#o.mkdir(e,{path:D,recursive:!0});let n=new Set,s=[];for(let[i,c]of t.entries()){let f=Se(c,i,n),g=`${D}/${f}`;await this.#o.uploadFileBase64(e,g,c.contentsBase64),s.push({id:c.id,path:g,name:c.name,mimeType:c.mimeType??null,checksumSha256:c.checksumSha256??null,revision:c.revision??null,metadata:c.metadata??{}})}await this.#o.uploadFile(e,de,JSON.stringify({version:1,files:s},null,2))}async#s(e,t,o,n,s){if(n.persistence.outputCount=t.length,t.length===0)n.persistence.status="not_needed";else if(o.persistOutput){n.persistence.status="running";for(let i of t){await s({type:"persistence",output:i,status:"started"});try{let c=Ce(this.#o,e,i);await o.persistOutput({output:i,download:c}),n.persistence.persistedCount+=1,await s({type:"persistence",output:i,status:"succeeded"})}catch(c){let f=k(c);throw n.persistence.status="failed",n.persistence.error=f,await s({type:"persistence",output:i,status:"failed",error:f}),(o.cleanup??"keep")!=="keep"&&await this.#r(e,"stop",n,s),c}}n.persistence.status="complete"}else{if((o.cleanup??"keep")==="delete"&&!o.discardOutputs)throw n.persistence.status="failed",n.persistence.error="Deleting a Work sandbox with outputs requires persistOutput or discardOutputs: true",await this.#r(e,"stop",n,s),new Error(n.persistence.error);n.persistence.status="not_requested"}await this.#r(e,o.cleanup??"keep",n,s)}async#r(e,t,o,n){if(t!=="keep"){o.cleanup.status="running",await n({type:"cleanup",policy:t,status:"started"});try{let s=t==="delete"?await this.#o.delete(e):(await this.#o.stop(e)).sandbox;o.cleanup.finalSandboxState=s.state,o.cleanup.status=t==="delete"&&s.state==="deleted"||t==="stop"&&s.state==="stopped"?"complete":"pending",await n({type:"cleanup",policy:t,status:o.cleanup.status,sandboxState:s.state})}catch(s){let i=k(s);throw o.cleanup.status="failed",o.cleanup.error=i,await n({type:"cleanup",policy:t,status:"failed",error:i}),s}}}downloadOutput(e,t){return this.#o.downloadFileResponse(e,typeof t=="string"?t:t.path)}async#p(e){return await this.#o.mkdir(e,{path:H,recursive:!0}),Ie(await this.#a(e))}async#i(e,t){return(await this.#a(e)).filter(n=>t.get(n.path)!==ce(n)).sort((n,s)=>n.path.localeCompare(s.path)).slice(0,be).map(ve)}async#a(e){return(await this.#o.listFiles(e,{path:H,recursive:!0,maxEntries:500})).files.filter(o=>o.type==="file"&&!pe(o.path).includes("/.openpond-"))}async#l(e){if(e.sandboxId){let n=await this.#o.get(e.sandboxId);if(n.state==="stopped")await this.#o.start(n.id,{async:!0});else if(n.state==="deleted"||n.state==="error")throw new Error(`Cannot resume sandbox ${n.id} in state ${n.state}`);return await this.#d(n.id,e.signal)}let t=e.budgetUsd?.trim()||"1.00",o=await this.#o.create({...e.repo?.trim()?{repo:e.repo.trim()}:{},runtimeProfileId:"openpond-work-v1",resources:{cpu:2,memoryGb:4,diskGb:16},budget:{maxUsd:t},quotas:{maxSpendUsd:t,maxDurationSeconds:3600,idleTimeoutSeconds:900,maxCommands:200,maxOpenPorts:4},metadata:{source:"openpond-sdk-work",...e.metadata}},{async:!0});return this.#d(o.id,e.signal)}async#d(e,t){let o=Date.now()+72e4,n=await this.#o.get(e);for(;Date.now()<o;){if(t?.throwIfAborted(),n.state==="running")return n;if(n.state==="error"||n.state==="deleted")throw new Error(`Sandbox ${n.id} entered ${n.state}${n.logs.length?`: ${n.logs.join(`
|
|
3
|
-
`)}`:""}`);await _e(2e3,t),n=await this.#o.get(e)}throw new Error(`Sandbox ${e} did not become ready before timeout`)}async#u(e,t,o,n,s){let i=t.id||`work_tool_${o}`,c=t.function?.name;if(c!=="run_command")return O(i,{error:`Unknown tool: ${c??"missing"}`});let f;try{f=JSON.parse(t.function?.arguments||"{}")}catch(p){return O(i,{error:`Invalid tool arguments: ${k(p)}`})}let g=typeof f.command=="string"?f.command.trim():"";if(!g)return O(i,{error:"command is required"});if(g.length>N){let p=`command exceeds the ${N} character limit`;return await s({type:"tool",toolCallId:i,command:g,status:"failed",output:p}),O(i,{status:"failed",error:p})}await s({type:"tool",toolCallId:i,command:g,status:"started"});try{let p=await this.#o.exec(e,{command:g,timeoutSeconds:ae(n,1,900,180)}),m=Ae(p.command.output,Oe),h=p.command.status==="succeeded"?"succeeded":"failed";return await s({type:"tool",toolCallId:i,command:g,status:h,output:m,exitCode:p.command.exitCode}),O(i,{status:p.command.status,exitCode:p.command.exitCode,output:m})}catch(p){if(p instanceof j)throw p;let m=k(p);return await s({type:"tool",toolCallId:i,command:g,status:"failed",output:m}),O(i,{status:"failed",error:m})}}},ke=[{type:"function",function:{name:"run_command",description:"Run a shell command inside the persistent OpenPond sandbox. Use standard shell tools to inspect, edit, build, and test files. Commands start in the repository workspace.",parameters:{type:"object",additionalProperties:!1,properties:{command:{type:"string",minLength:1,maxLength:N,description:"Shell command to execute."}},required:["command"]}}}];function xe(r,e){return["You are OpenPond Work, a careful coding agent operating in an isolated Linux sandbox.",`The active sandbox is ${r}.`,...e?[`Caller-provided durable files are staged under ${D}; structured metadata is in ${de}.`]:[],"Use run_command to inspect the workspace, edit files, and validate your work.",`Place completed user-facing files in ${H}. The runtime collects new and revised files there automatically when the turn completes.`,"Do the requested work completely. Preserve existing user changes and avoid destructive commands.","Keep the user informed with concise prose, but call tools whenever verification or file changes are needed.","Before finishing, run relevant tests and summarize the concrete result."].join(`
|
|
4
|
-
`)}d(xe,"systemPrompt");function Re(r){return{cleanupPolicy:r,persistence:{status:"not_requested",outputCount:0,persistedCount:0},cleanup:{status:"not_requested"}}}d(Re,"initialLifecycle");function Ce(r,e,t){let o=null;return()=>(o??=r.downloadFileResponse(e,{path:t.path,maxBytes:Math.max(1,t.sizeBytes)}).then(n=>{let s=Buffer.byteLength(n.file.contentsBase64,"base64");if(n.file.truncated||n.file.returnedBytes!==n.file.totalSizeBytes||s!==t.sizeBytes)throw new Error(`Output download was incomplete for ${t.name}`);return n}),o)}d(Ce,"lazyOutputDownload");function Se(r,e,t){let o=r.id.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(0,80)||`input-${e+1}`,n=r.name.replace(/[^a-zA-Z0-9._-]+/g,"-").slice(-120)||"file",s=`${o}-${n}`,i=s,c=1;for(;t.has(i);)c+=1,i=`${s}-${c}`;return t.add(i),i}d(Se,"uniqueInputName");function ie(r,e,t){!r||typeof r!="object"||Object.assign(r,{workLifecycle:e,...t?{workFinalizationError:k(t)}:{}})}d(ie,"attachWorkFailure");function Ie(r){return new Map(r.map(e=>[e.path,ce(e)]))}d(Ie,"outputSignatures");function ce(r){return`${r.sizeBytes}:${r.updatedAt}`}d(ce,"outputSignature");function ve(r){let e=pe(r.path).split("/").at(-1)||r.path,t=We(e);return{path:r.path,name:e,mimeType:t,sizeBytes:r.sizeBytes,updatedAt:r.updatedAt,isBinary:r.isBinary??null,previewable:r.previewable??(t.startsWith("image/")||t==="application/pdf"||t.startsWith("text/"))}}d(ve,"workOutputFromFile");function pe(r){return r.replaceAll("\\","/")}d(pe,"normalizedOutputPath");function We(r){let e=r.toLowerCase().match(/\.[^.]+$/)?.[0]??"";return Le[e]??"application/octet-stream"}d(We,"workOutputMimeType");var Le=Object.freeze({".avif":"image/avif",".csv":"text/csv",".docx":"application/vnd.openxmlformats-officedocument.wordprocessingml.document",".gif":"image/gif",".html":"text/html",".jpeg":"image/jpeg",".jpg":"image/jpeg",".json":"application/json",".m4a":"audio/mp4",".md":"text/markdown",".mov":"video/quicktime",".mp3":"audio/mpeg",".mp4":"video/mp4",".pdf":"application/pdf",".png":"image/png",".pptx":"application/vnd.openxmlformats-officedocument.presentationml.presentation",".svg":"image/svg+xml",".tsv":"text/tab-separated-values",".txt":"text/plain",".wav":"audio/wav",".webm":"video/webm",".webp":"image/webp",".xlsx":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"});function O(r,e){return{role:"tool",tool_call_id:r,content:JSON.stringify(e)}}d(O,"toolMessage");function ae(r,e,t,o){return Number.isFinite(r)?Math.min(t,Math.max(e,Math.floor(r))):o}d(ae,"boundedInteger");function Ae(r,e){return r.length<=e?r:`${r.slice(0,e)}
|
|
5
|
-
\u2026 output truncated by openpond-sdk`}d(Ae,"truncate");function k(r){return r instanceof Error?r.message:String(r)}d(k,"errorMessage");function _e(r,e){return new Promise((t,o)=>{if(e?.aborted){o(e.reason);return}let n=setTimeout(t,r);n.unref?.(),e?.addEventListener("abort",()=>{clearTimeout(n),o(e.reason)},{once:!0})})}d(_e,"sleep");import{promises as le}from"node:fs";var R=class{static{d(this,"OpenPondProjectActionsClient")}#e;#n;constructor(e){this.#e=e.apiKey,this.#n=e.apiBaseUrl.replace(/\/+$/,"")}async list(e){let t=await y(this.#n,this.#e,_(e.projectId,"releases",e.teamId));return(await w(t,"List Project Action releases")).releases}async catalog(e){let t=await y(this.#n,this.#e,_(e.projectId,"catalog",e.teamId));return(await w(t,"Get Project Action catalog")).catalog}async publish(e){let[t,o]=await Promise.all([le.readFile(e.build.bundlePath),le.readFile(e.build.runnerPath)]),n=await y(this.#n,this.#e,_(e.projectId,"releases",e.teamId),{method:"POST",body:JSON.stringify({sourceRef:e.sourceRef,sourceCommitSha:e.sourceCommitSha,bundleBase64:t.toString("base64"),runnerBase64:o.toString("base64"),registry:e.build.registry,manifest:e.build.manifest,metadata:e.metadata})});return(await w(n,"Publish Project Actions")).release}async run(e){let t=await y(this.#n,this.#e,_(e.projectId,`actions/${encodeURIComponent(e.actionId)}`,e.teamId),{method:"POST",body:JSON.stringify({input:e.value??{},releaseId:e.releaseId,idempotencyKey:e.idempotencyKey,callerType:e.callerType??"sdk",callerId:e.callerId}),signal:e.signal,timeoutMs:9e5});return(await w(t,"Run Project Action")).invocation}};function _(r,e,t){return`/v1/project-actions/${encodeURIComponent(r)}/${e}?teamId=${encodeURIComponent(t)}`}d(_,"projectActionPath");var S=class{static{d(this,"OpenPondProfileActionsClient")}#e;#n;constructor(e){this.#e=e.apiKey,this.#n=e.apiBaseUrl.replace(/\/+$/,"")}async catalog(e){let t=C(e.teamId,"teamId"),o=new URLSearchParams({teamId:t});e.profileId?.trim()&&o.set("profileId",e.profileId.trim()),e.profileName?.trim()&&o.set("profileName",e.profileName.trim());let n=await y(this.#n,this.#e,`/v1/profile/actions?${o.toString()}`);return(await w(n,"Get Profile Action catalog")).catalog}async run(e){let t=C(e.teamId,"teamId"),o=C(e.actionKey,"actionKey"),n=C(e.idempotencyKey,"idempotencyKey"),s=C(e.catalogVersion,"catalogVersion"),i=await y(this.#n,this.#e,`/v1/profile/actions/run?${new URLSearchParams({teamId:t}).toString()}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...e.profileId?.trim()?{profileId:e.profileId.trim()}:{},...e.profileName?.trim()?{profileName:e.profileName.trim()}:{},actionKey:o,value:e.value??{},conversationId:e.conversationId??null,createConversation:e.createConversation,conversationTitle:e.conversationTitle??null,idempotencyKey:n,catalogVersion:s,externalCapabilityLeases:e.externalCapabilityLeases})});return w(i,"Run Profile Action")}};function C(r,e){let t=r.trim();if(!t)throw new Error(`${e} is required`);return t}d(C,"requiredValue");import{randomUUID as ue}from"node:crypto";var I=class{static{d(this,"OpenPondWorkflowsClient")}#e;#n;constructor(e){this.#e=e.apiKey,this.#n=e.apiBaseUrl.replace(/\/+$/,"")}async list(e={}){return this.#t("","List Workflows",{signal:e.signal})}async create(e,t={}){return this.#t("","Create Workflow",{method:"POST",body:JSON.stringify({...e,clientRequestId:e.clientRequestId?.trim()||ue()}),signal:t.signal})}async update(e,t,o={}){return this.#t(`/schedules/${encodeURIComponent(z(e,"scheduleId"))}`,"Update Workflow",{method:"PATCH",body:JSON.stringify(t),signal:o.signal})}async delete(e,t={}){return this.#t(`/schedules/${encodeURIComponent(z(e,"scheduleId"))}`,"Delete Workflow",{method:"DELETE",signal:t.signal})}async runNow(e,t={},o={}){return this.#t(`/schedules/${encodeURIComponent(z(e,"scheduleId"))}/run`,"Run Workflow",{method:"POST",body:JSON.stringify({clientRequestId:t.clientRequestId?.trim()||ue()}),signal:o.signal})}async#t(e,t,o={}){let n=await y(this.#n,this.#e,`/v1/saved-work${e}`,o);return w(n,t)}};function z(r,e){let t=r.trim();if(!t)throw new Error(`${e} is required`);return t}d(z,"requiredId");var T=a.object({id:l,scope:l,sourceId:l,name:a.string().trim().min(1).max(100),keyPrefix:a.string().min(1).max(100),createdAt:a.iso.datetime(),expiresAt:a.iso.datetime(),revokedAt:a.iso.datetime().nullable()}).strict(),me=a.string().regex(/^opk_key_[A-Za-z0-9]{16}_[A-Za-z0-9]{48}$/),q=a.discriminatedUnion("action",[a.object({action:a.literal("create"),scope:l,sourceId:l,name:a.string().trim().min(1).max(100),expiresAt:a.iso.datetime(),operationId:l,apiKey:me}).strict(),a.object({action:a.literal("list"),scope:l,sourceId:l,afterId:l.optional(),limit:a.number().int().min(1).max(100).default(30)}).strict(),a.object({action:a.literal("revoke"),scope:l,sourceId:l,id:l}).strict()]),ge=a.object({credential:T,apiKey:me}).strict(),he=a.object({items:a.array(T).max(100),nextCursor:l.nullable()}).strict(),fe=a.object({scope:l,sourceId:l}).strict(),ye=a.object({scope:l,source:$,taskDefinition:$,enabled:a.boolean(),allowedSplits:a.array(Y).min(1).max(4)}).strict();var Te=a.object({batchId:a.string().trim().min(1).max(500),modelProjectId:a.string().trim().min(1).max(500)}).strict(),qe=a.object({batchId:a.string().min(1),projectId:a.string().min(1),tasksetId:a.string().min(1),releaseId:a.string().min(1),revision:a.number().int().positive(),contentHash:a.string().regex(/^[a-f0-9]{64}$/)}).strict(),u=class extends Error{constructor(t,o,n,s){super(n);this.status=t;this.code=o;this.details=s;this.name="OpenPondLearningError"}status;code;details;static{d(this,"OpenPondLearningError")}},v=class{static{d(this,"OpenPondLearningClient")}#e;constructor(e){if(!e.apiKey.trim()||!e.scope.trim())throw new Error("Learning API key and scope are required.");let t=new URL(e.baseUrl);if(!["http:","https:"].includes(t.protocol)||t.username||t.password||t.search||t.hash)throw new Error("Learning base URL must be an HTTP(S) endpoint without credentials, query, or fragment.");this.#e={...e,baseUrl:t.toString().replace(/\/+$/,"")}}async command(e,t={}){ee(e);let o=te.parse({scope:this.#e.scope,command:e}),n=oe.parse(await this.#t("commands",o,t));if(n.operationId!==e.operationId)throw new u(502,"operation_identity_mismatch","Learning response did not match the submitted operation.",null);return n}submitExample(e,t={}){return this.command({action:"submit_example",operationId:e.idempotencyKey,example:e},t)}submitFeedback(e,t={}){return this.command({action:"submit_feedback",operationId:e.idempotencyKey,feedback:e},t)}async get(e,t,o,n={}){let s=P.parse({action:"get",scope:this.#e.scope,kind:e,id:t,...o===void 0?{}:{revision:o}});return M[e].parse(await this.#t("read",s,n))}async inspectEvidence(e,t={}){let o=P.parse({action:"inspect_evidence",scope:this.#e.scope,evidence:e}),n=ne.parse(await this.#t("read",o,t));if(!F(n.evidence,e))throw new u(502,"evidence_identity_mismatch","Inspection did not match the requested evidence release.",null);return n}async inspectTaskQueue(e=null,t={}){let o=P.parse({action:"inspect_task_queue",scope:this.#e.scope,modelProjectId:e}),n=Q.parse(await this.#t("read",o,t));if(n.modelProjectId!==e)throw new u(502,"model_identity_mismatch","Task queue did not match the requested Model.",null);return n}async inspectPolicy(e,t={}){let o=P.parse({action:"inspect_policy",scope:this.#e.scope,policy:e}),n=G.parse(await this.#t("read",o,t));if(!F(n.policy,e))throw new u(502,"policy_identity_mismatch","Inspection did not match the requested policy release.",null);return n}async createSourceCredential(e,t={}){let o=q.parse({...e,action:"create",scope:this.#e.scope}),n=ge.parse(await this.#t("credentials",o,t));if(this.#n(n.credential,e.sourceId),n.apiKey!==e.apiKey||!e.apiKey.startsWith(`${n.credential.keyPrefix}_`))throw new u(502,"credential_identity_mismatch","Credential response did not match the prepared credential.",null);return n}async listSourceCredentials(e,t={},o={}){let n=q.parse({...t,action:"list",scope:this.#e.scope,sourceId:e}),s=he.parse(await this.#t("credentials",n,o));if(s.items.length>(t.limit??30))throw new u(502,"credential_page_invalid","Credential response exceeded the requested page size.",null);for(let i of s.items)this.#n(i,e);return s}async revokeSourceCredential(e,t,o={}){let n=q.parse({action:"revoke",scope:this.#e.scope,sourceId:e,id:t}),s=T.parse(await this.#t("credentials",n,o));if(this.#n(s,e),s.id!==t||s.revokedAt===null)throw new u(502,"credential_revocation_mismatch","Credential revocation did not match the requested credential.",null);return s}async sourceConfiguration(e,t={}){let o=fe.parse({scope:this.#e.scope,sourceId:e}),n=ye.parse(await this.#t("source-config",o,t));if(n.scope!==this.#e.scope||n.source.id!==e)throw new u(502,"source_identity_mismatch","Source configuration did not match the requested source.",null);return n}#n(e,t){if(e.scope!==this.#e.scope||e.sourceId!==t)throw new u(502,"credential_scope_mismatch","Credential response did not match the requested source.",null)}async list(e,t={},o={}){let n=P.parse({action:"list",scope:this.#e.scope,kind:e,...t});return a.object({items:a.array(M[e]).max(100),nextCursor:a.string().nullable()}).strict().parse(await this.#t("read",n,o))}async publishBatch(e,t={}){let o=Te.parse(e),n=qe.parse(await this.#t("publish-batch",{...o,scope:this.#e.scope},t));if(n.batchId!==o.batchId)throw new u(502,"batch_identity_mismatch","Published batch response did not match the requested batch.",null);return n}async#t(e,t,o){K(t,16777216);let n=await(this.#e.fetch??globalThis.fetch)(`${this.#e.baseUrl}/v1/learning/${e}`,{method:"POST",headers:{Authorization:`Bearer ${this.#e.apiKey}`,"Content-Type":"application/json",Accept:"application/json","X-OpenPond-Team-Id":this.#e.scope},body:JSON.stringify(t),signal:o.signal,redirect:"error"}),s=await Ue(n);if(!n.ok){let i=a.object({code:a.string().optional(),error:a.string().optional()}).passthrough().safeParse(s);throw new u(n.status,i.success?i.data.code??"learning_request_failed":"learning_request_failed",i.success?i.data.error??`Learning request failed (${n.status}).`:`Learning request failed (${n.status}).`,s)}return s}};async function Ue(r){let t=r.body?.getReader();if(!t)throw new u(r.status,"empty_response","Learning response was empty.",null);let o=new TextDecoder,n=0,s="";try{for(;;){let c=await t.read();if(c.done)break;if(n+=c.value.byteLength,n>16777216)throw new u(r.status,"response_too_large","Learning response exceeded 16 MiB; request a smaller page.",null);s+=o.decode(c.value,{stream:!0})}s+=o.decode();let i=JSON.parse(s);return K(i,16777216),i}finally{await t.cancel(),t.releaseLock()}}d(Ue,"readBoundedLearningResponse");var J=class{static{d(this,"OpenPondClient")}sandboxes;work;workflows;actions;profileActions;learning;constructor(e){let t=e.apiKey.trim();if(!t)throw new Error("OpenPond API key is required");let o=e.baseUrl?.trim()||"https://api.openpond.ai";this.learning=n=>new v({apiKey:t,baseUrl:o,scope:n}),this.sandboxes=Z({apiKey:t,baseUrl:o,sandboxApiUrl:e.sandboxApiUrl}),this.work=new x({apiKey:t,apiBaseUrl:o,chatApiBaseUrl:e.chatApiUrl?.trim()||E({apiBaseUrl:o,env:{}}),sandboxes:this.sandboxes}),this.workflows=new I({apiKey:t,apiBaseUrl:o}),this.actions=new R({apiKey:t,apiBaseUrl:o}),this.profileActions=new S({apiKey:t,apiBaseUrl:o})}};function qt(r){return new J(r)}d(qt,"createOpenPondClient");export{qt as a};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{a as n}from"./chunk-FTQLQJQV.js";var N="https://openpond.ai",$="https://api.openpond.ai",k="https://api.openpond.ai/opchat/v1";function C(o){let e=o.trim().replace(/\/$/,"");if(!e)throw new Error("sandbox API URL must be non-empty");let t=new URL(e),r=t.pathname.replace(/\/$/,"");return r.endsWith("/v1/sandboxes")||r.endsWith("/api/sandboxes")?`${t.origin}${r}`:r.endsWith("/v1")?`${t.origin}${r}/sandboxes`:Q(t.hostname)?`${t.origin}${r}/v1/sandboxes`:t.origin===N?`${$}/v1/sandboxes`:`${t.origin}${r}/api/sandboxes`}n(C,"normalizeSandboxApiUrl");function L(o){let e="/sandboxes";if(!o.endsWith(e))throw new Error("sandbox API URL must end with /sandboxes");return o.slice(0,-e.length)}n(L,"apiRootUrlFromSandboxApiUrl");function Q(o){return o==="api.openpond.ai"||o==="staging-api.openpond.ai"||o.startsWith("api")&&o.endsWith(".openpond.ai")}n(Q,"isOpenPondHostedApiHost");function B(o){return{list:n((e={})=>o.listSandboxRuntimes(e),"list"),create:n(e=>o.createSandboxRuntime(e),"create"),handle:n((e,t=null)=>o.sandboxRuntime(e,t),"handle"),get:n(e=>o.getSandboxRuntime(e),"get"),createSandbox:n((e,t={},r={})=>o.createSandboxRuntimeSandbox(e,t,r),"createSandbox"),updateStatus:n((e,t)=>o.updateSandboxRuntimeStatus(e,t),"updateStatus"),events:n(e=>o.listSandboxRuntimeEvents(e),"events"),event:n((e,t)=>o.emitSandboxRuntimeEvent(e,t),"event"),checkpoint:n((e,t={})=>o.checkpointSandboxRuntime(e,t),"checkpoint"),promote:n((e,t,r={})=>o.promoteSandboxRuntime(e,t,r),"promote"),preserveSource:n((e,t={},r={})=>o.preserveSandboxRuntimeSource(e,t,r),"preserveSource")}}n(B,"createSandboxRuntimeNamespace");function z(o){return{list:n((e={})=>o.list(e),"list"),create:n(e=>o.create(e),"create"),get:n(e=>o.get(e),"get"),pricing:n(()=>o.pricing(),"pricing"),costs:n((e={})=>o.costs(e),"costs")}}n(z,"createSandboxNamespace");function D(o){return{list:n(e=>o.listProjects(e),"list"),upsert:n(e=>o.upsertProject(e),"upsert"),upsertGitRemote:n(e=>o.upsertProjectGitRemote(e),"upsertGitRemote"),get:n((e,t)=>o.getProject(e,t),"get"),update:n((e,t)=>o.updateProject(e,t),"update"),sync:n((e,t)=>o.syncProject(e,t),"sync"),ensureGitRemote:n((e,t)=>o.ensureProjectGitRemote(e,t),"ensureGitRemote"),getGitRemote:n((e,t)=>o.ensureProjectGitRemote(e,t),"getGitRemote"),git:n((e,t)=>o.ensureProjectGitRemote(e,t),"git"),uploadSource:n((e,t)=>o.uploadProjectSource(e,t),"uploadSource"),archive:n((e,t)=>o.archiveProject(e,t),"archive")}}n(D,"createSandboxProjectNamespace");function J(o){return{get:n(e=>o.getHostedProfile(e),"get"),status:n(e=>o.getHostedProfile(e),"status"),ensureHosted:n(e=>o.ensureHostedProfile(e),"ensureHosted"),push:n(e=>o.pushHostedProfile(e),"push")}}n(J,"createSandboxProfileNamespace");function M(o){return{list:n(e=>o.listAgents(e),"list"),upsert:n(e=>o.upsertAgent(e),"upsert"),get:n((e,t)=>o.getAgent(e,t),"get"),update:n((e,t)=>o.updateAgent(e,t),"update"),archive:n((e,t)=>o.archiveAgent(e,t),"archive"),run:n((e,t)=>o.runAgent(e,t),"run"),sourceDeployPlan:n((e,t)=>o.getAgentSourceDeployPlan(e,t),"sourceDeployPlan"),manifestSnapshots:n((e,t)=>o.listAgentManifestSnapshots(e,t),"manifestSnapshots"),requestSourceChecks:n((e,t)=>o.requestAgentSourceChecks(e,t),"requestSourceChecks"),configureSourceSetup:n((e,t)=>o.configureAgentSourceSetup(e,t),"configureSourceSetup"),publishSource:n((e,t)=>o.publishAgentSource(e,t),"publishSource")}}n(M,"createSandboxAgentNamespace");function F(o,e,t=null){let r=n(async(a={},d={})=>{let h=await o.getSandboxRuntime(e);return h.sandboxId?o.get(h.sandboxId):o.createSandboxRuntimeSandbox(e,a,d).then(u=>u.sandbox)},"currentSandbox"),s=n(async(a={},d={})=>{let h=await o.getSandboxRuntime(e);if(!h.sandboxId)return o.createSandboxRuntimeSandbox(e,a,d).then(p=>p.sandbox);let u=await o.get(h.sandboxId);return u.state==="stopped"?o.start(u.id,d).then(p=>p.sandbox):u.state==="archived"?o.restore(u.id).then(p=>p.sandbox):u.state==="deleted"||u.state==="error"?o.createSandboxRuntimeSandbox(e,a,d).then(p=>p.sandbox):u},"resume");return{id:e,initial:t,get:n(()=>o.getSandboxRuntime(e),"get"),sandbox:r,resume:s,createSandbox:n((a={},d={})=>o.createSandboxRuntimeSandbox(e,a,d),"createSandbox"),status:n(async a=>{if(typeof a!="string")return o.updateSandboxRuntimeStatus(e,a);let d=await o.getSandboxRuntime(e);return o.updateSandboxRuntimeStatus(e,{status:a,expectedVersion:d.version})},"status"),events:n(()=>o.listSandboxRuntimeEvents(e),"events"),event:n(a=>o.emitSandboxRuntimeEvent(e,a),"event"),recordCommit:n((a,d={})=>o.emitSandboxRuntimeEvent(e,{...d,type:d.type??"git.commit",commitSha:a}),"recordCommit"),checkpointHint:n((a={})=>o.emitSandboxRuntimeEvent(e,{type:"workflow.checkpoint_hint",summary:a.summary??a.reason??"Workflow checkpoint hint",payload:{...a.payload,reason:a.reason??null},artifactRefs:a.artifactRefs,lifecycleHint:{kind:"checkpoint",reason:a.reason??null}}),"checkpointHint"),waitForUser:n(async(a={})=>{await o.emitSandboxRuntimeEvent(e,{type:"workflow.waiting_for_user",summary:a.summary??a.reason??"Waiting for user",payload:{...a.payload,reason:a.reason??null},lifecycleHint:{kind:"waiting_for_user",reason:a.reason??null}});let d=await o.getSandboxRuntime(e);return d.status==="waiting_for_user"?d:o.updateSandboxRuntimeStatus(e,{status:"waiting_for_user",expectedVersion:d.version,summary:a.summary??a.reason,metadata:{workflowWaitForUserReason:a.reason??null}})},"waitForUser"),keepAlive:n((a={})=>{let d=Z(a);return o.emitSandboxRuntimeEvent(e,{type:"workflow.keepalive",summary:a.summary??a.reason??"Workflow keepalive",payload:{...a.payload,reason:a.reason??null,keepaliveUntil:d},lifecycleHint:{kind:"keepalive",reason:a.reason??null,keepaliveUntil:d}})},"keepAlive"),checkpoint:n(a=>o.checkpointSandboxRuntime(e,a),"checkpoint"),files:{write:n(async(a,d)=>o.uploadFile((await s()).id,a,d),"write"),read:n(async a=>o.downloadFile((await s()).id,a),"read"),readResponse:n(async a=>o.downloadFileResponse((await s()).id,a),"readResponse"),list:n(async(a={})=>o.listFiles((await s()).id,a),"list"),delete:n(async(a,d={})=>o.deleteFile((await s()).id,a,d),"delete"),search:n(async a=>o.searchFiles((await s()).id,a),"search"),stat:n(async a=>o.statFile((await s()).id,a),"stat"),mkdir:n(async a=>o.mkdir((await s()).id,a),"mkdir"),move:n(async a=>o.moveFile((await s()).id,a),"move")},commands:{run:n(async a=>o.exec((await s()).id,typeof a=="string"?{command:a}:a),"run")},ports:{expose:n(async a=>o.openPort((await s()).id,typeof a=="number"?{port:a}:a),"expose")},promote:n((a,d={})=>o.promoteSandboxRuntime(e,a,d),"promote"),preserveSource:n((a={},d={})=>o.preserveSandboxRuntimeSource(e,a,d),"preserveSource"),archive:n(async a=>{let d=a??(await o.getSandboxRuntime(e)).version;return o.updateSandboxRuntimeStatus(e,{status:"archived",expectedVersion:d})},"archive")}}n(F,"createSandboxRuntimeHandle");function Z(o){if(o?.until instanceof Date)return o.until.toISOString();if(typeof o?.until=="string"&&o.until.trim())return new Date(o.until).toISOString();let e=typeof o?.seconds=="number"&&Number.isFinite(o.seconds)?Math.max(1,Math.trunc(o.seconds)):60;return new Date(Date.now()+e*1e3).toISOString()}n(Z,"runtimeKeepaliveUntilIso");async function W(o,e={}){let t=`openpond-code-smoke-${Date.now()}`,r=`openpond-code-exec-ok:${t}`,s=`openpond-code-preview-ok:${t}`,i=`openpond-code-file-ok:${t}`,c=4173,m=null,a=null,d=!1,h=!1;try{let u=await G(o,await o.create({repo:e.repo??"https://github.com/octocat/Hello-World",resources:{cpu:e.cpu??1,memoryGb:e.memoryGb??1,diskGb:e.diskGb??8},budget:{maxUsd:e.budgetUsd??"0.05"},quotas:{maxSpendUsd:e.budgetUsd??"0.05",maxDurationSeconds:600,idleTimeoutSeconds:600,maxOpenPorts:2},metadata:{runId:t,source:"openpond-code-sandbox-smoke"}},{async:!0}));m=u.id;let p=e.expectedMppMode;if(p&&u.reservation.mpp?.mode!==p)throw new Error(`expected ${p} reservation, got ${u.reservation.mpp?.mode??"none"}`);if(!p&&!u.reservation.mpp?.mode)throw new Error("expected sandbox reservation MPP metadata");let S=await o.exec(u.id,{command:[`printf '${r}\\n'`,"test -f README && printf 'repo-clone-ok\\n'","cat > server.cjs <<'EOF'","const { createServer } = require('node:http');",`createServer((_request, response) => response.end('${s}')).listen(${c}, '0.0.0.0');`,"EOF","nohup node server.cjs > server.log 2>&1 & sleep 1"].join(`
|
|
3
|
-
`),timeoutSeconds:120});if(S.command.status!=="succeeded")throw new Error(`expected command success, got ${S.command.status}`);if(!S.command.output.includes(r))throw new Error("expected exec marker");if(await o.uploadFile(u.id,"openpond-code-smoke.txt",i),await o.downloadFile(u.id,"openpond-code-smoke.txt")!==i)throw new Error("expected file roundtrip marker");let g=null;if(e.snapshot||e.fork){let f=await o.createSnapshot(u.id,{async:!0,name:`openpond-code-smoke-${t}`,replay:{entrypoints:[{command:"cat openpond-code-smoke.txt",name:"default"}],retention:{class:"pinned"},safety:{cleanup:"delete",idleTimeoutSeconds:600,internetEgress:"block",maxDurationSeconds:600,maxSpendUsd:e.budgetUsd??"0.05",publicPreview:!1},validation:{commands:[{command:"test -f openpond-code-smoke.txt"}]}}}),l=f.snapshot??(await re(o,u.id,f.snapshotJob?.snapshotId)).snapshot;if(g=l.id,l.state!=="ready")throw new Error(`expected ready snapshot, got ${l.state}`)}if(e.fork){if(!g)throw new Error("expected snapshot id before fork");let f=await G(o,(await o.forkSnapshot(g,{budget:{maxUsd:e.budgetUsd??"0.05"},metadata:{source:"openpond-code-sandbox-smoke-fork",templateSnapshotId:g}},{async:!0})).sandbox);a=f.id;let l=await o.exec(f.id,{command:"cat openpond-code-smoke.txt",timeoutSeconds:120});if(l.command.status!=="succeeded")throw new Error(`expected fork command success, got ${l.command.status}`);if(!l.command.output.includes(i))throw new Error("expected fork snapshot marker");e.keep||(await v(o,f.id),h=!0)}let P=null;if(e.preview!==!1){let f=await o.openPort(u.id,{label:"openpond-code-smoke",port:c}),l=await fetch(f.preview.url);P=l.status;let X=await l.text();if(l.status!==200)throw new Error(`expected preview HTTP 200, got ${l.status}`);if(!X.includes(s))throw new Error("expected preview marker")}let{sandbox:U,receipts:I}=await ee(o,u.id);return e.keep||(await v(o,u.id),d=!0),{deleted:d,execOutput:S.command.output.trim(),fileRoundtrip:!0,forkSandboxId:a,previewStatus:P,receiptRefs:I.map(f=>f.mpp.receiptRef??null),reservationRef:u.reservation.mpp?.reservationRef??null,runId:t,sandboxId:u.id,snapshotId:g,state:U.state}}finally{a&&!e.keep&&!h&&await H(o,a),m&&!e.keep&&!d&&await H(o,m)}}n(W,"runSandboxSmoke");async function ee(o,e){try{await o.stop(e)}catch{await o.stop(e,{async:!0})}let t=await K(o,e,new Set(["stopped","deleted"]),"stop"),r=await te(o,e);if(r.length===0)throw new Error("expected receipt readback");return{sandbox:t,receipts:r}}n(ee,"stopSandboxForSmoke");async function v(o,e){try{let t=await o.delete(e);if(t.state==="deleted")return t;await o.delete(e,{async:!0})}catch{await o.delete(e,{async:!0})}return K(o,e,new Set(["deleted"]),"delete")}n(v,"deleteSandboxForSmoke");async function H(o,e){try{await v(o,e)}catch{await o.delete(e,{async:!0}).catch(()=>{})}}n(H,"cleanupSandboxBestEffort");async function K(o,e,t,r){let c=Date.now()+3e5,m=await o.get(e);for(;Date.now()<c;){if(t.has(m.state))return m;if(m.state==="error")throw new Error(`sandbox ${r} failed: ${e}`);await q(3e3),m=await o.get(e)}throw new Error(`sandbox ${r} did not reach ${[...t].join("/")} before timeout: ${e} (${m.state})`)}n(K,"waitForSandboxState");async function te(o,e){let s=Date.now()+12e4,i=await o.receipts(e);for(;Date.now()<s;){if(i.length>0)return i;await q(3e3),i=await o.receipts(e)}return i}n(te,"waitForReceipts");async function G(o,e){if(e.state==="running"||e.state==="stopped")return e;if(e.state==="error")throw new Error(`sandbox create failed: ${e.id}
|
|
4
|
-
${e.logs.join(`
|
|
5
|
-
`)}`);let t=12*6e4,r=3e3,s=Date.now()+t,i=e;for(;Date.now()<s;){if(await q(r),i=await o.get(e.id),i.state==="running"||i.state==="stopped")return i;if(i.state==="error")throw new Error(`sandbox create failed: ${i.id}
|
|
6
|
-
${i.logs.join(`
|
|
7
|
-
`)}`)}throw new Error(`sandbox create did not reach running state before timeout: ${i.id} (${i.state})`)}n(G,"waitForCreateReady");async function re(o,e,t){if(!t)throw new Error("snapshot job did not return snapshot id");let r=12*6e4,s=3e3,i=Date.now()+r,c=await o.get(e);for(;Date.now()<i;){let m=c.snapshots?.find(d=>d.id===t);if(m?.state==="ready")return{sandbox:c,snapshot:m};let a=c.snapshotJobs?.find(d=>d.snapshotId===t);if(a?.status==="failed")throw new Error(`snapshot job failed: ${a.error??t}`);await q(s),c=await o.get(e)}throw new Error(`snapshot did not reach ready state before timeout: ${t}`)}n(re,"waitForSnapshotReady");function q(o){return new Promise(e=>setTimeout(e,o))}n(q,"sleep");function R(o={}){return o.async||o.respondAsync?{Prefer:"respond-async"}:void 0}n(R,"asyncRequestHeaders");var O=class extends Error{static{n(this,"ApiTimeoutError")}timeoutMs;requestUrl;code="OPENPOND_API_TIMEOUT";constructor(e,t){super(`API request timed out after ${e}ms: ${t}`),this.timeoutMs=e,this.requestUrl=t,this.name="ApiTimeoutError"}},b=class extends Error{static{n(this,"ApiResponseTooLargeError")}maximumBytes;requestUrl;code="OPENPOND_API_RESPONSE_TOO_LARGE";constructor(e,t){super(`API response exceeded ${e} bytes: ${t}`),this.maximumBytes=e,this.requestUrl=t,this.name="ApiResponseTooLargeError"}},E=class extends Error{static{n(this,"OpenPondApiError")}status;apiMessage;code;constructor(e,t,r,s=null){let i=s||t;super(`${r} failed: ${e}${i?` ${i}`:""}`),this.status=e,this.apiMessage=s,this.name="OpenPondApiError",this.code=t||"OPENPOND_API_ERROR"}};async function w(o,e,t,r={}){let{timeoutMs:s=3e4,maxResponseBytes:i=8388608,...c}=r,m=`${o}${t}`,a=new Headers(c.headers);a.set("Content-Type","application/json");let d=process.env.OPENPOND_API_KEY,h=e?.trim()||"",u=h.startsWith("opk_"),p=d||(u?h:null);p&&!a.has("openpond-api-key")&&a.set("openpond-api-key",p),e?a.set("Authorization",u?`ApiKey ${h}`:`Bearer ${e}`):d&&!a.has("Authorization")&&a.set("Authorization",`ApiKey ${d}`);let S=new AbortController,x=new O(s,m),g=s>0?setTimeout(()=>S.abort(x),s):null;g?.unref?.();let P=se(c.signal,S.signal,s),U=n(()=>{g&&clearTimeout(g)},"cleanup");try{let I=await fetch(m,{...c,headers:a,signal:P});return oe(I,{cleanup:U,maximumBytes:i,requestUrl:m,timeoutController:S,timeoutError:x})}catch(I){throw U(),S.signal.aborted?x:I}}n(w,"apiFetch");async function T(o,e){let t;try{let r=await o.text();t=r?JSON.parse(r):{}}catch(r){if(r instanceof O||r instanceof b)throw r;t={}}if(!o.ok){let r=typeof t.error=="string"?t.error:null,s=typeof t.message=="string"?t.message:null;throw new E(o.status,r,e,s)}return t}n(T,"readApiJson");function oe(o,e){if(!o.body)return e.cleanup(),o;let t=Number(o.headers.get("content-length"));if(e.maximumBytes>0&&Number.isFinite(t)&&t>e.maximumBytes)throw e.cleanup(),o.body.cancel(),new b(e.maximumBytes,e.requestUrl);let r=o.body.getReader(),s=0,i=new ReadableStream({async pull(c){try{let m=await r.read();if(m.done){e.cleanup(),c.close();return}if(s+=m.value.byteLength,e.maximumBytes>0&&s>e.maximumBytes){e.cleanup(),await r.cancel(),c.error(new b(e.maximumBytes,e.requestUrl));return}c.enqueue(m.value)}catch(m){e.cleanup(),c.error(e.timeoutController.signal.aborted?e.timeoutError:m)}},async cancel(c){e.cleanup(),await r.cancel(c)}});return new Response(i,{headers:o.headers,status:o.status,statusText:o.statusText})}n(oe,"boundedResponse");function se(o,e,t){return t<=0?o??void 0:o?AbortSignal.any([o,e]):e}n(se,"composedSignal");async function j(o){let e=await w(o.sandboxApiUrl,o.apiKey,o.path,{timeoutMs:0,maxResponseBytes:0});if(!e.body)return;let t=e.body.getReader(),r=new TextDecoder,s="";try{for(;;){let{done:i,value:c}=await t.read();if(i)break;s+=r.decode(c,{stream:!0});let m=s.indexOf(`
|
|
8
|
-
|
|
9
|
-
`);for(;m!==-1;){let a=s.slice(0,m);s=s.slice(m+2);let d=ne(a);d&&process.stdout.write(d),m=s.indexOf(`
|
|
10
|
-
|
|
11
|
-
`)}}}finally{t.releaseLock()}}n(j,"streamSandboxEventOutput");function Y(o){return typeof o=="string"?{dataBase64:Buffer.from(o,"utf-8").toString("base64")}:o instanceof Uint8Array?{dataBase64:Buffer.from(o).toString("base64")}:o}n(Y,"normalizePtyInput");function ne(o){if(!o.includes("event: output"))return null;let e=o.split(/\r?\n/).filter(t=>t.startsWith("data: ")).map(t=>t.slice(6));if(e.length===0)return null;try{let t=JSON.parse(e.join(`
|
|
12
|
-
`));return typeof t.output=="string"?t.output:null}catch{return null}}n(ne,"parseProcessOutputEvent");var A=class{static{n(this,"OpenPondSandboxInstanceClient")}apiKey;apiRootUrl;sandboxApiUrl;constructor(e){this.apiKey=e.apiKey,this.sandboxApiUrl=C(e.sandboxApiUrl??e.baseUrl??$),this.apiRootUrl=L(this.sandboxApiUrl)}create(e,t={}){return this.request("",{method:"POST",headers:R(t),body:JSON.stringify(e)}).then(r=>r.sandbox)}get(e){return this.request(`/${encodeURIComponent(e)}`).then(t=>t.sandbox)}exec(e,t){return this.request(`/${encodeURIComponent(e)}/exec`,{method:"POST",body:JSON.stringify(t)})}startProcess(e,t){return this.request(`/${encodeURIComponent(e)}/processes`,{method:"POST",body:JSON.stringify(t)})}listProcesses(e){return this.request(`/${encodeURIComponent(e)}/processes`)}getProcess(e,t,r={}){let s=new URLSearchParams;return r.since!==void 0&&s.set("since",String(Math.max(0,r.since))),this.request(`/${encodeURIComponent(e)}/processes/${encodeURIComponent(t)}${s.size>0?`?${s.toString()}`:""}`)}stopProcess(e,t){return this.request(`/${encodeURIComponent(e)}/processes/${encodeURIComponent(t)}`,{method:"DELETE"})}async streamProcessOutput(e,t,r={}){let s=new URLSearchParams;r.since!==void 0&&s.set("since",String(Math.max(0,r.since))),await j({sandboxApiUrl:this.sandboxApiUrl,apiKey:this.apiKey,path:`/${encodeURIComponent(e)}/processes/${encodeURIComponent(t)}/stream${s.size>0?`?${s.toString()}`:""}`})}startPty(e,t={}){return this.request(`/${encodeURIComponent(e)}/pty`,{method:"POST",body:JSON.stringify(t)})}listPtys(e){return this.request(`/${encodeURIComponent(e)}/pty`)}getPty(e,t,r={}){let s=new URLSearchParams;return r.since!==void 0&&s.set("since",String(Math.max(0,r.since))),this.request(`/${encodeURIComponent(e)}/pty/${encodeURIComponent(t)}${s.size>0?`?${s.toString()}`:""}`)}writePtyInput(e,t,r){return this.request(`/${encodeURIComponent(e)}/pty/${encodeURIComponent(t)}/input`,{method:"POST",body:JSON.stringify(Y(r))})}stopPty(e,t){return this.request(`/${encodeURIComponent(e)}/pty/${encodeURIComponent(t)}`,{method:"DELETE"})}async streamPtyOutput(e,t,r={}){let s=new URLSearchParams;r.since!==void 0&&s.set("since",String(Math.max(0,r.since))),await j({sandboxApiUrl:this.sandboxApiUrl,apiKey:this.apiKey,path:`/${encodeURIComponent(e)}/pty/${encodeURIComponent(t)}/stream${s.size>0?`?${s.toString()}`:""}`})}uploadFile(e,t,r){return this.uploadFileBase64(e,t,Buffer.from(r,"utf-8").toString("base64"))}uploadFileBase64(e,t,r){return this.request(`/${encodeURIComponent(e)}/files`,{method:"POST",body:JSON.stringify({path:t,contentsBase64:r})})}async downloadFile(e,t){let r=await this.downloadFileResponse(e,t);return Buffer.from(r.file.contentsBase64,"base64").toString("utf-8")}downloadFileResponse(e,t){let r=typeof t=="string"?{path:t}:t,s=new URLSearchParams({path:r.path});return r.offsetBytes!==void 0&&s.set("offsetBytes",String(r.offsetBytes)),r.maxBytes!==void 0&&s.set("maxBytes",String(r.maxBytes)),this.request(`/${encodeURIComponent(e)}/files?${s.toString()}`)}listFiles(e,t={}){let r=new URLSearchParams({list:"1"});return t.path&&r.set("path",t.path),t.recursive!==void 0&&r.set("recursive",String(t.recursive)),t.maxEntries!==void 0&&r.set("maxEntries",String(t.maxEntries)),this.request(`/${encodeURIComponent(e)}/files?${r.toString()}`)}deleteFile(e,t,r={}){let s=new URLSearchParams({path:t});return r.recursive!==void 0&&s.set("recursive",String(r.recursive)),this.request(`/${encodeURIComponent(e)}/files?${s.toString()}`,{method:"DELETE"})}statFile(e,t){let r=new URLSearchParams({stat:"1",path:t});return this.request(`/${encodeURIComponent(e)}/files?${r.toString()}`)}mkdir(e,t){let r=typeof t=="string"?{path:t}:t,s=new URLSearchParams({path:r.path});return r.recursive!==void 0&&s.set("recursive",String(r.recursive)),this.request(`/${encodeURIComponent(e)}/files?${s.toString()}`,{method:"PUT"})}moveFile(e,t){let r=new URLSearchParams({fromPath:t.fromPath,toPath:t.toPath});return t.overwrite!==void 0&&r.set("overwrite",String(t.overwrite)),this.request(`/${encodeURIComponent(e)}/files?${r.toString()}`,{method:"PATCH"})}searchFiles(e,t){let r=new URLSearchParams({search:"1",query:t.query});return t.path&&r.set("path",t.path),t.maxResults!==void 0&&r.set("maxResults",String(t.maxResults)),this.request(`/${encodeURIComponent(e)}/files?${r.toString()}`)}openPort(e,t){return this.request(`/${encodeURIComponent(e)}/ports`,{method:"POST",body:JSON.stringify(t)})}createSnapshot(e,t){return this.request(`/${encodeURIComponent(e)}/snapshots`,{method:"POST",body:JSON.stringify(t)})}updateSnapshot(e,t,r){return this.request(`/${encodeURIComponent(e)}/snapshots/${encodeURIComponent(t)}`,{method:"PATCH",body:JSON.stringify(r)})}validateSnapshot(e,t,r={}){return this.request(`/${encodeURIComponent(e)}/snapshots/${encodeURIComponent(t)}/validate`,{method:"POST",body:JSON.stringify(r)})}publishSnapshot(e,t){return this.request(`/${encodeURIComponent(e)}/snapshots/${encodeURIComponent(t)}/publish`,{method:"POST"})}fork(e,t={}){return this.request(`/${encodeURIComponent(e)}/fork`,{method:"POST",body:JSON.stringify(t)})}stop(e,t={}){let r=new URLSearchParams;return t.failOnUnpreservedChanges&&r.set("failOnUnpreservedChanges","true"),this.request(`/${encodeURIComponent(e)}/stop${r.size>0?`?${r.toString()}`:""}`,{method:"POST",headers:R(t)})}start(e,t={}){return this.request(`/${encodeURIComponent(e)}/start`,{method:"POST",headers:R(t)})}restore(e){return this.request(`/${encodeURIComponent(e)}/restore`,{method:"POST"})}delete(e,t={}){let r=new URLSearchParams;return t.failOnUnpreservedChanges&&r.set("failOnUnpreservedChanges","true"),this.request(`/${encodeURIComponent(e)}${r.size>0?`?${r.toString()}`:""}`,{method:"DELETE",headers:R(t)}).then(s=>s.sandbox)}receipts(e){return this.request(`/${encodeURIComponent(e)}/receipts`).then(t=>t.receipts)}logs(e){return this.request(`/${encodeURIComponent(e)}/logs`).then(t=>t.logs)}gitStatus(e){return this.request(`/${encodeURIComponent(e)}/git/status`)}gitDiff(e,t={}){return this.request(`/${encodeURIComponent(e)}/git/diff`,{method:"POST",body:JSON.stringify(t)})}gitExportPatch(e,t={}){return this.request(`/${encodeURIComponent(e)}/git/export-patch`,{method:"POST",body:JSON.stringify(t)})}gitBranch(e,t){return this.request(`/${encodeURIComponent(e)}/git/branch`,{method:"POST",body:JSON.stringify(t)})}gitCommit(e,t){return this.request(`/${encodeURIComponent(e)}/git/commit`,{method:"POST",body:JSON.stringify(t)})}gitPull(e,t={}){return this.request(`/${encodeURIComponent(e)}/git/pull`,{method:"POST",body:JSON.stringify(t)})}gitPush(e,t={}){return this.request(`/${encodeURIComponent(e)}/git/push`,{method:"POST",body:JSON.stringify(t)})}billing(e){return this.request(`/${encodeURIComponent(e)}/billing`)}pricing(){return this.request("/pricing")}costs(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.agentId&&t.set("agentId",e.agentId),this.request(`/costs${t.size>0?`?${t.toString()}`:""}`)}integrationLeases(e){return this.request(`/${encodeURIComponent(e)}/integrations`)}attachIntegrationConnection(e,t){return this.request(`/${encodeURIComponent(e)}/integrations`,{method:"POST",body:JSON.stringify(t)})}removeIntegrationLease(e,t){return this.request(`/${encodeURIComponent(e)}/integrations`,{method:"DELETE",body:JSON.stringify({leaseId:t})})}async request(e,t={}){let r=await w(this.sandboxApiUrl,this.apiKey,e,t);return T(r,"Sandbox request")}async requestApiRoot(e,t={}){let r=await w(this.apiRootUrl,this.apiKey,e,t);return T(r,"OpenPond API request")}};var _=class extends A{static{n(this,"OpenPondSandboxClient")}runtimes=B(this);sandboxes=z(this);profile=J(this);projects=D(this);agents=M(this);list(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.agentId&&t.set("agentId",e.agentId),this.request(t.size>0?`?${t.toString()}`:"").then(r=>r.sandboxes)}listSecrets(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),this.requestApiRoot(`/sandbox-secrets${t.size>0?`?${t.toString()}`:""}`).then(r=>r.secrets)}getSecret(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),this.requestApiRoot(`/sandbox-secrets/${encodeURIComponent(e)}${r.size>0?`?${r.toString()}`:""}`).then(s=>s.secret)}createSecret(e){return this.requestApiRoot("/sandbox-secrets",{method:"POST",body:JSON.stringify(e)}).then(t=>t.secret)}rotateSecret(e,t){let r=new URLSearchParams;t.teamId&&r.set("teamId",t.teamId);let{teamId:s,...i}=t;return this.requestApiRoot(`/sandbox-secrets/${encodeURIComponent(e)}/rotate${r.size>0?`?${r.toString()}`:""}`,{method:"POST",body:JSON.stringify(i)}).then(c=>c.secret)}attachSecret(e,t){let r=new URLSearchParams;t.teamId&&r.set("teamId",t.teamId);let{teamId:s,...i}=t;return this.requestApiRoot(`/sandbox-secrets/${encodeURIComponent(e)}/attach${r.size>0?`?${r.toString()}`:""}`,{method:"POST",body:JSON.stringify(i)}).then(c=>c.secret)}revokeSecret(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),this.requestApiRoot(`/sandbox-secrets/${encodeURIComponent(e)}/revoke${r.size>0?`?${r.toString()}`:""}`,{method:"POST"}).then(s=>s.secret)}deleteSecret(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),this.requestApiRoot(`/sandbox-secrets/${encodeURIComponent(e)}${r.size>0?`?${r.toString()}`:""}`,{method:"DELETE"}).then(s=>s.secret)}snapshotCatalog(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.agentId&&t.set("agentId",e.agentId),e.q&&t.set("q",e.q),e.kind&&t.set("kind",e.kind),e.replayState&&t.set("replayState",e.replayState),e.visibility&&t.set("visibility",e.visibility),e.tag&&t.set("tag",e.tag),e.useCase&&t.set("useCase",e.useCase),e.limit&&t.set("limit",String(e.limit)),this.request(`/catalog/snapshots${t.size>0?`?${t.toString()}`:""}`)}listSandboxRuntimes(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.agentId&&t.set("agentId",e.agentId),this.requestApiRoot(`/runtimes${t.size>0?`?${t.toString()}`:""}`).then(r=>r.runtimes)}listProjects(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/projects?${t.toString()}`).then(r=>r.projects)}upsertProject(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/projects?${t.toString()}`,{method:"POST",body:JSON.stringify(e)}).then(r=>r.project)}getHostedProfile(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/profile?${t.toString()}`).then(r=>r.profile)}ensureHostedProfile(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/profile/ensure?${t.toString()}`,{method:"POST"}).then(r=>{if(!r.profile)throw new Error("hosted_profile_missing");return r.profile})}pushHostedProfile(e){let t=new URLSearchParams({teamId:e.teamId}),{teamId:r,...s}=e;return this.requestApiRoot(`/profile/push?${t.toString()}`,{method:"POST",body:JSON.stringify(s)})}async upsertProjectGitRemote(e){let t=await this.upsertProject(e);return this.ensureProjectGitRemote(t.id,{teamId:e.teamId})}getProject(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/projects/${encodeURIComponent(e)}?${r.toString()}`).then(s=>s.project)}syncProject(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/projects/${encodeURIComponent(e)}/sync?${r.toString()}`,{method:"POST"}).then(s=>s.project)}ensureProjectGitRemote(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/projects/${encodeURIComponent(e)}/git?${r.toString()}`,{method:"POST"})}uploadProjectSource(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/projects/${encodeURIComponent(e)}/source?${r.toString()}`,{method:"POST",body:JSON.stringify(i)}).then(c=>c.project)}updateProject(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/projects/${encodeURIComponent(e)}?${r.toString()}`,{method:"PATCH",body:JSON.stringify(i)}).then(c=>c.project)}archiveProject(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/projects/${encodeURIComponent(e)}?${r.toString()}`,{method:"DELETE"}).then(s=>s.project)}listAgents(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/agents?${t.toString()}`).then(r=>r.agents)}upsertAgent(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/agents?${t.toString()}`,{method:"POST",body:JSON.stringify(e)}).then(r=>r.agent)}getAgent(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/agents/${encodeURIComponent(e)}?${r.toString()}`).then(s=>s.agent)}archiveAgent(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/agents/${encodeURIComponent(e)}?${r.toString()}`,{method:"DELETE"}).then(s=>s.agent)}updateAgent(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/agents/${encodeURIComponent(e)}?${r.toString()}`,{method:"PATCH",body:JSON.stringify(i)}).then(c=>c.agent)}runAgent(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/agents/${encodeURIComponent(e)}/run?${r.toString()}`,{method:"POST",headers:{Prefer:"respond-async"},body:JSON.stringify(i)})}getAgentSourceDeployPlan(e,t){let r=new URLSearchParams({teamId:t.teamId});return this.requestApiRoot(`/agents/${encodeURIComponent(e)}/source/deploy-plan?${r.toString()}`).then(s=>s.deployPlan)}listAgentManifestSnapshots(e,t){let r=new URLSearchParams({teamId:t.teamId});return t.limit!==void 0&&r.set("limit",String(t.limit)),this.requestApiRoot(`/agents/${encodeURIComponent(e)}/source/manifest-snapshots?${r.toString()}`).then(s=>s.manifestSnapshots)}requestAgentSourceChecks(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/agents/${encodeURIComponent(e)}/source/checks?${r.toString()}`,{method:"POST",body:JSON.stringify(i),timeoutMs:900*1e3})}configureAgentSourceSetup(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/agents/${encodeURIComponent(e)}/source/setup?${r.toString()}`,{method:"POST",body:JSON.stringify(i)})}publishAgentSource(e,t){let r=new URLSearchParams({teamId:t.teamId}),{teamId:s,...i}=t;return this.requestApiRoot(`/agents/${encodeURIComponent(e)}/source/publish?${r.toString()}`,{method:"POST",body:JSON.stringify(i)})}getMicrosoftTeamsBotOverview(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/teams/bot/overview?${t.toString()}`)}bindMicrosoftTeamsBotConversation(e){return this.requestApiRoot("/teams/bot/bindings",{method:"POST",body:JSON.stringify(e)})}rebindMicrosoftTeamsBotConversation(e,t){return this.requestApiRoot(`/teams/bot/bindings/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)})}unlinkMicrosoftTeamsBotConversation(e){return this.requestApiRoot(`/teams/bot/bindings/${encodeURIComponent(e.bindingId)}`,{method:"DELETE",body:JSON.stringify({teamId:e.teamId})})}sendMicrosoftTeamsBotDiagnostic(e){return this.requestApiRoot("/teams/bot/diagnostics",{method:"POST",body:JSON.stringify(e)})}sendMicrosoftTeamsBotDiagnosticRun(e){return this.requestApiRoot("/teams/bot/diagnostics/run",{method:"POST",body:JSON.stringify(e)})}createSandboxRuntime(e){return this.requestApiRoot("/runtimes",{method:"POST",body:JSON.stringify(e)}).then(t=>t.runtime)}sandboxRuntime(e,t=null){return F(this,e,t)}getSandboxRuntime(e){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}`).then(t=>t.runtime)}createSandboxRuntimeSandbox(e,t={},r={}){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/sandbox`,{method:"POST",headers:R(r),body:JSON.stringify(t)})}updateSandboxRuntimeStatus(e,t){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/status`,{method:"PATCH",body:JSON.stringify(t)}).then(r=>r.runtime)}listSandboxRuntimeEvents(e){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/events`)}emitSandboxRuntimeEvent(e,t){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/events`,{method:"POST",body:JSON.stringify(t)})}checkpointSandboxRuntime(e,t){return this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/checkpoints`,{method:"POST",body:JSON.stringify(t)}).then(r=>r.runtime)}promoteSandboxRuntime(e,t,r={}){let s=new URLSearchParams;return r.teamId&&s.set("teamId",r.teamId),this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/promote${s.size>0?`?${s.toString()}`:""}`,{method:"POST",body:JSON.stringify(t)})}preserveSandboxRuntimeSource(e,t={},r={}){let s=new URLSearchParams;return r.teamId&&s.set("teamId",r.teamId),this.requestApiRoot(`/runtimes/${encodeURIComponent(e)}/preserve-source${s.size>0?`?${s.toString()}`:""}`,{method:"POST",body:JSON.stringify(t)})}forkSnapshot(e,t={},r={}){let s=new URLSearchParams;t.teamId&&s.set("teamId",t.teamId),t.projectId&&s.set("projectId",t.projectId),r.async&&s.set("async","1");let{teamId:i,projectId:c,...m}=t;return this.request(`/catalog/snapshots/${encodeURIComponent(e)}/fork${s.size>0?`?${s.toString()}`:""}`,{method:"POST",headers:r.async?{Prefer:"respond-async"}:void 0,body:JSON.stringify({...m,snapshotId:e})})}templates(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.q&&t.set("q",e.q),e.name&&t.set("name",e.name),e.version&&t.set("version",e.version),e.visibility&&t.set("visibility",e.visibility),e.tag&&t.set("tag",e.tag),e.useCase&&t.set("useCase",e.useCase),e.limit&&t.set("limit",String(e.limit)),this.request(`/templates${t.size>0?`?${t.toString()}`:""}`)}publishedSnapshots(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.q&&t.set("q",e.q),e.name&&t.set("name",e.name),e.version&&t.set("version",e.version),e.visibility&&t.set("visibility",e.visibility),e.tag&&t.set("tag",e.tag),e.useCase&&t.set("useCase",e.useCase),e.limit&&t.set("limit",String(e.limit)),this.request(`/published-snapshots${t.size>0?`?${t.toString()}`:""}`).then(r=>{let s=r.publishedSnapshots??r.templates;return{...r,templates:s,publishedSnapshots:s}})}launchTemplate(e){let t=new URLSearchParams;e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId);let{teamId:r,projectId:s,...i}=e;return this.request(`/templates/launch${t.size>0?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(i)})}runPublishedSnapshot(e){let t=new URLSearchParams;e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId);let{teamId:r,projectId:s,...i}=e;return this.request(`/published-snapshots/launch${t.size>0?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(i)}).then(c=>{let m=c.publishedSnapshot??c.template;return{...c,template:m,publishedSnapshot:m}})}listSchedules(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.sourceSandboxId&&t.set("sourceSandboxId",e.sourceSandboxId),this.request(`/schedules${t.size>0?`?${t.toString()}`:""}`)}createSchedule(e){let t=new URLSearchParams;e.projectId&&t.set("projectId",e.projectId);let{projectId:r,...s}=e;return this.request(`/schedules${t.size>0?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(s)})}getSchedule(e){return this.request(`/schedules/${encodeURIComponent(e)}`)}updateSchedule(e,t){return this.request(`/schedules/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)})}deleteSchedule(e){return this.request(`/schedules/${encodeURIComponent(e)}`,{method:"DELETE"})}listScheduleRuns(e,t={}){let r=new URLSearchParams;return t.limit!==void 0&&r.set("limit",String(t.limit)),this.request(`/schedules/${encodeURIComponent(e)}/runs${r.size>0?`?${r.toString()}`:""}`)}runScheduleNow(e,t={}){return this.request(`/schedules/${encodeURIComponent(e)}/run`,{method:"POST",body:JSON.stringify(t)})}listTemplateBuilds(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/sandbox-template-builds?${t.toString()}`).then(r=>r.builds)}createTemplateBuild(e){return this.requestApiRoot("/sandbox-template-builds",{method:"POST",body:JSON.stringify(e)}).then(t=>t.build)}getTemplateBuild(e){return this.requestApiRoot(`/sandbox-template-builds/${encodeURIComponent(e)}`).then(t=>t.build)}getTemplateBuildLogs(e){return this.requestApiRoot(`/sandbox-template-builds/${encodeURIComponent(e)}/logs`)}cancelTemplateBuild(e){return this.requestApiRoot(`/sandbox-template-builds/${encodeURIComponent(e)}/cancel`,{method:"POST"}).then(t=>t.build)}listPublishedSnapshotBuilds(e){let t=new URLSearchParams({teamId:e.teamId});return this.requestApiRoot(`/published-snapshot-builds?${t.toString()}`).then(r=>r.builds)}createPublishedSnapshotBuild(e){return this.requestApiRoot("/published-snapshot-builds",{method:"POST",body:JSON.stringify(e)}).then(t=>t.build)}getPublishedSnapshotBuild(e){return this.requestApiRoot(`/published-snapshot-builds/${encodeURIComponent(e)}`).then(t=>t.build)}getPublishedSnapshotBuildLogs(e){return this.requestApiRoot(`/published-snapshot-builds/${encodeURIComponent(e)}/logs`)}cancelPublishedSnapshotBuild(e){return this.requestApiRoot(`/published-snapshot-builds/${encodeURIComponent(e)}/cancel`,{method:"POST"}).then(t=>t.build)}listOrganizations(){return this.requestApiRoot("/organizations").then(e=>e.organizations??e.teams??[])}createOrganization(e){return this.requestApiRoot("/organizations",{method:"POST",body:JSON.stringify(e)}).then(t=>t.organization)}getOrganization(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}`).then(t=>t.organization)}updateOrganization(e,t){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}`,{method:"PATCH",body:JSON.stringify(t)}).then(r=>r.organization)}listOrganizationMembers(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/members`).then(t=>t.members)}upsertOrganizationMember(e,t){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/members`,{method:"POST",body:JSON.stringify(t)}).then(r=>r.member)}getOrganizationMcpServer(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/mcp-server`).then(t=>t.mcpServer)}generateOrganizationMcpServer(e,t={}){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/mcp-server`,{method:"POST",body:JSON.stringify(t)}).then(r=>r.mcpServer)}rotateOrganizationMcpServer(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/mcp-server/rotate`,{method:"POST"}).then(t=>t.mcpServer)}disableOrganizationMcpServer(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/mcp-server/disable`,{method:"POST"}).then(t=>t.mcpServer)}enableOrganizationMcpServer(e){return this.requestApiRoot(`/organizations/${encodeURIComponent(e)}/mcp-server/enable`,{method:"POST"}).then(t=>t.mcpServer)}startReplay(e){let t=new URLSearchParams;e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId);let{teamId:r,projectId:s,...i}=e;return this.requestApiRoot(`/sandbox-replays${t.size>0?`?${t.toString()}`:""}`,{method:"POST",body:JSON.stringify(i)})}listReplays(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),this.requestApiRoot(`/sandbox-replays${t.size>0?`?${t.toString()}`:""}`)}getReplay(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),t.projectId&&r.set("projectId",t.projectId),this.requestApiRoot(`/sandbox-replays/${encodeURIComponent(e)}${r.size>0?`?${r.toString()}`:""}`)}getReplayLogs(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),t.projectId&&r.set("projectId",t.projectId),this.requestApiRoot(`/sandbox-replays/${encodeURIComponent(e)}/logs${r.size>0?`?${r.toString()}`:""}`)}getReplayArtifacts(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),t.projectId&&r.set("projectId",t.projectId),this.requestApiRoot(`/sandbox-replays/${encodeURIComponent(e)}/artifacts${r.size>0?`?${r.toString()}`:""}`)}cancelReplay(e,t={}){let r=new URLSearchParams;return t.teamId&&r.set("teamId",t.teamId),t.projectId&&r.set("projectId",t.projectId),this.requestApiRoot(`/sandbox-replays/${encodeURIComponent(e)}/cancel${r.size>0?`?${r.toString()}`:""}`,{method:"POST"})}integrationConnections(e={}){let t=new URLSearchParams;return e.teamId&&t.set("teamId",e.teamId),e.projectId&&t.set("projectId",e.projectId),e.agentId&&t.set("agentId",e.agentId),e.status&&t.set("status",e.status),this.requestApiRoot(`/integrations/connections${t.size>0?`?${t.toString()}`:""}`)}mcpServerConfig(){return{name:"openpond-sandboxes",transport:"streamable-http",url:`${this.sandboxApiUrl}/mcp`,headers:{"openpond-api-key":this.apiKey}}}smoke(e={}){return W(this,e)}};function De(o){return new _(o)}n(De,"createOpenPondSandboxClient");import{randomUUID as ae}from"node:crypto";function ie(o){let e=y(o);if(!e)throw new Error("apiBaseUrl is required");return e}n(ie,"normalizeApiBaseUrl");function V(o){return o.replace(/\/+$/,"")}n(V,"trimTrailingSlashes");function y(o){let e=V(o?.trim()??"");return e?(e=e.replace(/\/chat\/completions$/i,"").replace(/\/models(?:\/[^/]+)?$/i,""),e.endsWith("/opchat/v1")?e:e.endsWith("/opchat")?`${e}/v1`:(e.endsWith("/v1")&&(e=e.slice(0,-3)),`${V(e)}/opchat/v1`)):null}n(y,"normalizeOptionalOpChatApiBaseUrl");function We(o={}){let e=o.env??(typeof process<"u"?process.env:{}),t=y(o.opChatApiBaseUrl)??y(e.OPENPOND_OPCHAT_API_URL);if(t)return t;let r=y(o.chatApiBaseUrl)??y(e.OPENPOND_CHAT_API_URL)??y(e.OPENPOND_GATEWAY_URL);return r||(y(o.apiBaseUrl)??y(e.OPENPOND_API_URL)??k)}n(We,"resolveOpChatApiBaseUrl");function de(o){let e=o.trim();if(!e)throw new Error("OpenPond API key is required");return e}n(de,"requireToken");function ce(o,e,t){let r=new Headers;return r.set("Authorization",`Bearer ${de(o)}`),r.set("Content-Type","application/json"),r.set("Accept",e),r.set("x-openpond-client","openpond-code"),r.set("x-openpond-request-id",t||ae()),r}n(ce,"hostedHeaders");async function me(o){let e=await o.text().catch(()=>"");if(!e)return o.statusText||`HTTP ${o.status}`;try{let t=JSON.parse(e),r=typeof t.error=="string"||t.error&&typeof t.error=="object"&&!Array.isArray(t.error)?t.error:null,s=typeof t.code=="string"?t.code:r&&typeof r!="string"&&typeof r.code=="string"?r.code:null,i=typeof t.message=="string"?t.message:r&&typeof r!="string"&&typeof r.message=="string"?r.message:null,c=typeof r=="string"?r:r&&typeof r.type=="string"?r.type:null;return[s,c,i].filter(Boolean).join(": ")||e}catch{return e}}n(me,"readError");function ue(o,e){let t={model:o.model,messages:o.messages,stream:e};typeof o.temperature=="number"&&(t.temperature=o.temperature),typeof o.maxTokens=="number"&&(t.max_tokens=o.maxTokens),o.tools&&(t.tools=o.tools);let r=o.toolChoice??o.tool_choice;return r!==void 0&&(t.tool_choice=r),o.metadata&&(t.metadata=o.metadata),t}n(ue,"buildHostedChatBody");async function Ke(o){let t=`${ie(o.apiBaseUrl)}/chat/completions`,r=await fetch(t,{method:"POST",headers:ce(o.token,"application/json",o.requestId),body:JSON.stringify(ue(o,!1)),signal:o.signal});if(!r.ok)throw new Error(`Hosted chat failed: ${r.status} ${await me(r)}`);return await r.json()}n(Ke,"sendHostedChatTurn");export{E as a,w as b,T as c,N as d,$ as e,C as f,_ as g,De as h,We as i,Ke as j};
|