openpond 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/cache.d.ts +7 -10
- package/dist/chunks/actions-command-QP3NMDK4.js +2 -0
- package/dist/chunks/app-layer-N7VFRVJ2.js +3 -0
- package/dist/chunks/app-server-runtime-OCLPUI7F.js +2 -0
- package/dist/chunks/apps-AMG75TI4.js +2 -0
- package/dist/chunks/chunk-22UARBPW.js +3 -0
- package/dist/chunks/chunk-3A7HZJNE.js +1 -0
- package/dist/chunks/chunk-3M53YXEI.js +2 -0
- package/dist/chunks/chunk-3NDRIQTI.js +2 -0
- package/dist/chunks/chunk-5BBVEWG3.js +2 -0
- package/dist/chunks/chunk-5O7ZVCMV.js +6 -0
- package/dist/chunks/chunk-6FA3GG5B.js +33 -0
- package/dist/chunks/chunk-6MI4KKWF.js +2 -0
- package/dist/chunks/chunk-BBG546O6.js +6 -0
- package/dist/chunks/chunk-BX4J2VDU.js +2 -0
- package/dist/chunks/chunk-BZMVB3GS.js +2 -0
- package/dist/chunks/chunk-C5LOZSVS.js +2 -0
- package/dist/chunks/chunk-CWQWV2T3.js +2 -0
- package/dist/chunks/chunk-DUA3QP6Y.js +19 -0
- package/dist/chunks/chunk-EAPFMACH.js +10 -0
- package/dist/chunks/chunk-ES2ISFJC.js +66 -0
- package/dist/chunks/chunk-F65NIZLM.js +2199 -0
- package/dist/chunks/chunk-FGJ5LFPL.js +5 -0
- package/dist/chunks/chunk-FTQLQJQV.js +2 -0
- package/dist/chunks/chunk-FY7OQ5RK.js +24 -0
- package/dist/chunks/chunk-FYCJSUFV.js +53 -0
- package/dist/chunks/chunk-GLUWATL5.js +2 -0
- package/dist/chunks/chunk-H7IWJN7L.js +17 -0
- package/dist/chunks/chunk-HZP5U2AA.js +3 -0
- package/dist/chunks/chunk-I5K74TOH.js +3 -0
- package/dist/chunks/chunk-IR3YJWPW.js +7 -0
- package/dist/chunks/chunk-KU7QOHFT.js +2872 -0
- package/dist/chunks/chunk-KV553EWX.js +16 -0
- package/dist/chunks/chunk-MGN6GLNZ.js +2 -0
- package/dist/chunks/chunk-OG5Q6NXK.js +28 -0
- package/dist/chunks/chunk-OGPHXXCD.js +1 -0
- package/dist/chunks/chunk-PI36UHRA.js +18 -0
- package/dist/chunks/chunk-RWSAGQTP.js +2 -0
- package/dist/chunks/chunk-SAE4OIPC.js +2 -0
- package/dist/chunks/chunk-SDO4FC4Q.js +2 -0
- package/dist/chunks/chunk-UKUVMXOW.js +12 -0
- package/dist/chunks/chunk-VCLCFK3O.js +36 -0
- package/dist/chunks/chunk-VYUMTRB3.js +5 -0
- package/dist/chunks/chunk-X37KMV27.js +1 -0
- package/dist/chunks/chunk-XDHAGACI.js +3 -0
- package/dist/chunks/chunk-XEOEKFG6.js +71 -0
- package/dist/chunks/chunk-ZF7TEGY5.js +5 -0
- package/dist/chunks/chunk-ZVOO7FKM.js +2 -0
- package/dist/chunks/cli-M2FG7SSI.js +2 -0
- package/dist/chunks/configuration-command-XBKBIZBO.js +2 -0
- package/dist/chunks/continual-D75WA7E7.js +7 -0
- package/dist/chunks/core-commands-LUZVWXQR.js +2 -0
- package/dist/chunks/database-X2CUV732.js +2 -0
- package/dist/chunks/desktop-test-KGC4JVJ7.js +3 -0
- package/dist/chunks/dist-NKLXFA37.js +2 -0
- package/dist/chunks/extension-NQ7N5LEY.js +5 -0
- package/dist/chunks/help-MWK66XZK.js +8 -0
- package/dist/chunks/module-ES6BEMUI-ZVL3F6NW.js +2 -0
- package/dist/chunks/module-asyncify-2EFITU5U-R7TVXNAE.js +2 -0
- package/dist/chunks/opchat-XJZA3QKZ.js +3 -0
- package/dist/chunks/organizations-UECDFEYE.js +2 -0
- package/dist/chunks/profile-KUMIZURM.js +3 -0
- package/dist/chunks/project-agent-NILMJHLV.js +2 -0
- package/dist/chunks/sandbox-command-QHH65OSE.js +2 -0
- package/dist/chunks/sandbox-template-N7I63PNU.js +10 -0
- package/dist/chunks/src-724HF43W.js +82 -0
- package/dist/chunks/src-VTKTTKQO.js +319 -0
- package/dist/chunks/taskset-PISBOILQ.js +2 -0
- package/dist/chunks/teams-bot-UV4RU53M.js +3 -0
- package/dist/chunks/training-2NDOWH5S.js +2 -0
- package/dist/chunks/workspaces-XXT4KUD3.js +2 -0
- package/dist/cli.js +3 -101
- package/dist/client.d.ts +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/index.js +1 -26305
- package/dist/private-json-file.d.ts +1 -2
- package/dist/sandbox-template/manifest.js +1 -18380
- package/dist/web/assets/App-DxecRQUL.js +176 -0
- package/dist/web/assets/AppDialog-B65Eo3gp.js +1 -0
- package/dist/web/assets/AppTerminalPanel-B2EKQM7W.js +2 -0
- package/dist/web/assets/{AppsView-Ck_OzQWf.js → AppsView-BBoVe7s2.js} +1 -1
- package/dist/web/assets/{BrowserSidebar-CqciX8aL.js → BrowserSidebar-CSM1atSJ.js} +1 -1
- package/dist/web/assets/{CartesianChart-Y0lsL4vC.js → CartesianChart-CJKfXiEG.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-BOb9PjvS.js → CollaborationTabs-BMZamWFC.js} +1 -1
- package/dist/web/assets/{CommandMenu-Co6JnmTu.js → CommandMenu-B3U1z2eo.js} +1 -1
- package/dist/web/assets/{CommunityView-BbTSeL7h.js → CommunityView-CTyRUcfy.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-BGzCWVFp.js → ComposerCreateImproveStrip-D7usvRtK.js} +1 -1
- package/dist/web/assets/GetStartedView-Ibu7oKWJ.js +1 -0
- package/dist/web/assets/HostedModelLearningReview-qnzIkT70.js +1 -0
- package/dist/web/assets/HostedModelLearningSettings--PKjpYsy.js +1 -0
- package/dist/web/assets/LabModelVersionDetailPage-s9uUN6fV.js +1 -0
- package/dist/web/assets/{LabSkillSidebar-C5oS6UmH.js → LabSkillSidebar-BKYseMiJ.js} +1 -1
- package/dist/web/assets/LabsRoute-C1FWCoYb.css +1 -0
- package/dist/web/assets/LabsRoute-DoRs0K6v.js +32 -0
- package/dist/web/assets/MainChatThread-DvuyMcMB.js +2 -0
- package/dist/web/assets/MainPane-BWwcxgHD.js +8 -0
- package/dist/web/assets/{MarkdownText-DqJarmTh.js → MarkdownText-D8XC5UT_.js} +1 -1
- package/dist/web/assets/{Messages-BaT7HOzB.js → Messages-e4A8JUjD.js} +6 -6
- package/dist/web/assets/{NativeSkillSidebar-DXp8snN5.js → NativeSkillSidebar-D2Joh8XB.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-CLHuGUN5.js → NewExperienceSwitcher-CzGebt2E.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-CzpHCAaC.js → NewProjectDialog-CdMTSxUE.js} +1 -1
- package/dist/web/assets/{OutputsPage-DIzx-Ge6.js → OutputsPage-m7cSb8dW.js} +1 -1
- package/dist/web/assets/{ProjectsPage-DojwrhOy.js → ProjectsPage-C9mz8W1g.js} +1 -1
- package/dist/web/assets/RightChatPanelStack-B4LEqKEj.js +1 -0
- package/dist/web/assets/{RightSidebarHomePanel-DTzfuEX3.js → RightSidebarHomePanel-DOeUsH7h.js} +1 -1
- package/dist/web/assets/ScheduledWorkPage-UXZSSWgA.js +1 -0
- package/dist/web/assets/SettingsView-CAH0vreE.css +1 -0
- package/dist/web/assets/SettingsView-CQm1ai73.js +9 -0
- package/dist/web/assets/TeamChatView-C4haojB7.js +3 -0
- package/dist/web/assets/{TerminalOverlay-DnNVrCtu.js → TerminalOverlay-p2GZsuyQ.js} +3 -3
- package/dist/web/assets/{TrainingCreationPanel-CDwwyucO.js → TrainingCreationPanel-BYJSlO8X.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-BijDnV_0.js → TrainingDraftPanel-DR5KlayH.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-Y5BFAu1p.js → UsageSettingsSection-BQToNXE4.js} +5 -5
- package/dist/web/assets/{WorkSidebarPanel-CkJlvZKm.js → WorkSidebarPanel--EeytWeg.js} +1 -1
- package/dist/web/assets/WorkspaceDiffPanel-BrovSYhn.js +14 -0
- package/dist/web/assets/{WorkspaceEnvironmentMenu-D8knAy1q.js → WorkspaceEnvironmentMenu-l-keRgvj.js} +3 -3
- package/dist/web/assets/{WorkspaceGitDialogs-_LHTrvh6.js → WorkspaceGitDialogs-aicWzaZu.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-B2B7OM_L.js → WorkspaceMonacoEditor-CO_E74jM.js} +36 -36
- package/dist/web/assets/{arrow-up-right-4nAzMtjW.js → arrow-up-right-rwPXNfVn.js} +1 -1
- package/dist/web/assets/chat-file-links-B3jDstSC.js +1 -0
- package/dist/web/assets/chevron-up-D089nvYQ.js +1 -0
- package/dist/web/assets/{clipboard-BzjUoZFo.js → clipboard-DwEExyU4.js} +1 -1
- package/dist/web/assets/{cloud-upload-CsrrwS-b.js → cloud-upload-D2he0-vQ.js} +1 -1
- package/dist/web/assets/{cssMode-CIbSSHKJ.js → cssMode-DS4k0NcI.js} +1 -1
- package/dist/web/assets/{folder-open-vRTuLzpS.js → folder-open-CAOLduKD.js} +1 -1
- package/dist/web/assets/{folder-plus-hyqwgUnx.js → folder-plus-D56MrxVT.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-CaxKfeYa.js → git-commit-horizontal-CeNM0oKJ.js} +1 -1
- package/dist/web/assets/{htmlMode-C3MGQGam.js → htmlMode-Xkni5erh.js} +1 -1
- package/dist/web/assets/{index-ByQIHpc9.css → index-BGMzUaup.css} +1 -1
- package/dist/web/assets/{index-Dvq7bpBG.js → index-KwyAyscP.js} +1 -1
- package/dist/web/assets/{info-aYWeE1Iw.js → info-CcrBaEE_.js} +1 -1
- package/dist/web/assets/{jsonMode-CpD6UkT7.js → jsonMode-C4YPbQB7.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-DpcK8ZI6.js → lspLanguageFeatures-CF5oMTz6.js} +1 -1
- package/dist/web/assets/{minimize-2-DeYg7XqB.js → minimize-2-DzHQnInk.js} +1 -1
- package/dist/web/assets/{monaco.contribution-CrrdDQgP.js → monaco.contribution-0EN4mGCC.js} +2 -2
- package/dist/web/assets/{monaco.contribution-JWFq0HzV.js → monaco.contribution-B4qcTP0w.js} +2 -2
- package/dist/web/assets/{monaco.contribution-BDTM0ZJq.js → monaco.contribution-CJK_NrBm.js} +2 -2
- package/dist/web/assets/{monaco.contribution-C-_ekTxy.js → monaco.contribution-CkPGKNd-.js} +2 -2
- package/dist/web/assets/{play-BqgRTddV.js → play-p3-AMTPL.js} +1 -1
- package/dist/web/assets/{python-B67wope9.js → python-B0kpTxAZ.js} +1 -1
- package/dist/web/assets/{refresh-cw-DwMA_2On.js → refresh-cw-_jbTIzzr.js} +1 -1
- package/dist/web/assets/{save-B0BKh5oQ.js → save-Cy6hEotx.js} +1 -1
- package/dist/web/assets/{square-LY3oz82L.js → square-DKQkcrOH.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-B2jka5B1.js → toggleHighContrast-Bnk1VVVq.js} +1 -1
- package/dist/web/assets/{tsMode-1MUwluYD.js → tsMode-BDrSVy7V.js} +1 -1
- package/dist/web/assets/{upload-bSKSkFVa.js → upload-COn0my_O.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules--jnnM4Fz.js → useLocalAgentSchedules-iZNB4Oee.js} +1 -1
- package/dist/web/assets/{wifi-off-DA34iPmr.js → wifi-off-Cqt-ZLXY.js} +1 -1
- package/dist/web/assets/{workers-CczIcRcl.js → workers-hu0Ym93h.js} +1 -1
- package/dist/web/assets/{yaml-DwEGoHA9.js → yaml-D-JLDGL6.js} +1 -1
- package/dist/web/index.html +2 -2
- package/docs/command-reference.md +28 -2
- package/package.json +10 -7
- package/dist/chunks/actions-command-6N5XWMR6.js +0 -185
- package/dist/chunks/app-layer-XEYHFJHI.js +0 -214
- package/dist/chunks/app-server-runtime-FJM2EQPH.js +0 -21
- package/dist/chunks/apps-GSXUDK6V.js +0 -427
- package/dist/chunks/chunk-2JABRRNR.js +0 -183
- package/dist/chunks/chunk-47EIAYI7.js +0 -2162
- package/dist/chunks/chunk-4L3ZJS2T.js +0 -1207
- package/dist/chunks/chunk-5TKZBMQM.js +0 -731
- package/dist/chunks/chunk-6G6MDZLM.js +0 -14509
- package/dist/chunks/chunk-BVY5JYM6.js +0 -512
- package/dist/chunks/chunk-C5TKGE5Y.js +0 -1275
- package/dist/chunks/chunk-CNTM26OW.js +0 -602
- package/dist/chunks/chunk-D7BO5Y5J.js +0 -1531
- package/dist/chunks/chunk-DJL4TJYG.js +0 -70
- package/dist/chunks/chunk-DLQQIWN2.js +0 -648
- package/dist/chunks/chunk-DNXBJZAU.js +0 -630
- package/dist/chunks/chunk-EFET7LB7.js +0 -1331
- package/dist/chunks/chunk-FQS2QL5F.js +0 -14522
- package/dist/chunks/chunk-HFPUR4CQ.js +0 -669
- package/dist/chunks/chunk-J3YDKJFD.js +0 -88
- package/dist/chunks/chunk-J7PYGDRY.js +0 -634
- package/dist/chunks/chunk-JTHL5XJ2.js +0 -1838
- package/dist/chunks/chunk-KSRWKXRB.js +0 -12
- package/dist/chunks/chunk-KWDOAJJI.js +0 -238
- package/dist/chunks/chunk-MUMPWI4O.js +0 -92
- package/dist/chunks/chunk-N3TGCM7J.js +0 -1135
- package/dist/chunks/chunk-NTK22KJD.js +0 -10707
- package/dist/chunks/chunk-O6B6YCMI.js +0 -57688
- package/dist/chunks/chunk-R3C3MNSI.js +0 -140
- package/dist/chunks/chunk-SMNFI2FU.js +0 -113
- package/dist/chunks/chunk-UACZUFIA.js +0 -47
- package/dist/chunks/chunk-W5GKHH77.js +0 -168
- package/dist/chunks/chunk-WBAZFKC7.js +0 -1643
- package/dist/chunks/chunk-X7ZG4TSW.js +0 -3063
- package/dist/chunks/chunk-YVCYVDNP.js +0 -746
- package/dist/chunks/cli-6PFRZ2WV.js +0 -21
- package/dist/chunks/continual-FYDKLCO7.js +0 -803
- package/dist/chunks/core-commands-MAN3CSJQ.js +0 -48
- package/dist/chunks/desktop-test-OE5SST2W.js +0 -146
- package/dist/chunks/extension-J3CIEDP4.js +0 -10041
- package/dist/chunks/help-JNGJJFU5.js +0 -67
- package/dist/chunks/opchat-6HEQJFLL.js +0 -167
- package/dist/chunks/organizations-MWAPNOCK.js +0 -804
- package/dist/chunks/profile-P7HMONTZ.js +0 -1134
- package/dist/chunks/project-agent-2RAK7GAZ.js +0 -514
- package/dist/chunks/sandbox-command-G22CPFNK.js +0 -1659
- package/dist/chunks/sandbox-template-S4WRUWJ6.js +0 -1653
- package/dist/chunks/src-BKBZ7WLO.js +0 -3624
- package/dist/chunks/src-RTGN2O4H.js +0 -65745
- package/dist/chunks/taskset-BMI7KOWP.js +0 -66
- package/dist/chunks/teams-bot-5VBYEN7M.js +0 -144
- package/dist/chunks/training-UPVSGDTB.js +0 -17
- package/dist/chunks/workspaces-IJQPWX3H.js +0 -99
- package/dist/web/assets/App-BOkhmdHu.js +0 -173
- package/dist/web/assets/AppDialog-BCjKFUBn.js +0 -1
- package/dist/web/assets/AppTerminalPanel-DRU8GIfy.js +0 -2
- package/dist/web/assets/GetStartedView-jEogFjxP.js +0 -1
- package/dist/web/assets/LabModelVersionDetailPage-CrudId_1.js +0 -1
- package/dist/web/assets/LabsRoute-9v8qwEBc.js +0 -2
- package/dist/web/assets/LabsRoute-CGFgymTX.css +0 -1
- package/dist/web/assets/MainChatThread-VtMpAxlP.js +0 -2
- package/dist/web/assets/MainPane-BbknUzp3.js +0 -8
- package/dist/web/assets/RightChatPanelStack-CIE5bgmO.js +0 -1
- package/dist/web/assets/ScheduledWorkPage-DdbcQGSv.js +0 -1
- package/dist/web/assets/SettingsView-CC5GXaE1.css +0 -1
- package/dist/web/assets/SettingsView-QT_OLmDh.js +0 -6
- package/dist/web/assets/TeamChatView-C4-nG1tC.js +0 -3
- package/dist/web/assets/WorkspaceDiffPanel-CBgzmBk8.js +0 -14
- package/dist/web/assets/chat-file-links-Bned0MT7.js +0 -1
- package/dist/web/assets/chevron-up-DK7ejCfk.js +0 -1
- package/dist/web/assets/index-66-ohHD5.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{d as F}from"./chunk-5BBVEWG3.js";import{a as o}from"./chunk-FTQLQJQV.js";import{spawn as nt,spawnSync as At}from"node:child_process";import{accessSync as vt,constants as Rt,existsSync as _t,promises as Bt}from"node:fs";import et from"node:path";var rt="Git is required for OpenPond app workspaces, but macOS reports Apple Command Line Tools are not installed. OpenPond skipped /usr/bin/git to avoid opening the Xcode installer prompt. Install Command Line Tools with `xcode-select --install`, install Git from Homebrew, or put a non-Apple git binary earlier on PATH.",T;function Lt(e){try{return _t(e)?(vt(e,Rt.X_OK),!0):!1}catch{return!1}}o(Lt,"isExecutable");function Ot(){let e=(process.env.PATH??"").split(et.delimiter).map(t=>t.trim()).filter(Boolean);for(let t of e){let n=et.join(t,"git");if(!(n==="/usr/bin/git"||n==="/bin/git")&&Lt(n))return n}return null}o(Ot,"firstNonAppleGitOnPath");function it(){let e=At("/usr/bin/xcode-select",["-p"],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return e.status===0&&!!e.stdout.trim()}o(it,"appleDeveloperToolsAvailable");function Dt(e){if(e!=="git"||process.platform!=="darwin")return{command:e};if(T!==void 0)return{command:T};let t=Ot();return t?(T=t,{command:t}):it()?(T="git",{command:"git"}):{error:rt}}o(Dt,"resolveWorkspaceCommand");function u(e,t,n,r={},i){return new Promise(s=>{let a=Dt(e);if("error"in a){s({code:1,stdout:"",stderr:a.error});return}let c=nt(a.command,t,{cwd:n,env:{...process.env,...r,GIT_TERMINAL_PROMPT:"0"},stdio:[i===void 0?"ignore":"pipe","pipe","pipe"]}),d=[],p=[];i!==void 0&&c.stdin?.end(i),c.stdout?.on("data",h=>d.push(h)),c.stderr?.on("data",h=>p.push(h)),c.on("error",h=>{s({code:1,stdout:"",stderr:h.message})}),c.on("close",h=>{s({code:h??1,stdout:Buffer.concat(d).toString("utf8"),stderr:Buffer.concat(p).toString("utf8")})})})}o(u,"runCommand");function Gt(e){return!!(e&&e.includes(rt.slice(0,80)))}o(Gt,"isMacOSGitDeveloperToolsMissing");async function Se(e){await Bt.mkdir(e,{recursive:!0});let t=await u("git",["--version"],e);if(t.code===0)return{ok:!0,command:T??"git",version:(t.stdout||t.stderr).trim()};let n=t.stderr.trim()||t.stdout.trim()||"Git is required for OpenPond app workspaces.";return{ok:!1,error:n,installAction:process.platform==="darwin"&&Gt(n)?"macos_command_line_tools":"manual_git_install"}}o(Se,"checkWorkspaceGitAvailability");function ye(){if(process.platform!=="darwin")return{ok:!1,error:"Apple Command Line Tools installation is only available on macOS."};if(it())return{ok:!0,message:"Apple Command Line Tools already appear to be installed."};try{return nt("/usr/bin/xcode-select",["--install"],{detached:!0,stdio:"ignore"}).unref(),{ok:!0,message:"Opened the Apple Command Line Tools installer."}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}o(ye,"startMacOSCommandLineToolsInstall");import{promises as k}from"node:fs";import m from"node:path";var st=24e3,ot=8e4,It=512*1024,ct=15*1024*1024,Tt=20*1024*1024,Mt=new Set([".cache",".eggs",".git",".ipynb_checkpoints",".mypy_cache",".next",".nox",".nuxt",".openpond",".output",".parcel-cache",".pytest_cache",".pyre",".ruff_cache",".svelte-kit",".tox",".turbo",".venv","__pycache__","artifacts","build","coverage","dist","env","node_modules","out","site-packages","target","venv","volumes"]),zt=new Set([".7z",".avif",".db",".doc",".docx",".gif",".gz",".ico",".jpeg",".jpg",".mov",".mp4",".pdf",".png",".sqlite",".tar",".webp",".xls",".xlsm",".xlsx",".zip"]),$t=new Map([[".avif","image/avif"],[".gif","image/gif"],[".jpeg","image/jpeg"],[".jpg","image/jpeg"],[".png","image/png"],[".webp","image/webp"]]),Nt=new Map([[".m4v","video/x-m4v"],[".mov","video/quicktime"],[".mp4","video/mp4"],[".webm","video/webm"]]),Ht=new Set([".doc",".docx",".pdf"]);function Ut(e){return e.replace(/[^a-zA-Z0-9._-]/g,"-").slice(0,120)||"app"}o(Ut,"safeAppSegment");function N(e){if(!e)return"unknown";try{let t=new URL(e).hostname.toLowerCase();if(t==="github.com"||t.endsWith(".github.com"))return"github";if(t==="openpond.ai"||t.endsWith(".openpond.ai"))return"openpond"}catch{return"unknown"}return"local_git"}o(N,"sourceFromRemote");function $(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@").replace(/Authorization:\s*Basic\s+[A-Za-z0-9+/=]+/gi,"Authorization: Basic ***")}o($,"redactRemoteUrl");async function G(e){try{return await k.access(e),!0}catch{return!1}}o(G,"pathExists");async function O(e){return await G(e)?(await u("git",["rev-parse","--git-dir"],e)).code===0:!1}o(O,"isGitRepo");function X(e){return e.length<=st?e:`${e.slice(0,st)}
|
|
3
|
+
|
|
4
|
+
[diff truncated]`}o(X,"truncatePatch");function jt(e){return e.length<=ot?e:`${e.slice(0,ot)}
|
|
5
|
+
|
|
6
|
+
[file truncated]`}o(jt,"truncateFileContent");async function I(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return null;try{let i=await k.lstat(n);return!i.isFile()||!Kt(t,i.size)?null:jt(await k.readFile(n,"utf8"))}catch{return null}}o(I,"readWorkspaceFile");async function V(e,t){let n=w(t);if(!n||!Ht.has(m.extname(n).toLowerCase()))return null;let r=m.resolve(e,n),i=m.resolve(e);if(r!==i&&!r.startsWith(`${i}${m.sep}`))return null;try{let s=await k.lstat(r);return!s.isFile()||s.size>Tt?null:(await k.readFile(r)).toString("base64")}catch{return null}}o(V,"readWorkspaceDocumentPreview");function lt(e){return $t.get(m.extname(e).toLowerCase())??null}o(lt,"workspaceImageContentType");function qt(e){return Nt.get(m.extname(e).toLowerCase())??null}o(qt,"localVideoContentType");async function ut(e,t){let n=w(t);if(!n)return null;let r=lt(n);if(!r)return null;let i=m.resolve(e,n),s=m.resolve(e);if(i!==s&&!i.startsWith(`${s}${m.sep}`))return null;try{let a=await k.lstat(i);return!a.isFile()||a.size>ct?null:{path:n,contentType:r,bytes:await k.readFile(i),sizeBytes:a.size}}catch{return null}}o(ut,"readWorkspaceImageFile");async function Ae(e){let t=dt(e);if(!t)return null;let n=lt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return!i.isFile()||i.size>ct?null:{path:r,contentType:n,bytes:await k.readFile(r),sizeBytes:i.size}}catch{return null}}o(Ae,"readLocalImageFile");async function ve(e){let t=dt(e);if(!t)return null;let n=qt(t);if(!n)return null;let r=m.resolve(t);try{let i=await k.lstat(r);return i.isFile()?{path:r,contentType:n,sizeBytes:i.size}:null}catch{return null}}o(ve,"readLocalVideoFile");function dt(e){let t=e.trim();if(!t)return null;if(t=t.replace(/^['"`]+|['"`]+$/g,""),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return m.isAbsolute(t)?t:null}o(dt,"cleanLocalAssetPath");function Kt(e,t){return t>It?!1:!zt.has(m.extname(e).toLowerCase())}o(Kt,"isReadableTextWorkspaceFile");async function pt(e,t){let n=m.resolve(e,t),r=m.resolve(e);if(n!==r&&!n.startsWith(`${r}${m.sep}`))return!1;try{return(await k.lstat(n)).isDirectory()}catch{return!1}}o(pt,"isWorkspaceDirectory");function w(e){let t=e.replace(/\\/g,"/").replace(/^\.\/+/,"");if(!t.trim()||t.startsWith("/"))return null;let n=t.split("/").filter(Boolean);return n.length===0||n.some(r=>r===".."||r===".git")?null:n.join("/")}o(w,"normalizeWorkspaceFilePath");function y(e){let t=w(e);return t?t.split("/").some(n=>Mt.has(n)||n===".env"||n.startsWith(".env.")||n.endsWith(".egg-info")||n.endsWith(".pyc")||n.endsWith(".pyo")):!0}o(y,"isGeneratedWorkspacePath");async function ft(e,t){if(y(t))return!1;let n=await u("git",["ls-files","--cached","--others","--exclude-standard","--",t],e);return n.code!==0?!1:n.stdout.split(`
|
|
7
|
+
`).map(r=>r.trim()).some(r=>r===t)}o(ft,"isVisibleGitWorkspaceFile");function M(e){if(!e.trim()||e.startsWith("## "))return null;let t=e.slice(0,2),n=e.slice(3).trim(),r=n.includes(" -> ")?n.split(" -> ").pop().trim():n;return r?t==="??"?{path:r,status:"untracked"}:t.includes("A")?{path:r,status:"added"}:t.includes("D")?{path:r,status:"deleted"}:t.includes("R")?{path:r,status:"renamed"}:{path:r,status:"modified"}:null}o(M,"parseStatusLine");function mt(e){let t=e.replace(/^##\s*/,"").split("...")[1]?.trim();if(!t)return{upstreamBranch:null,ahead:0,behind:0};let n=t.indexOf("["),r=(n>=0?t.slice(0,n):t).trim()||null,i=t.match(/ahead\s+(\d+)/),s=t.match(/behind\s+(\d+)/);return{upstreamBranch:r,ahead:i&&Number(i[1])||0,behind:s&&Number(s[1])||0}}o(mt,"parseBranchStatusLine");function H(e){let t=new Map;for(let n of e.split(`
|
|
8
|
+
`)){if(!n.trim())continue;let[r,i,...s]=n.split(" "),a=s.join(" ").trim();a&&t.set(a,{additions:r==="-"?0:Number(r)||0,deletions:i==="-"?0:Number(i)||0})}return t}o(H,"parseNumstat");function U(e){return Array.from(new Set(e.filter(Boolean))).sort((t,n)=>t.localeCompare(n))}o(U,"uniqueSortedPaths");var at=2e3;async function ht(e){let t=[];async function n(r,i=""){if(t.length>=at)return;let s;try{s=await k.readdir(r,{withFileTypes:!0})}catch{return}s.sort((a,c)=>a.name.localeCompare(c.name));for(let a of s){if(t.length>=at)return;let c=i?`${i}/${a.name}`:a.name;if(y(c))continue;let d=m.join(r,a.name);a.isDirectory()?await n(d,c):a.isFile()&&t.push(c)}}return o(n,"walk"),await n(e),U(t)}o(ht,"listPlainWorkspaceFiles");function gt(e){let t=e?.trim();if(!t)return null;try{return new URL(t.includes("://")?t:`https://${t}`).host.replace(/\/+$/,"")}catch{return t.replace(/^https?:\/\//i,"").replace(/\/+$/,"")}}o(gt,"normalizeGitHost");function Xt(e){let t=e?.trim();if(!t)return null;try{let n=new URL(t);return{protocol:n.protocol||"https:",host:n.host}}catch{return null}}o(Xt,"normalizeGitBaseUrl");function Vt(e){let t=gt(e);return!t||t==="openpond.ai"||t==="www.openpond.ai"}o(Vt,"isDefaultOpenPondGitHost");function wt(e,t){let n=e.gitOwner?.trim(),r=e.gitRepo?.trim();if(!n||!r)return null;let i=Xt(t),s=gt(e.gitHost),a=i&&Vt(s)?i.host:s||i?.host||"openpond.ai",c=i&&a===i.host?i.protocol:"https:",d=r.endsWith(".git")?r:`${r}.git`;return`${c}//${a}/${n}/${d}`}o(wt,"expectedRemoteUrl");function Yt(e){try{let t=new URL(e).hostname.toLowerCase();return t==="openpond.ai"||t.endsWith(".openpond.ai")}catch{return!1}}o(Yt,"isOpenPondRemote");function Jt(e,t){return!t||!Yt(e)?{}:{GIT_CONFIG_COUNT:"1",GIT_CONFIG_KEY_0:"http.extraHeader",GIT_CONFIG_VALUE_0:`Authorization: Basic ${Buffer.from(`x-access-token:${t}`,"utf8").toString("base64")}`}}o(Jt,"gitBasicAuthEnv");function Y(e){let t=e.trim();if(!t)throw new Error("Branch name is required");if(t.includes(".."))throw new Error("Branch name cannot contain '..'");if(/[~^:\\\s]/.test(t))throw new Error("Branch name contains unsupported characters");if(t.startsWith("/")||t.endsWith("/")||t.startsWith("-"))throw new Error("Branch name is not safe")}o(Y,"assertSafeBranchName");function R(e,t){let n=m.join(e,"workspaces",Ut(t));return{workspacePath:n,repoPath:m.join(n,"repo")}}o(R,"appWorkspacePaths");async function kt(e,t,n,r){await k.mkdir(t,{recursive:!0});let i=await G(e),s=await u("git",["clone","--quiet",n,e],t,Jt(n,r));if(s.code!==0)throw i||await k.rm(e,{recursive:!0,force:!0}).catch(()=>null),new Error($(s.stderr.trim()||s.stdout.trim()||"git clone failed"));let a=await u("git",["remote","set-url","origin",n],e);if(a.code!==0)throw new Error($(a.stderr.trim()||a.stdout.trim()||"git remote set-url failed"))}o(kt,"cloneWorkspace");async function Wt(e){let t=await u("git",["rev-parse","--git-path","FETCH_HEAD"],e),n=t.code===0&&t.stdout.trim()?m.resolve(e,t.stdout.trim()):m.join(e,".git","FETCH_HEAD");try{return(await k.stat(n)).mtime.toISOString()}catch{return null}}o(Wt,"lastFetchAt");import{promises as Zt}from"node:fs";async function Ge(e,t,n={}){return z(R(e,t.id),t,n)}o(Ge,"loadWorkspaceState");async function z(e,t,n={}){let{workspacePath:r,repoPath:i}=e,s=wt(t,n.gitBaseUrl);await Zt.mkdir(r,{recursive:!0});let a=await O(i),c=null;if(!a&&n.clone&&s)try{await kt(i,r,s,n.token),a=!0}catch(g){c=g instanceof Error?g.message:String(g)}if(!a)return n.allowPlainFolder&&await G(i)?{appId:t.id,source:"local_folder",workspacePath:r,repoPath:i,initialized:!0,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()}:{appId:t.id,source:N(s),workspacePath:r,repoPath:i,initialized:a,remoteUrl:null,expectedRemoteUrl:s,currentBranch:null,headCommit:null,upstreamBranch:null,ahead:0,behind:0,diverged:!1,linkedSourceHeadCommit:n.linkedSourceHeadCommit?.trim()||null,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,linkedSourceComparisonError:null,lastFetchAt:null,defaultBranch:t.defaultBranch??null,branches:[],dirty:!1,changedFilesCount:0,untrackedFilesCount:0,error:c,updatedAt:F()};let[d,p,h,b,A]=await Promise.all([u("git",["branch","--show-current"],i),u("git",["branch","--format=%(refname:short)"],i),u("git",["status","--porcelain=v1","-b"],i),u("git",["config","--get","remote.origin.url"],i),u("git",["rev-parse","--verify","HEAD"],i)]),v=b.code===0&&$(b.stdout.trim())||null,S=h.code===0?h.stdout.split(`
|
|
9
|
+
`).filter(g=>g.trim()):[],C=mt(S.find(g=>g.startsWith("## "))??""),f=S.filter(g=>{if(g.startsWith("## "))return!1;let D=M(g),tt=D?w(D.path):null;return!!(tt&&!y(tt))}),x=f.filter(g=>g.startsWith("??")).length,E=d.code===0&&d.stdout.trim()?d.stdout.trim():null,L=A.code===0&&A.stdout.trim()||null,q=p.code===0?p.stdout.split(`
|
|
10
|
+
`).map(g=>g.trim()).filter(Boolean):[],l=N(v)==="unknown"&&s?s:v??s,W=await Qt(i,n.linkedSourceHeadCommit,L);return{appId:t.id,source:l?N(l):"local_git",workspacePath:r,repoPath:i,initialized:a,remoteUrl:v,expectedRemoteUrl:s,currentBranch:E,headCommit:L,upstreamBranch:C.upstreamBranch,ahead:C.ahead,behind:C.behind,diverged:C.ahead>0&&C.behind>0,linkedSourceHeadCommit:W.linkedSourceHeadCommit,aheadOfLinkedSource:W.aheadOfLinkedSource,behindLinkedSource:W.behindLinkedSource,divergedFromLinkedSource:W.divergedFromLinkedSource,linkedSourceComparisonError:W.error,lastFetchAt:await Wt(i),defaultBranch:t.defaultBranch??null,branches:q,dirty:f.length>0,changedFilesCount:f.length,untrackedFilesCount:x,error:c,updatedAt:F()}}o(z,"loadWorkspaceStateAtPath");async function Qt(e,t,n){let r=t?.trim()||null,i={linkedSourceHeadCommit:r,aheadOfLinkedSource:0,behindLinkedSource:0,divergedFromLinkedSource:!1,error:null};if(!r||!n||r===n)return i;let s=await u("git",["rev-list","--left-right","--count",`${r}...${n}`],e);if(s.code!==0)return{...i,error:s.stderr.trim()||s.stdout.trim()||"Unable to compare linked source commit."};let[a,c]=s.stdout.trim().split(/\s+/,2),d=Number(a)||0,p=Number(c)||0;return{linkedSourceHeadCommit:r,aheadOfLinkedSource:p,behindLinkedSource:d,divergedFromLinkedSource:p>0&&d>0,error:null}}o(Qt,"compareLinkedSourceCommit");async function Ie(e,t,n){return te(R(e,t.id),t,n)}o(Ie,"createAndCheckoutBranch");async function te(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");let s=await u("git",["checkout","-b",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to create branch");return z(e,t,{...r,clone:!1})}o(te,"createAndCheckoutBranchAtPath");async function Te(e,t,n){return ee(R(e,t.id),t,n)}o(Te,"checkoutBranch");async function ee(e,t,n,r={}){Y(n);let i=await z(e,t,{...r,clone:!1});if(!i.initialized)throw new Error(i.error||"Workspace is not initialized");if(i.dirty&&i.currentBranch!==n.trim())throw new Error("Commit or discard local changes before switching branches");let s=await u("git",["checkout",n.trim()],i.repoPath);if(s.code!==0)throw new Error(s.stderr.trim()||s.stdout.trim()||"Unable to switch branch");return z(e,t,{...r,clone:!1})}o(ee,"checkoutBranchAtPath");import P from"node:path";import{promises as yt}from"node:fs";var ne=6,re=60,Pt=1e4,_=new Map;async function j(e,t,n=ne){let r=Math.max(1,Math.floor(n)),i=new Array(e.length),s=0;async function a(){for(;s<e.length;){let c=s;s+=1,i[c]=await t(e[c],c)}}return o(a,"worker"),await Promise.all(Array.from({length:Math.min(r,e.length)},()=>a())),i}o(j,"mapWorkspaceDiffEntriesWithConcurrency");function qe(){_.clear()}o(qe,"clearWorkspaceDiffCacheForTests");async function Ke(e,t,n={}){let{repoPath:r}=R(e,t.id);return ie(r,t.id,n)}o(Ke,"loadWorkspaceDiff");async function ie(e,t,n={}){let r=await O(e);if(!r){let l=await ht(e);return{appId:t,repoPath:e,initialized:l.length>0||await G(e),dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:l,files:[],error:null,updatedAt:F()}}let i=await Z(e),s=i.pathPrefix||".",[a,c]=await Promise.all([u("git",["rev-parse","HEAD"],i.commandCwd),u("git",["status","--porcelain=v1","-uall","--",s],i.commandCwd)]);if(c.code!==0)return{appId:t,repoPath:e,initialized:r,dirty:!1,filesChanged:0,additions:0,deletions:0,repoFiles:[],files:[],error:c.stderr.trim()||c.stdout.trim()||"Unable to read workspace diff",updatedAt:F()};let d=c.stdout.split(`
|
|
11
|
+
`).map(M).filter(l=>!!l).map(l=>{let W=B(l.path,i.pathPrefix);if(!W)return null;let g=w(W);return g?{...l,path:g}:null}).filter(l=>l?!y(l.path):!1),p=await oe(e,d),h=ae({repoPath:e,workspaceId:t,includeFileDetails:!!n.includeFileDetails,head:a.code===0?a.stdout.trim():"unborn",pathPrefix:i.pathPrefix,status:c.stdout,worktreeSignature:p}),b=_.get(h);if(b)return J(b);let A=(await j(d,async l=>l.status==="deleted"||!await pt(e,l.path)?l:null)).filter(l=>!!l),v=await u("git",["ls-files","--",s],i.commandCwd),S=U([...v.code===0?v.stdout.split(`
|
|
12
|
+
`).map(l=>B(l.trim(),i.pathPrefix)).filter(l=>!!l):[],...A.map(l=>l.path)].filter(l=>!y(l))),C=await u("git",["diff","--numstat","HEAD","--",s],i.commandCwd),f=C.code===0?Ct(H(C.stdout),i.pathPrefix):new Map,x=n.includeFileDetails?await le(i,A.filter(l=>l.status!=="untracked")):new Map,E=await j(A,async l=>{let g=(n.includeFileDetails||l.status==="untracked")&&l.status!=="deleted"?await I(e,l.path):null,D=l.status==="untracked"?{additions:bt(g),deletions:0}:f.get(l.path)??{additions:0,deletions:0};return n.includeFileDetails?Ft(e,l,i,D,{content:g,patch:l.status==="untracked"?null:x.get(l.path)??null}):{path:l.path,status:l.status,additions:D.additions,deletions:D.deletions,patch:"",content:null}}),L=E.reduce((l,W)=>l+W.additions,0),q=E.reduce((l,W)=>l+W.deletions,0),K={appId:t,repoPath:e,initialized:r,dirty:E.length>0,filesChanged:E.length,additions:L,deletions:q,repoFiles:S,files:E,error:null,updatedAt:F()};return ce(h,K),J(K)}o(ie,"loadWorkspaceDiffAtPath");async function Xe(e,t,n,r){if(!await O(e))throw new Error("Candidate source is not a Git repository.");let s=await Z(e),a=`${n}..${r}`,[c,d,p,h,b]=await Promise.all([u("git",["rev-parse","--verify",`${n}^{commit}`],s.commandCwd),u("git",["rev-parse","--verify",`${r}^{commit}`],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--name-status","--find-renames",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80",a,"--","."],s.commandCwd),u("git",["-c","core.quotePath=false","ls-tree","-r","--name-only",r],s.commandCwd)]);if(c.code!==0||d.code!==0)throw new Error("Candidate Git history is no longer available.");if(p.code!==0)throw new Error(p.stderr.trim()||"Unable to read the candidate change.");let A=se(p.stdout).filter(f=>!y(f.path)),v=h.code===0?xt(h.stdout||h.stderr,""):new Map,S=await j(A,async f=>{let x=await u("git",["diff","--numstat",a,"--",f.path],s.commandCwd),E=x.code===0?[...H(x.stdout).values()][0]??{additions:0,deletions:0}:{additions:0,deletions:0},L=f.status==="deleted"?null:await u("git",["show",`${r}:${f.path}`],s.commandCwd);return{path:f.path,status:f.status,additions:E.additions,deletions:E.deletions,patch:X(v.get(f.path)??""),content:L?.code===0?L.stdout:null}}),C=b.code===0?U(b.stdout.split(`
|
|
13
|
+
`).map(f=>f.trim()).filter(f=>f&&!y(f))):S.map(f=>f.path);return{appId:t,repoPath:e,initialized:!0,dirty:S.length>0,filesChanged:S.length,additions:S.reduce((f,x)=>f+x.additions,0),deletions:S.reduce((f,x)=>f+x.deletions,0),repoFiles:C,files:S,error:null,updatedAt:F()}}o(Xe,"loadGitCommitDiffAtPath");function se(e){return e.split(/\r?\n/).filter(Boolean).flatMap(t=>{let[n,r,i]=t.split(" "),s=n?.[0]??"M",a=s==="R"||s==="C"?i:r,c=a?w(a):null;return c?[{path:c,status:s==="A"||s==="C"?"added":s==="D"?"deleted":s==="R"?"renamed":"modified"}]:[]})}o(se,"parseCommitDiffEntries");function bt(e){if(!e)return 0;let t=e.endsWith(`
|
|
14
|
+
`)?e.slice(0,-1):e;return t?t.split(`
|
|
15
|
+
`).length:0}o(bt,"countTextLines");async function oe(e,t){return(await j(t,async r=>{if(r.status==="deleted")return`${r.path} ${r.status} deleted`;let i=P.resolve(e,r.path),s=P.resolve(e);if(i!==s&&!i.startsWith(`${s}${P.sep}`))return`${r.path} ${r.status} outside`;try{let a=await yt.lstat(i),c=a.isDirectory()?"dir":a.isFile()?"file":"other";return`${r.path} ${r.status} ${c} ${a.size} ${Math.trunc(a.mtimeMs)} ${Math.trunc(a.ctimeMs)}`}catch{return`${r.path} ${r.status} missing`}})).sort((r,i)=>r.localeCompare(i)).join(`
|
|
16
|
+
`)}o(oe,"workspaceDiffWorktreeSignature");function ae(e){return JSON.stringify(e)}o(ae,"workspaceDiffCacheKey");function ce(e,t){for(_.has(e)&&_.delete(e),_.set(e,J(t));_.size>re;){let n=_.keys().next().value;if(!n)break;_.delete(n)}}o(ce,"writeWorkspaceDiffCache");function J(e){return{...e,repoFiles:[...e.repoFiles],files:e.files.map(t=>({...t}))}}o(J,"cloneWorkspaceDiffSummary");async function Z(e){let t=await u("git",["rev-parse","--show-toplevel"],e);if(t.code!==0)return{commandCwd:e,pathPrefix:""};let n=t.stdout.trim();if(!n)return{commandCwd:e,pathPrefix:""};let r=P.relative(P.resolve(n),P.resolve(e)),i=w(r.replace(/\\/g,"/"))??"";return{commandCwd:n,pathPrefix:i}}o(Z,"gitWorkspaceContext");function B(e,t){let n=w(e);return n?t?n===t?null:n.startsWith(`${t}/`)?n.slice(t.length+1):null:n:null}o(B,"pathInWorkspace");function Q(e,t){return t?`${t}/${e}`:e}o(Q,"gitPathForWorkspacePath");function Ct(e,t){let n=new Map;for(let[r,i]of e){let s=B(r,t);s&&n.set(s,i)}return n}o(Ct,"scopedNumstat");async function le(e,t){if(t.length===0)return new Map;let n=e.pathPrefix||".",r=await u("git",["-c","core.quotePath=false","diff","--no-ext-diff","--unified=80","HEAD","--",n],e.commandCwd);return r.code!==0?new Map:xt(r.stdout||r.stderr,e.pathPrefix)}o(le,"loadTrackedGitPatchMap");function xt(e,t){let n=new Map;for(let r of e.split(/(?=^diff --git )/m)){if(!r.trim())continue;let i=ue(r,t);i&&n.set(i,r)}return n}o(xt,"parseGitPatchStreamByWorkspacePath");function ue(e,t){let n=e.split(`
|
|
17
|
+
`);for(let a of n){let c=St(a,"+++ ");if(c)return B(c,t)}for(let a of n){let c=St(a,"--- ");if(c)return B(c,t)}for(let a of n)if(a.startsWith("rename to ")){let c=w(a.slice(10).trim());if(c)return B(c,t)}let r=n.find(a=>a.startsWith("diff --git "));if(!r)return null;let i=r.lastIndexOf(" b/");if(i<0)return null;let s=w(r.slice(i+3).trim());return s?B(s,t):null}o(ue,"workspacePathForGitPatchChunk");function St(e,t){if(!e.startsWith(t))return null;let n=e.slice(t.length).trim();if(!n||n==="/dev/null")return null;let r=n.startsWith("a/")||n.startsWith("b/")?n.slice(2):n;return w(r)}o(St,"gitPatchMarkerPath");async function Ve(e,t,n){let{repoPath:r}=R(e,t.id);return fe(r,n)}o(Ve,"loadWorkspaceFile");async function Ye(e,t,n){let{repoPath:r}=R(e,t.id);return de(r,n)}o(Ye,"loadWorkspaceImageFile");async function de(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("Image not found");if(n&&!await ft(e,r))throw new Error("Image not found");let i=await ut(e,r);if(!i)throw new Error("Image not found");return i}o(de,"loadWorkspaceImageFileAtPath");function Et(e,t){let n=pe(t);if(!n)return null;if(!P.isAbsolute(n))return w(n);let r=P.relative(P.resolve(e),P.resolve(n));return!r||r.startsWith("..")||P.isAbsolute(r)?null:w(r)}o(Et,"normalizeWorkspaceFileRequestPath");function pe(e){let t=e.trim();if(!t)return null;t=t.replace(/^['"`]+|['"`]+$/g,"");let n=t.indexOf("#");n>=0&&(t=t.slice(0,n));let r=t.indexOf("?");if(r>=0&&(t=t.slice(0,r)),t.startsWith("file://"))try{t=decodeURIComponent(new URL(t).pathname)}catch{t=t.replace(/^file:\/\//,"")}return t.trim()||null}o(pe,"cleanWorkspaceFileRequestPath");async function fe(e,t){let n=await O(e),r=Et(e,t);if(!r)throw new Error("File not found");if(y(r))throw new Error("File not found");if(n){let a=await me(e,r);if(a){if(a.content!==null||a.status==="deleted")return a;let c=await V(e,r);return c===null?a:{...a,content:c}}}let i=r,s=await I(e,i)??await V(e,i);if(s===null){let a=await he(e,r);a&&(i=a,s=await I(e,i))}if(s===null)throw new Error("File not found");return{path:i,status:"unchanged",additions:0,deletions:0,patch:"",content:s}}o(fe,"loadWorkspaceFileAtPath");async function me(e,t){let n=await Z(e),r=Q(t,n.pathPrefix),i=await u("git",["status","--porcelain=v1","-uall","--",r],n.commandCwd);if(i.code!==0)return null;let s=i.stdout.split(`
|
|
18
|
+
`).map(M).filter(c=>!!c).map(c=>{let d=B(c.path,n.pathPrefix);if(!d)return null;let p=w(d);return p?{...c,path:p}:null}).find(c=>!!(c&&c.path===t));if(!s)return null;let a=s.status==="untracked"?{additions:bt(await I(e,s.path)),deletions:0}:await we(n,s.path);return Ft(e,s,n,a)}o(me,"loadGitWorkspaceFileAtPath");async function he(e,t){if(t.includes("/")||!ge(t))return null;let n=t.toLowerCase(),r=[],i=[{absolutePath:e,prefix:""}],s=0;for(;i.length>0&&s<Pt;){let c=i.shift(),d;try{d=await yt.readdir(c.absolutePath,{withFileTypes:!0})}catch{continue}d.sort((p,h)=>p.name.localeCompare(h.name));for(let p of d){if(s>=Pt)break;let h=c.prefix?`${c.prefix}/${p.name}`:p.name;if(y(h))continue;s+=1;let b=P.join(c.absolutePath,p.name);p.isDirectory()?i.push({absolutePath:b,prefix:h}):p.isFile()&&p.name.toLowerCase()===n&&r.push(h)}}if(r.length===1)return r[0]??null;let a=r.filter(c=>c.startsWith("docs/working-docs/"));return a.length===1?a[0]??null:null}o(he,"resolveExplicitMarkdownBasenamePath");function ge(e){return/\.(?:md|markdown|mdx)$/i.test(e)}o(ge,"isMarkdownWorkspacePath");async function Ft(e,t,n,r,i={}){let s=i.content!==void 0?i.content:t.status==="deleted"?null:await I(e,t.path),a=Q(t.path,n.pathPrefix),c=t.status==="untracked"?["diff","--no-index","--unified=80","--","/dev/null",P.join(e,t.path)]:["diff","--no-ext-diff","--unified=80","HEAD","--",a],d=i.patch??"";if(i.patch===null||i.patch===void 0){let p=await u("git",c,n.commandCwd);d=p.stdout||p.stderr}return{path:t.path,status:t.status,additions:r.additions,deletions:r.deletions,patch:X(d),content:s}}o(Ft,"loadGitWorkspaceFileDetail");async function we(e,t){let n=Q(t,e.pathPrefix),r=await u("git",["diff","--numstat","HEAD","--",n],e.commandCwd);return r.code!==0?{additions:0,deletions:0}:Ct(H(r.stdout),e.pathPrefix).get(t)??{additions:0,deletions:0}}o(we,"gitNumstatForFile");export{rt as a,u as b,Gt as c,Se as d,ye as e,N as f,$ as g,G as h,O as i,X as j,I as k,V as l,lt as m,qt as n,ut as o,Ae as p,ve as q,pt as r,w as s,y as t,ft as u,M as v,mt as w,H as x,U as y,ht as z,wt as A,Y as B,R as C,kt as D,Wt as E,Ge as F,z as G,Ie as H,te as I,Te as J,ee as K,j as L,qe as M,Ke as N,ie as O,Xe as P,Ve as Q,Ye as R,de as S,fe as T};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{b as de}from"./chunk-22UARBPW.js";import{a as fe,c as ge,d as ye,f as Re,g as Ae,i as Ce,j as Oe}from"./chunk-I5K74TOH.js";import{A as z,B as J,C as $,D as V,E as Y,F as Q,G as X,H as Z,I as ee,J as te,K as ne,L as oe,M as se,N as re,O as ae,Q as le,V as pe,c as E,d as b,da as ie,e as x,ea as ce,f as L,fa as ue,g as B,ga as me,h as D,ha as he,i as I,j as v,l as U,o as M,p as _,q as H,r as N,s as q,u as k,v as K,w as F,x as G,y as j,z as W}from"./chunk-CWQWV2T3.js";import{a as P,b as w}from"./chunk-GLUWATL5.js";import{a as s}from"./chunk-FTQLQJQV.js";function xe(t,e=14){if(t.length<e+1)return null;let r=0,o=0;for(let l=1;l<=e;l+=1){let m=t[l]-t[l-1];m>=0?r+=m:o-=m}let a=r/e,i=o/e;for(let l=e+1;l<t.length;l+=1){let m=t[l]-t[l-1],d=m>0?m:0,n=m<0?-m:0;a=(a*(e-1)+d)/e,i=(i*(e-1)+n)/e}return i===0?100:100-100/(1+a/i)}s(xe,"computeRsi");function T(t,e){if(t.length<e)return[];let r=[],o=0;for(let a=0;a<t.length;a+=1)o+=t[a],a>=e&&(o-=t[a-e]),a>=e-1&&r.push(o/e);return r}s(T,"computeSmaSeries");function Le(t,e){let r=T(t,e);return r.length>0?r[r.length-1]:null}s(Le,"computeSma");function A(t,e){if(t.length<e)return[];let r=2/(e+1),a=t.slice(0,e).reduce((p,l)=>p+l,0)/e,i=[a];for(let p=e;p<t.length;p+=1)a=t[p]*r+a*(1-r),i.push(a);return i}s(A,"computeEmaSeries");function Be(t,e){let r=A(t,e);return r.length>0?r[r.length-1]:null}s(Be,"computeEma");function De(t){let e=A(t,12),r=A(t,26);if(e.length===0||r.length===0)return null;let o=e.length-r.length,a=r.map((m,d)=>e[d+o]-m),i=A(a,9);if(i.length===0)return null;let p=a[a.length-1],l=i[i.length-1];return{macd:p,signalLine:l,histogram:p-l}}s(De,"computeMacd");function Ie(t,e,r,o){if(t.length<o)return null;let a=e==="ema"?A(t,r):T(t,r),i=e==="ema"?A(t,o):T(t,o);if(a.length===0||i.length===0)return null;let p=a.length-i.length;if(p<0)return null;let l=i.length-1,m=a[l+p],d=i[l],n=l-1,c=n>=0?a[n+p]:null,u=n>=0?i[n]:null,h="neutral";return c!=null&&u!=null?c<=u&&m>d?h="bullish-cross":c>=u&&m<d?h="bearish-cross":m>d?h="bullish":m<d&&(h="bearish"):m>d?h="bullish":m<d&&(h="bearish"),{fast:m,slow:d,signal:h}}s(Ie,"computeMaCross");function ve(t,e=20,r=2){if(t.length<e)return null;let o=t.slice(-e),a=o.reduce((l,m)=>l+m,0)/e,i=o.reduce((l,m)=>l+Math.pow(m-a,2),0)/e,p=Math.sqrt(i);return{middle:a,upper:a+r*p,lower:a-r*p}}s(ve,"computeBollinger");function Ue(t,e=24){if(t.length<2)return null;let r=t[t.length-1],o=Math.max(0,t.length-1-e),a=t[o];if(a===0)return null;let i=(r-a)/a*100;return{previous:a,percent:i}}s(Ue,"computePriceChange");function Me(t,e=14){if(t.length<e+1)return null;let r=[];for(let i=1;i<t.length;i+=1){let p=t[i],l=t[i-1],m=p.high-p.low,d=Math.abs(p.high-l.close),n=Math.abs(p.low-l.close);r.push(Math.max(m,d,n))}return r.length<e?null:r.slice(-e).reduce((i,p)=>i+p,0)/e}s(Me,"computeAtr");function Te(t){return t.replace(/\/$/,"")}s(Te,"resolveUrl");function _e(t){let e=process.env.OPENPOND_BASE_URL,r=t.baseUrl||e||P;return Te(r.trim())}s(_e,"resolveBaseUrl");function He(t){let e=process.env.OPENPOND_API_URL,r=t.apiUrl||e||w;return Te(r.trim())}s(He,"resolveApiUrl");function Ne(t,e){return fe({apiBaseUrl:e,opChatApiBaseUrl:t.opChatApiUrl,chatApiBaseUrl:t.chatApiUrl})}s(Ne,"resolveChatApiUrl");function qe(t,e){let r=process.env.OPENPOND_TOOL_URL,o=t.toolUrl||r||e;return Te(o.trim())}s(qe,"resolveToolUrl");function ke(t){let e=t.apiKey?.trim();if(e)return e;let r=process.env.OPENPOND_API_KEY?.trim();if(r)return r;throw new Error("OPENPOND_API_KEY is required")}s(ke,"resolveApiKey");function Ke(t){let e=t.split("/").filter(Boolean);if(e.length!==2)throw new Error("expected <handle>/<repo>");return{handle:e[0],repo:e[1]}}s(Ke,"parseHandleRepo");function Pe(t){return(t||"").trim().toLowerCase()}s(Pe,"normalizeRepoName");function Fe(t){if(!t||typeof t!="object")return{name:"unknown",raw:t};let e=t,r=e.profile||e.function,o=typeof e.name=="string"?e.name:typeof r?.name=="string"?r.name:"unknown",a=typeof e.description=="string"?e.description:typeof r?.description=="string"?r.description:void 0;return{name:o,description:a,raw:t}}s(Fe,"normalizeToolSummary");function Ge(t){if(!t)return[];if(Array.isArray(t.toolsJson))return t.toolsJson;if(t.metadataJson&&typeof t.metadataJson=="object"){let e=t.metadataJson.tools;if(Array.isArray(e))return e}return[]}s(Ge,"extractDeploymentTools");async function O(t){let{handle:e,repo:r}=Ke(t.target),o=await Se({apiBase:t.apiBase,apiKey:t.apiKey,useCache:t.useCache,cacheTtlMs:t.cacheTtlMs,forceRefresh:t.forceRefresh}),a=Pe(r),i=o.find(p=>p.handle&&p.handle!==e?!1:[p.repo,p.gitRepo,p.id].map(Pe).includes(a));if(!i)throw new Error(`app not found for ${e}/${r}`);return{app:i,handle:e,repo:r}}s(O,"resolveAppTarget");async function Se(t){if(t.useCache&&!t.forceRefresh){let r=await ce({apiBase:t.apiBase,apiKey:t.apiKey,ttlMs:t.cacheTtlMs});if(r)return r}let e=await v(t.apiBase,t.apiKey);return t.useCache&&await ue({apiBase:t.apiBase,apiKey:t.apiKey,apps:e}),e}s(Se,"fetchAppsWithCache");async function we(t){if(t.useCache&&!t.forceRefresh){let o=await me({apiBase:t.apiBase,apiKey:t.apiKey,ttlMs:t.cacheTtlMs});if(o)return o}let e=await k(t.apiBase,t.apiKey),r=Array.isArray(e.tools)?e.tools:[];return t.useCache&&await he({apiBase:t.apiBase,apiKey:t.apiKey,tools:r}),r}s(we,"fetchToolsWithCache");function je(t){if(!t)return"POST";let e=t.toUpperCase();switch(e){case"GET":case"POST":case"PUT":case"DELETE":return e;default:throw new Error("method must be GET, POST, PUT, or DELETE")}}s(je,"normalizeMethod");async function We(t,e){let r,o,a;return await de(t,{...e,onConversationId:s(i=>{r=i,e?.onConversationId?.(i)},"onConversationId"),onItems:s(i=>{for(let p of i){let l=p;!o&&typeof l.appId=="string"&&(o=l.appId,e?.onAppId?.(l.appId)),!a&&typeof l.deploymentId=="string"&&(a=l.deploymentId,e?.onDeploymentId?.(l.deploymentId))}e?.onItems?.(i)},"onItems")}),{conversationId:r,appId:o,deploymentId:a}}s(We,"consumeAgentCreateStream");function Pt(t){let e=ke(t),r=_e(t),o=He(t),a=Ne(t,o),i=qe(t,r),p=t.cacheTtlMs??ie,l=t.useCache!==!1,m=s(async()=>{l&&await Promise.all([Se({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:!0}),we({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:!0})])},"refreshCache"),d=s(async(n,c)=>(await D(o,e,n,{branch:c}))?.id??null,"resolveLatestDeploymentId");return{baseUrl:r,apiUrl:o,chatApiUrl:a,toolUrl:i,apiKey:e,account:{get:s(async()=>se(o,e),"get"),health:s(async()=>re(o,e),"health")},chat:{providers:s(async()=>Re({apiBaseUrl:a,token:e}),"providers"),provider:s(async n=>Ae({apiBaseUrl:a,token:e,provider:n}),"provider"),models:s(async()=>ge({apiBaseUrl:a,token:e}),"models"),model:s(async n=>ye({apiBaseUrl:a,token:e,model:n}),"model"),send:s(async n=>Ce({...n,apiBaseUrl:a,token:e}),"send"),stream:s(n=>Oe({...n,apiBaseUrl:a,token:e}),"stream")},tool:{list:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.deploymentId||await d(u.id,c?.branch);if(!h)return{app:u,deploymentId:null,tools:[]};let g=await I(o,e,h),y=Ge(g).map(Fe);return{app:u,deploymentId:h,tools:y}},"list"),run:s(async(n,c,u)=>{let{app:h}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:u?.forceRefresh}),g=u?.deploymentId||await d(h.id,u?.branch);if(!g)throw new Error("no deployments found");let f=je(u?.method);return pe(i,e,{appId:h.id,deploymentId:g,toolName:c,method:f,body:u?.body,headers:u?.headers})},"run")},deploy:{watch:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.deploymentId||await d(u.id,c?.branch);if(!h)throw new Error("no deployments found");let g=c?.intervalMs??5e3,f=c?.timeoutMs??240*1e3,y=[],S=new Set,Ee=Date.now(),R=null;for(;Date.now()-Ee<f;){let be=await L(o,e,h);for(let C of be)S.has(C.id)||(S.add(C.id),y.push(C),c?.onLog?.(C));if(R=(await B(o,e,h)).status??null,c?.onStatus?.(R),R==="failed")return{deploymentId:h,status:R,logs:y};if(R==="running"||R==="deployed")return{deploymentId:h,status:R,logs:y};await new Promise(C=>setTimeout(C,g))}return{deploymentId:h,status:"timeout",logs:y}},"watch")},template:{status:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh});return M(o,e,u.id)},"status"),branches:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh});return _(o,e,u.id)},"branches"),update:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.environment==="preview"?"preview":"production";return H(o,e,u.id,{environment:h})},"update")},opentool:{recipesList:s(async(n={})=>F(o,e,n),"recipesList"),recipesSearch:s(async n=>G(o,e,n),"recipesSearch"),recipeGet:s(async n=>j(o,e,n),"recipeGet"),rulesGet:s(async n=>W(o,e,n),"rulesGet")},apps:{list:s(async n=>{let c=await Se({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:n?.forceRefresh});return n?.handle?c.filter(u=>u.handle===n.handle):c},"list"),tools:s(async n=>we({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:n?.forceRefresh}),"tools"),performance:s(async n=>ne(o,e,{appId:n?.appId}),"performance"),summary:s(async n=>oe(o,e,n.appId),"summary"),schedules:s(async n=>K(o,e,n.appId),"schedules"),schedulesStart:s(async n=>{let{appId:c,...u}=n;return z(o,e,c,u)},"schedulesStart"),schedulesStop:s(async n=>J(o,e,n.appId),"schedulesStop"),schedulesStopCurrent:s(async()=>$(o,e),"schedulesStopCurrent"),scheduleRunNow:s(async n=>V(o,e,n),"scheduleRunNow"),scheduleDelete:s(async n=>Y(o,e,n.appId,n.scheduleId),"scheduleDelete"),scheduleExecutionLogs:s(async n=>Q(o,e,n.scheduleId,{limit:n.limit}),"scheduleExecutionLogs"),scheduleExecutionLog:s(async n=>Z(o,e,n.runId),"scheduleExecutionLog"),deploymentScheduleExecutionLogs:s(async n=>X(o,e,n.deploymentId,{limit:n.limit}),"deploymentScheduleExecutionLogs"),executionTimeline:s(async n=>ee(o,e,n.appId,{limit:n.limit}),"executionTimeline"),assistantRun:s(async n=>ae(o,e,n),"assistantRun"),agentCreate:s(async(n,c)=>{let{refreshCache:u,...h}=n,g={...h,streamDeployLogs:h.streamDeployLogs??!0},f=await te(o,e,g);if(!f.ok){let S=await f.text().catch(()=>"");throw new Error(`agent create failed: ${f.status} ${S}`)}let y=await We(f,c);if(l&&u!==!1)try{await m()}catch{}return y},"agentCreate"),toolsExecute:s(async n=>le(o,e,n),"toolsExecute"),deploy:s(async n=>E(o,e,n.appId,{environment:n.environment,commitSha:n.commitSha,branch:n.branch}),"deploy"),startApp:s(async n=>{let{appId:c,...u}=n;return x(o,e,c,u)},"startApp"),promotePreview:s(async n=>{let{appId:c,...u}=n;return b(o,e,c,u)},"promotePreview"),envGet:s(async n=>q(o,e,n.appId),"envGet"),envSet:s(async n=>N(o,e,n.appId,{envVars:n.envVars}),"envSet")},repo:{create:s(async n=>{let{refreshCache:c,...u}=n,h=await U(o,e,u);if(l&&c!==!1)try{await m()}catch{}return h},"create")},cache:{refresh:m}}}s(Pt,"createClient");export{xe as a,T as b,Le as c,A as d,Be as e,De as f,Ie as g,ve as h,Ue as i,Me as j,We as k,Pt as l};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{Fb as Re,Hb as V,Ib as _e,Ka as K,Kb as ke,Ma as Q,Nb as Ie,Oa as W,Ob as ye,Pa as F,Pb as Ae,Qa as X,Qb as $,Ra as Y,Sa as Z,Sb as Le,Tb as Ce,Ua as ee,Va as te,Wa as ie,Ya as ne,_a as re,a as m,ab as A,bb as l,cb as ae,db as oe,eb as se,fb as ce,gb as de,ib as me,jb as le,kb as ue,mb as pe,nb as he,ob as ge,pb as fe,qb as E,rb as be,sb as xe,tb as R,ub as _,wa as q,wb as ve,xb as we,yb as Se,zb as O}from"./chunk-OG5Q6NXK.js";import{a,b as j,c as p,e as C,l as S}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as c}from"./chunk-FTQLQJQV.js";var J=e.discriminatedUnion("kind",[e.object({kind:e.literal("manual"),identity:a}).strict(),e.object({kind:e.literal("schedule"),scheduledAt:p}).strict()]),B=e.object({schemaVersion:e.literal("openpond.learningChain.v1"),id:a,revision:e.number().int().positive(),modelProjectId:a,activeIterationId:a.nullable(),acceptedParent:E.nullable().optional(),latestIterationId:a,lastReservedAt:p.nullable(),updatedAt:p}).strict(),z=e.object({eligible:e.number().int().nonnegative(),awaitingReview:e.number().int().nonnegative(),excluded:e.number().int().nonnegative(),consumed:e.number().int().nonnegative()}).strict(),je=e.object({schemaVersion:e.literal("openpond.learningConsumption.v1"),id:a,revision:e.literal(1),chainId:a,iterationId:a,evidence:l,decision:l,reservedAt:p}).strict(),De=e.object({schemaVersion:e.literal("openpond.learningIterationReservation.v1"),id:a,revision:e.number().int().positive(),chainId:a,iterationId:a,policy:l,trigger:J,requestHash:j,outcome:e.enum(["reserved","waiting_for_data","waiting_for_review"]),counts:z,budget:e.object({maximumSpendUsd:e.number().nonnegative(),reservedSpendUsd:e.number().nonnegative(),settledSpendUsd:e.number().nonnegative(),settledAt:p.nullable()}).strict(),createdAt:p,updatedAt:p}).strict();var v=e.object({operationId:a}),Ke=v.extend({action:e.literal("import_intake"),format:Le,files:e.array(Ce).min(1).max(100),expectedPreviewHash:e.string().length(64),name:e.string().trim().min(1).max(500),recordIds:e.array(e.string().min(1).max(200)).min(1).max(90)}).strict(),P=v.extend({action:e.literal("publish"),expectedRevision:e.number().int().nonnegative(),finalizeDraft:$.optional()}),Te=e.discriminatedUnion("kind",[P.extend({kind:e.literal("asset"),content:we}).strict(),P.extend({kind:e.literal("definition"),content:ae}).strict(),P.extend({kind:e.literal("reward"),content:W}).strict(),P.extend({kind:e.literal("binding"),content:X}).strict(),P.extend({kind:e.literal("source"),content:se}).strict(),P.extend({kind:e.literal("policy"),content:ge}).strict()]),Qe=v.extend({action:e.literal("publish_resources"),finalizeDraft:$.optional(),resources:e.array(e.union(Te.options.map(i=>i.omit({operationId:!0,action:!0,finalizeDraft:!0})))).min(1).max(20)}).strict(),We=v.extend({action:e.literal("submit_example"),example:de}).strict(),Xe=v.extend({action:e.literal("submit_feedback"),feedback:le}).strict(),Ye=v.extend({action:e.literal("apply_correction"),feedbackId:a,evidence:l}).strict(),Ze=v.extend({action:e.literal("resolve_feedback"),feedbackId:a,expectedRevision:e.number().int().positive(),disposition:e.enum(["applied","rejected","superseded"]),decision:l.nullable(),note:e.string().max(2e4)}).strict(),et=v.extend({action:e.literal("queue_grade"),evidence:l,target:e.enum(["observed","proposed_target"]),proposedTarget:A.nullable(),timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),tt=v.extend({action:e.literal("review"),evidence:l,expectedRevision:e.number().int().nonnegative(),disposition:e.enum(["approved","rejected","pending"]),targetApproval:e.enum(["approved","rejected","pending","not_required"]),approvedTarget:A.nullable(),observedGradeId:a.nullable(),targetGradeId:a.nullable(),note:e.string().max(2e4)}).strict(),it=v.extend({action:e.literal("seal_batch"),batchId:a,taskDefinition:l,purpose:e.enum(["supervised_training","reward_training","evaluation"]),evidence:e.array(l).min(1).max(1e4),decisions:e.array(l).min(1).max(1e4)}).strict(),nt=v.extend({action:e.literal("cancel_grade"),gradeId:a,expectedRevision:e.number().int().positive()}).strict(),rt=v.extend({action:e.literal("save_draft"),expectedRevision:e.number().int().nonnegative(),draft:ye}).strict(),at=v.extend({action:e.literal("archive_draft"),draft:l}).strict(),ot=v.extend({action:e.literal("queue_reward_check"),draft:l,timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),st=v.extend({action:e.literal("cancel_reward_check"),checkId:a,expectedRevision:e.number().int().positive()}).strict(),ct=v.extend({action:e.literal("publish_checked_reward"),draft:l,checkId:a,checkRevision:e.number().int().positive()}).strict(),dt=v.extend({action:e.literal("reserve_iteration"),policy:l,trigger:J}).strict(),mt=v.extend({action:e.literal("cancel_iteration_reservation"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),lt=v.extend({action:e.literal("cancel_iteration"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),ut=v.extend({action:e.literal("retry_iteration_dispatch"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),Ee=e.union([ct,Ke,lt,ut,mt,dt,ot,st,rt,at,Te,Qe,We,Xe,Ye,Ze,et,tt,it,nt]);var pt=e.object({provider:a,protocol:a,payload:A}).strict(),Pe=e.object({schemaVersion:e.literal("openpond.learningIterationDispatch.v1"),id:a,revision:e.number().int().positive(),iterationId:a,chainId:a,policy:l,batch:l,state:e.enum(["preparing","prepared","submitted","settled","blocked"]),submission:pt.nullable(),submissionHash:e.string().regex(/^[a-f0-9]{64}$/).nullable(),submissionStartedAt:p.nullable(),execution:C.nullable(),terminalReceipt:C.nullable(),cancelRequestedAt:p.nullable(),leaseOwner:a.nullable(),leaseGeneration:e.number().int().nonnegative(),leaseExpiresAt:p.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:p.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:p,updatedAt:p}).strict().superRefine((i,t)=>{(!!i.submission!=!!i.submissionHash||i.submission&&S(i.submission)!==i.submissionHash)&&t.addIssue({code:"custom",path:["submissionHash"],message:"Dispatch submission identity changed."}),i.submissionStartedAt&&!i.submission&&t.addIssue({code:"custom",path:["submission"],message:"A started dispatch requires its persisted submission."}),i.execution&&!i.submissionStartedAt&&t.addIssue({code:"custom",path:["execution"],message:"An execution requires a started dispatch."}),["prepared","submitted"].includes(i.state)&&!i.submission&&t.addIssue({code:"custom",path:["state"],message:"A prepared dispatch requires its immutable submission."}),i.state==="submitted"&&!i.execution&&t.addIssue({code:"custom",path:["execution"],message:"A submitted dispatch requires an observed execution."}),i.state==="settled"&&i.submissionStartedAt&&!i.terminalReceipt&&t.addIssue({code:"custom",path:["terminalReceipt"],message:"A started dispatch requires terminal receipt evidence before settlement."}),!!i.leaseOwner!=!!i.leaseExpiresAt&&t.addIssue({code:"custom",path:["leaseOwner"],message:"Dispatch lease owner and expiration must be recorded together."})}),qt=e.object({scope:a,dispatchId:a,submissionHash:e.string().regex(/^[a-f0-9]{64}$/),execution:C.nullable(),status:e.enum(["running","evaluating","succeeded","failed","cancelled"]),spendUsd:e.number().nonnegative(),cleanupComplete:e.boolean(),receipt:C.nullable(),evaluation:C.nullable(),candidate:C.nullable(),failure:e.string().max(2e4).nullable()}).strict().superRefine((i,t)=>{["succeeded","failed","cancelled"].includes(i.status)&&(!i.cleanupComplete||!i.receipt)&&t.addIssue({code:"custom",path:["receipt"],message:"Terminal execution requires an authoritative cleanup receipt."}),i.status!=="cancelled"&&!i.execution&&t.addIssue({code:"custom",path:["execution"],message:"The execution identity is required."}),i.candidate&&(i.status!=="succeeded"||!i.evaluation)&&t.addIssue({code:"custom",path:["candidate"],message:"A candidate requires successful retained evaluation."})});var qe=e.object({schemaVersion:e.literal("openpond.learningSchedule.v1"),id:a,revision:e.number().int().positive(),policy:l,modelProjectId:a,executionOwner:e.enum(["local","hosted"]),state:e.enum(["scheduled","disabled","blocked"]),intervalSeconds:e.number().int().min(60).max(31536e3).nullable(),nextRunAt:p.nullable(),lastFire:l.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:p.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:p,updatedAt:p}).strict().superRefine((i,t)=>{i.state!=="disabled"&&(!i.intervalSeconds||!i.nextRunAt)&&t.addIssue({code:"custom",path:["nextRunAt"],message:"An active timer must retain its cadence and due time."}),i.state==="disabled"&&i.nextRunAt&&t.addIssue({code:"custom",path:["nextRunAt"],message:"A disabled timer cannot have a pending occurrence."})}),Oe=e.object({schemaVersion:e.literal("openpond.learningScheduleFire.v1"),id:a,revision:e.literal(1),scheduleId:a,policy:l,scheduledAt:p,coalescedThroughAt:p,coalescedCount:e.number().int().nonnegative(),outcome:e.enum(["reserved","waiting_for_data","waiting_for_review","skipped"]),reason:e.enum(["active_iteration","cooldown","daily_budget"]).nullable(),iteration:e.object({id:a,revision:e.number().int().positive()}).strict().nullable(),createdAt:p,contentHash:j}).strict().superRefine((i,t)=>{(i.outcome==="skipped"!=!!i.reason||i.outcome!=="skipped"!=!!i.iteration)&&t.addIssue({code:"custom",path:["outcome"],message:"A fire retains either its reservation or its explicit skip reason."})});function Fe(i){q(i,262144);let t=Ie.parse(i.fields),r=i.base?F.parse(i.base):null;if(r&&r.id!==i.id)throw new m("reward_authoring_base_mismatch",422);let o=t.fixtures?.length?O({text:JSON.stringify(t.fixtures),path:"reward-fixtures.json",mediaType:"application/json",visibility:"verifier"}):null,n=null,d,u;if(t.kind==="custom_verifier")n=O({text:t.code,path:"verifier.mjs",mediaType:"application/javascript",visibility:"verifier"}),d={kind:t.kind,verifierRef:n.asset,exportName:t.exportName,timeoutMs:D(t.timeout,"Time limit"),networkPolicy:"none"};else if(t.kind==="model_judge"||t.kind==="human"){if(!t.rubric.trim())throw new m("reward_rubric_required",422,"Write the rubric before checking or publishing this Reward.");if(n=O({text:t.rubric,path:"rubric.md",mediaType:"text/markdown",visibility:"verifier"}),t.kind==="human")d={kind:t.kind,rubricRef:n.asset,reviewerRole:t.reviewerRole};else{let g={providerId:t.providerId,modelId:t.modelId,revision:t.modelRevision.trim()||null},x=D(t.temperature,"Temperature"),w=r?.implementation,f=w?.kind==="model_judge"&&w.rubricRef.contentHash===n.asset.contentHash&&w.model?.providerId===g.providerId&&w.model?.modelId===g.modelId&&w.model?.revision===g.revision&&(w.temperature??0)===x&&r?.fixtureSetRef?.contentHash===o?.asset.contentHash;d={kind:t.kind,rubricRef:n.asset,model:g,temperature:x,calibrationStatus:f?w.calibrationStatus:"pending"},f&&(u=r?.calibrationCheckRef)}}else t.kind==="learned_model"?(T(t.inputContract,"Model input contract"),n=O({text:t.inputContract,path:"input-contract.json",mediaType:"application/json",visibility:"verifier"}),d={kind:t.kind,modelVersion:{id:t.learnedId,contentHash:t.learnedHash},inputContract:n.asset}):t.kind==="state"?d={kind:t.kind,config:{fields:He(t.fields)}}:t.kind==="content"?d={kind:t.kind,config:{outputField:t.outputField,expectedField:t.expectedField,...t.expectedValue?{expectedValue:t.expectedValue}:{}}}:t.kind==="schema"?d={kind:t.kind,config:{jsonSchema:T(t.schema,"Output schema")}}:t.kind==="artifact"?d={kind:t.kind,config:{refIncludes:t.reference}}:d={kind:t.kind,config:{requiredEvents:He(t.events)}};let h=[...n?[n]:[],...o?[o]:[]];return{reward:ee({schemaVersion:"openpond.rewardRelease.v1",id:i.id,revision:(r?.revision??0)+1,name:t.name,description:t.description,implementation:d,rawScore:t.kind==="learned_model"?{minimum:D(t.minimum,"Minimum score"),maximum:D(t.maximum,"Maximum score")}:{minimum:0,maximum:1},assets:h.map(g=>g.asset),...o?{fixtureSetRef:o.asset}:{},...u?{calibrationCheckRef:u}:{}}),assets:h}}c(Fe,"compileRewardAuthoring");function T(i,t){try{let r=JSON.parse(i);return q(r,131072),A.parse(r)}catch{throw new m("reward_authoring_json_invalid",422,`${t} must be a JSON object.`)}}c(T,"parseRewardAuthoringObject");function D(i,t){let r=Number(i);if(!i.trim()||!Number.isFinite(r))throw new m("reward_authoring_number_invalid",422,`${t} must be a finite number.`);return r}c(D,"authoringNumber");function He(i){return i.split(",").map(t=>t.trim()).filter(Boolean)}c(He,"split");var Be=e.object({id:a,name:e.string().trim().min(1).max(500),input:A,output:A,expectedOutput:A.nullable(),evaluatorContext:A.nullable(),artifactRefs:e.array(a).max(100),runtimeEventRefs:e.array(a).max(100),infrastructureError:e.string().max(2e4).nullable(),expected:e.discriminatedUnion("status",[e.object({status:e.literal("scored"),minimum:e.number().finite(),maximum:e.number().finite(),passed:e.boolean().nullable()}).strict(),e.object({status:e.enum(["pending","unavailable","failed"])}).strict()])}).strict().superRefine((i,t)=>{i.expected.status==="scored"&&i.expected.minimum>i.expected.maximum&&t.addIssue({code:"custom",path:["expected"],message:"Expected score minimum must not exceed maximum."})}),ht=e.object({id:a,packageVersion:e.string().min(1).max(100),engine:e.string().min(1).max(200)}).strict(),Ue=e.object({fixture:e.object({id:a,contentHash:j}).strict(),result:Z,matchesExpectation:e.boolean()}).strict(),Ve=e.object({schemaVersion:e.literal("openpond.rewardCheckRun.v1"),id:a,revision:e.number().int().positive(),draft:l,reward:l,snapshotHash:j,fixtureRefs:e.array(e.object({id:a,contentHash:j}).strict()).min(1).max(50),status:e.enum(["queued","running","completed","failed","cancelling","cancelled"]),runtime:ht.nullable(),results:e.array(Ue).max(50),matchesExpectations:e.boolean().nullable(),failure:e.string().max(2e4).nullable(),timeoutMs:e.number().int().min(100).max(3e5),maximumSpendUsd:e.number().nonnegative().max(1e3),judgeCalls:e.array(re).max(1e3).optional(),requestedBy:a.optional(),leaseOwner:a.nullable(),leaseExpiresAt:p.nullable(),attemptCount:e.number().int().nonnegative(),createdAt:p,updatedAt:p}).strict();function gt(i){if(!i.length||i.length>50)throw new m("reward_check_fixtures_required",422,"Add between one and 50 fixtures before checking this Reward.");if(new Set(i.map(t=>t.id)).size!==i.length)throw new m("reward_fixture_id_duplicate",422);return i.map(t=>Be.parse({id:t.id,name:t.name,input:T(t.input,`${t.name}: input`),output:T(t.output,`${t.name}: output`),expectedOutput:t.expectedOutput.trim()?T(t.expectedOutput,`${t.name}: expected answer`):null,evaluatorContext:t.evaluatorContext.trim()?T(t.evaluatorContext,`${t.name}: evaluator context`):null,artifactRefs:t.artifactRefs.map(r=>r.trim()).filter(Boolean),runtimeEventRefs:t.runtimeEventRefs.map(r=>r.trim()).filter(Boolean),infrastructureError:t.infrastructureError||null,expected:t.expectedStatus==="scored"?{status:t.expectedStatus,minimum:D(t.minimumScore,`${t.name}: minimum score`),maximum:D(t.maximumScore,`${t.name}: maximum score`),passed:t.expectedPassed==="any"?null:t.expectedPassed==="true"}:{status:t.expectedStatus}}))}c(gt,"compileRewardFixtures");function ai(i,t){let r=Fe({id:i.targetId,fields:i.fields,base:t}),o=gt(i.fields.fixtures??[]),n=o.map(d=>({id:d.id,contentHash:S(d)}));return{...r,fixtures:o,fixtureRefs:n,snapshotHash:S({reward:r.reward,fixtures:o})}}c(ai,"compileRewardCheck");async function oi(i){let t=Be.parse(i.fixture),r=K.parse({id:t.id,clusterKey:t.id,split:"validation",input:t.input,expectedOutput:t.expectedOutput,privilegedContextRef:null}),o=te({schemaVersion:"openpond.rewardBinding.v1",id:`fixture-binding-${S(R(i.reward))}`,revision:1,sources:[{graderId:i.reward.id,reward:R(i.reward),role:"evaluation",normalization:i.reward.rawScore.minimum===0&&i.reward.rawScore.maximum===1?{kind:"identity"}:{kind:"linear",minimum:i.reward.rawScore.minimum,maximum:i.reward.rawScore.maximum,direction:"higher"},weight:1,required:!0,hardGate:!1,privileged:!0,fixtureRefs:[]}],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[i.reward]);return(await ne({binding:o,rewards:[i.reward],task:r,evidence:{output:t.output,artifactRefs:t.artifactRefs,runtimeEventRefs:t.runtimeEventRefs,infrastructureError:t.infrastructureError},signal:i.signal,customVerifier:i.customVerifier,modelJudge:i.modelJudge,purpose:"fixture_calibration"})).results[0]}c(oi,"executeRewardFixture");function si(i,t){let r=i.expected,o=t.status===r.status&&(r.status!=="scored"||t.rawScore!==null&&t.rawScore>=r.minimum&&t.rawScore<=r.maximum&&(r.passed===null||r.passed===t.passed));return Ue.parse({fixture:{id:i.id,contentHash:S(i)},result:t,matchesExpectation:o})}c(si,"matchRewardFixture");var U={draft:Ae,reward_check:Ve,asset:Se,definition:oe,reward:F,binding:Y,source:ce,evidence:me,feedback:ue,decision:pe,batch:he,policy:fe,chain:B,consumption:je,reservation:De,dispatch:Pe,schedule:qe,schedule_fire:Oe,iteration:be,grade:xe,package:Q},N=e.enum(Object.keys(U)),$e=class extends m{static{c(this,"LearningConflictError")}kind;id;expectedRevision;currentRevision;constructor(t,r,o,n){super("learning_revision_conflict",409,`Revision conflict for ${t} ${r}: expected ${o}, current ${n}.`),this.kind=t,this.id=r,this.expectedRevision=o,this.currentRevision=n,this.name="LearningConflictError"}};async function L(i,t,r,o){let n=await i.get(t,r,o);if(!n)throw new m("learning_resource_not_found",404,`${t}:${r}`);return U[t].parse(n)}c(L,"requireLearningResource");async function k(i,t,r){let o=await L(i,t,r.id,r.revision);if(!("contentHash"in o)||o.contentHash!==r.contentHash)throw new m("learning_release_hash_mismatch",409,`${t}:${r.id}`);return ve(o),o}c(k,"requireLearningRelease");function Ri(i,t,r){return`evidence-${S([i,t,r])}`}c(Ri,"learningEvidenceId");function _i(i,t){return S([i,t])}c(_i,"learningOperationId");async function Di(i,t,r,o){let{batch:n,release:d,evidence:u,definition:h}=await M(i,t,r,o);for(let b of u)for(let g of V(b,h))await i.reserveFamilySplit(g.namespace,g.kind,g.key,g.split);return await i.put("batch",n,0,{parentId:h.id}),await i.put("package",d,0,{parentId:n.id}),[Je("batch",n),Je("package",d)]}c(Di,"sealLearningBatch");async function M(i,t,r,o){let n=await k(i,"definition",t.taskDefinition),d=await k(i,"binding",n.rewardBinding),u=await Promise.all(d.sources.map(f=>k(i,"reward",f.reward)));ie(d,u);let h=await Promise.all(t.evidence.map(f=>ft(i,f))),b=await Promise.all(t.decisions.map(async f=>{let I=await k(i,"decision",f),s=await L(i,"decision",f.id);if(!_(R(s),f))throw new m("task_admission_revision_stale",409);return I})),g=[];for(let f of h)for(let I of V(f,n)){let s=await i.familySplit(I.namespace,I.kind,I.key);s!==null&&g.push({...I,split:s})}let x=_e({id:t.batchId,definition:n,binding:d,rewards:u,purpose:t.purpose,evidence:h,decisions:b,priorSplits:g,actorId:r,now:o}),w=ke({batch:x,definition:n,binding:d,rewards:u,evidence:h,decisions:b});return{batch:x,release:w,evidence:h,definition:n}}c(M,"prepareLearningBatch");async function ft(i,t){let r=await k(i,"evidence",t),o=await L(i,"evidence",t.id);if(!_(R(o),t))throw new m("task_evidence_revision_stale",409);return r}c(ft,"requireCurrentLearningEvidence");function Je(i,t){return{kind:i,id:t.id,revision:t.revision}}c(Je,"pointer");async function ze(i,t,r){let o=new Date(r).toISOString().slice(0,10),n=0,d=0,u;do{let h=await i.list("reservation",{parentId:t,limit:100,...u?{afterId:u}:{}});for(let{budget:b}of h.items)n+=b.reservedSpendUsd,b.settledAt&&new Date(b.settledAt).toISOString().slice(0,10)===o&&(d+=b.settledSpendUsd);u=h.nextCursor??void 0}while(u);return{reservedSpendUsd:n,settledSpendUsd:d,committedSpendUsd:n+d}}c(ze,"readLearningIterationBudget");function G(i){return`chain-${S(i)}`}c(G,"learningChainId");function bt(i,t){return`consumption-${S([i,t.id,t.revision])}`}c(bt,"learningConsumptionId");async function Ne(i,t){let r=t.training.method==="sft"?"supervised_training":"reward_training";if(!["sft","grpo","ppo"].includes(t.training.method))throw new m("learning_batch_method_unsupported",422);if(t.admission.mode!=="human")throw new m("learning_automatic_admission_not_available",422);let o=await k(i,"definition",t.taskDefinition);if(!_(o.rewardBinding,t.rewardBinding))throw new m("learning_policy_binding_mismatch",422);let n={eligible:0,awaitingReview:0,excluded:0,consumed:0},d=[],u=G(t.modelProjectId),h=new Set,b=0;for(let g of t.sources){let x=await k(i,"source",g),w=await L(i,"source",x.id);if(!x.enabled||!w.enabled)throw new m("learning_source_disabled",409);if(!_(x.taskDefinition,t.taskDefinition))throw new m("learning_policy_source_definition_mismatch",422);let f;do{let I=await i.list("evidence",{parentId:x.id,limit:100,...f?{afterId:f}:{}});for(let s of I.items){if(h.has(s.id))continue;if(h.add(s.id),!t.sources.some(H=>_(s.source,H))||!_(s.submission.taskDefinition,t.taskDefinition)||s.submission.split!=="train"){n.excluded+=1;continue}if(await i.get("consumption",bt(u,s))){n.consumed+=1;continue}if(++b>t.limits.maxBacklogExamples)throw new m("learning_backlog_limit_exceeded",409);let y=await i.get("decision",`decision-${s.id}`);if(!y||!_(y.evidence,R(s))||y.taskAdmissibility==="pending"||y.actor.kind!=="human"){n.awaitingReview+=1;continue}try{Re({decision:y,evidence:s,definition:o,purpose:r})}catch(H){if(!(H instanceof m))throw H;n.excluded+=1;continue}n.eligible+=1,d.length<t.limits.maxBatchExamples&&d.push({evidence:s,decision:y})}f=I.nextCursor??void 0}while(f)}return{counts:n,selected:d,purpose:r}}c(Ne,"inspectIterationEligibility");async function Me(i,t,r=!1){let o=null,n;do{let d=await i.list("iteration",{parentId:t,status:"accepted",limit:100,...n?{afterId:n}:{}});for(let u of d.items){if(!u.candidateVersion||!u.candidateDecision||!u.candidateDecisionAt||!u.trainingJob){if(r)throw new m("learning_accepted_parent_evidence_missing",409);continue}let h=E.parse({iterationId:u.id,iterationRevision:u.revision,candidate:u.candidateVersion,decision:u.candidateDecision,decidedAt:u.candidateDecisionAt}),b=[Date.parse(h.decidedAt),h.decision.id,h.decision.revision],g=o?[Date.parse(o.decidedAt),o.decision.id,o.decision.revision]:null;(!g||b[0]>g[0]||b[0]===g[0]&&(b[1]>g[1]||b[1]===g[1]&&b[2]>g[2]))&&(o=h)}n=d.nextCursor??void 0}while(n);return o}c(Me,"latestAcceptedLearningParent");async function Ge(i,t,r){if(!r)return{trainingParent:t.trainingParent,trainingParentSelection:null};let o=await L(i,"iteration",r.iterationId,r.iterationRevision),n=await k(i,"policy",o.policy);if(o.status!=="accepted"||!o.candidateVersion||!o.candidateDecision||!o.trainingJob||o.candidateVersion.id!==r.candidate.id||o.candidateVersion.contentHash!==r.candidate.contentHash||!_(o.candidateDecision,r.decision)||o.candidateDecisionAt!==r.decidedAt||n.modelProjectId!==t.modelProjectId||n.executionOwner!==t.executionOwner)throw new m("learning_accepted_parent_evidence_mismatch",409);if(n.trainingParent.id!==t.trainingParent.id||n.trainingParent.contentHash!==t.trainingParent.contentHash||n.training.method!==t.training.method)throw new m("learning_accepted_parent_configuration_mismatch",409,"The accepted checkpoint belongs to a different starting model or training method.");return{trainingParent:r.candidate,trainingParentSelection:r}}c(Ge,"resolveLearningTrainingParent");var xt=e.object({policy:l,modelProjectId:a,inspectedAt:p,chain:B.nullable(),trainingParent:e.object({reference:C,selection:E.nullable()}).strict().nullable().default(null),counts:z.nullable(),minimumApprovedExamples:e.number().int().positive(),canReserve:e.boolean(),blockers:e.array(e.object({code:e.string().min(1).max(200),message:e.string().min(1).max(2e4)}).strict()).max(20),cooldownUntil:p.nullable(),budget:e.object({reservedSpendUsd:e.number().nonnegative(),settledSpendUsd:e.number().nonnegative(),committedSpendUsd:e.number().nonnegative(),maximumIterationSpendUsd:e.number().nonnegative(),maximumDailySpendUsd:e.number().nonnegative()}).strict()}).strict();async function an(i,t,r,o){let n=await k(i,"policy",t),d=await L(i,"policy",n.id);if(!_(R(d),t))throw new m("learning_policy_revision_stale",409);let u=G(n.modelProjectId),h=await i.get("chain",u),b=await ze(i,u,o),g=[],x=c((s,y)=>{g.push({code:s,message:y})},"block");n.enabled||x("learning_policy_paused","Learning is paused."),(n.automation.accept||n.automation.serve)&&x("learning_automatic_acceptance_not_available","Candidates require explicit acceptance and serving selection."),h?.activeIterationId&&x("learning_iteration_active","An iteration is already active.");let w=h?.lastReservedAt&&Date.parse(o)-Date.parse(h.lastReservedAt)<n.limits.cooldownSeconds*1e3?new Date(Date.parse(h.lastReservedAt)+n.limits.cooldownSeconds*1e3).toISOString():null;w&&x("learning_iteration_cooldown","The training cooldown has not elapsed."),b.committedSpendUsd+n.limits.maxIterationSpendUsd>n.limits.maxDailySpendUsd&&x("learning_daily_budget_exhausted","The daily budget cannot cover another iteration's maximum spend.");let f=null;try{let s=await Ne(i,n);f=s.counts,f.eligible<n.admission.minimumApprovedExamples?f.awaitingReview>0?x("learning_waiting_for_review","More approved tasks are required before training."):x("learning_waiting_for_data","More eligible new tasks are required before training."):await M(i,{action:"seal_batch",operationId:"policy-inspection",batchId:"policy-inspection",taskDefinition:n.taskDefinition,purpose:s.purpose,evidence:s.selected.map(y=>R(y.evidence)),decisions:s.selected.map(y=>R(y.decision))},r,o)}catch(s){if(!(s instanceof m))throw s;x(s.code,s.message.slice(0,2e4))}let I=null;try{let s=await Ge(i,n,await Me(i,u,!0));I={reference:s.trainingParent,selection:s.trainingParentSelection}}catch(s){if(!(s instanceof m))throw s;x(s.code,s.message.slice(0,2e4))}return xt.parse({policy:R(n),modelProjectId:n.modelProjectId,inspectedAt:o,chain:h,trainingParent:I,counts:f,minimumApprovedExamples:n.admission.minimumApprovedExamples,canReserve:g.length===0,blockers:g,cooldownUntil:w,budget:{...b,maximumIterationSpendUsd:n.limits.maxIterationSpendUsd,maximumDailySpendUsd:n.limits.maxDailySpendUsd}})}c(an,"inspectLearningPolicy");function gn(i){try{q(i,16777216)}catch(t){throw new m("learning_json_invalid",400,t instanceof Error?t.message:"Expected bounded JSON.")}}c(gn,"assertLearningRequestJson");var fn=e.object({scope:a,command:Ee}).strict(),bn=e.discriminatedUnion("action",[e.object({action:e.literal("inspect_policy"),scope:a,policy:l}).strict(),e.object({action:e.literal("inspect_evidence"),scope:a,evidence:l}).strict(),e.object({action:e.literal("get"),scope:a,kind:N,id:a,revision:e.number().int().positive().optional()}).strict(),e.object({action:e.literal("list"),scope:a,kind:N,parentId:a.optional(),status:e.string().min(1).max(200).optional(),reviewState:e.enum(["inbox","reviewed"]).optional(),afterId:a.optional(),limit:e.number().int().min(1).max(100).default(50)}).strict()]),xn=e.object({evidence:l,definition:l,inspection:e.object({evidenceValidity:e.enum(["valid","invalid"]),taskReady:e.boolean(),observedOutputValid:e.boolean().nullable(),issues:e.array(e.object({path:e.string(),code:e.string(),message:e.string()}).strict()).max(100)}).strict()}).strict(),vn=e.object({operationId:a,resources:e.array(e.union(Object.values(U))).max(100)}).strict();export{B as a,je as b,De as c,Ee as d,Pe as e,qe as f,ht as g,Ve as h,ai as i,oi as j,si as k,U as l,$e as m,L as n,k as o,Ri as p,_i as q,Di as r,ft as s,G as t,bt as u,Ne as v,ze as w,Me as x,Ge as y,xt as z,an as A,gn as B,fn as C,bn as D,xn as E,vn as F};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{a as c,b as u,c as m,d,e as h,f,g as v,i as w,j as y,k as S}from"./chunk-IR3YJWPW.js";import{a as l}from"./chunk-FTQLQJQV.js";var x=class extends f{static{l(this,"QuickJSAsyncContext")}async evalCodeAsync(e,t="eval.js",s){let i=s===void 0?1:0,n=h(s),r=0;try{r=await this.memory.newHeapCharPointer(e).consume(a=>this.ffi.QTS_Eval_MaybeAsync(this.ctx.value,a.value.ptr,a.value.strlen,t,i,n))}catch(a){throw this.runtime.debugLog("QTS_Eval_MaybeAsync threw",a),a}let o=this.ffi.QTS_ResolveException(this.ctx.value,r);return o?(this.ffi.QTS_FreeValuePointer(this.ctx.value,r),this.fail(this.memory.heapValueHandle(o))):this.success(this.memory.heapValueHandle(r))}newAsyncifiedFunction(e,t){return this.newFunction(e,t)}},M=class extends v{static{l(this,"QuickJSAsyncRuntime")}constructor(e){super(e)}newContext(e={}){let t=d(e.intrinsics),s=new u(this.ffi.QTS_NewContext(this.rt.value,t),void 0,n=>{this.contextMap.delete(n),this.callbacks.deleteContext(n),this.ffi.QTS_FreeContext(n)}),i=new x({module:this.module,ctx:s,ffi:this.ffi,rt:this.rt,ownedLifetimes:[],runtime:this,callbacks:this.callbacks});return this.contextMap.set(s.value,i),i}setModuleLoader(e,t){super.setModuleLoader(e,t)}setMaxStackSize(e){return super.setMaxStackSize(e)}},C=class extends S{static{l(this,"QuickJSAsyncWASMModule")}constructor(e,t){super(e,t),this.ffi=t,this.module=e}newRuntime(e={}){let t=new u(this.ffi.QTS_NewRuntime(),void 0,i=>{this.callbacks.deleteRuntime(i),this.ffi.QTS_FreeRuntime(i)}),s=new M({module:this.module,ffi:this.ffi,rt:t,callbacks:this.callbacks});return w(s,e),e.moduleLoader&&s.setModuleLoader(e.moduleLoader),s}newContext(e={}){let t=this.newRuntime(),s=e.ownedLifetimes?e.ownedLifetimes.concat([t]):[t],i=t.newContext({...e,ownedLifetimes:s});return t.context=i,i}evalCode(){throw new c("QuickJSWASMModuleAsyncify.evalCode: use evalCodeAsync instead")}evalCodeAsync(e,t){return m.withScopeAsync(async s=>{let i=s.manage(this.newContext());y(i.runtime,t);let n=await i.evalCodeAsync(e,"eval.js");if(t.memoryLimitBytes!==void 0&&i.runtime.setMemoryLimit(-1),n.error)throw i.dump(s.manage(n.error));return i.dump(s.manage(n.value))})}};export{C as a};
|
|
@@ -0,0 +1,12 @@
|
|
|
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.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 y=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(y=l.id,l.state!=="ready")throw new Error(`expected ready snapshot, got ${l.state}`)}if(e.fork){if(!y)throw new Error("expected snapshot id before fork");let f=await G(o,(await o.forkSnapshot(y,{budget:{maxUsd:e.budgetUsd??"0.05"},metadata:{source:"openpond-code-sandbox-smoke-fork",templateSnapshotId:y}},{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:y,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),y=s>0?setTimeout(()=>S.abort(x),s):null;y?.unref?.();let P=se(c.signal,S.signal,s),U=n(()=>{y&&clearTimeout(y)},"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=g(o);if(!e)throw new Error("apiBaseUrl is required");return e}n(ie,"normalizeApiBaseUrl");function V(o){return o.replace(/\/+$/,"")}n(V,"trimTrailingSlashes");function g(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(g,"normalizeOptionalOpChatApiBaseUrl");function We(o={}){let e=o.env??(typeof process<"u"?process.env:{}),t=g(o.opChatApiBaseUrl)??g(e.OPENPOND_OPCHAT_API_URL);if(t)return t;let r=g(o.chatApiBaseUrl)??g(e.OPENPOND_CHAT_API_URL)??g(e.OPENPOND_GATEWAY_URL);return r||(g(o.apiBaseUrl)??g(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};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{b as Q,c as Z,r as ee,w as oe}from"./chunk-VYUMTRB3.js";import{a as T,b as X,h as K}from"./chunk-5BBVEWG3.js";import{n as te,p as re}from"./chunk-BBG546O6.js";import{$a as C,Ra as J,Sa as V,Ua as A,Xa as F,_a as W,b as L,c as B,db as z,fb as q,gb as Y,ja as D,la as H,ma as M,na as $,oa as j,qa as G}from"./chunk-FYCJSUFV.js";import{b as i}from"./chunk-ES2ISFJC.js";import{c as N,d as P,f as k,h as O}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{promises as I}from"node:fs";import Ee from"node:os";import Ae from"node:path";import{createServer as Te}from"node:http";import{randomBytes as _e}from"node:crypto";var be=i.discriminatedUnion("op",[i.strictObject({op:i.literal("set"),path:i.array(i.string().min(1)).min(1),value:i.unknown()}),i.strictObject({op:i.literal("unset"),path:i.array(i.string().min(1)).min(1)})]),Oe=i.discriminatedUnion("action",[i.strictObject({action:i.literal("patch"),expectedRevision:i.string(),operations:i.array(be).max(100)}),i.strictObject({action:i.literal("replace"),expectedRevision:i.string(),text:i.string().max(1048576)}),i.strictObject({action:i.literal("validate"),text:i.string().max(1048576)}),i.strictObject({action:i.literal("restore"),expectedRevision:i.string(),revision:i.string()}),i.strictObject({action:i.literal("trust"),root:i.string(),accountId:i.string(),trusted:i.boolean()}),i.strictObject({action:i.literal("client-state"),owner:i.string(),patch:z,importOnly:i.boolean().optional()})]);function ne(e){let t=null;async function r(a,n){let f=O(e).config,m=null,c=null,u=null;try{m=await B(f),u=await C(e,{projectRoot:a,accountId:n}),a||(t=u)}catch(l){c=P(l,f)}let v=u??(a?null:t);return{path:f,text:m,rawRevision:L(m),issue:c,effective:v,usingLastValid:!u&&!!v,applies:"next_turn",recoverableRevisions:await H(e),clientState:c?null:await q(e)}}s(r,"status");async function o(a){let n=Oe.parse(a);return n.action==="validate"?{valid:!0,document:D(n.text,O(e).config)}:(n.action==="patch"&&await G(e,n.expectedRevision,n.operations),n.action==="replace"&&await M(e,n.expectedRevision,n.text),n.action==="restore"&&await $(e,n.revision,n.expectedRevision),n.action==="trust"&&await W(e,n.root,n.accountId,n.trusted),n.action==="client-state"?Y(e,n.owner,n.patch,n.importOnly):r())}return s(o,"mutate"),{status:r,mutate:o,schema:j}}s(ne,"createConfigurationPayloads");import{Buffer as ie}from"node:buffer";var E={"Access-Control-Allow-Headers":"authorization, content-type, x-openpond-team-id","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS"},Se=25*1024*1024,x=class extends Error{constructor(r,o,a){super(a);this.status=r;this.code=o;this.name="HttpBodyError"}status;code;static{s(this,"HttpBodyError")}};function ae(e,t,r={}){for(let[a,n]of Object.entries(E))t.setHeader(a,n);let o=le(e.headers.origin);return o?(t.setHeader("Vary",Ce(t.getHeader("Vary"))),Re(o,r)?(t.setHeader("Access-Control-Allow-Origin",o),{allowed:!0,origin:o}):{allowed:!1,origin:o}):{allowed:!0,origin:null}}s(ae,"applyCorsHeaders");function Re(e,t={}){if(e==="null")return!0;let r=se(e);return r?xe(r)?!0:new Set((t.allowedOrigins??[]).map(a=>a?se(a):null).filter(a=>!!a)).has(r):!1}s(Re,"isAllowedCorsOrigin");function h(e,t,r){e.writeHead(t,{"Content-Type":"application/json",...E}),e.end(JSON.stringify(r))}s(h,"sendJson");function Ve(e,t,r){e.writeHead(t,{"Content-Type":"text/plain; charset=utf-8",...E}),e.end(r)}s(Ve,"sendText");function Fe(e,t,r,o){e.writeHead(t,{"Content-Type":o,"Content-Length":String(r.byteLength),"Cache-Control":"no-store","X-Content-Type-Options":"nosniff",...E}),e.end(r)}s(Fe,"sendBinary");async function _(e,t={}){let r=t.maxBytes??Se,o=le(e.headers["content-type"]),a=[],n=0;for await(let m of e){let c=ie.from(m);if(n+=c.byteLength,n>r)throw new x(413,"request_body_too_large",`JSON request body exceeds ${r} bytes.`);a.push(c)}let f=ie.concat(a).toString("utf8").trim();if(!f)return{};if(!Pe(o))throw new x(415,"unsupported_media_type","JSON request body requires Content-Type: application/json.");try{return JSON.parse(f)}catch{throw new x(400,"invalid_json","Request body is not valid JSON.")}}s(_,"readJson");function ce(e,t,r){let o=e.headers.authorization;return(typeof o=="string"&&o.startsWith("Bearer ")?o.slice(7):null)===r}s(ce,"hasAuth");function le(e){return Array.isArray(e)?e[0]??null:e??null}s(le,"headerValue");function Pe(e){if(!e)return!1;let t=e.split(";")[0]?.trim().toLowerCase();return t==="application/json"||!!t?.endsWith("+json")}s(Pe,"isJsonContentType");function se(e){try{let t=new URL(e);return t.protocol!=="http:"&&t.protocol!=="https:"?null:t.origin}catch{return null}}s(se,"normalizeOrigin");function xe(e){let t=new URL(e);return t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="::1"||t.hostname==="[::1]"}s(xe,"isLoopbackOrigin");function Ce(e){let r=(Array.isArray(e)?e.join(", "):e?String(e):"").split(",").map(o=>o.trim()).filter(Boolean);return r.some(o=>o.toLowerCase()==="origin")||r.push("Origin"),r.join(", ")}s(Ce,"appendVaryOrigin");function pe(e){return`<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OpenPond recovery</title>
|
|
3
|
+
<style nonce="${e}">body{font:16px system-ui;background:#171819;color:#eee;max-width:850px;margin:6vh auto;padding:24px}textarea{box-sizing:border-box;width:100%;min-height:280px;background:#222;color:#eee;padding:14px;border:1px solid #777;border-radius:8px;font:14px monospace}button,input,select{font:inherit;margin:6px;padding:8px}pre{white-space:pre-wrap}code{overflow-wrap:anywhere}button{cursor:pointer}p{line-height:1.5}</style>
|
|
4
|
+
<h1>OpenPond needs a storage repair</h1><p id="issue" role="alert">Loading recovery details\u2026</p><p><code id="file"></code></p>
|
|
5
|
+
<p id="action"></p><p>Migration backups and the source installation remain available. Execution services are stopped while recovery is open.</p>
|
|
6
|
+
<details id="editor"><summary>Edit configuration</summary><textarea id="text" aria-label="Configuration TOML" spellcheck="false"></textarea><button id="save">Validate and save</button><button id="reload">Reload file</button><select id="revisions" aria-label="Restore a verified configuration revision"><option value="">Restore a verified revision\u2026</option></select></details>
|
|
7
|
+
<details><summary>Migration sources and diagnostics</summary><pre id="migration"></pre><label>Previous app home <input id="appHome"></label><label>Previous account config <input id="configSource"></label><label>Configuration conflict choices (JSON from the preview) <textarea id="resolutions" aria-label="Migration conflict choices" spellcheck="false" placeholder='[{"path":["chat","steer_active_responses"],"choice":"existing"}]'></textarea></label><button id="preview">Preview migration</button><button id="migrate">Use these sources</button><button id="restart">Restart failed preparation</button><button id="diagnostics">Export diagnostics</button></details>
|
|
8
|
+
<button id="retry">Retry startup</button><p id="message" role="status"></p>
|
|
9
|
+
<script nonce="${e}">
|
|
10
|
+
let token='',state=null,editing=false,revision=null;
|
|
11
|
+
const el=id=>document.getElementById(id);
|
|
12
|
+
async function request(route,body){const r=await fetch(route,{method:body?'POST':'GET',headers:{'Content-Type':'application/json',Authorization:'Bearer '+token},body:body?JSON.stringify(body):undefined});const v=await r.json();if(!r.ok)throw Error(v.error||'Recovery request failed');return v;}
|
|
13
|
+
function message(error){el('message').textContent=error instanceof Error?error.message:String(error);}
|
|
14
|
+
async function load(){state=await request('/v1/recovery');el('issue').textContent=state.issue.message;el('action').textContent=state.issue.action;el('file').textContent=state.issue.path;el('migration').textContent=JSON.stringify(state.migration,null,2);if(!editing){el('text').value=state.config.text||'schema_version = 1\\n';revision=state.config.rawRevision;}el('revisions').replaceChildren(new Option('Restore a verified revision\u2026',''),...state.config.recoverableRevisions.map(r=>new Option(r.createdAt,r.revision)));el('editor').hidden=!state.configEditable;}
|
|
15
|
+
el('text').oninput=()=>{editing=true};
|
|
16
|
+
el('reload').onclick=()=>{editing=false;load().catch(message)};
|
|
17
|
+
el('save').onclick=async()=>{try{await request('/v1/configuration',{action:'replace',text:el('text').value,expectedRevision:revision});editing=false;await load();message('Configuration saved. Retry startup when ready.')}catch(e){message(e)}};
|
|
18
|
+
el('revisions').onchange=async e=>{if(!e.target.value)return;try{await request('/v1/configuration',{action:'restore',revision:e.target.value,expectedRevision:state.config.rawRevision});editing=false;await load();message('Verified revision restored.')}catch(e){message(e)}};
|
|
19
|
+
for(const [id,action] of [['preview','preview'],['migrate','migrate'],['restart','restart']])el(id).onclick=async()=>{try{const result=await request('/v1/recovery',{action,sourceAppHome:el('appHome').value||undefined,sourceConfig:el('configSource').value||undefined,resolutions:el('resolutions').value?JSON.parse(el('resolutions').value):undefined});el('migration').textContent=JSON.stringify(result,null,2);message(action==='preview'?'Review the source paths above.':'Migration operation completed; retry startup.')}catch(e){message(e)}};
|
|
20
|
+
el('diagnostics').onclick=()=>{if(!state)return;const blob=new Blob([JSON.stringify({issue:state.issue,migration:state.migration,config:{path:state.config.path,rawRevision:state.config.rawRevision,issue:state.config.issue}},null,2)],{type:'application/json'});const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='openpond-recovery-diagnostics.json';a.click();URL.revokeObjectURL(a.href)};
|
|
21
|
+
el('retry').onclick=async()=>{try{await request('/v1/recovery',{action:'retry'});message('Starting OpenPond\u2026');const timer=setInterval(async()=>{try{const h=await(await fetch('/health')).json();if(!h.recovery){clearInterval(timer);const next=new URLSearchParams(location.hash.slice(1)).get('returnTo');if(next){const u=new URL(next);if(['localhost','127.0.0.1','[::1]'].includes(u.hostname)){location.replace(u.toString());return}}location.reload();}}catch{}},500)}catch(e){message(e)}};
|
|
22
|
+
(async()=>{const params=new URLSearchParams(location.hash.slice(1));token=params.get('openpondToken')||'';if(!token&&window.openpond?.getConnection)token=(await window.openpond.getConnection()).token;if(!token){message('Open the authenticated recovery URL from the launcher.');return}await load()})().catch(message);
|
|
23
|
+
</script></html>`}s(pe,"startupRecoveryPage");var Ie=i.strictObject({action:i.enum(["preview","migrate","restart","retry"]),sourceAppHome:i.string().optional(),sourceConfig:i.string().optional(),resolutions:J.optional()});function ue(e){return e instanceof N&&/^(PRIVATE_STORAGE_|UNSAFE_STORAGE_|INVALID_CONFIG|CONFIG_|MIGRATION_|SOURCE_CHANGED_|CREDENTIAL_|UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|INVALID_ACCOUNT_|MISSING_INSTRUCTION_|INVALID_PROFILE_|DATABASE_RECOVERY_)/.test(e.issue.code)}s(ue,"isRecoverableStartupError");async function de(e,t,r){let o=/^(UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|UNSAFE_STORAGE_|PRIVATE_STORAGE_)/.test(r.issue.code),a=o?await I.mkdtemp(Ae.join(Ee.tmpdir(),"openpond-recovery-")):e;return Q(a,async()=>{let{token:n,tokenFile:f}=await oe(a),m=ne(e),c=r.issue,u,v=new Promise(g=>{u=g}),l=Te((g,d)=>{(async()=>{let y=new URL(g.url??"/","http://127.0.0.1");if(!ae(g,d).allowed){h(d,403,{error:"Origin not allowed"});return}if(g.method==="OPTIONS"){h(d,204,{});return}if(g.method==="GET"&&y.pathname==="/health"){h(d,200,{ok:!0,server:"openpond-app-server",version:X,recovery:!0});return}if(g.method==="GET"&&y.pathname==="/"){let w=_e(18).toString("base64");d.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Content-Security-Policy":`default-src 'none'; script-src 'nonce-${w}'; style-src 'nonce-${w}'; connect-src 'self'; base-uri 'none'; frame-ancestors 'none'`}),d.end(pe(w));return}if(!ce(g,y,n)){h(d,401,{error:"Unauthorized"});return}let U=!o;if(g.method==="GET"&&y.pathname==="/v1/recovery"){h(d,200,{issue:c,configEditable:U,config:o?{path:O(e).config,text:null,rawRevision:"unavailable",issue:c,recoverableRevisions:[]}:await m.status(),migration:await V(e).catch(w=>({issue:P(w,e)}))});return}if(g.method==="POST"&&y.pathname==="/v1/configuration"&&U){h(d,200,await m.mutate(await _(g)));return}if(g.method==="POST"&&y.pathname==="/v1/recovery"){let w=Ie.parse(await _(g));if(o&&w.action!=="retry"&&w.action!=="preview")throw r;if(w.action==="restart"){h(d,200,await F(e));return}if(w.action==="preview"||w.action==="migrate"){h(d,200,await A(e,{sourceAppHome:w.sourceAppHome,sourceConfig:w.sourceConfig,resolutions:w.resolutions,dryRun:w.action==="preview"}));return}await A(e),await C(e),h(d,200,{ready:!0}),u();return}h(d,503,{error:`${c.message} ${c.action}`,issue:c,recovery:!0})})().catch(y=>{c=P(y,e),h(d,422,{error:`${c.message} ${c.action}`,issue:c})})});await new Promise((g,d)=>{l.once("error",d),l.listen(t,"127.0.0.1",()=>{l.off("error",d),g()})});let p=l.address().port,R=`http://127.0.0.1:${p}`;return await Z(a,R,"startup-recovery"),{url:R,port:p,token:n,tokenFile:f,storePath:O(e).database,repaired:v,close:s(async()=>{l.closeIdleConnections(),await new Promise((g,d)=>l.close(y=>y?d(y):g())),o&&await I.rm(a,{recursive:!0,force:!0})},"close")}}).catch(async n=>{throw o&&await I.rm(a,{recursive:!0,force:!0}),n})}s(de,"startRecoveryServer");import{existsSync as Ue}from"node:fs";import b from"node:path";import{fileURLToPath as Ne}from"node:url";var fe=b.dirname(Ne(import.meta.url));function S(e,t,r){let o=e[t+1];if(!o||o.startsWith("--"))throw new Error(`${r} requires a value.`);return o}s(S,"requireValue");function ge(e,t){let r=Number.parseInt(e,10);if(!Number.isFinite(r)||r<0||r>65535)throw new Error(`${t} must be a port from 0 to 65535.`);return r}s(ge,"parsePort");function we(e){let t="serve",r=T,o=17874,a=null,n=!1,f=!1,m=null,c,u=0,v=e[0];if(v&&!v.startsWith("-")){if(v==="serve"||v==="server")t="serve";else if(v==="app-server")t="app-server";else if(v==="web")t="web";else{if(v==="help")return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,help:!0};throw new Error(`Unknown command: ${v}`)}u=1}for(let l=u;l<e.length;l+=1){let p=e[l];if(p==="--help"||p==="-h")return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,help:!0};if(p==="--listen"){let R=K(S(e,l,p));r=R.host,o=ge(String(R.port),p),l+=1}else if(p==="--hostname"||p==="--host")r=S(e,l,p),l+=1;else if(p==="--port")o=ge(S(e,l,p),p),l+=1;else if(p==="--web-root")a=b.resolve(S(e,l,p)),l+=1;else if(p==="--source-browser-state")c=b.resolve(S(e,l,p)),l+=1;else{if(p==="--store-dir")throw new Error("--store-dir has been replaced by --home. Use --home <directory> or OPENPOND_HOME.");if(p==="--home")m=b.resolve(S(e,l,p)),l+=1;else if(p==="--open-browser")n=!0;else if(p==="--print-access-url")f=!0;else throw new Error(`Unknown option: ${p}`)}}if(n&&f)throw new Error("--open-browser and --print-access-url cannot be used together.");if(t!=="web"&&(n||f))throw new Error("Browser options are only available in web mode.");return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,sourceBrowserState:c,help:!1}}s(we,"parseCliArgs");function ke(){return[process.env.OPENPOND_WEB_ROOT,b.resolve(process.cwd(),"apps/web/dist"),b.resolve(fe,"../../web/dist"),b.resolve(process.cwd(),"web"),b.resolve(fe,"../web")].filter(e=>!!e)}s(ke,"defaultWebRootCandidates");function Le(e){let t=e?[e]:ke();for(let r of t){let o=b.resolve(r);if(Ue(b.join(o,"index.html")))return o}return null}s(Le,"resolveWebRoot");function Be(e){let t=e==="0.0.0.0"||e==="::"?"127.0.0.1":e;return t.includes(":")&&!t.startsWith("[")?`[${t}]`:t}s(Be,"formatHostForUrl");function De(e){return`http://${Be(e.status.host)}:${e.status.port}`}s(De,"browserBaseUrl");function He(e,t){let r=new URL(e),o=new URLSearchParams;return o.set("openpondServerUrl",e),o.set("openpondToken",t),r.hash=o.toString(),r.toString()}s(He,"tokenizedWebUrl");async function me(e,t=re){let r=He(e.baseUrl,e.token);if(e.printAccessUrl)return{stdout:[`OpenPond access URL: ${r}`],stderr:[]};if(!e.openBrowser)return{stdout:[`OpenPond web UI: ${e.baseUrl}`],stderr:[]};let o=await t(r);return o.opened?{stdout:[`Opened OpenPond in your browser: ${e.baseUrl}`],stderr:[]}:{stdout:[`OpenPond access URL: ${r}`],stderr:[`Could not open the system browser: ${o.error}`]}}s(me,"resolveWebLaunchMessages");function he(){console.log(`Usage:
|
|
24
|
+
openpond-app-server serve [--hostname HOST] [--port PORT]
|
|
25
|
+
openpond-app-server app-server [--home DIR]
|
|
26
|
+
openpond-app-server web [--hostname HOST] [--port PORT] [--web-root DIR]
|
|
27
|
+
|
|
28
|
+
Options:
|
|
29
|
+
--listen HOST:PORT Set host and port together
|
|
30
|
+
--hostname HOST Bind host (default ${T})
|
|
31
|
+
--port PORT Bind port, or 0 for any free port (default ${17874})
|
|
32
|
+
--web-root DIR Directory containing the built web UI for web mode
|
|
33
|
+
--home DIR Local app-server state directory
|
|
34
|
+
--open-browser Open the authenticated web URL in the system browser
|
|
35
|
+
--print-access-url Print the authenticated URL instead of opening it
|
|
36
|
+
`)}s(he,"printHelp");async function bt(e){let t=we(process.argv.slice(2));if(t.help){he();return}let r=t.mode==="web"?Le(t.webRoot):null;if(t.mode==="web"&&!r)throw new Error("Could not find a built OpenPond web UI. Run `pnpm build:web` or pass --web-root.");if(t.mode==="app-server"){await ye(e.createOpenPondAppServer,t.storeDir);return}t.storeDir&&(process.env.OPENPOND_HOME=t.storeDir);let o,a=t.port;for(;;)try{o=await e.createOpenPondServer({host:t.host,port:a,webRoot:r,sourceBrowserState:t.sourceBrowserState,...t.storeDir?{storeDir:t.storeDir}:{},httpEnabled:!0});break}catch(c){if(!ue(c))throw c;let u=await de(k({home:t.storeDir??void 0}),a,c);a=u.port,console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:"recovery",url:u.url,tokenFile:u.tokenFile,storePath:u.storePath})}`),console.error(`${c.issue.code}: ${c.issue.message} ${c.issue.action}`);let v=await me({baseUrl:u.url,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:u.token});for(let p of v.stdout)console.log(p);for(let p of v.stderr)console.error(p);let l=s(()=>{u.close().finally(()=>process.exit(0))},"close");process.once("SIGINT",l),process.once("SIGTERM",l);try{await u.repaired}finally{process.off("SIGINT",l),process.off("SIGTERM",l),await u.close()}}let n=t.mode==="web"?De(o):null;if(console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:t.mode,url:o.url,webUrl:null,webRoot:r,tokenFile:o.tokenFile,storePath:o.storePath,runtime:te()})}`),n){let c=await me({baseUrl:n,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:o.token});for(let u of c.stderr)console.error(u);for(let u of c.stdout)console.log(u)}else console.log(`OpenPond API server: ${o.url}`);let f=!1,m=s(async()=>{f||(f=!0,await o.close(),process.exit(0))},"shutdown");process.on("SIGINT",()=>{m()}),process.on("SIGTERM",()=>{m()}),await new Promise(()=>{})}s(bt,"runOpenPondServerCli");async function Ot(e){let t=process.argv.slice(2),r=we(!t[0]||t[0].startsWith("-")?["app-server",...t]:t);if(r.help){he();return}if(r.mode!=="app-server")throw new Error("The app-server entrypoint only accepts the app-server command.");await ye(e,r.storeDir)}s(Ot,"runOpenPondAppServerCli");async function ye(e,t){t&&(process.env.OPENPOND_HOME=t);let r=await e({...t?{storeDir:t}:{}});await ee({appServer:r,readable:process.stdin,writable:process.stdout})}s(ye,"runAgentServer");export{ne as a,x as b,ae as c,h as d,Ve as e,Fe as f,_ as g,ce as h,me as i,bt as j,Ot as k};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{c as j,e as k,f as z,g as H,i as N,kb as O}from"./chunk-FYCJSUFV.js";import{b as n}from"./chunk-ES2ISFJC.js";import{a as x,c as S,f as C,h as d}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import b from"node:path";import{AsyncLocalStorage as q}from"node:async_hooks";import{promises as B}from"node:fs";var M=new q;function le(e,t=!1){let a=M.getStore();a&&(t&&(a.length=0),a.push(e))}s(le,"onStartupFailure");async function ue(e,t){await O(e);let a;try{a=await H(b.join(d(e).runtime,"server-owner"),100)}catch(i){if(i instanceof S&&i.issue.code==="STORAGE_BUSY"){let o=await N(b.join(d(e).runtime,"endpoint.json"),()=>null);throw new S({code:"RUNTIME_ALREADY_RUNNING",path:e,message:"An OpenPond runtime already owns this home.",action:o?.url?`Connect to the existing runtime at ${o.url}, or stop it before starting another.`:"Stop the existing runtime before starting another with this home."})}throw i}let r=[];try{let i=await x(e,()=>M.run(r,t)),o=i.close.bind(i);r.length=0;let c;return{...i,close:s(()=>c??=(async()=>{try{await x(e,o)}finally{await B.rm(b.join(d(e).runtime,"endpoint.json"),{force:!0}),await a()}})(),"close")}}catch(i){try{for(let o of r.reverse())await Promise.resolve().then(()=>x(e,o)).catch(()=>{});await B.rm(b.join(d(e).runtime,"endpoint.json"),{force:!0})}finally{await a()}throw i}}s(ue,"ownHomeRuntime");async function de(e,t,a){await k(b.join(d(e).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:t,serverId:a}))}s(de,"publishRuntimeEndpoint");function pe(e){if(!e.maxContextTokens||!e.usableContextTokens)return{shouldCompact:!1,projectedTokens:e.projectedTokens,thresholdTokens:Number.MAX_SAFE_INTEGER,usableContextTokens:0,maxContextTokens:0,tokenSource:"heuristic"};let t=Math.max(.01,Math.min(1,(e.triggerPercent??85)/100)),a=Math.max(1,Math.floor(e.usableContextTokens*t));return{shouldCompact:e.projectedTokens>=a,projectedTokens:e.projectedTokens,thresholdTokens:a,usableContextTokens:e.usableContextTokens,maxContextTokens:e.maxContextTokens,tokenSource:"heuristic"}}s(pe,"agentCompactionDecision");async function fe(e){await e.started();try{return await e.compact()}catch(t){throw await e.failed(t),t}}s(fe,"runAgentCompaction");async function ve(e){let t=e.host.projectEvents(e.events),a=e.host.selectEvents(t,e.maxContextTokens),{summaryEvents:r,preservedEvents:i,preservedEventIds:o}=a;if(r.length===0)throw new Error("There is not enough prior context to compact.");let c=e.host.normalizeRecords(r),u=e.host.normalizeRecords(i),p=e.host.buildFileLedger(e.host.normalizeRecords(t)),l=e.host.serializeRecords(c,e.host.inputCharBudget(e.maxContextTokens));if(!l.text.trim())throw new Error("There is not enough prior context to compact.");let h=e.host.buildSummaryMessages({serializedHistory:l.text,fileLedger:p}),v=Date.now(),w=(await e.host.streamSummary({model:e.model,messages:h,signal:e.signal})).trim(),R=Date.now()-v;if(!w)throw new Error("Compaction summary was empty.");let T=e.host.estimateProjection({events:t,preservedEvents:i,summary:w}),L=e.host.createMetrics({sourceEvents:t.length,summarizedEvents:r.length,preservedEvents:i.length,sourceRecords:l.sourceRecordCount,includedRecords:l.includedRecordCount,omittedRecords:l.omittedRecordCount,preservedRecords:u.length,truncatedRecords:l.truncatedRecordCount,summaryInputTruncated:l.inputTruncated,sourceSelectionStrategy:l.selectionStrategy,summaryInputChars:l.inputChars,retainedTailTokens:a.retainedTailTokens,retainedTailBudgetTokens:a.retainedTailBudgetTokens,finalProviderContextTokens:T.inputTokensAfter,durationMs:R,fileLedgerEntries:p.length,splitTurnId:a.splitTurnId});return{summary:w,model:e.model,compactedThroughEventId:t[t.length-1]?.id??null,compactedThroughTurnId:e.host.lastTurnId(t),preservedFromEventId:i[0]?.id??null,preservedEventIds:o,preservedResourceRefs:e.host.durableResourceRefs(e.events),sourceEventCount:r.length,preservedEventCount:i.length,fileLedger:p,inputTokensBefore:T.inputTokensBefore,inputTokensAfter:T.inputTokensAfter,maxContextTokens:e.maxContextTokens,tokenSource:"heuristic",metrics:L}}s(ve,"runAgentCompactionProgram");import{createHash as V}from"node:crypto";function I(e){if(e===null||typeof e=="boolean"||typeof e=="string")return e;if(typeof e=="number"){if(!Number.isFinite(e))throw new Error("Canonical JSON cannot encode a non-finite number.");return e}if(Array.isArray(e))return e.map(I);if(typeof e=="object"){let t={};for(let a of Object.keys(e).sort()){let r=e[a];r!==void 0&&(t[a]=I(r))}return t}throw new Error(`Canonical JSON cannot encode ${typeof e}.`)}s(I,"canonicalJson");function g(e){return V("sha256").update(JSON.stringify(I(e)),"utf8").digest("hex")}s(g,"canonicalHash");var U=n.enum(["thread.started","thread.resumed","turn.started","turn.steered","turn.interrupted","turn.completed","turn.failed","item.started","item.delta","item.completed","assistant.reasoning.delta","assistant.delta","tool.started","tool.completed","approval.requested","approval.resolved","user_input.requested","user_input.resolved","compaction.started","compaction.completed","harness.admitted","harness.refiner.queued","harness.refiner.started","harness.refiner.completed","harness.refiner.failed","diagnostic"]),G=n.object({sequence:n.number().int().nonnegative(),name:U,source:n.enum(["runtime","provider","tool","host","refiner"]),status:n.string().trim().min(1).nullable().default(null),threadId:n.string().trim().min(1),turnId:n.string().trim().min(1).nullable().default(null),callId:n.string().trim().min(1).nullable().default(null),output:n.string().nullable().default(null),error:n.string().nullable().default(null),data:n.record(n.string(),n.unknown()).default({})}).strict();function Ee(e){return g(G.parse(e))}s(Ee,"canonicalEventHash");var y="2026-08-26",Ae=["initialize","initialized","runtime/capabilities","thread/start","thread/resume","thread/read","turn/start","turn/steer","turn/interrupt","approval/resolve","userInput/resolve","harness/inspect","harness/proposalReview","harness/review","harness/acceptEvaluationReview","harness/materializeEvaluationTaskset","harness/runEvaluationBaseline","harness/validate","harness/backgroundReview","harness/diff","harness/rollback","refiner/inspect","refiner/update","refiner/activate","refiner/rollback"],F=n.object({jsonrpc:n.literal("2.0"),id:n.union([n.string(),n.number()]),method:n.string().trim().min(1),params:n.unknown().optional()}).strict(),J=n.object({jsonrpc:n.literal("2.0"),method:n.string().trim().min(1),params:n.unknown().optional()}).strict(),K=n.object({jsonrpc:n.literal("2.0"),id:n.union([n.string(),n.number()]),result:n.unknown()}).strict(),W=n.object({jsonrpc:n.literal("2.0"),id:n.union([n.string(),n.number(),n.null()]),error:n.object({code:n.number().int(),message:n.string(),data:n.unknown().optional()}).strict()}).strict(),Pe=n.union([F,J,K,W]),Y=n.object({protocolVersion:n.string().trim().min(1),client:n.object({name:n.string().trim().min(1),version:n.string().trim().min(1)}).strict(),capabilities:n.record(n.string(),n.unknown()).default({})}).strict(),E=class{static{s(this,"AgentJsonRpcDispatcher")}#e;#r=null;#t=!1;constructor(t){this.#e=t}get initialized(){return this.#t}async handle(t){let a=J.safeParse(t);if(a.success&&!("id"in t)){if(a.data.method==="initialized"){if(!this.#r)throw new m(-32002,"initialize must be called first");this.#t=!0}return null}let r=F.safeParse(t);if(!r.success)return $(null,-32600,"Invalid Request",r.error.flatten());let i=r.data;try{let o=await this.#n(i.method,i.params);return{jsonrpc:"2.0",id:i.id,result:o}}catch(o){let c=o instanceof m?o:new m(-32603,o instanceof Error?o.message:String(o));return $(i.id,c.code,c.message,c.data)}}async#n(t,a){if(t==="initialize"){let r=Y.parse(a);if(r.protocolVersion!==y)throw new m(-32001,"Incompatible agent protocol version",{requested:r.protocolVersion,supported:y});return this.#r=r,{protocolVersion:y,server:{name:"openpond-app-server",version:"1"},capabilities:await this.#e.capabilities()}}if(!this.#t)throw new m(-32002,"initialized notification is required");switch(t){case"runtime/capabilities":return this.#e.capabilities(a);case"thread/start":return this.#e.threadStart(a);case"thread/resume":return this.#e.threadResume(a);case"thread/read":return this.#e.threadRead(a);case"turn/start":return this.#e.turnStart(a);case"turn/steer":return this.#e.turnSteer(a);case"turn/interrupt":return this.#e.turnInterrupt(a);case"approval/resolve":return this.#e.approvalResolve(a);case"userInput/resolve":return this.#e.userInputResolve(a);case"harness/inspect":return this.#e.harnessInspect(a);case"harness/proposalReview":return this.#e.harnessProposalReview(a);case"harness/review":return this.#e.harnessReview(a);case"harness/acceptEvaluationReview":return this.#e.harnessAcceptEvaluationReview(a);case"harness/materializeEvaluationTaskset":return this.#e.harnessMaterializeEvaluationTaskset(a);case"harness/runEvaluationBaseline":return this.#e.harnessRunEvaluationBaseline(a);case"harness/validate":return this.#e.harnessValidate(a);case"harness/backgroundReview":return this.#e.harnessBackgroundReview(a);case"harness/diff":return this.#e.harnessDiff(a);case"harness/rollback":return this.#e.harnessRollback(a);case"refiner/inspect":return this.#e.refinerInspect(a);case"refiner/update":return this.#e.refinerUpdate(a);case"refiner/activate":return this.#e.refinerActivate(a);case"refiner/rollback":return this.#e.refinerRollback(a);default:throw new m(-32601,`Method not found: ${t}`)}}},m=class extends Error{static{s(this,"JsonRpcDispatchError")}code;data;constructor(t,a,r){super(a),this.code=t,this.data=r}};function $(e,t,a,r){return{jsonrpc:"2.0",id:e,error:{code:t,message:a,...r===void 0?{}:{data:r}}}}s($,"jsonRpcError");import{once as X}from"node:events";import{createInterface as Q}from"node:readline";async function _(e){let t=new E(e.host),a=Promise.resolve(),r=[],i=s(l=>(a=a.then(async()=>{e.writable.write(`${JSON.stringify(l)}
|
|
3
|
+
`)||await X(e.writable,"drain")}),a),"write"),o=s(()=>{if(!(!t.initialized||r.length===0))for(let l of r.splice(0))i(l)},"flushPendingNotifications"),c=e.host.subscribe?.(l=>{if(!t.initialized){r.push(l);return}i(l)}),u=new Set,p=Q({input:e.readable,crlfDelay:1/0});try{for await(let l of p){if(!l.trim())continue;let h;try{h=JSON.parse(l)}catch{await i({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}});continue}let v=(async()=>{let R=await t.handle(h);R&&await i(R),o()})(),w=h&&typeof h=="object"&&"method"in h?h.method:null;if(w==="initialize"||w==="initialized"){await v;continue}u.add(v),v.finally(()=>u.delete(v))}await Promise.all(u),await a}finally{c?.()}}s(_,"runAgentJsonlServer");var P=n.object({threadId:n.string().trim().min(1)}).passthrough(),Z=n.object({session:n.unknown()}).strict(),A=P.extend({input:n.unknown()}),ee=P.extend({reason:n.string().trim().min(1).optional()}),te=n.object({approvalId:n.string().trim().min(1),input:n.unknown()}).strict();function D(e){let t=s(async(r,i,o)=>{let c=performance.now();e.telemetry?.({method:r,phase:"started",threadId:i,durationMs:null,errorClass:null});try{let u=await o();return e.telemetry?.({method:r,phase:"completed",threadId:i,durationMs:performance.now()-c,errorClass:null}),u}catch(u){throw e.telemetry?.({method:r,phase:"failed",threadId:i,durationMs:performance.now()-c,errorClass:u instanceof Error?u.name:"UnknownError"}),u}},"run"),a=s(async(r,i="thread/read")=>{let{threadId:o}=P.parse(r);return t(i,o,async()=>{let[c,u,p]=await Promise.all([e.readThread(o),e.listTurns(o),e.listEvents(o)]);return{thread:c,turns:u,events:p}})},"threadRead");return{capabilities:s(r=>t("runtime/capabilities",null,()=>e.capabilities(r)),"capabilities"),threadStart:s(async r=>t("thread/start",null,async()=>({thread:await e.createThread(Z.parse(r).session)})),"threadStart"),threadResume:s(r=>a(r,"thread/resume"),"threadResume"),threadRead:a,turnStart:s(async r=>{let i=A.parse(r);return t("turn/start",i.threadId,async()=>({turn:await e.startTurn(i.threadId,i.input)}))},"turnStart"),turnSteer:s(async r=>{let i=A.parse(r);return t("turn/steer",i.threadId,async()=>(e.isTurnActive(i.threadId)&&await e.waitForTurnSettlement(i.threadId),{turn:await e.startTurn(i.threadId,i.input)}))},"turnSteer"),turnInterrupt:s(async r=>{let i=ee.parse(r);return t("turn/interrupt",i.threadId,async()=>({turn:await e.interruptTurn(i.threadId,i.reason)}))},"turnInterrupt"),approvalResolve:s(async r=>{let i=te.parse(r);return t("approval/resolve",null,async()=>({approval:await e.resolveApproval(i.approvalId,i.input)}))},"approvalResolve"),userInputResolve:s(async r=>{let i=A.parse(r);return t("userInput/resolve",i.threadId,async()=>(e.isTurnActive(i.threadId)&&await e.waitForTurnSettlement(i.threadId),{turn:await e.startTurn(i.threadId,i.input)}))},"userInputResolve"),harnessInspect:s(()=>t("harness/inspect",null,()=>e.inspectHarness()),"harnessInspect"),harnessProposalReview:s(r=>t("harness/proposalReview",null,()=>e.reviewHarnessProposal(r)),"harnessProposalReview"),harnessReview:s(r=>t("harness/review",null,()=>e.reviewHarness(r)),"harnessReview"),harnessAcceptEvaluationReview:s(r=>t("harness/acceptEvaluationReview",null,()=>e.acceptHarnessEvaluationReview(r)),"harnessAcceptEvaluationReview"),harnessMaterializeEvaluationTaskset:s(r=>t("harness/materializeEvaluationTaskset",null,()=>e.materializeHarnessEvaluationTaskset(r)),"harnessMaterializeEvaluationTaskset"),harnessRunEvaluationBaseline:s(r=>t("harness/runEvaluationBaseline",null,()=>e.runHarnessEvaluationBaseline(r)),"harnessRunEvaluationBaseline"),harnessValidate:s(()=>t("harness/validate",null,()=>e.validateHarness()),"harnessValidate"),harnessBackgroundReview:s(r=>t("harness/backgroundReview",null,()=>e.updateHarnessBackgroundReview(r)),"harnessBackgroundReview"),harnessDiff:s(r=>t("harness/diff",null,()=>e.diffHarness(r)),"harnessDiff"),harnessRollback:s(r=>t("harness/rollback",null,()=>e.rollbackHarness(r)),"harnessRollback"),refinerInspect:s(()=>t("refiner/inspect",null,()=>e.inspectRefiner()),"refinerInspect"),refinerUpdate:s(r=>t("refiner/update",null,()=>e.updateRefiner(r)),"refinerUpdate"),refinerActivate:s(r=>t("refiner/activate",null,()=>e.activateRefiner(r)),"refinerActivate"),refinerRollback:s(r=>t("refiner/rollback",null,()=>e.rollbackRefiner(r)),"refinerRollback"),subscribe:e.subscribeEvents&&e.eventNotification?r=>e.subscribeEvents(i=>r(e.eventNotification(i))):void 0}}s(D,"createAgentRuntimeService");var f=n.string().regex(/^[a-f0-9]{64}$/),Ye=n.object({harnessReleaseHash:f,instructionsHash:f,skillHashes:n.record(n.string(),f),agentAssetHashes:n.record(n.string(),f),toolCatalogHash:f,memoryRevision:n.number().int().nonnegative().nullable()}).strict(),re=n.object({protocolVersion:n.string().trim().min(1),threadId:n.string().trim().min(1),turnId:n.string().trim().min(1),harnessReleaseHash:f,toolCatalogHash:f,context:n.record(n.string(),n.unknown()),pendingInteraction:n.record(n.string(),n.unknown()).nullable(),usage:n.record(n.string(),n.unknown())}).strict();function Xe(e){return g(re.parse(e))}s(Xe,"checkpointHash");function Qe(e){return[e.system,...e.harnessInstructions,...e.skillInstructions,...e.hostInstructions??[]].map(t=>t.trim()).filter(Boolean).join(`
|
|
4
|
+
|
|
5
|
+
`)}s(Qe,"materializeAgentPrompt");function rt(e){let t=new Set,a=[...e].map(o=>{let c=o.name.trim();if(!c)throw new Error("Agent tool names cannot be empty.");if(t.has(c))throw new Error(`Duplicate agent tool: ${c}.`);if(t.add(c),!o.unavailableReason&&!o.executorAvailable)throw new Error(`Agent tool ${c} is declared as available without an executor.`);return{...o,name:c}}).sort((o,c)=>o.name.localeCompare(c.name)),r=a.filter(o=>!o.unavailableReason).map(o=>({name:o.name,description:o.description,inputSchema:o.inputSchema})),i=a.map(o=>({name:o.name,displayLabel:o.displayLabel??o.name,placement:o.placement,available:!o.unavailableReason,unavailableReason:o.unavailableReason??null}));return{byName:new Map(a.map(o=>[o.name,o])),tools:a,modelTools:r,capabilities:i,hash:g({modelTools:r,capabilities:i})}}s(rt,"createAgentToolCatalogProjection");async function nt(e,t){let a=e.byName.get(t.name);if(!a)throw new Error(`Unknown agent tool: ${t.name}.`);if(a.unavailableReason)throw new Error(`Agent tool ${t.name} is unavailable: ${a.unavailableReason}`);if(!a.execute)throw new Error(`Agent tool ${t.name} has no executor.`);let r=a.validateArguments?a.validateArguments(t.arguments):t.arguments;return a.execute(r,t.context)}s(nt,"executeProjectedAgentTool");function gt(e){return ne({runtime:D(e.ports),close:e.close})}s(gt,"createAppServer");function ne(e){let t=!1;return{runtime:e.runtime,close:s(async()=>{t||(t=!0,await e.close?.())},"close")}}s(ne,"attachAppServer");async function bt(e){try{await _({host:e.appServer.runtime,readable:e.readable,writable:e.writable})}finally{await e.appServer.close()}}s(bt,"runAppServerJsonl");import{randomBytes as ae}from"node:crypto";function Et(){return C()}s(Et,"appDataDir");function Tt(e){return d(e).config}s(Tt,"providersConfigPath");function St(e){return d(e).credentials}s(St,"providerSecretsConfigPath");function It(e){return d(e).key}s(It,"providerSecretsKeyPath");async function At(e){let t=d(e).token;return z(t,async()=>{let a=(await j(t))?.trim(),r=process.env.OPENPOND_APP_TOKEN||a||ae(32).toString("base64url");return r!==a&&await k(t,r),{token:r,tokenFile:t}})}s(At,"ensureCapabilityToken");export{le as a,ue as b,de as c,g as d,pe as e,fe as f,ve as g,G as h,Ee as i,y as j,Ae as k,re as l,Xe as m,Qe as n,rt as o,nt as p,gt as q,bt as r,Et as s,Tt as t,St as u,It as v,At as w};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
+
import{f as S}from"./chunk-3M53YXEI.js";import{a as o}from"./chunk-FTQLQJQV.js";import{readFileSync as j}from"node:fs";import k from"node:path";function P(){let t=["../../../package.json","../../package.json","../package.json","./package.json","../../../../package.json"];for(let n of t)try{let s=new URL(n,import.meta.url),i=j(s,"utf-8"),r=JSON.parse(i);if(typeof r.version=="string")return r.version}catch{}try{let n=j(k.join(k.dirname(process.execPath),"package.json"),"utf-8"),s=JSON.parse(n);if(typeof s.version=="string")return s.version}catch{}return"unknown"}o(P,"getInstalledCliVersion");function I(t){let n=/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/.exec(t.trim());if(!n)return null;let s=Number.parseInt(n[1],10),i=Number.parseInt(n[2],10),r=Number.parseInt(n[3],10);return!Number.isFinite(s)||!Number.isFinite(i)||!Number.isFinite(r)?null:[s,i,r]}o(I,"parseSemver");function X(t,n){let s=I(t),i=I(n);if(!s||!i)return null;for(let r=0;r<3;r+=1){if(s[r]<i[r])return-1;if(s[r]>i[r])return 1}return 0}o(X,"compareSemver");async function Y(t){let n=new AbortController,s=setTimeout(()=>n.abort(),7e3);try{let i=await fetch(`https://registry.npmjs.org/${encodeURIComponent(t)}/latest`,{signal:n.signal});if(!i.ok){let d=await i.text().catch(()=>"");throw new Error(`npm registry request failed: ${i.status} ${d}`.trim())}let r=await i.json().catch(()=>({}));if(typeof r.version!="string"||r.version.trim().length===0)throw new Error("npm registry payload missing version");return r.version.trim()}finally{clearTimeout(s)}}o(Y,"fetchLatestNpmVersion");var a="boolean",m="integer",l="json",g="number",e="string",O={agent:e,approvalPolicy:e,cwd:e,json:a,maxOutputBytes:m,message:e,messageFile:e,model:e,noServerStart:a,nonInteractive:a,project:e,provider:e,resume:e,sandbox:e,server:e,stdin:a,timeoutSec:m,yes:a},x={access:e,agentId:e,all:a,artifactPaths:e,async:a,authHeader:e,authHeaderValue:e,authToken:e,autoStart:a,baseRef:e,branch:e,budget:g,budgetUsd:g,cleanup:a,cols:m,command:e,content:e,contentBase64:e,contents:e,contentsBase64:e,cpu:g,create:a,description:e,diskGb:g,dockerBuildArgs:l,dockerRegistrySecretRefs:e,dockerfile:e,dockerfileContext:e,dockerfileTarget:e,domain:e,env:e,environment:e,envLiteral:e,envName:e,envRef:e,expectedMppMode:e,expectedVersion:m,failOnUnpreservedChanges:a,ffOnly:a,forceWithLease:a,fork:a,fromPath:e,idempotencyKey:e,idleTimeoutSeconds:m,image:e,imageDigest:e,input:e,inputBase64:e,integrationCapabilities:e,integrationConnection:e,integrationScopes:e,intervalMs:m,json:a,keep:a,label:e,leaseId:e,lifecycleHint:l,manifestPath:e,maxDurationSeconds:m,maxEntries:g,maxResults:g,memoryGb:g,message:e,name:e,noPreview:a,overwrite:a,params:l,path:e,paths:e,payload:l,port:m,preview:a,projectId:e,publish:a,q:e,query:e,rebase:a,recursive:a,registrySecretRef:e,remote:e,replayState:e,repo:e,respondAsync:a,rows:m,runtimeAgentId:e,runtimeBaseBranch:e,runtimeBaseSha:e,runtimeId:e,runtimeProfileId:e,runtimeProjectId:e,runtimePromotionPolicy:e,runtimeWorkspaceRoot:e,sandboxId:e,scope:e,since:m,snapshot:a,snapshotId:e,sourceProjectId:e,sourceRepoUrl:e,sourceSandboxId:e,startPoint:e,status:e,stdin:a,summary:a,tag:e,tags:e,targetId:e,targetType:e,teamId:e,templateName:e,templateVersion:e,templateVisibility:e,timeoutSeconds:m,toPath:e,type:e,useCase:e,validationCommand:e,value:e,version:e,volumeDeleteOnSandboxDelete:a,volumeMountPath:e,volumeName:e,volumeStorageGb:g,workflowMode:e},A={action:e,agentId:e,budget:g,budgetUsd:g,build:e,branch:e,commit:a,commitMessage:e,description:e,dir:e,disableSchedule:e,disableSchedules:e,enableSchedule:e,enableSchedules:e,entrypoint:e,env:l,envRef:e,file:e,force:a,idleTimeoutSeconds:m,inherit:a,input:l,inputFile:e,inputFiles:e,inputJson:l,inputs:l,json:a,keepTokenRemote:a,manifest:e,maxDurationSeconds:m,name:e,noPush:a,noWrite:a,out:e,outDir:e,output:e,outputDir:e,params:l,path:e,plan:e,projectId:e,repo:e,runtimeAgentId:e,runtimeBaseBranch:e,runtimeBaseSha:e,runtimeId:e,runtimeProjectId:e,runtimePromotionPolicy:e,scheduleMode:e,scheduleOverride:l,scheduleOverrides:l,schedules:e,service:e,setRemoteToken:a,setupTimeoutSeconds:m,target:e,teamId:e,timeoutSeconds:m,token:e,workflowMode:e,yes:a},T={branch:e,commitMessage:e,defaultBranch:e,description:e,gitOwner:e,gitRepo:e,internalRepoPath:e,json:a,name:e,path:e,projectId:e,repo:e,sourceCheckDispatch:e,sourceType:e,teamId:e,templateRepoUrl:e},E={agentId:e,agentEdit:l,allowLatestSource:a,allowedActions:e,attachmentsJson:l,baseSha:e,chatMode:e,checkKind:e,conversationId:e,cwd:e,dispatch:e,entrypointName:e,entrypointScope:e,expectedManifestHash:e,evalStatus:e,expectedSourceCommitSha:e,idempotencyKey:e,input:l,inputFile:e,json:a,limit:m,message:e,metadata:l,name:e,path:e,payload:l,projectId:e,prompt:e,provider:e,publishedSnapshotId:e,ref:e,requirePublishedSnapshot:a,requiredEnv:e,requiredIntegrations:e,runtimePromotionPolicy:e,runtimeSourceMode:e,sourceCheckDispatch:e,sourceMode:e,sourceRef:e,status:e,targetProjectId:e,teamId:e,triggerType:e,workflowMode:e};var b={account:"string",apiBaseUrl:"string",apiBaseurl:"string",baseUrl:"string",baseurl:"string",chatApiBaseUrl:"string",chatApiBaseurl:"string",checkUpdate:"boolean",cwd:"string",help:"boolean",home:"string",json:"boolean",profile:"string",sandboxApiUrl:"string",sandboxApiurl:"string",tui:"boolean",version:"boolean"},ae={C:"cwd",f:"force",h:"help",j:"json",v:"version",y:"yes"},B={cwd:"string",input:"json",inputFile:"string",json:"boolean",path:"string"},C=[{name:"home",usage:"openpond home [--home <directory>]",optionSchema:{},handler:o(async()=>console.log((await import("./dist-NKLXFA37.js")).resolveOpenPondHome()),"handler")},{name:"config",usage:"openpond config <get|set|unset|path|validate|schema|doctor|migrate|recover|restart-migration|revisions|replace|effective|trust|untrust|export|backup|restore|collect-orphans|clear-cache> [key] [value] [--home <directory>] [--json]",optionSchema:{keyPath:"json",value:"string",file:"string",project:"boolean",revision:"string",expectedRevision:"string",sourceAppHome:"string",sourceConfig:"string",sourceBrowserState:"string",dryRun:"boolean"},handler:o(async({options:t,rest:n})=>(await import("./configuration-command-XBKBIZBO.js")).runConfigurationCommand(t,n),"handler")},{name:"help",usage:"openpond help",optionSchema:{},handler:o(async()=>(await import("./help-MWK66XZK.js")).printHelp(),"handler")},{name:"version",usage:"openpond version",optionSchema:{},handler:o(()=>console.log(P()),"handler")},{name:"check-update",usage:"openpond check-update",optionSchema:{},handler:o(async()=>(await import("./core-commands-LUZVWXQR.js")).runCheckUpdate(),"handler")},{name:"login",usage:"openpond login [--base-url <url>]",optionSchema:b,handler:o(async({options:t})=>(await import("./core-commands-LUZVWXQR.js")).runLogin(t),"handler")},{name:"init",usage:"openpond init [--path <dir>] [--profile <name>] [--template <name>] [--force] [--json]",optionSchema:{...b,force:"boolean",path:"string",template:"string"},handler:o(async({options:t})=>(await import("./profile-KUMIZURM.js")).runOpenPondInitCommand(t),"handler")},{name:"profile",usage:"openpond profile <current|init|load|check|push|commit|diff|catalog>",optionSchema:{checkKind:"string",conversationId:"string",ensureHosted:"boolean",expectedManifestHash:"string",force:"boolean",hostedCheckKind:"string",hostedRunAgentId:"string",hostedRunConversationId:"string",hostedRunIdempotencyKey:"string",hostedRunInput:"json",hostedRunRetry:"boolean",hostedRunTargetProjectId:"string",hostedSourceDispatch:"string",hostedSourceAgentId:"string",hostedSourceChecks:"boolean",hostedSourceProjectId:"string",json:"boolean",kind:"string",path:"string",publishHostedSource:"boolean",teamId:"string"},handler:o(async({options:t,rest:n})=>(await import("./profile-KUMIZURM.js")).runOpenPondProfileCommand(t,n),"handler")},{name:"agents",usage:"openpond agents [--json]",optionSchema:{json:"boolean"},handler:o(async({options:t,rest:n})=>(await import("./profile-KUMIZURM.js")).runOpenPondAgentsCommand(t,n),"handler")},{name:"actions",usage:"openpond actions <check|build|run|dev|publish> [action-id] [--cwd DIR] [--input JSON|--input-file PATH]",optionSchema:{apiKey:"string",baseUrl:"string",cwd:"string",input:"string",inputFile:"string",json:"boolean",outputDirectory:"string",sourceDirectory:"string",sourceCommitSha:"string",sourceRef:"string",projectId:"string",teamId:"string",timeoutMs:"integer"},handler:o(async({options:t,rest:n})=>(await import("./actions-command-QP3NMDK4.js")).runProjectActionsCommand(t,n),"handler")},...K(),{name:"extension",usage:"openpond extension <add|preview|list|inspect|update|remove> [owner/repo]",usages:["openpond extension add <owner/repo> [--ref <branch|tag|sha>] [--json]","openpond extension update <owner/repo> [--ref <branch|tag|sha>] [--json]","openpond extension update --all [--json]","openpond extension remove <owner/repo> [--json]"],optionSchema:{all:"boolean",json:"boolean",ref:"string"},handler:o(async({options:t,rest:n})=>(await import("./extension-NQ7N5LEY.js")).runOpenPondExtensionCommand(t,n),"handler")},{name:"profiles",usage:"openpond profiles [args]",optionSchema:{json:"boolean"},handler:o(async({options:t,rest:n})=>(await import("./core-commands-LUZVWXQR.js")).runProfiles(t,n),"handler")},{name:"account",usage:"openpond account",optionSchema:{json:"boolean"},handler:o(async()=>(await import("./core-commands-LUZVWXQR.js")).runAccount(),"handler")},{name:"health",usage:"openpond health",optionSchema:{json:"boolean"},handler:o(async({options:t})=>(await import("./core-commands-LUZVWXQR.js")).runHealth(t),"handler")},{name:"app-server",usage:"openpond app-server [--home DIR]",optionSchema:{home:"string"},handler:o(async({options:t,rest:n})=>(await import("./app-layer-N7VFRVJ2.js")).runOpenPondServerCommand("app-server",t,n),"handler")},{name:"serve",usage:"openpond serve [args]",optionSchema:{host:"string",hostname:"string",listen:"string",port:"integer"},handler:o(async({options:t,rest:n})=>(await import("./app-layer-N7VFRVJ2.js")).runOpenPondServerCommand("serve",t,n),"handler")},{name:"ui",usage:"openpond ui [--no-open] [--hostname HOST] [--port PORT]",optionSchema:{host:"string",hostname:"string",listen:"string",noOpen:"boolean",port:"integer",webRoot:"string"},handler:o(async({options:t,rest:n})=>(await import("./app-layer-N7VFRVJ2.js")).runOpenPondServerCommand("web",t,n),"handler")},{name:"tui",aliases:["interactive"],usage:"openpond tui [--provider <id>] [--model <id>] [--project <id>]",optionSchema:{cwd:"string",model:"string",noServerStart:"boolean",project:"string",provider:"string",server:"string"},handler:o(async({options:t,rest:n})=>(await import("./app-layer-N7VFRVJ2.js")).runOpenPondTerminalCommand(t,n),"handler")},{name:"chat",usage:"openpond chat (--message-file <path>|--message <text>|--stdin) --non-interactive [--provider <id>] [--model <id>] [--agent <id>] [--project <id>] [--resume <session-id>] [--yes] [--approval-policy <policy>] [--json] [--timeout-sec <n>] [--max-output-bytes <n>] [--sandbox <mode>]",optionSchema:O,handler:o(async({options:t,rest:n})=>(await import("./app-layer-N7VFRVJ2.js")).runOpenPondTerminalCommand(t,n),"handler")},{name:"tool",usage:"openpond tool <list|run> <handle>/<repo> [args]",optionSchema:{body:"json",json:"boolean"},handler:F},{name:"backtest",usage:"openpond backtest <run|events|get> <handle>/<repo> [args]",optionSchema:{body:"json",branch:"string",deploymentId:"string",limit:"integer",runId:"string"},handler:$},{name:"deploy",usage:"openpond deploy watch <handle>/<repo> [--branch <branch>]",optionSchema:{branch:"string"},handler:G},{name:"template",usage:"openpond template <status|branches|update> <handle>/<repo> [--env preview|production]",optionSchema:{env:"string"},handler:J},{name:"sandbox-template",usage:"openpond sandbox-template <command> [args]",optionSchema:A,handler:o(async({options:t,rest:n})=>(await import("./sandbox-template-N7I63PNU.js")).runSandboxTemplateCommand(t,n),"handler")},{name:"repo",usage:"openpond repo <create|push> [--name <name>] [--path <dir>] [--branch <branch>]",optionSchema:{branch:"string",name:"string",path:"string"},handler:V},{name:"organizations",aliases:["organization"],usage:"openpond organizations <login|list|use|logout|whoami> [args]",optionSchema:{accessToken:"string",arguments:"json",callbackPort:"integer",clientId:"string",customDomain:"string",displayName:"string",email:"string",env:"string",environment:"string",json:"boolean",name:"string",open:"boolean",origin:"string",primaryContactEmail:"string",printToken:"boolean",resourceUrl:"string",role:"string",scope:"string",scopes:"string",slug:"string",status:"string",timeout:"integer",timeoutSeconds:"integer",tool:"string",toolName:"string",toolset:"string",url:"string"},handler:o(async({options:t,rest:n})=>(await import("./organizations-UECDFEYE.js")).runOrganizationsCommand(t,n),"handler")},{name:"project",usage:"openpond project <list|create|upsert|get|update|sync|source-upload|archive> [args]",optionSchema:T,handler:o(async({options:t,rest:n})=>(await import("./project-agent-NILMJHLV.js")).runProjectCommand(t,n),"handler")},{name:"agent",usage:"openpond agent <inspect|build|validate|eval|traces|list|create|upsert|get|update|run|run-test|bind-source|source|archive> [args]",usages:["openpond agent run <action> [--cwd <project>] [--input <json>]","openpond agent run <agentId> --team-id <id> [--conversation-id <id>] [--target-project-id <projectId>] [--input <json>]","openpond agent source checks <agentId> --team-id <id> [--check-kind <kind>]","openpond agent source publish <agentId> --team-id <id> [--expected-manifest-hash <hash>]"],optionSchema:E,handler:o(async({options:t,rest:n})=>(await import("./project-agent-NILMJHLV.js")).runAgentCommand(t,n),"handler")},{name:"desktop-test",usage:"openpond desktop-test <run|attach> <scenario...> [--isolated|--attach|--packaged|--none] [--app <path>] [--artifacts-dir <path>] [--json <path>]",optionSchema:{artifactsDir:"string",attach:"boolean",cwd:"string",devtoolsPort:"integer",grep:"string",isolated:"boolean",json:"string",jsonPath:"string",keepHome:"boolean",none:"boolean",server:"string",timeoutMs:"integer",token:"string",tokenFile:"string"},handler:o(async({options:t,rest:n})=>(await import("./desktop-test-KGC4JVJ7.js")).runDesktopTestCommand(t,n),"handler")},{name:"sandbox",usage:"openpond sandbox <command> [args]",optionSchema:x,handler:o(async({options:t,rest:n})=>(await import("./sandbox-command-QHH65OSE.js")).runSandboxCommand(t,n),"handler")},{name:"continual",usage:"openpond continual <init|validate|run|report> [manifest-or-series-id]",usages:["openpond continual init --from <tasks.jsonl> [--output <continual-support.yaml>] [--non-interactive]","openpond continual validate <continual-support.yaml> [--json]","openpond continual run <continual-support.yaml> [--api-base-url <url>] [--json]","openpond continual report <comparison-series-id> [--output <report.json>] [--json]"],optionSchema:{apiBaseUrl:"string",commit:"string",correctionCasesPerFamily:"integer",correctionSelection:"string",description:"string",from:"string",grader:"string",id:"string",json:"boolean",license:"string",name:"string",nonInteractive:"boolean",output:"string",repository:"string",seed:"string",semanticSimilarityThreshold:"number"},handler:o(async({options:t,rest:n})=>(await import("./continual-D75WA7E7.js")).runContinualCommand(t,n),"handler")},{name:"training",usage:"openpond training <create-project|start|status|watch|logs|cancel|resume|artifacts|benchmark> <taskset-id|model-run-id|run-id|model-id>",usages:["openpond training create-project <taskset-id> --recipe <path> [--project-id <id>] [--profile <id>] [--name <name>] [--objective <text>] [--destination <id>] [--rollout-placement <local|remote>] [--gpu-placement-objective <fast|balanced|economical>] [--run-preset <preset>] [--max-spend <usd>] [--retention-days <days>] [--json]","openpond training start <model-project-id> [--comparison-series-entry <entry-id>] [--manifest <path>] [--yes] [--export-approved] [--max-spend <usd>] [--retention-days <days>] [--detach] [--json]","openpond training status <run-id> [--json]","openpond training watch <run-id> [--interval-ms <ms>] [--json]","openpond training logs <run-id> [--json]","openpond training cancel <run-id> [--json]","openpond training resume <model-run-id> [--json]","openpond training artifacts <run-id> [--json]","openpond training benchmark <model-id> [--provider <id>] [--model <id>] [--reasoning-effort <level>] [--max-spend <usd>] [--json]"],optionSchema:{apiBaseUrl:"string",comparisonSeriesEntry:"string",detach:"boolean",destination:"string",exportApproved:"boolean",gpuPlacementObjective:"string",intervalMs:"integer",json:"boolean",manifest:"string",maxSpend:"number",model:"string",name:"string",objective:"string",profile:"string",projectId:"string",provider:"string",recipe:"string",reasoningEffort:"string",retentionDays:"integer",rolloutPlacement:"string",runPreset:"string",yes:"boolean"},handler:o(async({options:t,rest:n})=>(await import("./training-2NDOWH5S.js")).runTrainingCommand(t,n),"handler")},{name:"taskset",usage:"openpond taskset <import|publish|readiness|delete-draft> <package-path|draft-id|taskset-id> [--profile <id>] [--model <id>] [--json]",usages:["openpond taskset import <package-directory|taskset.json> [--profile <id>] [--json]","openpond taskset publish <draft-id> [--model <id>] [--json]","openpond taskset readiness <taskset-id> [--json]","openpond taskset delete-draft <draft-id> [--json]"],optionSchema:{apiBaseUrl:"string",json:"boolean",model:"string",profile:"string"},handler:o(async({options:t,rest:n})=>(await import("./taskset-PISBOILQ.js")).runTasksetCommand(t,n),"handler")},{name:"opchat",usage:"openpond opchat <command> [args]",optionSchema:{compatModel:"string",compatibilityModel:"string",env:"string",environment:"string",json:"boolean",message:"string",model:"string",opchatApiBaseUrl:"string",opchatApiUrl:"string",prompt:"string",skipStream:"boolean",skipTool:"boolean",stream:"boolean"},handler:o(async({options:t,rest:n})=>(await import("./opchat-XJZA3QKZ.js")).runOpChatCommand(t,n),"handler")},{name:"teams-bot",usage:"openpond teams-bot <command> [args]",optionSchema:{json:"boolean",teamId:"string"},handler:o(async({options:t,rest:n})=>(await import("./teams-bot-UV4RU53M.js")).runTeamsBotCommand(t,n),"handler")},{name:"apps",usage:"openpond apps <list|code-visibility|tools|deploy|env get|env set|performance|summary|assistant|agent create> [args]",optionSchema:{appId:"string",body:"json",env:"json",json:"boolean",limit:"integer",refresh:"boolean",teamId:"string",watch:"boolean"},handler:q},{name:"opentool",usage:"openpond opentool <init|validate|build> [args]",optionSchema:{},handler:o(async({rest:t})=>(await import("./core-commands-LUZVWXQR.js")).runOpentool(t),"handler")}],y=new Map;for(let t of C){y.set(t.name,t);for(let n of t.aliases??[])y.set(n,t)}function re(){return C}o(re,"listCliCommandDefinitions");function w(t){return y.get(t)??null}o(w,"getCliCommandDefinition");function ie(t,n){return w(t||"ui")?.optionSchema[n]??b[n]}o(ie,"getCliOptionKind");function se(t){let n=b[t];if(n)return n;for(let s of C){let i=s.optionSchema[t];if(i)return i}}o(se,"getAnyCliOptionKind");async function pe(t){let n=w(t.command);return n?S(t.options.help)?(L(n),!0):(await n.handler(t),!0):!1}o(pe,"runCliCommand");function H(t){let n=["Usage:",` ${t.usage}`,...(t.usages??[]).map(i=>` ${i}`)];t.aliases?.length&&n.push("","Aliases:",` ${t.aliases.join(", ")}`);let s=Object.entries(t.optionSchema).sort(([i],[r])=>i.localeCompare(r));if(s.length>0){n.push("","Options:");for(let[i,r]of s){let d=U(i);n.push(r==="boolean"?` --${d}`:` --${d} <${r}>`)}}return n.join(`
|
|
3
|
+
`)}o(H,"formatCliCommandUsage");function L(t){console.log(H(t))}o(L,"printCliCommandUsage");function U(t){return t.replace(/[A-Z]/g,n=>`-${n.toLowerCase()}`)}o(U,"cliOptionName");function K(){return["inspect","build","validate","eval","run"].map(n=>({name:n,usage:`openpond ${n} [args]`,optionSchema:B,handler:o(async({options:s,rest:i})=>(await import("./profile-KUMIZURM.js")).runOpenPondProfileSdkAlias(n,s,i),"handler")}))}o(K,"profileSdkAliasDefinitions");async function F({options:t,rest:n}){let{runToolList:s,runToolRun:i}=await import("./core-commands-LUZVWXQR.js"),r=n[0];if(r==="list"){let d=n[1];if(!d)throw new Error("usage: tool list <handle>/<repo>");await s(t,d);return}if(r==="run"){let d=n[1],c=n[2];if(!d||!c)throw new Error("usage: tool run <handle>/<repo> <tool> [--body <json>]");await i(t,d,c);return}throw new Error("usage: tool <list|run> <handle>/<repo> [args]")}o(F,"runToolCommand");async function $({options:t,rest:n}){let{runBacktestRun:s}=await import("./core-commands-LUZVWXQR.js"),{runBacktestEvents:i,runBacktestGet:r}=await import("./apps-AMG75TI4.js"),d=n[0]||"run";if(d==="run"){let c=n[1],f=n[2];if(!c||!f)throw new Error("usage: backtest run <handle>/<repo> <tool> [--body <json>] [--branch <branch>] [--deployment-id <id>]");await s(t,c,f);return}if(d==="events"){let c=n[1];if(!c)throw new Error("usage: backtest events <handle>/<repo> [--run-id <id>] [--limit <n>]");await i(t,c);return}if(d==="get"){let c=n[1];if(!c)throw new Error("usage: backtest get <handle>/<repo> --run-id <id>");await r(t,c);return}throw new Error("usage: backtest <run|events|get> <handle>/<repo> [args]")}o($,"runBacktestCommand");async function G({options:t,rest:n}){let{runDeployWatch:s}=await import("./core-commands-LUZVWXQR.js");if((n[0]||"watch")!=="watch")throw new Error("usage: deploy watch <handle>/<repo> [--branch <branch>]");let r=n[1];if(!r)throw new Error("usage: deploy watch <handle>/<repo> [--branch <branch>]");await s(t,r)}o(G,"runDeployCommand");async function J({options:t,rest:n}){let{runTemplateBranches:s,runTemplateStatus:i,runTemplateUpdate:r}=await import("./core-commands-LUZVWXQR.js"),d=n[0]||"status",c=n[1];if(!c)throw new Error("usage: template <status|branches|update> <handle>/<repo> [--env preview|production]");if(d==="status"){await i(t,c);return}if(d==="branches"){await s(t,c);return}if(d==="update"){await r(t,c);return}throw new Error("usage: template <status|branches|update> <handle>/<repo> [--env preview|production]")}o(J,"runTemplateCommand");async function V({options:t,rest:n}){let{runRepoCreate:s,runRepoPush:i}=await import("./core-commands-LUZVWXQR.js"),r=n[0]||"create";if(r==="create"){await s(t,n.slice(1));return}if(r==="push"){await i(t);return}throw new Error("usage: repo <create|push> [--name <name>] [--path <dir>] [--branch <branch>]")}o(V,"runRepoCommand");async function q({options:t,rest:n}){let{runAppsAgentCreate:s,runAppsAssistant:i,runAppsCodeVisibility:r,runAppsDeploy:d,runAppsEnvGet:c,runAppsEnvSet:f,runAppsList:R,runAppsPerformance:N,runAppsSummary:M,runAppsTools:_,runAppsToolsExecute:D}=await import("./apps-AMG75TI4.js"),u=n[0];if(u==="list"){await R(t);return}if(u==="code-visibility"){let p=n[1];if(!p)throw new Error("usage: apps code-visibility <handle>/<repo> --visibility public|private");await r(t,p);return}if(u==="tools"){if(n[1]==="execute"){let p=n[2],h=n[3],v=n[4];if(!p||!h||!v)throw new Error("usage: apps tools execute <appId> <deploymentId> <tool> [--body <json>]");await D(t,p,h,v);return}await _();return}if(u==="deploy"){let p=n[1];if(!p)throw new Error("usage: apps deploy <handle>/<repo> [--env preview|production] [--watch]");await d(t,p);return}if(u==="env"&&n[1]==="get"){let p=n[2];if(!p)throw new Error("usage: apps env get <handle>/<repo>");await c(t,p);return}if(u==="env"&&n[1]==="set"){let p=n[2];if(!p)throw new Error("usage: apps env set <handle>/<repo> --env <json>");await f(t,p);return}if(u==="performance"){await N(t);return}if(u==="summary"){let p=n[1];if(!p)throw new Error("usage: apps summary <handle>/<repo>");await M(t,p);return}if(u==="assistant"){let p=n[1],h=n[2];if(p!=="plan"&&p!=="performance"||!h)throw new Error("usage: apps assistant <plan|performance> <handle>/<repo> --prompt <text>");await i(t,p,h,n.slice(3));return}if(u==="agent"&&n[1]==="create"){await s(t,n.slice(2));return}throw new Error("usage: apps <list|code-visibility|tools|deploy|env get|env set|performance|summary|assistant|agent create> [args]")}o(q,"runAppsCommand");export{P as a,X as b,Y as c,b as d,ae as e,re as f,w as g,ie as h,se as i,pe as j,H as k};
|