openpond 0.2.7 → 0.2.9
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/dist/app-server.d.ts +28 -1
- package/dist/app-server.js +1 -1
- package/dist/chunks/{actions-command-FJM6WNUI.js → actions-command-V5DZWEON.js} +1 -1
- package/dist/chunks/{app-layer-XNA7UVWS.js → app-layer-SFV6ZPKZ.js} +1 -1
- package/dist/chunks/app-server-runtime-RBWHBX7T.js +2 -0
- package/dist/chunks/{apps-SC5SKRJC.js → apps-SR7CAM42.js} +1 -1
- package/dist/chunks/{chunk-FOZVXTZM.js → chunk-4LLHOG7L.js} +1 -1
- package/dist/chunks/{chunk-MVPNEF5P.js → chunk-5N6YRABR.js} +2 -2
- package/dist/chunks/{chunk-3NDRIQTI.js → chunk-73KFNV3D.js} +1 -1
- package/dist/chunks/{chunk-3WTRTL56.js → chunk-ADMQIREX.js} +1 -1
- package/dist/chunks/chunk-B6IIGPWS.js +6 -0
- package/dist/chunks/chunk-BB6DJKXX.js +19 -0
- package/dist/chunks/chunk-DY5RF2YE.js +26 -0
- package/dist/chunks/{chunk-36OUIHLX.js → chunk-G2VYRU27.js} +1 -1
- package/dist/chunks/chunk-KRNLKKN6.js +5 -0
- package/dist/chunks/{chunk-EDD5KGLG.js → chunk-LFL4M4DL.js} +7 -3
- package/dist/chunks/{chunk-7P6ZK5IG.js → chunk-LLJI6QAY.js} +1 -1
- package/dist/chunks/{chunk-FYCJSUFV.js → chunk-NNLI4OWY.js} +1 -1
- package/dist/chunks/{chunk-HTTZFZEP.js → chunk-O4IARD7H.js} +1 -1
- package/dist/chunks/{chunk-URZJ4Y2A.js → chunk-QOR55VHT.js} +1 -1
- package/dist/chunks/{chunk-WRMXQAYN.js → chunk-QWE3RHNY.js} +1 -1
- package/dist/chunks/{chunk-WUHDI23M.js → chunk-RQLWYR5B.js} +1 -1
- package/dist/chunks/{chunk-NC6ITVZS.js → chunk-S64WASAO.js} +1 -1
- package/dist/chunks/{chunk-HCJADRKO.js → chunk-SS3EG6S2.js} +1 -1
- package/dist/chunks/chunk-UW6ES5DM.js +28 -0
- package/dist/chunks/{chunk-W56MAK5K.js → chunk-V4ACXLID.js} +1 -1
- package/dist/chunks/{chunk-3VQIZYAN.js → chunk-WDE3KN3N.js} +439 -343
- package/dist/chunks/{chunk-2S2UONFI.js → chunk-Y7ZYJQGZ.js} +1 -1
- package/dist/chunks/{cli-LBXU6SRW.js → cli-3LLBTPP5.js} +1 -1
- package/dist/chunks/{configuration-command-3ZVMKIZK.js → configuration-command-EBN7RH3X.js} +1 -1
- package/dist/chunks/{core-commands-IXY7BKVS.js → core-commands-2S4UQPXW.js} +1 -1
- package/dist/chunks/{desktop-test-V5YO4LCV.js → desktop-test-WN7ZLQVQ.js} +1 -1
- package/dist/chunks/{dist-NKLXFA37.js → dist-UA2RQUA4.js} +1 -1
- package/dist/chunks/extension-ERM5EUUO.js +6 -0
- package/dist/chunks/{help-UIHQZ4CU.js → help-N25BKIHM.js} +1 -1
- package/dist/chunks/{opchat-G7QSVFAI.js → opchat-V4A4WCND.js} +1 -1
- package/dist/chunks/{organizations-Z4SFKZZ7.js → organizations-TSOT7MDT.js} +1 -1
- package/dist/chunks/{profile-XZWNVG5R.js → profile-3JQ3XM6Q.js} +1 -1
- package/dist/chunks/{project-agent-P6TRRYOC.js → project-agent-S76FWVPV.js} +1 -1
- package/dist/chunks/{sandbox-command-JISHBUMC.js → sandbox-command-YQDGQBBQ.js} +1 -1
- package/dist/chunks/{sandbox-template-YGPOBKNA.js → sandbox-template-GM2A3437.js} +1 -1
- package/dist/chunks/{src-S7SFHJYJ.js → src-BC7WOVGF.js} +1 -1
- package/dist/chunks/src-KNUCNVBC.js +319 -0
- package/dist/chunks/{teams-bot-TXCL4DNV.js → teams-bot-M6QLZAHA.js} +1 -1
- package/dist/chunks/{workspaces-5XC34YIM.js → workspaces-ZWG55DFE.js} +1 -1
- package/dist/cli.js +1 -1
- package/dist/index.js +1 -1
- package/dist/profile/local-profile.d.ts +7 -0
- package/dist/skills/openpond-agent-authoring/references/profile-layout.md +9 -0
- package/dist/web/assets/App-7h_oHCFd.css +1 -0
- package/dist/web/assets/App-Dx38Dhlo.js +176 -0
- package/dist/web/assets/{AppDialog-CtqbY289.js → AppDialog-DdWbnFnr.js} +1 -1
- package/dist/web/assets/AppTerminalPanel-BotH-2y4.js +2 -0
- package/dist/web/assets/{AppsView-BeGbrJkU.js → AppsView-B3ybXi71.js} +1 -1
- package/dist/web/assets/BrowserSidebar-CLE27mjT.js +1 -0
- package/dist/web/assets/{BrowserSidebar-D9i7gQzw.css → BrowserSidebar-lNqqj4Ip.css} +1 -1
- package/dist/web/assets/{CartesianChart-Cp_-LaJY.js → CartesianChart-SB3Jq3CQ.js} +1 -1
- package/dist/web/assets/{CollaborationTabs-BL6guh-3.js → CollaborationTabs-C3jO5y5v.js} +1 -1
- package/dist/web/assets/{CommandMenu-hNQCm8mw.css → CommandMenu-Cb3vNGJr.css} +1 -1
- package/dist/web/assets/{CommandMenu-B-DEtpTp.js → CommandMenu-DqtJane1.js} +1 -1
- package/dist/web/assets/{CommunityView-DaIS0cHw.css → CommunityView-CnZqWEjK.css} +1 -1
- package/dist/web/assets/{CommunityView-DcEhEMm_.js → CommunityView-Dg02tZmL.js} +1 -1
- package/dist/web/assets/{ComposerCreateImproveStrip-C4mCZcKl.js → ComposerCreateImproveStrip-BTJhG8aU.js} +1 -1
- package/dist/web/assets/{GetStartedView-BUlaCO6a.js → GetStartedView-BlyP6VY8.js} +1 -1
- package/dist/web/assets/HostedModelLearningReview-BwSAO9y6.js +1 -0
- package/dist/web/assets/HostedModelLearningSettings-CiY2K8Fz.js +1 -0
- package/dist/web/assets/{LabModelVersionDetailPage-Bb1XRvo_.js → LabModelVersionDetailPage-cE1kuSWk.js} +1 -1
- package/dist/web/assets/{LabSkillSidebar-CPucMztm.js → LabSkillSidebar-BrSa3H3m.js} +1 -1
- package/dist/web/assets/{LabsRoute-C_HDADl0.js → LabsRoute-CY7rB25U.js} +4 -4
- package/dist/web/assets/MainChatThread-BM8l-LiB.js +2 -0
- package/dist/web/assets/MainPane-CsAYR_EF.js +10 -0
- package/dist/web/assets/{MarkdownText-_zVYW4pN.js → MarkdownText-8GA7g1qR.js} +1 -1
- package/dist/web/assets/{Messages-DxctstDI.js → Messages-CX08x24k.js} +6 -6
- package/dist/web/assets/{NativeSkillSidebar-DV4AGiCD.js → NativeSkillSidebar-mSz4GlxA.js} +1 -1
- package/dist/web/assets/{NewExperienceSwitcher-CZCLJj99.js → NewExperienceSwitcher-CHAC2Zid.js} +1 -1
- package/dist/web/assets/{NewProjectDialog-CQSipZ5d.js → NewProjectDialog-5B17C6Vh.js} +1 -1
- package/dist/web/assets/{OutputsPage-aPJP4mTV.js → OutputsPage-27Gp1K5N.js} +1 -1
- package/dist/web/assets/{ProjectsPage-CyThuXQv.js → ProjectsPage-DJpPuKBP.js} +1 -1
- package/dist/web/assets/RightChatPanelStack-C_4rbc1i.js +1 -0
- package/dist/web/assets/{RightSidebarHomePanel-CtH0vZ36.js → RightSidebarHomePanel-PHndCapL.js} +1 -1
- package/dist/web/assets/{ScheduledWorkPage-BY_4jFm7.js → ScheduledWorkPage-CYQZ0Zal.js} +1 -1
- package/dist/web/assets/{SettingsView-ZPnupcpg.js → SettingsView-DQPMLKNH.js} +7 -7
- package/dist/web/assets/{TeamChatView-DWjwVxMp.js → TeamChatView-DRvqhiOV.js} +2 -2
- package/dist/web/assets/{TeamChatView-Br3VdxhD.css → TeamChatView-dL6B0qib.css} +1 -1
- package/dist/web/assets/{TerminalOverlay-DxuUGKYH.js → TerminalOverlay-C8FbaVVP.js} +1 -1
- package/dist/web/assets/{TrainingCreationPanel-CjIPEoTX.js → TrainingCreationPanel-BGsd95vF.js} +1 -1
- package/dist/web/assets/{TrainingDraftPanel-CxevAlkr.js → TrainingDraftPanel-Bm6j-IuS.js} +1 -1
- package/dist/web/assets/{UsageSettingsSection-CY1lQB_g.js → UsageSettingsSection-CTCDOE-_.js} +3 -3
- package/dist/web/assets/{WorkSidebarPanel-DMsiwOSi.js → WorkSidebarPanel-UaymQC_e.js} +1 -1
- package/dist/web/assets/WorkspaceDiffPanel-D6mKLQha.js +14 -0
- package/dist/web/assets/{WorkspaceEnvironmentMenu-7DSF_BpI.js → WorkspaceEnvironmentMenu-C4Uw5qMA.js} +3 -3
- package/dist/web/assets/{WorkspaceGitDialogs-Ck8BzH11.js → WorkspaceGitDialogs--t9VpTCT.js} +1 -1
- package/dist/web/assets/{WorkspaceMonacoEditor-gsEP4W37.js → WorkspaceMonacoEditor-CElU0vIN.js} +3 -3
- package/dist/web/assets/{arrow-up-right-BK6EpHpC.js → arrow-up-right-C0HJHPjq.js} +1 -1
- package/dist/web/assets/{chat-file-links-BQe708gU.js → chat-file-links-D5q1as_h.js} +1 -1
- package/dist/web/assets/chevron-up-B3Cyo8SJ.js +1 -0
- package/dist/web/assets/{clipboard-DOmCP7eR.js → clipboard-wiphvxrN.js} +1 -1
- package/dist/web/assets/{cloud-upload-DLtawDYW.js → cloud-upload-Bgm5_SSr.js} +1 -1
- package/dist/web/assets/{cssMode-C0Qw8i_8.js → cssMode-DudNT1l3.js} +1 -1
- package/dist/web/assets/{folder-open-B_Ayxxo8.js → folder-open-DLuZSDXn.js} +1 -1
- package/dist/web/assets/{folder-plus-CPgtt3pN.js → folder-plus-DXN0q9GR.js} +1 -1
- package/dist/web/assets/{git-commit-horizontal-23xCJjd8.js → git-commit-horizontal-CdiI4K5M.js} +1 -1
- package/dist/web/assets/{htmlMode-DuQ7zaau.js → htmlMode-B2sAXhgB.js} +1 -1
- package/dist/web/assets/index-C5EoPZr0.css +1 -0
- package/dist/web/assets/{index-BoaTQ0Rb.js → index-DSK9XSir.js} +2 -1
- package/dist/web/assets/{info-CQ2kJJ5E.js → info-DcmIP9D3.js} +1 -1
- package/dist/web/assets/{jsonMode-DVQSEPUy.js → jsonMode-aQlrpuz5.js} +1 -1
- package/dist/web/assets/{lspLanguageFeatures-DWKH3min.js → lspLanguageFeatures-BMskOvs7.js} +1 -1
- package/dist/web/assets/{minimize-2-1M-fFBeP.js → minimize-2-CvKd6Q_r.js} +1 -1
- package/dist/web/assets/{monaco.contribution-jXX7-l5p.js → monaco.contribution-BHv_qQG9.js} +2 -2
- package/dist/web/assets/{monaco.contribution-ytVV-s22.js → monaco.contribution-BSRllZgB.js} +2 -2
- package/dist/web/assets/{monaco.contribution-B5Jz7f4W.js → monaco.contribution-VS3RCwFP.js} +2 -2
- package/dist/web/assets/{monaco.contribution-DB7pp5Y-.js → monaco.contribution-tZUXzebU.js} +2 -2
- package/dist/web/assets/{play-D9jaK5MP.js → play-BzfQJMmu.js} +1 -1
- package/dist/web/assets/{python-_yRitN2I.js → python-Bm9eN64d.js} +1 -1
- package/dist/web/assets/{refresh-cw-DZHqZGos.js → refresh-cw-Cvy0BqFv.js} +1 -1
- package/dist/web/assets/{save-DOT3oYfU.js → save-miVdIz56.js} +1 -1
- package/dist/web/assets/{square-D_1V6onE.js → square-DlJ_-dur.js} +1 -1
- package/dist/web/assets/{toggleHighContrast-C06C-luq.js → toggleHighContrast-B8jte8Lm.js} +1 -1
- package/dist/web/assets/{tsMode-CTMYvh-R.js → tsMode-CmAPBzqb.js} +1 -1
- package/dist/web/assets/{upload-EAAHd0Nx.js → upload-C71OnfRd.js} +1 -1
- package/dist/web/assets/{useLocalAgentSchedules-DBsx4aIY.js → useLocalAgentSchedules-D9hDhAba.js} +1 -1
- package/dist/web/assets/{wifi-off-DYRTrfYa.js → wifi-off-DhI7P9WW.js} +1 -1
- package/dist/web/assets/{workers-DAytqxd3.js → workers-BDI2xQio.js} +1 -1
- package/dist/web/assets/{yaml-iZnWWABr.js → yaml-DNSpZj5_.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunks/app-server-runtime-MICKKE3S.js +0 -2
- package/dist/chunks/chunk-AD3RLKPP.js +0 -5
- package/dist/chunks/chunk-AIGGIV44.js +0 -5
- package/dist/chunks/chunk-HEUO2XEH.js +0 -28
- package/dist/chunks/chunk-L6OFNJ6Y.js +0 -19
- package/dist/chunks/chunk-XSFF4T2Z.js +0 -24
- package/dist/chunks/extension-N5SBQPJO.js +0 -5
- package/dist/chunks/src-UDJ7D55P.js +0 -319
- package/dist/web/assets/App-DNZ5VhFd.js +0 -176
- package/dist/web/assets/AppTerminalPanel-C1U1RKU6.js +0 -2
- package/dist/web/assets/BrowserSidebar-XgQLeXw1.js +0 -1
- package/dist/web/assets/HostedModelLearningReview-CZyb95R_.js +0 -1
- package/dist/web/assets/HostedModelLearningSettings-D2o7rh0w.js +0 -1
- package/dist/web/assets/MainChatThread-CnXHxCy3.js +0 -2
- package/dist/web/assets/MainPane-DjnT-kvm.js +0 -8
- package/dist/web/assets/RightChatPanelStack-jsP9CukH.js +0 -1
- package/dist/web/assets/WorkspaceDiffPanel-HdfItqu2.js +0 -14
- package/dist/web/assets/chevron-up-CHxYR4AX.js +0 -1
- package/dist/web/assets/index-BGMzUaup.css +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{e as D,f as K,g as W}from"./chunk-ZVOO7FKM.js";import{Z as B,ca as L,da as x,ea as U,f as A,fa as C,g as I,ga as M,ha as N,ia as k,j as _,u as T}from"./chunk-
|
|
2
|
+
import{e as D,f as K,g as W}from"./chunk-ZVOO7FKM.js";import{Z as B,ca as L,da as x,ea as U,f as A,fa as C,g as I,ga as M,ha as N,ia as k,j as _,u as T}from"./chunk-SS3EG6S2.js";import{a as O,b as v}from"./chunk-GLUWATL5.js";import{h as $}from"./chunk-J2S7BOZU.js";import{f as y}from"./chunk-3M53YXEI.js";import{a as o}from"./chunk-FTQLQJQV.js";import{stdin as q,stdout as F}from"node:process";import{createInterface as oe}from"node:readline/promises";var ie=`${O}/settings/api-keys`;function se(e){let t=process.env.OPENPOND_API_KEY?.trim();if(t)return t;let n=e.apiKey?.trim();if(n)return n;let r=e.token?.trim();return r&&r.startsWith("opk_")?r:null}o(se,"resolveApiKey");async function ae(){if(!q.isTTY||!F.isTTY)throw new Error("OpenPond API key is required in non-interactive mode. Set OPENPOND_API_KEY or run `openpond login` in a terminal.");console.log("Open the OpenPond UI to create an API key:"),console.log(ie);let e=oe({input:q,output:F});try{let t=(await e.question("Paste your OpenPond API key: ")).trim();if(!t)throw new Error("API key is required");return t.startsWith("opk_")||console.log("warning: API keys usually start with opk_."),t}finally{e.close()}}o(ae,"promptForApiKey");async function H(e,t){let n=se(e);if(n)return n;let r=await ae();return await L({apiKey:r,baseUrl:t,activeProfile:e.activeProfile}),console.log("Saved account credentials to the encrypted OpenPond credential store."),r}o(H,"ensureApiKey");function ve(e){if(e.repoUrl)return e.repoUrl;if(e.gitHost&&e.gitOwner&&e.gitRepo)return`https://${e.gitHost}/${e.gitOwner}/${e.gitRepo}.git`;throw new Error("repoUrl missing from API response")}o(ve,"resolveRepoUrl");function Ae(e,t){let n=new URL(e),r=encodeURIComponent(t);return`${n.protocol}//x-access-token:${r}@${n.host}${n.pathname}`}o(Ae,"formatTokenizedRepoUrl");function Ie(e){let t=new URL(e);return`${t.protocol}//x-access-token:$OPENPOND_API_KEY@${t.host}${t.pathname}`}o(Ie,"formatTokenizedRepoUrlForPrint");function _e(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@")}o(_e,"redactToken");function Te(e){let t=process.env.OPENPOND_BASE_URL;if(t)try{let n=new URL(t).hostname,r=new URL(e).hostname;n&&r&&n!==r&&(console.warn(`warning: repo host (${r}) does not match OPENPOND_BASE_URL (${n})`),console.warn("warning: verify your git host configuration matches OPENPOND_BASE_URL."))}catch{}}o(Te,"warnOnRepoHostMismatch");function Y(e){let t=e.split("/").filter(Boolean);if(t.length!==2)throw new Error("expected <handle>/<repo>");return{handle:t[0],repo:t[1]}}o(Y,"parseHandleRepo");function P(e){return(e||"").trim().toLowerCase()}o(P,"normalizeRepoName");async function ue(e){if(!e.forceRefresh){let n=await U({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:x});if(n)return n}let t=await _(e.apiBase,e.apiKey);return await C({apiBase:e.apiBase,apiKey:e.apiKey,apps:t}),t}o(ue,"fetchAppsWithCache");async function ke(e){if(!e.forceRefresh){let r=await M({apiBase:e.apiBase,apiKey:e.apiKey,ttlMs:x});if(r)return r}let t=await T(e.apiBase,e.apiKey),n=Array.isArray(t.tools)?t.tools:[];return await N({apiBase:e.apiBase,apiKey:e.apiKey,tools:n}),n}o(ke,"fetchToolsWithCache");async function De(e,t,n){let{handle:r,repo:s}=Y(n),i=await ue({apiBase:e,apiKey:t}),a=P(s),d=i.find(u=>u.handle&&u.handle!==r?!1:[u.repo,u.gitRepo,u.id].map(P).includes(a));if(!d)throw new Error(`app not found for ${r}/${s}`);return{app:d,handle:r,repo:s}}o(De,"resolveAppTarget");async function Ke(e){let t=e.intervalMs??5e3,n=e.timeoutMs??240*1e3,r=new Set,s=Date.now();for(;Date.now()-s<n;){let a=(await A(e.baseUrl,e.apiKey,e.deploymentId)).filter(u=>!r.has(u.id));for(let u of a)r.add(u.id);for(let u of a)console.log(`${e.prefix}${u.message}`);let d=await I(e.baseUrl,e.apiKey,e.deploymentId);if(d.status==="failed"){console.log(`${e.prefix}deployment failed`);return}if(d.status==="running"||d.status==="deployed"){console.log(`${e.prefix}deployment complete`);return}await new Promise(u=>setTimeout(u,t))}console.log(`${e.prefix}deployment still in progress`)}o(Ke,"pollDeploymentLogs");import{stdin as z,stdout as V}from"node:process";import{createInterface as G}from"node:readline/promises";async function X(){let e=[];for await(let t of process.stdin)e.push(Buffer.isBuffer(t)?t:Buffer.from(String(t)));return Buffer.concat(e).toString("utf8").replace(/\r?\n$/,"")}o(X,"readAllStdin");function j(e){return new Promise((t,n)=>{let r=process.stdin,s=process.stderr,i="",a=r.isRaw;function d(){r.off("data",u),r.setRawMode&&r.setRawMode(a),r.pause(),s.write(`
|
|
3
3
|
`)}o(d,"cleanup");function u(p){let f=Buffer.isBuffer(p)?p:Buffer.from(p);for(let c of f){if(c===3){d(),n(new Error("secret prompt cancelled"));return}if(c===13||c===10){d(),t(i);return}if(c===127||c===8){i.length>0&&(i=i.slice(0,-1),s.write("\b \b"));continue}i+=Buffer.from([c]).toString("utf8"),s.write("*")}}o(u,"onData"),s.write(e),r.resume(),r.setRawMode&&r.setRawMode(!0),r.on("data",u)})}o(j,"readMaskedLine");async function Ye(e,t=!1){let n=G({input:z,output:V});try{let r=t?"[Y/n]":"[y/N]",s=(await n.question(`${e} ${r} `)).trim().toLowerCase();return s?s==="y"||s==="yes":t}finally{n.close()}}o(Ye,"promptConfirm");async function ze(e){let t=G({input:z,output:V});try{return(await t.question(`Local path (default: ${e}): `)).trim()||e}finally{t.close()}}o(ze,"promptForPath");var J=["readonly","attempt","feature","rollout","replay","template_build","scheduled_run","patch_only","hotfix","multi_feature_batch"],Z=["none","manual","auto_after_checks"],Q=[...k];function de(e,t){return(process.env.OPENPOND_SANDBOX_BASE_URL||process.env.OPENPOND_API_URL||e.apiBaseUrl||W(process.env.OPENPOND_BASE_URL||e.baseUrl)||v).replace(/\/$/,"")}o(de,"resolveSandboxBaseUrl");async function rt(e){let t=await ce(e),n=K(t),r=await H(t,n),s=D(e)||process.env.OPENPOND_SANDBOX_API_URL?.trim()||null,i=de(t,e);return $(s?{apiKey:r,sandboxApiUrl:s}:{apiKey:r,baseUrl:i})}o(rt,"resolveSandboxClient");async function ce(e){return B()}o(ce,"loadSandboxConfig");function ot(e){if(e===void 0)return;if(typeof e!="string"||!e.trim())throw new Error("workflow-mode must be a non-empty value");let t=e.trim();if(!J.includes(t))throw new Error(`workflow-mode must be one of ${J.join(", ")}`);return t}o(ot,"parseSandboxWorkflowModeOption");function it(e){if(e===void 0)return;if(typeof e!="string"||!e.trim())throw new Error("runtime-promotion-policy must be a non-empty value");let t=e.trim();if(!Z.includes(t))throw new Error(`runtime-promotion-policy must be one of ${Z.join(", ")}`);return t}o(it,"parseSandboxRuntimePromotionPolicyOption");function st(e){if(typeof e!="string"||!e.trim())return;let t=e.trim();if(!Q.includes(t))throw new Error(`runtime-profile-id must be one of ${Q.join(", ")}`);return t}o(st,"parseSandboxRuntimeProfileIdOption");function le(e){let t=ee(e.envRef,"env-ref").map(({name:i,value:a})=>({name:i,secretRef:a})),n=ee(e.envLiteral,"env-literal").map(({name:i,value:a})=>{if(fe(i)&&!y(e.allowPlainSecretEnv))throw new Error(`refusing plaintext value for secret-like env ${i}; create a sandbox secret and pass --env-ref ${i}=openpond://secret/...`);return{name:i,value:a}}),r=[...t,...n],s=new Set;for(let i of r){if(s.has(i.name))throw new Error(`duplicate sandbox env var: ${i.name}`);s.add(i.name)}return r}o(le,"parseSandboxEnvOptions");function at(e,t){let n=le(t),r=new Set(n.map(a=>a.name)),s=new Map(n.map(a=>[a.name,a]));for(let a of e.inputs.env)if(s.get(a.name)?.value!==void 0&&a.secret!==!1)throw new Error(`sandbox template env ${a.name} requires a secret ref. Pass --env-ref ${a.name}=openpond://secret/...`);let i=e.inputs.env.filter(a=>a.required&&!r.has(a.name)).map(a=>a.name);if(i.length>0)throw new Error(`missing required sandbox template env refs: ${i.join(", ")}. Pass --env-ref NAME=openpond://secret/...`);return n}o(at,"parseSandboxTemplateEnvOptions");function ee(e,t){return typeof e!="string"?[]:e.split(",").map(n=>n.trim()).filter(Boolean).map(n=>{let r=n.indexOf("=");if(r<=0)throw new Error(`${t} entries must use NAME=value`);let s=n.slice(0,r).trim(),i=n.slice(r+1).trim();if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(s))throw new Error(`${t} has invalid env name: ${s}`);if(!i)throw new Error(`${t} value is required for ${s}`);return{name:s,value:i}})}o(ee,"parseSandboxEnvAssignments");function fe(e){return/(?:SECRET|TOKEN|KEY|PASSWORD|PASSWD|PRIVATE|CREDENTIAL|DATABASE_URL|DSN)/i.test(e)}o(fe,"isSecretLikeEnvName");async function ut(e,t){if(typeof e.value=="string"||typeof e.secretValue=="string")throw new Error("sandbox secret values must be provided with --stdin or the masked prompt");if(y(e.stdin)){let s=await X();if(!s)throw new Error(`${t} read no secret value from stdin`);return s}if(!process.stdin.isTTY)throw new Error(`${t} requires --stdin when not running in a TTY`);let r=await j(`${t}: `);if(!r)throw new Error(`${t} cannot be empty`);return r}o(ut,"readSandboxSecretValue");function dt(e){return{id:e.id,teamId:e.teamId,name:e.name,scope:e.scope,status:e.status,secretRef:e.secretRef,currentVersion:e.currentVersion,updatedAt:e.updatedAt,lastUsedAt:e.lastUsedAt,attachedDestinations:e.attachments?.length??0}}o(dt,"summarizeSandboxSecret");import{Buffer as S}from"node:buffer";import{spawn as re}from"node:child_process";var pe=600*1e3,me=2*1024*1024;function b(e,t=[],n={}){return n.inherit&&n.terminateWhenStdoutIncludes!==void 0?Promise.reject(new Error("terminateWhenStdoutIncludes requires captured stdout")):n.terminateWhenStdoutIncludes===""?Promise.reject(new Error("terminateWhenStdoutIncludes must not be empty")):new Promise((r,s)=>{let i=re(e,t,{cwd:n.cwd,env:n.env?{...process.env,...n.env}:void 0,shell:n.shell,detached:n.detached??process.platform!=="win32",stdio:n.inherit?"inherit":[n.stdin===void 0?"ignore":"pipe","pipe","pipe"]}),a=new h(te(n)),d=new h(te(n)),u=!1,p=n.timeoutMs??pe,f,c,w=null,g=!1,R=o(()=>{f&&clearTimeout(f),c&&clearTimeout(c)},"clearTimers"),E=o(l=>{w!==null||g||(w=l,u=l==="timeout",f&&(clearTimeout(f),f=void 0),ne(i.pid,"SIGTERM"),c=setTimeout(()=>{i.exitCode===null&&i.signalCode===null&&ne(i.pid,"SIGKILL")},5e3))},"requestTermination");p>0&&(f=setTimeout(()=>{E("timeout")},p)),n.inherit||(i.stdout?.on("data",l=>{a.append(l);let m=n.terminateWhenStdoutIncludes;m!==void 0&&a.text().includes(m)&&E("output")}),i.stderr?.on("data",l=>{d.append(l)})),i.on("error",l=>{R(),g=!0,s(l)}),i.on("close",(l,m)=>{g||(g=!0,R(),r({code:l,signal:m,terminationReason:w??(m?"signal":"exit"),stdout:a.text(),stderr:d.text(),timedOut:u,stdoutTruncated:a.truncated,stderrTruncated:d.truncated}))}),n.stdin!==void 0&&i.stdin?.end(n.stdin)})}o(b,"runProcessCommand");var h=class{static{o(this,"BoundedOutput")}#t=[];#n;#e=0;truncated=!1;constructor(t){this.#n=t}append(t){let n=S.isBuffer(t)?t:S.from(t),r=this.#n-this.#e;if(r<=0){n.byteLength>0&&(this.truncated=!0);return}if(n.byteLength<=r){this.#t.push(n),this.#e+=n.byteLength;return}this.#t.push(n.subarray(0,r)),this.#e+=r,this.truncated=!0}text(){let t=S.concat(this.#t,this.#e).toString("utf8");return this.truncated?`${t}
|
|
4
4
|
[truncated after ${this.#n} bytes]
|
|
5
5
|
`:t}};function te(e){let t=e.maxOutputBytes??me;return Math.max(0,Math.floor(t))}o(te,"maxOutputBytes");function ne(e,t){if(e){if(process.platform==="win32"){let n=["/PID",String(e),"/T"];t==="SIGKILL"&&n.push("/F"),re("taskkill",n,{stdio:"ignore",windowsHide:!0}).unref();return}try{process.kill(-e,t)}catch(n){if(n.code!=="ESRCH")throw n}}}o(ne,"terminateProcessTree");async function ge(e,t,n={}){return b(e,t,{cwd:n.cwd,inherit:n.inherit,timeoutMs:n.timeoutMs,maxOutputBytes:n.maxOutputBytes,terminateWhenStdoutIncludes:n.terminateWhenStdoutIncludes})}o(ge,"runCommand");async function xt(e,t={}){let n=t.timeoutSeconds===void 0?void 0:t.timeoutSeconds*1e3;return b(e,[],{cwd:t.cwd,env:t.env,shell:!0,inherit:t.inherit,timeoutMs:n,maxOutputBytes:t.maxOutputBytes})}o(xt,"runShellCommand");async function Pt(e,t){let n=await ge("git",["remote","get-url",t],{cwd:e});if(n.code!==0)return null;let r=n.stdout.trim();return r.length>0?r:null}o(Pt,"getGitRemoteUrl");export{se as a,ae as b,H as c,ve as d,Ae as e,Ie as f,_e as g,Te as h,P as i,ue as j,ke as k,De as l,Ke as m,Ye as n,ze as o,rt as p,ot as q,it as r,st as s,le as t,at as u,ut as v,dt as w,b as x,ge as y,xt as z,Pt as A};
|
|
@@ -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 R,f as z,g as H,i as N,kb as O}from"./chunk-NNLI4OWY.js";import{b as a}from"./chunk-ES2ISFJC.js";import{a as y,c as P,f as C,h as d}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";import b from"node:path";import{AsyncLocalStorage as V}from"node:async_hooks";import{promises as M}from"node:fs";var B=new V;function me(e,t=!1){let r=B.getStore();r&&(t&&(r.length=0),r.push(e))}i(me,"onStartupFailure");async function pe(e,t){await O(e);let r;try{r=await H(b.join(d(e).runtime,"server-owner"),100)}catch(s){if(s instanceof P&&s.issue.code==="STORAGE_BUSY"){let o=await N(b.join(d(e).runtime,"endpoint.json"),()=>null);throw new P({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 s}let n=[];try{let s=await y(e,()=>B.run(n,t)),o=s.close.bind(s);n.length=0;let c;return{...s,close:i(()=>c??=(async()=>{try{await y(e,o)}finally{await M.rm(b.join(d(e).runtime,"endpoint.json"),{force:!0}),await r()}})(),"close")}}catch(s){try{for(let o of n.reverse())await Promise.resolve().then(()=>y(e,o)).catch(()=>{});await M.rm(b.join(d(e).runtime,"endpoint.json"),{force:!0})}finally{await r()}throw s}}i(pe,"ownHomeRuntime");async function fe(e,t,r){await R(b.join(d(e).runtime,"endpoint.json"),JSON.stringify({schemaVersion:"openpond.runtimeEndpoint.v1",pid:process.pid,url:t,serverId:r}))}i(fe,"publishRuntimeEndpoint");function ge(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)),r=Math.max(1,Math.floor(e.usableContextTokens*t));return{shouldCompact:e.projectedTokens>=r,projectedTokens:e.projectedTokens,thresholdTokens:r,usableContextTokens:e.usableContextTokens,maxContextTokens:e.maxContextTokens,tokenSource:"heuristic"}}i(ge,"agentCompactionDecision");async function be(e){await e.started();try{return await e.compact()}catch(t){throw await e.failed(t),t}}i(be,"runAgentCompaction");async function ke(e){let t=e.host.projectEvents(e.events),r=e.host.selectEvents(t,e.maxContextTokens),{summaryEvents:n,preservedEvents:s,preservedEventIds:o}=r;if(n.length===0)throw new Error("There is not enough prior context to compact.");let c=e.host.normalizeRecords(n),u=e.host.normalizeRecords(s),h=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 m=e.host.buildSummaryMessages({serializedHistory:l.text,fileLedger:h}),w=Date.now(),v=(await e.host.streamSummary({model:e.model,messages:m,signal:e.signal})).trim(),x=Date.now()-w;if(!v)throw new Error("Compaction summary was empty.");let I=e.host.estimateProjection({events:t,preservedEvents:s,summary:v}),_=e.host.createMetrics({sourceEvents:t.length,summarizedEvents:n.length,preservedEvents:s.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:r.retainedTailTokens,retainedTailBudgetTokens:r.retainedTailBudgetTokens,finalProviderContextTokens:I.inputTokensAfter,durationMs:x,fileLedgerEntries:h.length,splitTurnId:r.splitTurnId});return{summary:v,model:e.model,compactedThroughEventId:t[t.length-1]?.id??null,compactedThroughTurnId:e.host.lastTurnId(t),preservedFromEventId:s[0]?.id??null,preservedEventIds:o,preservedResourceRefs:e.host.durableResourceRefs(e.events),sourceEventCount:n.length,preservedEventCount:s.length,fileLedger:h,inputTokensBefore:I.inputTokensBefore,inputTokensAfter:I.inputTokensAfter,maxContextTokens:e.maxContextTokens,tokenSource:"heuristic",metrics:_}}i(ke,"runAgentCompactionProgram");var E="2026-09-20",Ee=["initialize","initialized","runtime/capabilities","thread/start","thread/resume","thread/read","turn/start","turn/steer","task/inbox","task/queue","task/inputUpdate","turn/interrupt","approval/resolve","userInput/resolve","profile/workflows","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"],U=a.object({jsonrpc:a.literal("2.0"),id:a.union([a.string(),a.number()]),method:a.string().trim().min(1),params:a.unknown().optional()}).strict(),$=a.object({jsonrpc:a.literal("2.0"),method:a.string().trim().min(1),params:a.unknown().optional()}).strict(),G=a.object({jsonrpc:a.literal("2.0"),id:a.union([a.string(),a.number()]),result:a.unknown()}).strict(),W=a.object({jsonrpc:a.literal("2.0"),id:a.union([a.string(),a.number(),a.null()]),error:a.object({code:a.number().int(),message:a.string(),data:a.unknown().optional()}).strict()}).strict(),Te=a.union([U,$,G,W]),K=a.object({protocolVersion:a.string().trim().min(1),client:a.object({name:a.string().trim().min(1),version:a.string().trim().min(1)}).strict(),capabilities:a.record(a.string(),a.unknown()).default({})}).strict(),T=class{static{i(this,"AgentJsonRpcDispatcher")}#e;#n=null;#t=!1;constructor(t){this.#e=t}get initialized(){return this.#t}async handle(t){let r=$.safeParse(t);if(r.success&&!("id"in t)){if(r.data.method==="initialized"){if(!this.#n)throw new p(-32002,"initialize must be called first");this.#t=!0}return null}let n=U.safeParse(t);if(!n.success)return q(null,-32600,"Invalid Request",n.error.flatten());let s=n.data;try{let o=await this.#r(s.method,s.params);return{jsonrpc:"2.0",id:s.id,result:o}}catch(o){let c=o instanceof p?o:new p(-32603,o instanceof Error?o.message:String(o));return q(s.id,c.code,c.message,c.data)}}async#r(t,r){if(t==="initialize"){let n=K.parse(r);if(n.protocolVersion!==E)throw new p(-32001,"Incompatible agent protocol version",{requested:n.protocolVersion,supported:E});return this.#n=n,{protocolVersion:E,server:{name:"openpond-app-server",version:"1"},capabilities:await this.#e.capabilities()}}if(!this.#t)throw new p(-32002,"initialized notification is required");switch(t){case"runtime/capabilities":return this.#e.capabilities(r);case"thread/start":return this.#e.threadStart(r);case"thread/resume":return this.#e.threadResume(r);case"thread/read":return this.#e.threadRead(r);case"turn/start":return this.#e.turnStart(r);case"turn/steer":return this.#e.turnSteer(r);case"task/inbox":return this.#e.taskInbox(r);case"task/queue":return this.#e.taskQueue(r);case"task/inputUpdate":return this.#e.taskInputUpdate(r);case"turn/interrupt":return this.#e.turnInterrupt(r);case"approval/resolve":return this.#e.approvalResolve(r);case"userInput/resolve":return this.#e.userInputResolve(r);case"profile/workflows":return this.#e.profileWorkflows(r);case"harness/inspect":return this.#e.harnessInspect(r);case"harness/proposalReview":return this.#e.harnessProposalReview(r);case"harness/review":return this.#e.harnessReview(r);case"harness/acceptEvaluationReview":return this.#e.harnessAcceptEvaluationReview(r);case"harness/materializeEvaluationTaskset":return this.#e.harnessMaterializeEvaluationTaskset(r);case"harness/runEvaluationBaseline":return this.#e.harnessRunEvaluationBaseline(r);case"harness/validate":return this.#e.harnessValidate(r);case"harness/backgroundReview":return this.#e.harnessBackgroundReview(r);case"harness/diff":return this.#e.harnessDiff(r);case"harness/rollback":return this.#e.harnessRollback(r);case"refiner/inspect":return this.#e.refinerInspect(r);case"refiner/update":return this.#e.refinerUpdate(r);case"refiner/activate":return this.#e.refinerActivate(r);case"refiner/rollback":return this.#e.refinerRollback(r);default:throw new p(-32601,`Method not found: ${t}`)}}},p=class extends Error{static{i(this,"JsonRpcDispatchError")}code;data;constructor(t,r,n){super(r),this.code=t,this.data=n}};function q(e,t,r,n){return{jsonrpc:"2.0",id:e,error:{code:t,message:r,...n===void 0?{}:{data:n}}}}i(q,"jsonRpcError");import{createHash as Q}from"node:crypto";function A(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(A);if(typeof e=="object"){let t={};for(let r of Object.keys(e).sort()){let n=e[r];n!==void 0&&(t[r]=A(n))}return t}throw new Error(`Canonical JSON cannot encode ${typeof e}.`)}i(A,"canonicalJson");function g(e){return Q("sha256").update(JSON.stringify(A(e)),"utf8").digest("hex")}i(g,"canonicalHash");var Y=a.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"]),X=a.object({sequence:a.number().int().nonnegative(),name:Y,source:a.enum(["runtime","provider","tool","host","refiner"]),status:a.string().trim().min(1).nullable().default(null),threadId:a.string().trim().min(1),turnId:a.string().trim().min(1).nullable().default(null),callId:a.string().trim().min(1).nullable().default(null),output:a.string().nullable().default(null),error:a.string().nullable().default(null),data:a.record(a.string(),a.unknown()).default({})}).strict();function He(e){return g(X.parse(e))}i(He,"canonicalEventHash");import{once as Z}from"node:events";import{createInterface as ee}from"node:readline";async function D(e){let t=new T(e.host),r=Promise.resolve(),n=[],s=i(l=>(r=r.then(async()=>{e.writable.write(`${JSON.stringify(l)}
|
|
3
|
+
`)||await Z(e.writable,"drain")}),r),"write"),o=i(()=>{if(!(!t.initialized||n.length===0))for(let l of n.splice(0))s(l)},"flushPendingNotifications"),c=e.host.subscribe?.(l=>{if(!t.initialized){n.push(l);return}s(l)}),u=new Set,h=ee({input:e.readable,crlfDelay:1/0});try{for await(let l of h){if(!l.trim())continue;let m;try{m=JSON.parse(l)}catch{await s({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}});continue}let w=(async()=>{let x=await t.handle(m);x&&await s(x),o()})(),v=m&&typeof m=="object"&&"method"in m?m.method:null;if(v==="initialize"||v==="initialized"){await w;continue}u.add(w),w.finally(()=>u.delete(w))}await Promise.all(u),await r}finally{c?.()}}i(D,"runAgentJsonlServer");var S=a.object({threadId:a.string().trim().min(1)}).passthrough(),te=a.object({session:a.unknown()}).strict(),k=S.extend({input:a.unknown()}),ne=k.extend({idempotencyKey:a.string().trim().min(1).max(200)}),re=k.extend({inputId:a.string().trim().min(1)}),ae=S.extend({reason:a.string().trim().min(1).optional()}),se=a.object({approvalId:a.string().trim().min(1),input:a.unknown()}).strict();function L(e){let t=i(async(n,s,o)=>{let c=performance.now();e.telemetry?.({method:n,phase:"started",threadId:s,durationMs:null,errorClass:null});try{let u=await o();return e.telemetry?.({method:n,phase:"completed",threadId:s,durationMs:performance.now()-c,errorClass:null}),u}catch(u){throw e.telemetry?.({method:n,phase:"failed",threadId:s,durationMs:performance.now()-c,errorClass:u instanceof Error?u.name:"UnknownError"}),u}},"run"),r=i(async(n,s="thread/read")=>{let{threadId:o}=S.parse(n);return t(s,o,async()=>{let[c,u,h]=await Promise.all([e.readThread(o),e.listTurns(o),e.listEvents(o)]);return{thread:c,turns:u,events:h}})},"threadRead");return{capabilities:i(n=>t("runtime/capabilities",null,()=>e.capabilities(n)),"capabilities"),threadStart:i(async n=>t("thread/start",null,async()=>({thread:await e.createThread(te.parse(n).session)})),"threadStart"),threadResume:i(n=>r(n,"thread/resume"),"threadResume"),threadRead:r,turnStart:i(async n=>{let s=k.parse(n);return t("turn/start",s.threadId,async()=>({turn:await e.startTurn(s.threadId,s.input)}))},"turnStart"),turnSteer:i(async n=>{let s=k.parse(n);return t("turn/steer",s.threadId,async()=>({receipt:await e.steerTurn(s.threadId,s.input)}))},"turnSteer"),taskInbox:i(async n=>{let{threadId:s}=S.parse(n);return t("task/inbox",s,()=>e.readTaskInbox(s))},"taskInbox"),taskQueue:i(async n=>{let s=ne.parse(n);return t("task/queue",s.threadId,()=>e.queueTaskInput(s.threadId,s.input,s.idempotencyKey))},"taskQueue"),taskInputUpdate:i(async n=>{let s=re.parse(n);return t("task/inputUpdate",s.threadId,()=>e.updateTaskInput(s.threadId,s.inputId,s.input))},"taskInputUpdate"),turnInterrupt:i(async n=>{let s=ae.parse(n);return t("turn/interrupt",s.threadId,async()=>({turn:await e.interruptTurn(s.threadId,s.reason)}))},"turnInterrupt"),approvalResolve:i(async n=>{let s=se.parse(n);return t("approval/resolve",null,async()=>({approval:await e.resolveApproval(s.approvalId,s.input)}))},"approvalResolve"),userInputResolve:i(async n=>{let s=k.parse(n);return t("userInput/resolve",s.threadId,async()=>(e.isTurnActive(s.threadId)&&await e.waitForTurnSettlement(s.threadId),{turn:await e.startTurn(s.threadId,s.input)}))},"userInputResolve"),profileWorkflows:i(()=>t("profile/workflows",null,()=>e.listProfileWorkflows()),"profileWorkflows"),harnessInspect:i(()=>t("harness/inspect",null,()=>e.inspectHarness()),"harnessInspect"),harnessProposalReview:i(n=>t("harness/proposalReview",null,()=>e.reviewHarnessProposal(n)),"harnessProposalReview"),harnessReview:i(n=>t("harness/review",null,()=>e.reviewHarness(n)),"harnessReview"),harnessAcceptEvaluationReview:i(n=>t("harness/acceptEvaluationReview",null,()=>e.acceptHarnessEvaluationReview(n)),"harnessAcceptEvaluationReview"),harnessMaterializeEvaluationTaskset:i(n=>t("harness/materializeEvaluationTaskset",null,()=>e.materializeHarnessEvaluationTaskset(n)),"harnessMaterializeEvaluationTaskset"),harnessRunEvaluationBaseline:i(n=>t("harness/runEvaluationBaseline",null,()=>e.runHarnessEvaluationBaseline(n)),"harnessRunEvaluationBaseline"),harnessValidate:i(()=>t("harness/validate",null,()=>e.validateHarness()),"harnessValidate"),harnessBackgroundReview:i(n=>t("harness/backgroundReview",null,()=>e.updateHarnessBackgroundReview(n)),"harnessBackgroundReview"),harnessDiff:i(n=>t("harness/diff",null,()=>e.diffHarness(n)),"harnessDiff"),harnessRollback:i(n=>t("harness/rollback",null,()=>e.rollbackHarness(n)),"harnessRollback"),refinerInspect:i(()=>t("refiner/inspect",null,()=>e.inspectRefiner()),"refinerInspect"),refinerUpdate:i(n=>t("refiner/update",null,()=>e.updateRefiner(n)),"refinerUpdate"),refinerActivate:i(n=>t("refiner/activate",null,()=>e.activateRefiner(n)),"refinerActivate"),refinerRollback:i(n=>t("refiner/rollback",null,()=>e.rollbackRefiner(n)),"refinerRollback"),subscribe:e.subscribeEvents&&e.eventNotification?n=>e.subscribeEvents(s=>n(e.eventNotification(s))):void 0}}i(L,"createAgentRuntimeService");var f=a.string().regex(/^[a-f0-9]{64}$/),et=a.object({harnessReleaseHash:f,instructionsHash:f,skillHashes:a.record(a.string(),f),agentAssetHashes:a.record(a.string(),f),toolCatalogHash:f,memoryRevision:a.number().int().nonnegative().nullable()}).strict(),ie=a.object({protocolVersion:a.string().trim().min(1),threadId:a.string().trim().min(1),turnId:a.string().trim().min(1),harnessReleaseHash:f,toolCatalogHash:f,context:a.record(a.string(),a.unknown()),pendingInteraction:a.record(a.string(),a.unknown()).nullable(),usage:a.record(a.string(),a.unknown())}).strict();function tt(e){return g(ie.parse(e))}i(tt,"checkpointHash");function nt(e){return[e.system,...e.harnessInstructions,...e.skillInstructions,...e.hostInstructions??[]].map(t=>t.trim()).filter(Boolean).join(`
|
|
4
|
+
|
|
5
|
+
`)}i(nt,"materializeAgentPrompt");function it(e){let t=new Set,r=[...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)),n=r.filter(o=>!o.unavailableReason).map(o=>({name:o.name,description:o.description,inputSchema:o.inputSchema})),s=r.map(o=>({name:o.name,displayLabel:o.displayLabel??o.name,placement:o.placement,available:!o.unavailableReason,unavailableReason:o.unavailableReason??null}));return{byName:new Map(r.map(o=>[o.name,o])),tools:r,modelTools:n,capabilities:s,hash:g({modelTools:n,capabilities:s})}}i(it,"createAgentToolCatalogProjection");async function ot(e,t){let r=e.byName.get(t.name);if(!r)throw new Error(`Unknown agent tool: ${t.name}.`);if(r.unavailableReason)throw new Error(`Agent tool ${t.name} is unavailable: ${r.unavailableReason}`);if(!r.execute)throw new Error(`Agent tool ${t.name} has no executor.`);let n=r.validateArguments?r.validateArguments(t.arguments):t.arguments;return r.execute(n,t.context)}i(ot,"executeProjectedAgentTool");var F=class{static{i(this,"TaskSignals")}#e=new Map;notify(t){for(let r of[...this.#e.get(t)??[]])r()}subscribe(t,r){let n=this.#e.get(t);return n||this.#e.set(t,n=new Set),n.add(r),()=>{n.delete(r),n.size===0&&this.#e.delete(t)}}async wait(t){let r=i(()=>{},"wake"),n=0,s=i(()=>{n+=1,r()},"changed"),o=[...new Set(t.taskIds)].map(u=>this.subscribe(u,s)),c=setTimeout(s,Math.max(0,t.deadline-Date.now()));t.signal.addEventListener("abort",s);try{for(;;){t.signal.throwIfAborted();let u=n,h=await t.read();if(h!==null)return h;if(Date.now()>=t.deadline)return null;n===u&&await new Promise(l=>{r=l,(n!==u||t.signal.aborted)&&l()})}}finally{clearTimeout(c),t.signal.removeEventListener("abort",s);for(let u of o)u()}}},J=class{static{i(this,"TaskSerialExecutor")}#e=new Map;async run(t,r){let s=(this.#e.get(t)??Promise.resolve()).then(r),o=s.then(()=>{},()=>{});this.#e.set(t,o);try{return await s}finally{this.#e.get(t)===o&&this.#e.delete(t)}}};function Tt(e){return oe({runtime:L(e.ports),close:e.close})}i(Tt,"createAppServer");function oe(e){let t=!1;return{runtime:e.runtime,close:i(async()=>{t||(t=!0,await e.close?.())},"close")}}i(oe,"attachAppServer");async function St(e){try{await D({host:e.appServer.runtime,readable:e.readable,writable:e.writable})}finally{await e.appServer.close()}}i(St,"runAppServerJsonl");import{randomBytes as ce}from"node:crypto";function jt(){return C()}i(jt,"appDataDir");function zt(e){return d(e).config}i(zt,"providersConfigPath");function Ht(e){return d(e).credentials}i(Ht,"providerSecretsConfigPath");function Nt(e){return d(e).key}i(Nt,"providerSecretsKeyPath");async function Ot(e){let t=d(e).token;return z(t,async()=>{let r=(await j(t))?.trim(),n=process.env.OPENPOND_APP_TOKEN||r||ce(32).toString("base64url");return n!==r&&await R(t,n),{token:n,tokenFile:t}})}i(Ot,"ensureCapabilityToken");export{me as a,pe as b,fe as c,g as d,ge as e,be as f,ke as g,X as h,He as i,E as j,Ee as k,ie as l,tt as m,nt as n,it as o,ot as p,F as q,J as r,Tt as s,St as t,jt as u,zt as v,Ht as w,Nt as x,Ot as y};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{b as Q,c as Z,
|
|
2
|
+
import{b as Q,c as Z,t as ee,y as oe}from"./chunk-KRNLKKN6.js";import{a as T,b as X,h as K}from"./chunk-ADMQIREX.js";import{n as te,p as re}from"./chunk-LLJI6QAY.js";import{$a as E,Ra as V,Sa as J,Ua as I,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-NNLI4OWY.js";import{b as i}from"./chunk-ES2ISFJC.js";import{c as N,d as C,f as k,h as R}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{promises as U}from"node:fs";import Ee from"node:os";import Ae from"node:path";import{createServer as Ie}from"node:http";import{randomBytes as Te}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(l,n){let g=R(e).config,w=null,p=null,d=null;try{w=await B(g),d=await E(e,{projectRoot:l,accountId:n}),l||(t=d)}catch(v){p=C(v,g)}let y=d??(l?null:t);return{path:g,text:w,rawRevision:L(w),issue:p,effective:y,usingLastValid:!d&&!!y,applies:"next_turn",recoverableRevisions:await H(e),clientState:p?null:await q(e)}}s(r,"status");async function o(l){let n=Oe.parse(l);return n.action==="validate"?{valid:!0,document:D(n.text,R(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 A={"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,l){super(l);this.status=r;this.code=o;this.name="HttpBodyError"}status;code;static{s(this,"HttpBodyError")}};function ae(e,t,r={}){for(let[l,n]of Object.entries(A))t.setHeader(l,n);let o=ce(e.headers.origin);return o?(t.setHeader("Vary",xe(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?Ce(r)?!0:new Set((t.allowedOrigins??[]).map(l=>l?se(l):null).filter(l=>!!l)).has(r):!1}s(Re,"isAllowedCorsOrigin");function h(e,t,r){e.writeHead(t,{"Content-Type":"application/json",...A}),e.end(JSON.stringify(r))}s(h,"sendJson");function Je(e,t,r){e.writeHead(t,{"Content-Type":"text/plain; charset=utf-8",...A}),e.end(r)}s(Je,"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",...A}),e.end(r)}s(Fe,"sendBinary");async function _(e,t={}){let r=t.maxBytes??Se,o=ce(e.headers["content-type"]),l=[],n=0;for await(let w of e){let p=ie.from(w);if(n+=p.byteLength,n>r)throw new x(413,"request_body_too_large",`JSON request body exceeds ${r} bytes.`);l.push(p)}let g=ie.concat(l).toString("utf8").trim();if(!g)return{};if(!Pe(o))throw new x(415,"unsupported_media_type","JSON request body requires Content-Type: application/json.");try{return JSON.parse(g)}catch{throw new x(400,"invalid_json","Request body is not valid JSON.")}}s(_,"readJson");function le(e,t,r){let o=e.headers.authorization;return(typeof o=="string"&&o.startsWith("Bearer ")?o.slice(7):null)===r}s(le,"hasAuth");function ce(e){return Array.isArray(e)?e[0]??null:e??null}s(ce,"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 Ce(e){let t=new URL(e);return t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="::1"||t.hostname==="[::1]"}s(Ce,"isLoopbackOrigin");function xe(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(xe,"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
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
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
5
|
<p id="action"></p><p>Migration backups and the source installation remain available. Execution services are stopped while recovery is open.</p>
|
|
@@ -20,7 +20,7 @@ for(const [id,action] of [['preview','preview'],['migrate','migrate'],['restart'
|
|
|
20
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
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
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
|
|
23
|
+
</script></html>`}s(pe,"startupRecoveryPage");var _e=i.strictObject({action:i.enum(["preview","migrate","restart","retry"]),sourceAppHome:i.string().optional(),sourceConfig:i.string().optional(),resolutions:V.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),l=o?await U.mkdtemp(Ae.join(Ee.tmpdir(),"openpond-recovery-")):e;return Q(l,async()=>{let{token:n,tokenFile:g}=await oe(l),w=ne(e),p=r.issue,d,y=new Promise(u=>{d=u}),v=Ie((u,f)=>{(async()=>{let a=new URL(u.url??"/","http://127.0.0.1");if(!ae(u,f).allowed){h(f,403,{error:"Origin not allowed"});return}if(u.method==="OPTIONS"){h(f,204,{});return}if(u.method==="GET"&&a.pathname==="/health"){h(f,200,{ok:!0,server:"openpond-app-server",version:X,recovery:!0});return}if(u.method==="GET"&&a.pathname==="/"){let m=Te(18).toString("base64");f.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Content-Security-Policy":`default-src 'none'; script-src 'nonce-${m}'; style-src 'nonce-${m}'; connect-src 'self'; base-uri 'none'; frame-ancestors 'none'`}),f.end(pe(m));return}if(!le(u,a,n)){h(f,401,{error:"Unauthorized"});return}let c=!o;if(u.method==="GET"&&a.pathname==="/v1/recovery"){h(f,200,{issue:p,configEditable:c,config:o?{path:R(e).config,text:null,rawRevision:"unavailable",issue:p,recoverableRevisions:[]}:await w.status(),migration:await J(e).catch(m=>({issue:C(m,e)}))});return}if(u.method==="POST"&&a.pathname==="/v1/configuration"&&c){h(f,200,await w.mutate(await _(u)));return}if(u.method==="POST"&&a.pathname==="/v1/recovery"){let m=_e.parse(await _(u));if(o&&m.action!=="retry"&&m.action!=="preview")throw r;if(m.action==="restart"){h(f,200,await F(e));return}if(m.action==="preview"||m.action==="migrate"){h(f,200,await I(e,{sourceAppHome:m.sourceAppHome,sourceConfig:m.sourceConfig,resolutions:m.resolutions,dryRun:m.action==="preview"}));return}await I(e),await E(e),h(f,200,{ready:!0}),d();return}h(f,503,{error:`${p.message} ${p.action}`,issue:p,recovery:!0})})().catch(a=>{p=C(a,e),h(f,422,{error:`${p.message} ${p.action}`,issue:p})})});await new Promise((u,f)=>{v.once("error",f),v.listen(t,"127.0.0.1",()=>{v.off("error",f),u()})});let O=v.address().port,P=`http://127.0.0.1:${O}`;return await Z(l,P,"startup-recovery"),{url:P,port:O,token:n,tokenFile:g,storePath:R(e).database,repaired:y,close:s(async()=>{v.closeIdleConnections(),await new Promise((u,f)=>v.close(a=>a?f(a):u())),o&&await U.rm(l,{recursive:!0,force:!0})},"close")}}).catch(async n=>{throw o&&await U.rm(l,{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,l=null,n=!1,g=!1,w=null,p,d=null,y=null,v=null,O=null,P=0,u=e[0];if(u&&!u.startsWith("-")){if(u==="serve"||u==="server")t="serve";else if(u==="app-server")t="app-server";else if(u==="web")t="web";else{if(u==="help")return{mode:t,host:r,port:o,webRoot:l,openBrowser:n,printAccessUrl:g,storeDir:w,help:!0};throw new Error(`Unknown command: ${u}`)}P=1}for(let a=P;a<e.length;a+=1){let c=e[a];if(c==="--help"||c==="-h")return{mode:t,host:r,port:o,webRoot:l,openBrowser:n,printAccessUrl:g,storeDir:w,help:!0};if(c==="--listen"){let m=K(S(e,a,c));r=m.host,o=ge(String(m.port),c),a+=1}else if(c==="--hostname"||c==="--host")r=S(e,a,c),a+=1;else if(c==="--port")o=ge(S(e,a,c),c),a+=1;else if(c==="--web-root")l=b.resolve(S(e,a,c)),a+=1;else if(c==="--source-browser-state")p=b.resolve(S(e,a,c)),a+=1;else{if(c==="--store-dir")throw new Error("--store-dir has been replaced by --home. Use --home <directory> or OPENPOND_HOME.");if(c==="--home")w=b.resolve(S(e,a,c)),a+=1;else if(c==="--profile-source-root")d=b.resolve(S(e,a,c)),a+=1;else if(c==="--profile-repository-id")y=S(e,a,c),a+=1;else if(c==="--profile-id")v=S(e,a,c),a+=1;else if(c==="--profile-revision")O=S(e,a,c),a+=1;else if(c==="--open-browser")n=!0;else if(c==="--print-access-url")g=!0;else throw new Error(`Unknown option: ${c}`)}}if(n&&g)throw new Error("--open-browser and --print-access-url cannot be used together.");if(t!=="web"&&(n||g))throw new Error("Browser options are only available in web mode.");let f=[d,y,v,O].filter(Boolean).length;if(f&&(f!==4||t!=="app-server"))throw new Error("Profile source flags require app-server mode and --profile-source-root, --profile-repository-id, --profile-id, and --profile-revision together.");return{mode:t,host:r,port:o,webRoot:l,openBrowser:n,printAccessUrl:g,storeDir:w,sourceBrowserState:p,...f?{profileSource:{repoPath:d,repositoryId:y,profileId:v,sourceRevision:O}}:{},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
24
|
openpond-app-server serve [--hostname HOST] [--port PORT]
|
|
25
25
|
openpond-app-server app-server [--home DIR]
|
|
26
26
|
openpond-app-server web [--hostname HOST] [--port PORT] [--web-root DIR]
|
|
@@ -31,6 +31,10 @@ Options:
|
|
|
31
31
|
--port PORT Bind port, or 0 for any free port (default ${17874})
|
|
32
32
|
--web-root DIR Directory containing the built web UI for web mode
|
|
33
33
|
--home DIR Local app-server state directory
|
|
34
|
+
--profile-source-root DIR Authorized Profile repository source for app-server
|
|
35
|
+
--profile-repository-id ID Source repository identity supplied by the host
|
|
36
|
+
--profile-id ID Profile within that source
|
|
37
|
+
--profile-revision REV Accepted immutable source revision
|
|
34
38
|
--open-browser Open the authenticated web URL in the system browser
|
|
35
39
|
--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,
|
|
40
|
+
`)}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,t.profileSource);return}t.storeDir&&(process.env.OPENPOND_HOME=t.storeDir);let o,l=t.port;for(;;)try{o=await e.createOpenPondServer({host:t.host,port:l,webRoot:r,sourceBrowserState:t.sourceBrowserState,...t.storeDir?{storeDir:t.storeDir}:{},httpEnabled:!0});break}catch(p){if(!ue(p))throw p;let d=await de(k({home:t.storeDir??void 0}),l,p);l=d.port,console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:"recovery",url:d.url,tokenFile:d.tokenFile,storePath:d.storePath})}`),console.error(`${p.issue.code}: ${p.issue.message} ${p.issue.action}`);let y=await me({baseUrl:d.url,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:d.token});for(let O of y.stdout)console.log(O);for(let O of y.stderr)console.error(O);let v=s(()=>{d.close().finally(()=>process.exit(0))},"close");process.once("SIGINT",v),process.once("SIGTERM",v);try{await d.repaired}finally{process.off("SIGINT",v),process.off("SIGTERM",v),await d.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 p=await me({baseUrl:n,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:o.token});for(let d of p.stderr)console.error(d);for(let d of p.stdout)console.log(d)}else console.log(`OpenPond API server: ${o.url}`);let g=!1,w=s(async()=>{g||(g=!0,await o.close(),process.exit(0))},"shutdown");process.on("SIGINT",()=>{w()}),process.on("SIGTERM",()=>{w()}),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,r.profileSource)}s(Ot,"runOpenPondAppServerCli");async function ye(e,t,r){t&&(process.env.OPENPOND_HOME=t);let o=await e({...t?{storeDir:t}:{},...r?{profileSource:r}:{}});await ee({appServer:o,readable:process.stdin,writable:process.stdout})}s(ye,"runAgentServer");export{ne as a,x as b,ae as c,h as d,Je as e,Fe as f,_ as g,le as h,me as i,bt as j,Ot as k};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{
|
|
2
|
+
import{Y as ge,a as ue,b as de,d as pe,e as K,f as N,g as fe,h as me,i as he,j as ye}from"./chunk-DY5RF2YE.js";import{d as R,e as U}from"./chunk-J2S7BOZU.js";import{K as ne,q as ce}from"./chunk-NNLI4OWY.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as He}from"node:crypto";var _e=new URL(U).hostname,Se=new URL(R).hostname,Ce=`${U}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===_e)return U;if(o===Se||o==="openpond.live"||o==="www.openpond.live")return U;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??U)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Ie(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Ie(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??Re(t)}a(Ie,"resolveOpChatApiBaseUrl");function W(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(W,"normalizeOpChatApiBaseUrl");function Re(e){return W(e)??Ce}a(Re,"opChatBaseFromPublicApiBase");function T(e){return e?.trim()?e.trim():"production"}a(T,"deriveEnvironment");function Y(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Y,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function v(e,n){return l(e)===l(n)}a(v,"baseUrlEquals");function z(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(z,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"selectorBaseUrl");function F(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(F,"selectorFromAccount");function g(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(g,"normalizeActiveProfile");function k(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?v(e.baseUrl,t):!l(e.baseUrl)}a(k,"accountMatchesSelector");function te(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?v(e.baseUrl,t):!l(e.baseUrl)}a(te,"profileMatchesSelector");function Ae(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?g({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):g(e.activeProfile);if(r){let s=o.find(c=>k(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Ae,"findActiveAccount");function Pe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=g(e.activeProfile)??(n[0]?F(n[0]):null);return oe(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:T(o.environment),isActive:t?k(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(Pe,"fallbackProfilesFromConfig");function oe(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:T(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(oe,"normalizeProfiles");function we(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(we,"profileAuthHealth");function Ne(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a(Ne,"normalizeHealth");function Oe(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Oe,"normalizeProfile");function Te(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(Te,"normalizeProducts");function Le(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Le,"isEmptyDefaultProfile");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:y,authFailed:A,error:f}=e,w=J(o,n,s),m=Oe(i??null),S=g(n.activeProfile),E=(o?F(o):null)??S,O=m?.handle||o?.handle||E?.handle||null,C=(E?t.find(p=>te(p,E)):null)??t.find(p=>p.isActive)??null,h=A?"auth_error":r?"signed_in":"signed_out",u=m?.name||m?.handle||m?.email||O||"Signed out",I=l(C?.baseUrl||o?.baseUrl||R),b=T(C?.environment||o?.environment),x=g(E)??(O?g({handle:O,baseUrl:C?.baseUrl??o?.baseUrl}):null),$=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:b,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(p=>!Le(p));return{state:h,activeProfile:x,label:u,email:m?.email??null,avatarUrl:m?.image??null,environment:b,baseUrl:I,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:m?.credits??null,profile:m,products:Te(i?.products),apiHealth:Ne(y??null,s),accounts:$.map(p=>{let H=l(p.baseUrl),le=c?.[z(p.handle,H)]??null,M=Oe(le?.response??null);return{handle:p.handle,baseUrl:H,apiBaseUrl:l(p.apiBaseUrl),chatApiBaseUrl:l(p.chatApiBaseUrl),environment:T(p.environment),isActive:x?te(p,x):!1,authHealth:le?.authFailed?"auth_error":we(p),displayLabel:M?.name||M?.handle||M?.email||p.handle,email:M?.email??null,avatarUrl:M?.image??null}}),error:f??y?.error??null}}a(X,"toAccountState");async function De(e){try{return oe(await me())}catch{return Pe(e)}}a(De,"loadProfiles");async function d(e,n){let t=await fe(),o=await De(t),r=Ae(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(d,"loadOpenPondAccountContext");async function $e(e){let n=l(e.baseUrl);return await he(e.handle,{baseUrl:n}),d(e.handle,n)}a($e,"switchOpenPondAccount");function L(e){return e instanceof Error?e.message:String(e)}a(L,"errorMessage");var Me=15e3;function ze(e){return e===ne?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(ze,"displayNameForHostedModel");function Fe(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:ze(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Fe,"normalizeHostedModel");async function je(){let e=await d();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await We({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Fe(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:L(n)}}}a(je,"loadOpenPondHostedModels");async function qe(){let e=await d();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},Me);try{return{catalog:await Ue({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:L(o)}}finally{clearTimeout(t)}}a(qe,"loadOpenPondProviderCatalog");async function*Ke(e){let n=await d();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*Ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||ne,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(Ke,"streamOpenPondHostedChatTurn");async function We(e){let n=re(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ae(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await se(t)}`);return await t.json()}a(We,"listOpChatModels");async function Ue(e){let n=re(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ae(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await se(t)}`);return ce.parse(await t.json())}a(Ue,"listOpChatProviderCatalog");async function*Ve(e){let n=re(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ae(e.token,"text/event-stream",e.requestId),body:JSON.stringify(Ze(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await se(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",y=null,A=Ge(t.headers),f=t.body.getReader(),w=new TextDecoder,m="",S=[],ee=a(()=>{if(S.length===0)return[];let h=S.join(`
|
|
3
3
|
`);if(S=[],h==="[DONE]")return r=!0,[];let u;try{u=JSON.parse(h)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(u&&typeof u=="object"&&"error"in u)throw new Error(`OpenPond OpChat request failed: ${ke(u)}`);i=u;let I=u&&typeof u=="object"?u:{},b=Array.isArray(I.choices)?I.choices:[],x=b[0]&&typeof b[0]=="object"?b[0]:{},q=x.delta&&typeof x.delta=="object"?x.delta:{},$=[],p=be(q.reasoning_content);p&&(c+=p,$.push({type:"reasoning_delta",text:p,raw:u}));let H=be(q.content);return H&&$.push({type:"text_delta",text:H,raw:u}),Qe(o,q.tool_calls),s=D(x.finish_reason)??s,y=tn(u)??y,$},"consumeEvent"),E=a(h=>{let u=h.endsWith("\r")?h.slice(0,-1):h;return u?u.startsWith(":")?[]:(u.startsWith("data:")&&S.push(u.slice(5).trimStart()),[]):ee()},"consumeLine");try{for(;;){let h=await f.read();if(h.done)break;m+=w.decode(h.value,{stream:!0});let u=m.split(`
|
|
4
4
|
`);m=u.pop()??"";for(let I of u)for(let b of E(I))yield b}if(m+=w.decode(),m)for(let h of E(m))yield h;for(let h of ee())yield h}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=Xe(o);O.length>0&&(yield{type:"tool_call_delta",toolCalls:O,raw:i}),O.length>0&&c&&(yield{type:"continuation",continuation:{kind:"chat_completions_reasoning",reasoningContent:c},raw:i});let C=Je(y,A);C&&(yield{type:"usage",usage:C,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(Ve,"streamOpChatChatCompletion");function Ge(e){let n=xe(e,["fireworks-prompt-tokens","prompt-tokens"]),t=xe(e,["fireworks-cached-prompt-tokens","cached-prompt-tokens"]);return t===null?null:{...n===null?{}:{prompt_tokens:n},cached_input_tokens:t,cache_telemetry_source:"provider_response_headers"}}a(Ge,"cacheUsageFromResponseHeaders");function xe(e,n){for(let t of n){let o=e.get(t);if(o===null||!/^\d+$/.test(o.trim()))continue;let r=Number(o);if(Number.isSafeInteger(r)&&r>=0)return r}return null}a(xe,"firstHeaderTokenCount");function Je(e,n){if(!n||Ye(e))return e;let t={...e??{},cached_input_tokens:n.cached_input_tokens,cache_telemetry_source:"provider_response_headers"};return B(e?.prompt_tokens)===null&&n.prompt_tokens!==void 0&&(t.prompt_tokens=n.prompt_tokens),t}a(Je,"usageWithResponseHeaderCache");function Ye(e){return e?B(e.cached_input_tokens)!==null||B(e.cache_read_input_tokens)!==null||B(e.cache_creation_input_tokens)!==null||B(e.prompt_cache_hit_tokens)!==null||B(e.prompt_cache_miss_tokens)!==null?!0:B(e.prompt_tokens_details?.cached_tokens)!==null||B(e.input_tokens_details?.cached_tokens)!==null:!1}a(Ye,"usageHasCacheTelemetry");function B(e){if(typeof e=="number"&&Number.isSafeInteger(e)&&e>=0)return e;if(typeof e!="string"||!/^\d+$/.test(e.trim()))return null;let n=Number(e);return Number.isSafeInteger(n)?n:null}a(B,"usageTokenCount");function Qe(e,n){Array.isArray(n)&&n.forEach((t,o)=>{if(!t||typeof t!="object")return;let r=t,s=typeof r.index=="number"&&Number.isInteger(r.index)?r.index:o,i=e.get(s)??{arguments:""};typeof r.id=="string"&&(i.id=r.id);let c=r.function&&typeof r.function=="object"?r.function:{};typeof c.name=="string"&&(i.name=`${i.name??""}${c.name}`),typeof c.arguments=="string"&&(i.arguments+=c.arguments),e.set(s,i)})}a(Qe,"mergeOpChatToolCallDeltas");function Xe(e){return[...e.entries()].sort(([n],[t])=>n-t).flatMap(([,n])=>n.id&&n.name?[{id:n.id,type:"function",function:{name:n.name,arguments:n.arguments}}]:[])}a(Xe,"completedOpChatToolCalls");function Ze(e,n){let t={model:e.model,messages:e.messages.map(nn),stream:n};return e.tools&&(t.tools=e.tools),e.toolChoice!==void 0&&(t.tool_choice=e.toolChoice),typeof e.maxTokens=="number"&&(t.max_tokens=e.maxTokens),typeof e.temperature=="number"&&(t.temperature=e.temperature),typeof e.topP=="number"&&(t.top_p=e.topP),Object.assign(t,en(e.reasoningEffort)),t}a(Ze,"buildOpChatBody");function en(e){return e?e==="low"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e==="xhigh"?"max":"high"}:{}}a(en,"opChatReasoningFields");function nn(e){let{continuation:n,images:t,...o}=e,r=t?.length?[...typeof e.content=="string"&&e.content.trim()?[{type:"text",text:e.content}]:[],...t.map(s=>({type:"image_url",image_url:{url:s.url,...s.detail?{detail:s.detail}:{}}}))]:e.content;return e.role==="assistant"&&n?.kind==="chat_completions_reasoning"?{...o,...r!==void 0?{content:r}:{},reasoning_content:n.reasoningContent}:{...o,...r!==void 0?{content:r}:{}}}a(nn,"opChatMessage");function re(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(re,"opChatEndpointUrl");function ae(e,n,t){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;return r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",n),r.set("x-openpond-client","openpond-app"),r.set("x-openpond-request-id",t||He()),r}a(ae,"opChatHeaders");async function se(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return ke(JSON.parse(n))}catch{return n}}a(se,"readOpChatError");function ke(e){if(!e||typeof e!="object")return String(e||"unknown_error");let n=e,t=n.error;if(t&&typeof t=="object"){let o=t;return[D(o.code),D(o.type),D(o.message)].filter(Boolean).join(": ")}return[D(n.error),D(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(ke,"errorMessageFromPayload");function tn(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(tn,"parseUsage");function D(e){return typeof e=="string"&&e.trim()?e:null}a(D,"stringValue");function be(e){return typeof e=="string"&&e.length>0?e:null}a(be,"streamTextValue");import{readFileSync as on}from"node:fs";var j;function rn(){if(j!==void 0)return j??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(on(e,"utf8"));j=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{j=null}return j??"openpond-code bundled"}a(rn,"getBundledRuntimeVersion");import{spawn as an}from"node:child_process";function Be(e,n=process.platform){return n==="darwin"?{command:"open",args:[e]}:n==="win32"?{command:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{command:"xdg-open",args:[e]}}a(Be,"resolveSystemBrowserCommand");async function sn(e,n={}){let t=n.command??Be(e),o=n.handoffTimeoutMs??1500;return new Promise(r=>{let s=!1,i=null,c=a(A=>{s||(s=!0,i&&clearTimeout(i),r(A))},"finish"),y=an(t.command,t.args,{detached:!1,shell:!1,stdio:"ignore",windowsHide:!0});y.once("error",A=>{let f=A.code;c({opened:!1,error:f?`browser launcher ${t.command} failed (${f})`:`browser launcher ${t.command} failed`})}),y.once("close",(A,f)=>{if(A===0){c({opened:!0});return}let w=f?`signal ${f}`:`code ${A??"unknown"}`;c({opened:!1,error:`browser launcher ${t.command} exited with ${w}`})}),i=setTimeout(()=>{y.unref(),c({opened:!0})},o),i.unref()})}a(sn,"openUrlWithSystemBrowser");function ln(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t;if(!t||!o)return null;let r=n.latestDeployment&&typeof n.latestDeployment=="object"?n.latestDeployment:null,s=ge.safeParse(n.sandboxActionRegistry);return{id:t,name:o,description:typeof n.description=="string"?n.description:null,visibility:typeof n.visibility=="string"?n.visibility:null,gitOwner:typeof n.gitOwner=="string"?n.gitOwner:null,gitRepo:typeof n.gitRepo=="string"?n.gitRepo:null,gitHost:typeof n.gitHost=="string"?n.gitHost:null,defaultBranch:typeof n.defaultBranch=="string"?n.defaultBranch:null,sandbox:n.sandbox===!0,sandboxActionRegistry:s.success?s.data:null,sandboxManifestHash:typeof n.sandboxManifestHash=="string"?n.sandboxManifestHash:null,sandboxManifestPath:typeof n.sandboxManifestPath=="string"?n.sandboxManifestPath:null,sandboxManifestSyncedAt:typeof n.sandboxManifestSyncedAt=="string"?n.sandboxManifestSyncedAt:n.sandboxManifestSyncedAt instanceof Date?n.sandboxManifestSyncedAt.toISOString():null,sandboxManifestError:typeof n.sandboxManifestError=="string"?n.sandboxManifestError:null,updatedAt:typeof n.updatedAt=="string"?n.updatedAt:null,latestDeployment:r?{id:typeof r.id=="string"?r.id:void 0,status:typeof r.status=="string"?r.status:void 0,deploymentDomain:typeof r.deploymentDomain=="string"?r.deploymentDomain:null,createdAt:typeof r.createdAt=="string"?r.createdAt:void 0,isProduction:typeof r.isProduction=="boolean"?r.isProduction:null,gitBranch:typeof r.gitBranch=="string"?r.gitBranch:null}:null,scheduleSummary:un(n.scheduleSummary)}}a(ln,"normalizeApp");function _(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(_,"normalizeDateString");function cn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t,r=typeof n.deploymentId=="string"?n.deploymentId:null;return!t||!o||!r?null:{id:t,name:o,description:typeof n.description=="string"?n.description:null,scheduleType:typeof n.scheduleType=="string"?n.scheduleType:"cron",scheduleExpression:typeof n.scheduleExpression=="string"?n.scheduleExpression:"",enabled:!!n.enabled,rawEnabled:typeof n.rawEnabled=="boolean"?n.rawEnabled:void 0,syncStatus:typeof n.syncStatus=="string"?n.syncStatus:null,syncError:typeof n.syncError=="string"?n.syncError:null,startAt:_(n.startAt),endAt:_(n.endAt),maxRuns:typeof n.maxRuns=="number"?n.maxRuns:null,executionCount:typeof n.executionCount=="number"?n.executionCount:null,lifecycleStatus:typeof n.lifecycleStatus=="string"?n.lifecycleStatus:null,lifecycleReason:typeof n.lifecycleReason=="string"?n.lifecycleReason:null,lastExecutionAt:_(n.lastExecutionAt),lastExecutionStatus:typeof n.lastExecutionStatus=="string"?n.lastExecutionStatus:null,lastRunNowAt:_(n.lastRunNowAt),lastRunNowStatus:typeof n.lastRunNowStatus=="string"?n.lastRunNowStatus:null,updatedAt:_(n.updatedAt)??new Date().toISOString(),deploymentId:r,isProduction:typeof n.isProduction=="boolean"?n.isProduction:void 0,payload:n.payload}}a(cn,"normalizeSchedule");function un(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(cn).filter(i=>!!i):[],o=typeof n.total=="number"?n.total:t.length,r=typeof n.active=="number"?n.active:t.filter(i=>i.enabled).length,s=typeof n.paused=="number"?n.paused:Math.max(0,o-r);return{total:o,active:r,paused:s,enabled:typeof n.enabled=="number"?n.enabled:r,disabled:typeof n.disabled=="number"?n.disabled:s,nextRunAt:_(n.nextRunAt),lastRunAt:_(n.lastRunAt),schedules:t,truncated:typeof n.truncated=="boolean"?n.truncated:void 0}}a(un,"normalizeScheduleSummary");async function dn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=z(o.handle,o.baseUrl),s=Y(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await K(G(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:L(i)}]}}));return Object.fromEntries(t)}a(dn,"loadAccountProfileLookups");async function Ee(e){let n=await dn(e),t=e.account?n[z(e.account.handle,e.account.baseUrl)]??null:null,o=t?.response??null,r=e.token&&t?.authFailed?t.error||"OpenPond account authentication failed.":null;return{account:X({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Ee,"loadOpenPondAccountStateForContext");async function pn(){return Ee(await d())}a(pn,"loadOpenPondAccountState");async function ve(e={}){let n=await d(),t=Ee(n);if(!n.token)return{...await t,apps:[],error:"No OpenPond API key or session token is configured."};let[o,r]=await Promise.allSettled([t,ue(n.apiBaseUrl,n.token,{handle:n.account?.handle,limit:e.limit??20,offset:e.offset??0,includeScheduled:e.includeScheduled??!0})]);if(o.status==="rejected")throw o.reason;return{account:o.value.account,apps:r.status==="fulfilled"?r.value.map(ln).filter(s=>!!s):[],error:r.status==="rejected"?L(r.reason):null}}a(ve,"loadOpenPondApps");async function fn(e){let n=await d();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await de(n.apiBaseUrl,n.token,e)}}a(fn,"createOpenPondRepoApp");import{createHash as mn}from"node:crypto";function hn(e){return`account-${mn("sha256").update(e).digest("hex").slice(0,8)}`}a(hn,"fallbackHandleForApiKey");function Z(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(Z,"normalizeDerivedHandle");async function yn(e,n){let t=Z(e.handle);if(t)return t;try{let r=(await K(n,e.apiKey)).account,s=Z(r.handle)??Z(r.email?.split("@")[0])??Z(r.id);if(s)return s}catch{}return hn(e.apiKey)}a(yn,"deriveHandleForApiKey");async function gn(e){let n=e.baseUrl??R,t=l(e.apiBaseUrl)??V(n)??U,o=l(e.chatApiBaseUrl),r=await yn(e,t);return await ye({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),d(r,n)}a(gn,"saveOpenPondAccount");function An(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&v(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its base URL.`);return-1}a(An,"findAccountIndex");async function Pn(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await N(t=>{let o=(t.accounts??[]).map(c=>({...c})),r=An(o,n,e.baseUrl);if(r===-1)throw new Error(`OpenPond account not found: ${n}`);let s=o[r],i=g(t.activeProfile);if(i&&k(s,i))throw new Error("Switch to another OpenPond account before removing the active account.");o.splice(r,1),t.accounts=o}),d()}a(Pn,"removeOpenPondAccount");async function wn(){let e;return await N(n=>{let t=g(n.activeProfile),o=(n.accounts??[]).map(s=>({...s})),r=t?o.findIndex(s=>k(s,t)):0;if(r<0||!o[r])throw new Error("No active OpenPond account to log out.");e={...o[r]},delete e.apiKey,delete e.session,o[r]=e,n.accounts=o}),d(e.handle,e.baseUrl)}a(wn,"signOutOpenPondAccount");function On(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&v(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its current base URL.`);return-1}a(On,"findAccountIndex");function ie(e,n,t){if(t===void 0)return;let o=l(t);if(o){e[n]=o;return}(t===null||t.trim()==="")&&delete e[n]}a(ie,"applyOptionalUrl");async function xn(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await N(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=On(r,n,e.currentBaseUrl);if(s===-1)throw new Error(`OpenPond account not found: ${n}`);let i=r[s];if(t={...i},ie(t,"baseUrl",e.baseUrl),ie(t,"apiBaseUrl",e.apiBaseUrl),ie(t,"chatApiBaseUrl",e.chatApiBaseUrl),e.environment===null?delete t.environment:typeof e.environment=="string"&&e.environment.trim()&&(t.environment=e.environment.trim()),r.findIndex((f,w)=>w!==s&&P(f.handle,t.handle)&&v(f.baseUrl,t.baseUrl))!==-1)throw new Error("Another OpenPond account already uses that handle and base URL.");let y=g(o.activeProfile),A=!!(y&&k(i,y));r[s]=t,o.accounts=r,o.activeProfile=e.setActive||A?F(t):o.activeProfile}),d(t.handle,t.baseUrl)}a(xn,"updateOpenPondAccountConfig");async function bn(e){let n=await d();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return pe(n.apiBaseUrl,n.token,e.appId)}a(bn,"getOpenPondAppEnvironment");function Un(e,n){let t="",o=a(r=>{r.startsWith(e)&&n(JSON.parse(r.slice(e.length)))},"processLine");return{push(r){for(t+=r;;){let s=kn(t);if(s<0)return;let i=t.slice(0,s).replace(/\r$/,""),c=t[s]==="\r"&&t[s+1]===`
|
|
5
5
|
`?2:1;t=t.slice(s+c),o(i)}},flush(){let r=t.trimEnd();t="",r&&o(r)}}}a(Un,"createReadyLineParser");function kn(e){let n=e.indexOf(`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
2
|
import{p as se,q as he}from"./chunk-HZP5U2AA.js";import{b as a}from"./chunk-ES2ISFJC.js";import{c as _,d as Rr,e as R,f as Mr,g as Dr,h as y,i as Ve,j as Ur,k as $t,l as Oe,m as jr,n as D,o as ge,p as K,r as B}from"./chunk-H7IWJN7L.js";import{a as l}from"./chunk-FTQLQJQV.js";import{randomUUID as Kt,createHash as So}from"node:crypto";import{promises as V,constants as Gt}from"node:fs";import $e from"node:path";var Ao="missing";function $(e){return e===null?Ao:So("sha256").update(e).digest("hex")}l($,"fileRevision");async function E(e){Oe($e.dirname(e));try{let t=await V.lstat(e);if(!t.isFile()||t.isSymbolicLink())throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Storage must be a regular file, not a symbolic link.",action:"Use a regular file in the OpenPond home."});return await V.readFile(e,"utf8")}catch(t){if(R(t))return null;throw t}}l(E,"readOptionalFile");async function U(e){if(Oe(e),await V.mkdir(e,{recursive:!0,mode:448}),(await V.lstat(e)).isSymbolicLink())throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Managed storage directories cannot be symbolic links.",action:"Select a regular local storage folder."});$t(e)}l(U,"privateDirectory");async function I(e,t,r={}){let n=$e.dirname(e);r.privateParent===!1?await V.mkdir(n,{recursive:!0,mode:448}):await U(n);let o=await V.lstat(e).catch(s=>{if(R(s))return null;throw s});if(o&&(!o.isFile()||o.isSymbolicLink()))throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Cannot replace a non-regular storage file.",action:"Use a regular file in the OpenPond home."});let i=$e.join(n,`.${$e.basename(e)}.${process.pid}.${Kt()}.tmp`);try{let s=await V.open(i,Gt.O_CREAT|Gt.O_EXCL|Gt.O_WRONLY,384);try{await s.writeFile(t),await s.sync()}finally{await s.close()}if(await V.rename(i,e),process.platform!=="win32"){let c=await V.open(n,"r");try{await c.sync()}finally{await c.close()}}}finally{await V.rm(i,{force:!0})}}l(I,"atomicWriteFile");async function x(e,t,r=1e4){let n=await we(e,r);try{return await t()}finally{await n()}}l(x,"withFileLock");async function vo(e,t){let r=`${e}.${process.pid}.${Kt()}.candidate`;try{let n=await V.open(r,"wx",384);try{await n.writeFile(t),await n.sync()}finally{await n.close()}await V.link(r,e)}finally{await V.rm(r,{force:!0})}}l(vo,"publishLock");async function we(e,t=1e4){await U($e.dirname(e));let r=`${e}.lock`,n={pid:process.pid,nonce:Kt()},o=JSON.stringify(n),i=Date.now()+t;for(;;)try{await vo(r,o);break}catch(s){if(s.code!=="EEXIST")throw s;let c=await E(r);if(c){let d;try{d=JSON.parse(c).pid}catch{}if(typeof d=="number"&&Number.isInteger(d)&&d>0&&Io(d)){let f=await we(`${r}.reclaim`,Math.max(0,i-Date.now()));try{await E(r)===c&&await V.unlink(r).catch(p=>{if(!R(p))throw p})}finally{await f()}}}if(Date.now()>=i)throw new _({code:"STORAGE_BUSY",path:e,message:"Another OpenPond process is updating this storage.",action:"Wait for that process to finish, then retry. Do not delete a live process lock."});await new Promise(d=>setTimeout(d,25))}return async()=>{await E(r)===o&&await V.unlink(r)}}l(we,"acquireFileLock");function Io(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}l(Io,"processIsDead");async function M(e,t){let r=await E(e);if(r===null)return t();try{return JSON.parse(r)}catch(n){throw new _({code:"INVALID_STORAGE_JSON",path:e,message:"A storage file contains invalid JSON.",action:"Restore a verified backup or correct the file, then retry."},{cause:n})}}l(M,"readJsonFile");async function cs(e,t,r){return x(e,async()=>{let n=await r(await M(e,t));return await I(e,`${JSON.stringify(n,null,2)}
|
|
3
|
-
`),n})}l(cs,"updateJsonFile");var lt=a.enum(["active","preview","planned","deprecated"]),Br=a.enum(["openpond-account","openpond-managed","codex-login","chatgpt-subscription","local-byok","hosted-byok","custom"]),xo=a.enum(["none","local_secret","env","openpond_account","codex_login","chatgpt_subscription","hosted"]),Fr=a.object({connected:a.boolean().default(!1),source:xo.default("none"),redacted:a.string().nullable().default(null),lastValidatedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null)}),Ht=a.object({hostedOpChat:a.boolean().default(!1),localRuntime:a.boolean().default(!0),localByok:a.boolean().default(!1),hostedByok:a.boolean().default(!1)}),Lo=a.enum(["hosted","provider","manual","none"]),zt=a.object({chatCompletions:a.boolean().default(!0),streaming:a.boolean().default(!0),modelDiscovery:Lo.default("none"),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),imageInput:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Co=a.enum(["hosted","provider","curated","manual","cache"]),Wt=a.object({streaming:a.boolean().default(!0),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),vision:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Oo=a.object({id:a.string().trim().min(1).max(300),providerId:se,displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().default(null),outputLimit:a.number().int().positive().nullable().default(null),lifecycleStatus:lt.default("active"),source:Co,capabilities:Wt.default(()=>Wt.parse({})),raw:a.record(a.string(),a.unknown()).optional()}),No=a.object({providerId:se,models:a.array(Oo).default([]),fetchedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null),source:a.enum(["none","hosted","provider","curated","manual"]).default("none")}),ko=a.object({enabled:a.boolean().default(!1),baseUrl:a.string().trim().min(1).max(2048).nullable().default(null),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).default([]),updatedAt:a.string().nullable().default(null)}),Po=a.object({enabled:a.boolean().optional(),baseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).optional()}),Ro=a.object({id:a.string().trim().min(1).max(300),displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().optional(),outputLimit:a.number().int().positive().nullable().optional(),lifecycleStatus:lt.optional(),capabilities:Wt.partial().optional()}),Mo=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht,capabilities:zt,defaultEnabled:a.boolean().optional(),defaultBaseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelCacheSource:a.enum(["none","hosted","provider","curated","manual"]),models:a.array(Ro).default([])}),ms=a.object({version:a.literal(1).default(1),generatedAt:a.string().datetime(),providers:a.array(Mo)}),Do=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht.default(()=>Ht.parse({})),capabilities:zt.default(()=>zt.parse({})),credential:Fr.default(()=>Fr.parse({})),enabled:a.boolean().default(!1),available:a.boolean().default(!1),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelIds:a.array(a.string().trim().min(1).max(300)).max(1e3).default([]),lastError:a.string().nullable().default(null)}),Jt=a.object({version:a.literal(1).default(1),providers:a.record(a.string(),ko).default({}),statuses:a.record(a.string(),Do).default({}),modelCaches:a.record(a.string(),No).default({}),updatedAt:a.string().nullable().default(null)}),hs=a.object({providers:a.record(a.string(),Po).optional()}),gs=a.object({source:a.enum(["local_secret","env"]).default("local_secret"),value:a.string().min(1).max(2e4).optional(),envVar:a.string().trim().min(1).max(160).optional()}).superRefine((e,t)=>{e.source==="env"&&!e.envVar&&t.addIssue({code:"custom",path:["envVar"],message:"envVar is required when provider credential source is env."}),e.source==="local_secret"&&!e.value&&t.addIssue({code:"custom",path:["value"],message:"value is required when provider credential source is local_secret."})}),ys=a.object({source:a.enum(["local_secret","env","chatgpt_subscription"]).optional()}),_s=a.object({modelId:a.string().trim().min(1).max(300).optional(),baseUrl:a.string().trim().min(1).max(2048).optional()}),bs=a.object({query:a.string().trim().max(200).optional(),refresh:a.boolean().default(!1),limit:a.number().int().positive().max(500).default(100)}),ws=a.object({query:a.string().trim().max(200).optional(),force:a.boolean().default(!1)});var Uo=["coding","research","review","test","docs","planner","summarizer"],vs=a.enum(Uo),Ke=a.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_-]*$/),dt=a.enum(["none","worktree","copy_on_write"]),ut=a.enum(["read_only","workspace_write","full_tools"]),pt=a.enum(["disabled","parent_scoped"]),qt=a.enum(["manual","balanced","proactive"]),jo=a.enum(["queued","running","completed","failed","cancelled","needs_resume"]),Fo=["subagent.started","subagent.reported","subagent.completed","subagent.progress","subagent.failed","subagent.cancelled","subagent.cleanup","subagent.workspace_retained","subagent.workspace_retention_expiring","subagent.archived","subagent.message"],Is=a.enum(Fo),Bo=[{id:"coding",label:"Coding",description:"Make scoped code changes and return patch, diff, and test evidence.",defaultToolPolicy:"full_tools"},{id:"research",label:"Research",description:"Inspect docs, code, web or repo context and return cited findings.",defaultToolPolicy:"full_tools"},{id:"review",label:"Review",description:"Inspect diffs or implementation plans and return ranked findings.",defaultToolPolicy:"full_tools"},{id:"test",label:"Test",description:"Run or design validation in isolation and return command evidence.",defaultToolPolicy:"full_tools"},{id:"docs",label:"Docs",description:"Update or draft project documentation in an isolated target.",defaultToolPolicy:"full_tools"},{id:"planner",label:"Planner",description:"Decompose a goal into child assignments and context packs.",defaultToolPolicy:"full_tools"},{id:"summarizer",label:"Summarizer",description:"Compact transcripts, child results, and goal state for parent context.",defaultToolPolicy:"full_tools"}],Xt=a.object({id:Ke,enabled:a.boolean().default(!0),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),maxConcurrentRuns:a.number().int().min(1).max(16).default(1),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped")}),Yt=a.object({enabled:a.boolean().default(!0),workspaceDefaultsVersion:a.literal(1).default(1),toolDefaultsVersion:a.literal(1).default(1),delegationMode:qt.default("manual"),defaultModelRef:he.nullable().default(null),roles:a.array(Xt).max(64).default(()=>$r()),maxConcurrentRuns:a.number().int().min(1).max(32).default(4),maxConcurrentRunsPerProvider:a.number().int().min(1).max(32).nullable().default(2),maxConcurrentRunsPerWorkspaceTarget:a.number().int().min(1).max(32).nullable().default(1)}).transform(e=>({...e,roles:Xo(e.roles)})),Ge=a.object({kind:a.enum(["session","turn","file","diff","artifact"]),id:a.string().trim().min(1).max(500),label:a.string().trim().min(1).max(500)}),Vo=a.object({kind:a.enum(["retain_with_parent"]).default("retain_with_parent"),messageRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),artifactRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),cleanupAfterExpiry:a.boolean().default(!1)}).default(()=>({kind:"retain_with_parent",messageRetentionDays:null,artifactRetentionDays:null,cleanupAfterExpiry:!1})),$o=a.enum(["orient","edit","validate","report"]),Go=a.object({command:a.string().trim().min(1).max(2e3),status:a.enum(["passed","failed","unknown"]).default("unknown"),exitCode:a.number().int().nullable().default(null),outputSummary:a.string().trim().max(5e3).nullable().default(null),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null)}),Ko=a.object({phase:$o.default("orient"),inspectedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),inspectedResources:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),repeatedSearches:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedReads:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedCommands:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),changedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),patchRefs:a.array(Ge).max(100).default([]),validationAttempts:a.array(Go).max(100).default([]),latestMeaningfulActivity:a.string().trim().max(5e3).nullable().default(null),currentBlocker:a.string().trim().max(5e3).nullable().default(null),updatedAt:a.string().nullable().default(null)}).default(()=>({phase:"orient",inspectedFiles:[],inspectedResources:[],repeatedSearches:[],repeatedReads:[],repeatedCommands:[],changedFiles:[],patchRefs:[],validationAttempts:[],latestMeaningfulActivity:null,currentBlocker:null,updatedAt:null})),Ho=a.object({summary:a.string().trim().max(2e4).default(""),findings:a.array(a.string().trim().min(1).max(5e3)).max(200).default([]),artifacts:a.array(Ge).max(200).default([]),patchRef:Ge.nullable().default(null),diffRef:Ge.nullable().default(null),testsRun:a.array(a.string().trim().min(1).max(2e3)).max(100).default([]),blockers:a.array(a.string().trim().min(1).max(5e3)).max(100).default([]),confidence:a.enum(["low","medium","high"]).nullable().default(null),followUpNeeded:a.boolean().default(!1)}),zo=a.object({id:a.string().trim().min(1).max(200),parentSessionId:a.string().trim().min(1).max(200),parentTurnId:a.string().trim().min(1).max(200).nullable().default(null),childSessionId:a.string().trim().min(1).max(200).nullable().default(null),roleId:Ke,objective:a.string().trim().min(1).max(5e4),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped"),status:jo.default("queued"),progress:Ko,evidenceRetention:Vo,createdAt:a.string(),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null),updatedAt:a.string().nullable().default(null),error:a.string().nullable().default(null),report:Ho.nullable().default(null),metadata:a.record(a.string(),a.unknown()).optional().default({})}),Vr=a.enum(["cleanup","archive","cleanup_and_archive"]),xs=a.object({action:Vr,reason:a.string().trim().min(1).max(2e3).nullable().default(null)}),Ls=a.object({action:Vr,run:zo,workspaceCleanup:a.record(a.string(),a.unknown()).nullable().default(null),sessionArchive:a.record(a.string(),a.unknown()).nullable().default(null),nextStep:a.string()}),Wo=a.enum(["question","answer","handoff","artifact","status","blocker"]),Jo=a.enum(["normal","interrupt"]),qo=a.object({status:a.enum(["pending","delivered","undelivered"]).default("pending"),deliveredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),acknowledgedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),deliveredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),acknowledgedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeRequestedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeQueuedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeDeferredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeParentReason:a.string().trim().min(1).max(1e3).nullable().default(null),wakeRequestedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeInterruptedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeDeferredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),reason:a.string().trim().min(1).max(1e3).nullable().default(null)}),Cs=a.object({id:a.string().trim().min(1).max(200),fromRunId:a.string().trim().min(1).max(200),toRunId:a.string().trim().min(1).max(200).nullable().default(null),toRole:Ke.nullable().default(null),kind:Wo,priority:Jo.optional(),body:a.string().trim().min(1).max(5e4),refs:a.array(Ge).max(100).default([]),delivery:qo.optional(),createdAt:a.string()});function $r(){return Bo.map(e=>Xt.parse({id:e.id,toolPolicy:e.defaultToolPolicy}))}l($r,"defaultSubagentRoleSettings");function Xo(e){let t=$r(),r=new Map(t.map(o=>[o.id,o])),n=[];for(let o of e??[]){let i=Xt.parse(o);r.has(i.id)?r.set(i.id,i):n.push(i)}return[...t.map(o=>r.get(o.id)??o),...n]}l(Xo,"normalizeSubagentRoleSettings");var zr="gpt-5.6-sol",Yo="openpond-chat",Ms="accounts/fireworks/models/deepseek-v4-flash",Qo="openpond",Zo=Yo,ea="default",Zt="high",ta="ask",Wr=se,er=a.enum(["default","auto-review","full-access"]),tr=a.enum(["ask","full-access","disabled"]),rr=a.enum(["low","medium","high","xhigh"]),Ds=a.enum(["sandbox_app","local_project","sandbox","sandbox_template"]),Us=a.enum(["openpond"]),ra=a.enum(["provider_usage","provider_tokenizer","model_family","heuristic"]),js=a.object({provider:Wr,model:a.string().min(1),usedTokens:a.number().int().nonnegative(),maxContextTokens:a.number().int().positive(),usableContextTokens:a.number().int().positive(),percentFull:a.number().min(0).max(100),source:ra,updatedAtEventId:a.string().nullable()}),Gr=a.object({pinned:a.boolean().default(!1),projects:a.boolean().default(!1),cloudProjects:a.boolean().default(!1),chats:a.boolean().default(!1),savedForLater:a.boolean().default(!0)}),na=a.enum(["auto","off"]),oa=a.enum(["typescript","python","rust"]),Jr=a.enum(["auto","disabled","custom"]),pe=a.object({mode:Jr.default("auto"),customCommand:a.string().trim().max(4096).default("")}),Qt=a.object({languageServers:na.default("auto"),diagnosticsWhileEditing:a.boolean().default(!0),checkOnSave:a.boolean().default(!0),languages:a.object({typescript:pe.optional().default(()=>pe.parse({})),python:pe.optional().default(()=>pe.parse({})),rust:pe.optional().default(()=>pe.parse({}))}).optional().default(()=>({typescript:pe.parse({}),python:pe.parse({}),rust:pe.parse({})}))}),aa=a.object({language:oa,label:a.string(),mode:Jr,status:a.enum(["found","missing","disabled","error"]),command:a.string().nullable(),message:a.string().nullable()}),Fs=a.object({settings:Qt,languages:a.array(aa),updatedAt:a.string()}),ia=a.object({id:a.string(),root:a.string(),status:a.enum(["starting","connected","unavailable","error"]),message:a.string().nullable().optional().default(null),openedDocuments:a.number().int().nonnegative(),pendingRequests:a.number().int().nonnegative(),lastUsedAt:a.string(),stderrTail:a.string()}),Bs=a.object({clients:a.array(ia),maxClients:a.number().int().positive(),idleTimeoutMs:a.number().int().positive(),updatedAt:a.string()}),Kr=a.object({autoEnabled:a.boolean().default(!0),triggerPercent:a.number().int().min(50).max(95).default(85),summaryModel:a.enum(["same_model"]).default("same_model")}),Hr=a.object({defaultModelRef:he.nullable().default(null),creationMode:a.enum(["defaults","customize"]).default("customize"),autoApproveEvidence:a.boolean().default(!1)}),Z=a.object({defaultChatProvider:Wr.default(Qo),defaultChatModel:a.string().min(1).default(Zo),defaultChatModelRef:he.nullable().optional(),subagents:Yt.optional().default(()=>Yt.parse({})),codexPermissionMode:er.default(ea),codexReasoningEffort:rr.default(Zt),openPondCommandAccessMode:tr.default(ta),defaultBranchPrefix:a.string().trim().max(48).default("feat/"),defaultNewProjectDirectory:a.string().trim().max(4096).default(""),defaultTeamId:a.string().trim().max(191).nullable().default(null),advancedWorkspaceControls:a.boolean().default(!1),steerActiveResponses:a.boolean().default(!0),contextCompaction:Kr.optional().default(()=>Kr.parse({})),training:Hr.optional().default(()=>Hr.parse({})),sidebarWidth:a.number().int().min(244).max(560).default(332),diffPanelWidth:a.number().int().min(320).max(2400).default(560),sidebarSectionsCollapsed:Gr.optional().default(()=>Gr.parse({})),editor:Qt.optional().default(()=>Qt.parse({}))});var sa="default",He=[{id:"default",name:"Balanced",source:"built_in",description:"Clear, useful, and concise.",content:`You are OpenPond Chat, a clear and useful AI assistant.
|
|
3
|
+
`),n})}l(cs,"updateJsonFile");var lt=a.enum(["active","preview","planned","deprecated"]),Br=a.enum(["openpond-account","openpond-managed","codex-login","chatgpt-subscription","local-byok","hosted-byok","custom"]),xo=a.enum(["none","local_secret","env","openpond_account","codex_login","chatgpt_subscription","hosted"]),Fr=a.object({connected:a.boolean().default(!1),source:xo.default("none"),redacted:a.string().nullable().default(null),lastValidatedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null)}),Ht=a.object({hostedOpChat:a.boolean().default(!1),localRuntime:a.boolean().default(!0),localByok:a.boolean().default(!1),hostedByok:a.boolean().default(!1)}),Lo=a.enum(["hosted","provider","manual","none"]),zt=a.object({chatCompletions:a.boolean().default(!0),streaming:a.boolean().default(!0),modelDiscovery:Lo.default("none"),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),imageInput:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Co=a.enum(["hosted","provider","curated","manual","cache"]),Wt=a.object({streaming:a.boolean().default(!0),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),vision:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Oo=a.object({id:a.string().trim().min(1).max(300),providerId:se,displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().default(null),outputLimit:a.number().int().positive().nullable().default(null),lifecycleStatus:lt.default("active"),source:Co,capabilities:Wt.default(()=>Wt.parse({})),raw:a.record(a.string(),a.unknown()).optional()}),No=a.object({providerId:se,models:a.array(Oo).default([]),fetchedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null),source:a.enum(["none","hosted","provider","curated","manual"]).default("none")}),ko=a.object({enabled:a.boolean().default(!1),baseUrl:a.string().trim().min(1).max(2048).nullable().default(null),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).default([]),updatedAt:a.string().nullable().default(null)}),Po=a.object({enabled:a.boolean().optional(),baseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).optional()}),Ro=a.object({id:a.string().trim().min(1).max(300),displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().optional(),outputLimit:a.number().int().positive().nullable().optional(),lifecycleStatus:lt.optional(),capabilities:Wt.partial().optional()}),Mo=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht,capabilities:zt,defaultEnabled:a.boolean().optional(),defaultBaseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelCacheSource:a.enum(["none","hosted","provider","curated","manual"]),models:a.array(Ro).default([])}),ms=a.object({version:a.literal(1).default(1),generatedAt:a.string().datetime(),providers:a.array(Mo)}),Do=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht.default(()=>Ht.parse({})),capabilities:zt.default(()=>zt.parse({})),credential:Fr.default(()=>Fr.parse({})),enabled:a.boolean().default(!1),available:a.boolean().default(!1),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelIds:a.array(a.string().trim().min(1).max(300)).max(1e3).default([]),lastError:a.string().nullable().default(null)}),Jt=a.object({version:a.literal(1).default(1),providers:a.record(a.string(),ko).default({}),statuses:a.record(a.string(),Do).default({}),modelCaches:a.record(a.string(),No).default({}),updatedAt:a.string().nullable().default(null)}),hs=a.object({providers:a.record(a.string(),Po).optional()}),gs=a.object({source:a.enum(["local_secret","env"]).default("local_secret"),value:a.string().min(1).max(2e4).optional(),envVar:a.string().trim().min(1).max(160).optional()}).superRefine((e,t)=>{e.source==="env"&&!e.envVar&&t.addIssue({code:"custom",path:["envVar"],message:"envVar is required when provider credential source is env."}),e.source==="local_secret"&&!e.value&&t.addIssue({code:"custom",path:["value"],message:"value is required when provider credential source is local_secret."})}),ys=a.object({source:a.enum(["local_secret","env","chatgpt_subscription"]).optional()}),_s=a.object({modelId:a.string().trim().min(1).max(300).optional(),baseUrl:a.string().trim().min(1).max(2048).optional()}),bs=a.object({query:a.string().trim().max(200).optional(),refresh:a.boolean().default(!1),limit:a.number().int().positive().max(500).default(100)}),ws=a.object({query:a.string().trim().max(200).optional(),force:a.boolean().default(!1)});var Uo=["coding","research","review","test","docs","planner","summarizer"],vs=a.enum(Uo),Ke=a.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_-]*$/),dt=a.enum(["none","worktree","copy_on_write"]),ut=a.enum(["read_only","workspace_write","full_tools"]),pt=a.enum(["disabled","parent_scoped"]),qt=a.enum(["manual","balanced","proactive"]),jo=a.enum(["queued","running","completed","failed","cancelled","needs_resume"]),Fo=["subagent.started","subagent.reported","subagent.completed","subagent.progress","subagent.failed","subagent.cancelled","subagent.cleanup","subagent.workspace_retained","subagent.workspace_retention_expiring","subagent.archived","subagent.message"],Is=a.enum(Fo),Bo=[{id:"coding",label:"Coding",description:"Make scoped code changes and return patch, diff, and test evidence.",defaultToolPolicy:"full_tools"},{id:"research",label:"Research",description:"Inspect docs, code, web or repo context and return cited findings.",defaultToolPolicy:"full_tools"},{id:"review",label:"Review",description:"Inspect diffs or implementation plans and return ranked findings.",defaultToolPolicy:"full_tools"},{id:"test",label:"Test",description:"Run or design validation in isolation and return command evidence.",defaultToolPolicy:"full_tools"},{id:"docs",label:"Docs",description:"Update or draft project documentation in an isolated target.",defaultToolPolicy:"full_tools"},{id:"planner",label:"Planner",description:"Decompose a goal into child assignments and context packs.",defaultToolPolicy:"full_tools"},{id:"summarizer",label:"Summarizer",description:"Compact transcripts, child results, and goal state for parent context.",defaultToolPolicy:"full_tools"}],Xt=a.object({id:Ke,enabled:a.boolean().default(!0),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),maxConcurrentRuns:a.number().int().min(1).max(16).default(1),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped")}),Yt=a.object({enabled:a.boolean().default(!0),workspaceDefaultsVersion:a.literal(1).default(1),toolDefaultsVersion:a.literal(1).default(1),delegationMode:qt.default("manual"),defaultModelRef:he.nullable().default(null),roles:a.array(Xt).max(64).default(()=>$r()),maxConcurrentRuns:a.number().int().min(1).max(32).default(4),maxConcurrentRunsPerProvider:a.number().int().min(1).max(32).nullable().default(2),maxConcurrentRunsPerWorkspaceTarget:a.number().int().min(1).max(32).nullable().default(1)}).transform(e=>({...e,roles:Xo(e.roles)})),Ge=a.object({kind:a.enum(["session","turn","file","diff","artifact"]),id:a.string().trim().min(1).max(500),label:a.string().trim().min(1).max(500)}),Vo=a.object({kind:a.enum(["retain_with_parent"]).default("retain_with_parent"),messageRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),artifactRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),cleanupAfterExpiry:a.boolean().default(!1)}).default(()=>({kind:"retain_with_parent",messageRetentionDays:null,artifactRetentionDays:null,cleanupAfterExpiry:!1})),$o=a.enum(["orient","edit","validate","report"]),Go=a.object({command:a.string().trim().min(1).max(2e3),status:a.enum(["passed","failed","unknown"]).default("unknown"),exitCode:a.number().int().nullable().default(null),outputSummary:a.string().trim().max(5e3).nullable().default(null),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null)}),Ko=a.object({phase:$o.default("orient"),inspectedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),inspectedResources:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),repeatedSearches:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedReads:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedCommands:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),changedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),patchRefs:a.array(Ge).max(100).default([]),validationAttempts:a.array(Go).max(100).default([]),latestMeaningfulActivity:a.string().trim().max(5e3).nullable().default(null),currentBlocker:a.string().trim().max(5e3).nullable().default(null),updatedAt:a.string().nullable().default(null)}).default(()=>({phase:"orient",inspectedFiles:[],inspectedResources:[],repeatedSearches:[],repeatedReads:[],repeatedCommands:[],changedFiles:[],patchRefs:[],validationAttempts:[],latestMeaningfulActivity:null,currentBlocker:null,updatedAt:null})),Ho=a.object({summary:a.string().trim().max(2e4).default(""),findings:a.array(a.string().trim().min(1).max(5e3)).max(200).default([]),artifacts:a.array(Ge).max(200).default([]),patchRef:Ge.nullable().default(null),diffRef:Ge.nullable().default(null),testsRun:a.array(a.string().trim().min(1).max(2e3)).max(100).default([]),blockers:a.array(a.string().trim().min(1).max(5e3)).max(100).default([]),confidence:a.enum(["low","medium","high"]).nullable().default(null),followUpNeeded:a.boolean().default(!1)}),zo=a.object({id:a.string().trim().min(1).max(200),parentSessionId:a.string().trim().min(1).max(200),parentTurnId:a.string().trim().min(1).max(200).nullable().default(null),childSessionId:a.string().trim().min(1).max(200).nullable().default(null),roleId:Ke,objective:a.string().trim().min(1).max(5e4),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped"),status:jo.default("queued"),progress:Ko,evidenceRetention:Vo,createdAt:a.string(),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null),updatedAt:a.string().nullable().default(null),error:a.string().nullable().default(null),report:Ho.nullable().default(null),metadata:a.record(a.string(),a.unknown()).optional().default({})}),Vr=a.enum(["cleanup","archive","cleanup_and_archive"]),xs=a.object({action:Vr,reason:a.string().trim().min(1).max(2e3).nullable().default(null)}),Ls=a.object({action:Vr,run:zo,workspaceCleanup:a.record(a.string(),a.unknown()).nullable().default(null),sessionArchive:a.record(a.string(),a.unknown()).nullable().default(null),nextStep:a.string()}),Wo=a.enum(["question","answer","handoff","artifact","status","blocker"]),Jo=a.enum(["normal","interrupt"]),qo=a.object({inputIds:a.array(a.string()).default([]),status:a.enum(["pending","delivered","undelivered"]).default("pending"),deliveredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),acknowledgedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),deliveredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),acknowledgedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeRequestedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeQueuedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeDeferredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeParentReason:a.string().trim().min(1).max(1e3).nullable().default(null),wakeRequestedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeInterruptedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeDeferredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),reason:a.string().trim().min(1).max(1e3).nullable().default(null)}),Cs=a.object({id:a.string().trim().min(1).max(200),fromRunId:a.string().trim().min(1).max(200),toRunId:a.string().trim().min(1).max(200).nullable().default(null),toRole:Ke.nullable().default(null),kind:Wo,priority:Jo.optional(),body:a.string().trim().min(1).max(5e4),refs:a.array(Ge).max(100).default([]),delivery:qo.optional(),createdAt:a.string()});function $r(){return Bo.map(e=>Xt.parse({id:e.id,toolPolicy:e.defaultToolPolicy}))}l($r,"defaultSubagentRoleSettings");function Xo(e){let t=$r(),r=new Map(t.map(o=>[o.id,o])),n=[];for(let o of e??[]){let i=Xt.parse(o);r.has(i.id)?r.set(i.id,i):n.push(i)}return[...t.map(o=>r.get(o.id)??o),...n]}l(Xo,"normalizeSubagentRoleSettings");var zr="gpt-5.6-sol",Yo="openpond-chat",Ms="accounts/fireworks/models/deepseek-v4-flash",Qo="openpond",Zo=Yo,ea="default",Zt="high",ta="ask",Wr=se,er=a.enum(["default","auto-review","full-access"]),tr=a.enum(["ask","full-access","disabled"]),rr=a.enum(["low","medium","high","xhigh"]),Ds=a.enum(["sandbox_app","local_project","sandbox","sandbox_template"]),Us=a.enum(["openpond"]),ra=a.enum(["provider_usage","provider_tokenizer","model_family","heuristic"]),js=a.object({provider:Wr,model:a.string().min(1),usedTokens:a.number().int().nonnegative(),maxContextTokens:a.number().int().positive(),usableContextTokens:a.number().int().positive(),percentFull:a.number().min(0).max(100),source:ra,updatedAtEventId:a.string().nullable()}),Gr=a.object({pinned:a.boolean().default(!1),projects:a.boolean().default(!1),cloudProjects:a.boolean().default(!1),chats:a.boolean().default(!1),savedForLater:a.boolean().default(!0)}),na=a.enum(["auto","off"]),oa=a.enum(["typescript","python","rust"]),Jr=a.enum(["auto","disabled","custom"]),pe=a.object({mode:Jr.default("auto"),customCommand:a.string().trim().max(4096).default("")}),Qt=a.object({languageServers:na.default("auto"),diagnosticsWhileEditing:a.boolean().default(!0),checkOnSave:a.boolean().default(!0),languages:a.object({typescript:pe.optional().default(()=>pe.parse({})),python:pe.optional().default(()=>pe.parse({})),rust:pe.optional().default(()=>pe.parse({}))}).optional().default(()=>({typescript:pe.parse({}),python:pe.parse({}),rust:pe.parse({})}))}),aa=a.object({language:oa,label:a.string(),mode:Jr,status:a.enum(["found","missing","disabled","error"]),command:a.string().nullable(),message:a.string().nullable()}),Fs=a.object({settings:Qt,languages:a.array(aa),updatedAt:a.string()}),ia=a.object({id:a.string(),root:a.string(),status:a.enum(["starting","connected","unavailable","error"]),message:a.string().nullable().optional().default(null),openedDocuments:a.number().int().nonnegative(),pendingRequests:a.number().int().nonnegative(),lastUsedAt:a.string(),stderrTail:a.string()}),Bs=a.object({clients:a.array(ia),maxClients:a.number().int().positive(),idleTimeoutMs:a.number().int().positive(),updatedAt:a.string()}),Kr=a.object({autoEnabled:a.boolean().default(!0),triggerPercent:a.number().int().min(50).max(95).default(85),summaryModel:a.enum(["same_model"]).default("same_model")}),Hr=a.object({defaultModelRef:he.nullable().default(null),creationMode:a.enum(["defaults","customize"]).default("customize"),autoApproveEvidence:a.boolean().default(!1)}),Z=a.object({defaultChatProvider:Wr.default(Qo),defaultChatModel:a.string().min(1).default(Zo),defaultChatModelRef:he.nullable().optional(),subagents:Yt.optional().default(()=>Yt.parse({})),codexPermissionMode:er.default(ea),codexReasoningEffort:rr.default(Zt),openPondCommandAccessMode:tr.default(ta),defaultBranchPrefix:a.string().trim().max(48).default("feat/"),defaultNewProjectDirectory:a.string().trim().max(4096).default(""),defaultTeamId:a.string().trim().max(191).nullable().default(null),advancedWorkspaceControls:a.boolean().default(!1),steerActiveResponses:a.boolean().default(!0),contextCompaction:Kr.optional().default(()=>Kr.parse({})),training:Hr.optional().default(()=>Hr.parse({})),sidebarWidth:a.number().int().min(244).max(560).default(332),diffPanelWidth:a.number().int().min(320).max(2400).default(560),sidebarSectionsCollapsed:Gr.optional().default(()=>Gr.parse({})),editor:Qt.optional().default(()=>Qt.parse({}))});var sa="default",He=[{id:"default",name:"Balanced",source:"built_in",description:"Clear, useful, and concise.",content:`You are OpenPond Chat, a clear and useful AI assistant.
|
|
4
4
|
Be concise, accurate, and direct.
|
|
5
5
|
Do not use emojis.
|
|
6
6
|
Ask only when missing information would materially change the answer.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
|
|
2
|
-
import{$a as se,Ab as ke,Bb as Ie,Cb as F,Ib as ye,Kb as B,La as X,Lb as Ae,Na as Y,Nb as Le,Pa as Z,Qa as V,Qb as Ce,Ra as ee,Rb as je,Sa as ie,Sb as Ee,Ta as te,Tb as N,Va as ne,Vb as Te,Wa as re,Wb as De,Xa as ae,Za as oe,a as m,bb as ce,db as y,eb as u,fb as de,gb as me,hb as le,ib as ue,jb as pe,lb as ge,mb as he,nb as fe,pb as be,qb as xe,rb as ve,sb as we,tb as P,ub as Se,vb as Re,wa as H,wb as _,xb as I,zb as _e}from"./chunk-HEUO2XEH.js";import{a,b as E,c as l,e as C,l as k}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as c}from"./chunk-FTQLQJQV.js";var M=e.discriminatedUnion("kind",[e.object({kind:e.literal("manual"),identity:a}).strict(),e.object({kind:e.literal("schedule"),scheduledAt:l}).strict(),e.object({kind:e.literal("approved_count"),checkedAt:l}).strict()]),$=e.object({schemaVersion:e.literal("openpond.learningChain.v1"),id:a,revision:e.number().int().positive(),modelProjectId:a,activeIterationId:a.nullable(),acceptedParent:P.nullable().optional(),latestIterationId:a,lastReservedAt:l.nullable(),updatedAt:l}).strict(),G=e.object({eligible:e.number().int().nonnegative(),awaitingReview:e.number().int().nonnegative(),excluded:e.number().int().nonnegative(),consumed:e.number().int().nonnegative()}).strict(),qe=e.object({schemaVersion:e.literal("openpond.learningConsumption.v1"),id:a,revision:e.literal(1),chainId:a,iterationId:a,evidence:u,decision:u,reservedAt:l}).strict(),Pe=e.object({schemaVersion:e.literal("openpond.learningIterationReservation.v1"),id:a,revision:e.number().int().positive(),chainId:a,iterationId:a,policy:u,trigger:M,requestHash:E,outcome:e.enum(["reserved","waiting_for_data","waiting_for_review"]),counts:G,budget:e.object({maximumSpendUsd:e.number().nonnegative(),reservedSpendUsd:e.number().nonnegative(),settledSpendUsd:e.number().nonnegative(),settledAt:l.nullable()}).strict(),createdAt:l,updatedAt:l}).strict();var v=e.object({operationId:a}),Xe=v.extend({action:e.literal("import_intake"),format:Te,files:e.array(De).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(),O=v.extend({action:e.literal("publish"),expectedRevision:e.number().int().nonnegative(),finalizeDraft:N.optional()}),Oe=e.discriminatedUnion("kind",[O.extend({kind:e.literal("asset"),content:ke}).strict(),O.extend({kind:e.literal("definition"),content:de}).strict(),O.extend({kind:e.literal("reward"),content:Z}).strict(),O.extend({kind:e.literal("binding"),content:ee}).strict(),O.extend({kind:e.literal("source"),content:le}).strict(),O.extend({kind:e.literal("policy"),content:ve}).strict()]),Ye=v.extend({action:e.literal("publish_resources"),finalizeDraft:N.optional(),resources:e.array(e.union(Oe.options.map(t=>t.omit({operationId:!0,action:!0,finalizeDraft:!0})))).min(1).max(20)}).strict(),Ze=v.extend({action:e.literal("submit_example"),example:pe}).strict(),ei=v.extend({action:e.literal("submit_feedback"),feedback:he}).strict(),ii=v.extend({action:e.literal("apply_correction"),feedbackId:a,evidence:u}).strict(),ti=v.extend({action:e.literal("resolve_feedback"),feedbackId:a,expectedRevision:e.number().int().positive(),disposition:e.enum(["applied","rejected","superseded"]),decision:u.nullable(),note:e.string().max(2e4)}).strict(),ni=v.extend({action:e.literal("queue_grade"),evidence:u,target:e.enum(["observed","proposed_target"]),proposedTarget:y.nullable(),timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),ri=v.extend({action:e.literal("review"),evidence:u,expectedRevision:e.number().int().nonnegative(),disposition:e.enum(["approved","rejected","pending"]),targetApproval:e.enum(["approved","rejected","pending","not_required"]),approvedTarget:y.nullable(),observedGradeId:a.nullable(),targetGradeId:a.nullable(),note:e.string().max(2e4)}).strict(),ai=v.extend({action:e.literal("seal_batch"),batchId:a,taskDefinition:u,purpose:e.enum(["supervised_training","reward_training","evaluation"]),evidence:e.array(u).min(1).max(1e4),decisions:e.array(u).min(1).max(1e4)}).strict(),oi=v.extend({action:e.literal("cancel_grade"),gradeId:a,expectedRevision:e.number().int().positive()}).strict(),si=v.extend({action:e.literal("save_draft"),expectedRevision:e.number().int().nonnegative(),draft:je}).strict(),ci=v.extend({action:e.literal("archive_draft"),draft:u}).strict(),di=v.extend({action:e.literal("queue_reward_check"),draft:u,timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),mi=v.extend({action:e.literal("cancel_reward_check"),checkId:a,expectedRevision:e.number().int().positive()}).strict(),li=v.extend({action:e.literal("publish_checked_reward"),draft:u,checkId:a,checkRevision:e.number().int().positive()}).strict(),ui=v.extend({action:e.literal("reserve_iteration"),policy:u,trigger:M}).strict(),pi=v.extend({action:e.literal("cancel_iteration_reservation"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),gi=v.extend({action:e.literal("cancel_iteration"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),hi=v.extend({action:e.literal("retry_iteration_dispatch"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),He=e.union([li,Xe,gi,hi,pi,ui,di,mi,si,ci,Oe,Ye,Ze,ei,ii,ti,ni,ri,ai,oi]);var fi=e.object({provider:a,protocol:a,payload:y}).strict(),Fe=e.object({schemaVersion:e.literal("openpond.learningIterationDispatch.v1"),id:a,revision:e.number().int().positive(),iterationId:a,chainId:a,policy:u,batch:u,state:e.enum(["preparing","prepared","submitted","settled","blocked"]),submission:fi.nullable(),submissionHash:e.string().regex(/^[a-f0-9]{64}$/).nullable(),submissionStartedAt:l.nullable(),execution:C.nullable(),terminalReceipt:C.nullable(),cancelRequestedAt:l.nullable(),leaseOwner:a.nullable(),leaseGeneration:e.number().int().nonnegative(),leaseExpiresAt:l.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:l.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:l,updatedAt:l}).strict().superRefine((t,i)=>{(!!t.submission!=!!t.submissionHash||t.submission&&k(t.submission)!==t.submissionHash)&&i.addIssue({code:"custom",path:["submissionHash"],message:"Dispatch submission identity changed."}),t.submissionStartedAt&&!t.submission&&i.addIssue({code:"custom",path:["submission"],message:"A started dispatch requires its persisted submission."}),t.execution&&!t.submissionStartedAt&&i.addIssue({code:"custom",path:["execution"],message:"An execution requires a started dispatch."}),["prepared","submitted"].includes(t.state)&&!t.submission&&i.addIssue({code:"custom",path:["state"],message:"A prepared dispatch requires its immutable submission."}),t.state==="submitted"&&!t.execution&&i.addIssue({code:"custom",path:["execution"],message:"A submitted dispatch requires an observed execution."}),t.state==="settled"&&t.submissionStartedAt&&!t.terminalReceipt&&i.addIssue({code:"custom",path:["terminalReceipt"],message:"A started dispatch requires terminal receipt evidence before settlement."}),!!t.leaseOwner!=!!t.leaseExpiresAt&&i.addIssue({code:"custom",path:["leaseOwner"],message:"Dispatch lease owner and expiration must be recorded together."})}),Bi=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((t,i)=>{["succeeded","failed","cancelled"].includes(t.status)&&(!t.cleanupComplete||!t.receipt)&&i.addIssue({code:"custom",path:["receipt"],message:"Terminal execution requires an authoritative cleanup receipt."}),t.status!=="cancelled"&&!t.execution&&i.addIssue({code:"custom",path:["execution"],message:"The execution identity is required."}),t.candidate&&(t.status!=="succeeded"||!t.evaluation)&&i.addIssue({code:"custom",path:["candidate"],message:"A candidate requires successful retained evaluation."})});var Be=e.object({schemaVersion:e.literal("openpond.learningSchedule.v1"),id:a,revision:e.number().int().positive(),policy:u,modelProjectId:a,executionOwner:e.enum(["local","hosted"]),state:e.enum(["scheduled","disabled","blocked"]),intervalSeconds:e.number().int().min(60).max(31536e3).nullable(),calendar:ce.nullable().default(null),nextRunAt:l.nullable(),lastFire:u.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:l.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:l,updatedAt:l}).strict().superRefine((t,i)=>{t.state!=="disabled"&&(!t.intervalSeconds&&!t.calendar||!t.nextRunAt)&&i.addIssue({code:"custom",path:["nextRunAt"],message:"An active timer must retain its cadence and due time."}),t.state==="disabled"&&t.nextRunAt&&i.addIssue({code:"custom",path:["nextRunAt"],message:"A disabled timer cannot have a pending occurrence."}),t.intervalSeconds&&t.calendar&&i.addIssue({code:"custom",path:["calendar"],message:"A timer uses either an interval or a nightly calendar."})}),Ue=e.object({schemaVersion:e.literal("openpond.learningScheduleFire.v1"),id:a,revision:e.literal(1),scheduleId:a,policy:u,scheduledAt:l,coalescedThroughAt:l,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:l,contentHash:E}).strict().superRefine((t,i)=>{(t.outcome==="skipped"!=!!t.reason||t.outcome!=="skipped"!=!!t.iteration)&&i.addIssue({code:"custom",path:["outcome"],message:"A fire retains either its reservation or its explicit skip reason."})});function $e(t){H(t,262144);let i=Ce.parse(t.fields),n=t.base?V.parse(t.base):null;if(n&&n.id!==t.id)throw new m("reward_authoring_base_mismatch",422);let o=i.fixtures?.length?F({text:JSON.stringify(i.fixtures),path:"reward-fixtures.json",mediaType:"application/json",visibility:"verifier"}):null,r=null,s,d;if(i.kind==="custom_verifier")r=F({text:i.code,path:"verifier.mjs",mediaType:"application/javascript",visibility:"verifier"}),s={kind:i.kind,verifierRef:r.asset,exportName:i.exportName,timeoutMs:T(i.timeout,"Time limit"),networkPolicy:"none",...n?.implementation.kind==="custom_verifier"&&n.implementation.runtime!==void 0?{runtime:n.implementation.runtime}:{}};else if(i.kind==="model_judge"||i.kind==="human"){if(!i.rubric.trim())throw new m("reward_rubric_required",422,"Write the rubric before checking or publishing this Reward.");if(r=F({text:i.rubric,path:"rubric.md",mediaType:"text/markdown",visibility:"verifier"}),i.kind==="human")s={kind:i.kind,rubricRef:r.asset,reviewerRole:i.reviewerRole};else{let h={providerId:i.providerId,modelId:i.modelId,revision:i.modelRevision.trim()||null},x=T(i.temperature,"Temperature"),w=n?.implementation,b=w?.kind==="model_judge"&&w.rubricRef.contentHash===r.asset.contentHash&&w.model?.providerId===h.providerId&&w.model?.modelId===h.modelId&&w.model?.revision===h.revision&&(w.temperature??0)===x&&n?.fixtureSetRef?.contentHash===o?.asset.contentHash;s={kind:i.kind,rubricRef:r.asset,model:h,temperature:x,calibrationStatus:b?w.calibrationStatus:"pending"},b&&(d=n?.calibrationCheckRef)}}else i.kind==="learned_model"?(D(i.inputContract,"Model input contract"),r=F({text:i.inputContract,path:"input-contract.json",mediaType:"application/json",visibility:"verifier"}),s={kind:i.kind,modelVersion:{id:i.learnedId,contentHash:i.learnedHash},inputContract:r.asset}):i.kind==="state"?s={kind:i.kind,config:{fields:Ve(i.fields)}}:i.kind==="content"?s={kind:i.kind,config:{outputField:i.outputField,expectedField:i.expectedField,...i.expectedValue?{expectedValue:i.expectedValue}:{}}}:i.kind==="schema"?s={kind:i.kind,config:{jsonSchema:D(i.schema,"Output schema")}}:i.kind==="artifact"?s={kind:i.kind,config:{refIncludes:i.reference}}:s={kind:i.kind,config:{requiredEvents:Ve(i.events)}};let g=[...r?[r]:[],...o?[o]:[]];return{reward:ne({schemaVersion:"openpond.rewardRelease.v1",id:t.id,revision:(n?.revision??0)+1,name:i.name,description:i.description,implementation:s,rawScore:i.kind==="learned_model"?{minimum:T(i.minimum,"Minimum score"),maximum:T(i.maximum,"Maximum score")}:{minimum:0,maximum:1},assets:g.map(h=>h.asset),...o?{fixtureSetRef:o.asset}:{},...d?{calibrationCheckRef:d}:{}}),assets:g}}c($e,"compileRewardAuthoring");function D(t,i){try{let n=JSON.parse(t);return H(n,131072),y.parse(n)}catch{throw new m("reward_authoring_json_invalid",422,`${i} must be a JSON object.`)}}c(D,"parseRewardAuthoringObject");function T(t,i){let n=Number(t);if(!t.trim()||!Number.isFinite(n))throw new m("reward_authoring_number_invalid",422,`${i} must be a finite number.`);return n}c(T,"authoringNumber");function Ve(t){return t.split(",").map(i=>i.trim()).filter(Boolean)}c(Ve,"split");var Je=e.object({id:a,name:e.string().trim().min(1).max(500),input:y,output:y,expectedOutput:y.nullable(),evaluatorContext:y.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((t,i)=>{t.expected.status==="scored"&&t.expected.minimum>t.expected.maximum&&i.addIssue({code:"custom",path:["expected"],message:"Expected score minimum must not exceed maximum."})}),bi=e.object({id:a,packageVersion:e.string().min(1).max(100),engine:e.string().min(1).max(200)}).strict(),ze=e.object({fixture:e.object({id:a,contentHash:E}).strict(),result:te,matchesExpectation:e.boolean()}).strict(),Ne=e.object({schemaVersion:e.literal("openpond.rewardCheckRun.v1"),id:a,revision:e.number().int().positive(),draft:u,reward:u,snapshotHash:E,fixtureRefs:e.array(e.object({id:a,contentHash:E}).strict()).min(1).max(50),status:e.enum(["queued","running","completed","failed","cancelling","cancelled"]),runtime:bi.nullable(),results:e.array(ze).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(se).max(1e3).optional(),requestedBy:a.optional(),leaseOwner:a.nullable(),leaseExpiresAt:l.nullable(),attemptCount:e.number().int().nonnegative(),createdAt:l,updatedAt:l}).strict();function xi(t){if(!t.length||t.length>50)throw new m("reward_check_fixtures_required",422,"Add between one and 50 fixtures before checking this Reward.");if(new Set(t.map(i=>i.id)).size!==t.length)throw new m("reward_fixture_id_duplicate",422);return t.map(i=>Je.parse({id:i.id,name:i.name,input:D(i.input,`${i.name}: input`),output:D(i.output,`${i.name}: output`),expectedOutput:i.expectedOutput.trim()?D(i.expectedOutput,`${i.name}: expected answer`):null,evaluatorContext:i.evaluatorContext.trim()?D(i.evaluatorContext,`${i.name}: evaluator context`):null,artifactRefs:i.artifactRefs.map(n=>n.trim()).filter(Boolean),runtimeEventRefs:i.runtimeEventRefs.map(n=>n.trim()).filter(Boolean),infrastructureError:i.infrastructureError||null,expected:i.expectedStatus==="scored"?{status:i.expectedStatus,minimum:T(i.minimumScore,`${i.name}: minimum score`),maximum:T(i.maximumScore,`${i.name}: maximum score`),passed:i.expectedPassed==="any"?null:i.expectedPassed==="true"}:{status:i.expectedStatus}}))}c(xi,"compileRewardFixtures");function mt(t,i){let n=$e({id:t.targetId,fields:t.fields,base:i}),o=xi(t.fields.fixtures??[]),r=o.map(s=>({id:s.id,contentHash:k(s)}));return{...n,fixtures:o,fixtureRefs:r,snapshotHash:k({reward:n.reward,fixtures:o})}}c(mt,"compileRewardCheck");async function lt(t){let i=Je.parse(t.fixture),n=X.parse({id:i.id,clusterKey:i.id,split:"validation",input:i.input,expectedOutput:i.expectedOutput,privilegedContextRef:null}),o=re({schemaVersion:"openpond.rewardBinding.v1",id:`fixture-binding-${k(_(t.reward))}`,revision:1,sources:[{graderId:t.reward.id,reward:_(t.reward),role:"evaluation",normalization:t.reward.rawScore.minimum===0&&t.reward.rawScore.maximum===1?{kind:"identity"}:{kind:"linear",minimum:t.reward.rawScore.minimum,maximum:t.reward.rawScore.maximum,direction:"higher"},weight:1,required:!0,hardGate:!1,privileged:!0,fixtureRefs:[]}],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[t.reward]);return(await oe({binding:o,rewards:[t.reward],task:n,evidence:{output:i.output,artifactRefs:i.artifactRefs,runtimeEventRefs:i.runtimeEventRefs,infrastructureError:i.infrastructureError},signal:t.signal,customVerifier:t.customVerifier,modelJudge:t.modelJudge,purpose:"fixture_calibration"})).results[0]}c(lt,"executeRewardFixture");function ut(t,i){let n=t.expected,o=i.status===n.status&&(n.status!=="scored"||i.rawScore!==null&&i.rawScore>=n.minimum&&i.rawScore<=n.maximum&&(n.passed===null||n.passed===i.passed));return ze.parse({fixture:{id:t.id,contentHash:k(t)},result:i,matchesExpectation:o})}c(ut,"matchRewardFixture");var J={draft:Ee,reward_check:Ne,asset:Ie,definition:me,reward:V,binding:ie,source:ue,evidence:ge,feedback:fe,decision:be,batch:xe,policy:we,chain:$,consumption:qe,reservation:Pe,dispatch:Fe,schedule:Be,schedule_fire:Ue,iteration:Se,grade:Re,package:Y},Q=e.enum(Object.keys(J)),Me=class extends m{static{c(this,"LearningConflictError")}kind;id;expectedRevision;currentRevision;constructor(i,n,o,r){super("learning_revision_conflict",409,`Revision conflict for ${i} ${n}: expected ${o}, current ${r}.`),this.kind=i,this.id=n,this.expectedRevision=o,this.currentRevision=r,this.name="LearningConflictError"}};async function L(t,i,n,o){let r=await t.get(i,n,o);if(!r)throw new m("learning_resource_not_found",404,`${i}:${n}`);return J[i].parse(r)}c(L,"requireLearningResource");async function S(t,i,n){let o=await L(t,i,n.id,n.revision);if(!("contentHash"in o)||o.contentHash!==n.contentHash)throw new m("learning_release_hash_mismatch",409,`${i}:${n.id}`);return _e(o),o}c(S,"requireLearningRelease");function At(t,i,n){return`evidence-${k([t,i,n])}`}c(At,"learningEvidenceId");function Lt(t,i){return k([t,i])}c(Lt,"learningOperationId");async function Ot(t,i,n,o){let{batch:r,release:s,evidence:d,definition:g}=await K(t,i,n,o);for(let f of d)for(let h of B(f,g))await t.reserveFamilySplit(h.namespace,h.kind,h.key,h.split);return await t.put("batch",r,0,{parentId:g.id}),await t.put("package",s,0,{parentId:r.id}),[Ge("batch",r),Ge("package",s)]}c(Ot,"sealLearningBatch");async function K(t,i,n,o){let r=await S(t,"definition",i.taskDefinition),s=await S(t,"binding",r.rewardBinding),d=await Promise.all(s.sources.map(b=>S(t,"reward",b.reward)));ae(s,d);let g=await Promise.all(i.evidence.map(b=>vi(t,b))),f=await Promise.all(i.decisions.map(async b=>{let R=await S(t,"decision",b),p=await L(t,"decision",b.id);if(!I(_(p),b))throw new m("task_admission_revision_stale",409);return R})),h=[];for(let b of g)for(let R of B(b,r)){let p=await t.familySplit(R.namespace,R.kind,R.key);p!==null&&h.push({...R,split:p})}let x=Ae({id:i.batchId,definition:r,binding:s,rewards:d,purpose:i.purpose,evidence:g,decisions:f,priorSplits:h,actorId:n,now:o}),w=Le({batch:x,definition:r,binding:s,rewards:d,evidence:g,decisions:f});return{batch:x,release:w,evidence:g,definition:r}}c(K,"prepareLearningBatch");async function vi(t,i){let n=await S(t,"evidence",i),o=await L(t,"evidence",i.id);if(!I(_(o),i))throw new m("task_evidence_revision_stale",409);return n}c(vi,"requireCurrentLearningEvidence");function Ge(t,i){return{kind:t,id:i.id,revision:i.revision}}c(Ge,"pointer");async function Qe(t,i,n){let o=new Date(n).toISOString().slice(0,10),r=0,s=0,d;do{let g=await t.list("reservation",{parentId:i,limit:100,...d?{afterId:d}:{}});for(let{budget:f}of g.items)r+=f.reservedSpendUsd,f.settledAt&&new Date(f.settledAt).toISOString().slice(0,10)===o&&(s+=f.settledSpendUsd);d=g.nextCursor??void 0}while(d);return{reservedSpendUsd:r,settledSpendUsd:s,committedSpendUsd:r+s}}c(Qe,"readLearningIterationBudget");function W(t){return`chain-${k(t)}`}c(W,"learningChainId");function wi(t,i){return`consumption-${k([t,i.id,i.revision])}`}c(wi,"learningConsumptionId");async function z(t,i,n={}){let o=i.training.method==="sft"?"supervised_training":"reward_training";if(!["sft","grpo","ppo"].includes(i.training.method))throw new m("learning_batch_method_unsupported",422);if(i.admission.mode!=="human")throw new m("learning_automatic_admission_not_available",422);let r=await S(t,"definition",i.taskDefinition);if(!I(r.rewardBinding,i.rewardBinding))throw new m("learning_policy_binding_mismatch",422);let s={eligible:0,awaitingReview:0,excluded:0,consumed:0},d=[],g=[],f=W(i.modelProjectId),h=new Set,x=0;for(let w of i.sources){let b=await S(t,"source",w),R=await L(t,"source",b.id);if(!b.enabled||!R.enabled)throw new m("learning_source_disabled",409);if(!I(b.taskDefinition,i.taskDefinition))throw new m("learning_policy_source_definition_mismatch",422);let p;do{let j=await t.list("evidence",{parentId:b.id,limit:100,...p?{afterId:p}:{}});for(let A of j.items){if(h.has(A.id))continue;if(h.add(A.id),!i.sources.some(U=>I(A.source,U))||!I(A.submission.taskDefinition,i.taskDefinition)||A.submission.split!=="train"){s.excluded+=1;continue}if(await t.get("consumption",wi(f,A))){s.consumed+=1;continue}if(++x>i.limits.maxBacklogExamples)throw new m("learning_backlog_limit_exceeded",409);let q=await t.get("decision",`decision-${A.id}`);if(!q||!I(q.evidence,_(A))||q.taskAdmissibility==="pending"||q.actor.kind!=="human"){s.awaitingReview+=1;continue}try{ye({decision:q,evidence:A,definition:r,purpose:o})}catch(U){if(!(U instanceof m))throw U;s.excluded+=1;continue}s.eligible+=1,n.collectEligible&&g.push(_(A)),d.length<i.limits.maxBatchExamples&&d.push({evidence:A,decision:q})}p=j.nextCursor??void 0}while(p)}return{counts:s,selected:d,purpose:o,eligibleEvidence:g}}c(z,"inspectIterationEligibility");async function Ke(t,i,n=!1){let o=null,r;do{let s=await t.list("iteration",{parentId:i,status:"accepted",limit:100,...r?{afterId:r}:{}});for(let d of s.items){if(!d.candidateVersion||!d.candidateDecision||!d.candidateDecisionAt||!d.trainingJob){if(n)throw new m("learning_accepted_parent_evidence_missing",409);continue}let g=P.parse({iterationId:d.id,iterationRevision:d.revision,candidate:d.candidateVersion,decision:d.candidateDecision,decidedAt:d.candidateDecisionAt}),f=[Date.parse(g.decidedAt),g.decision.id,g.decision.revision],h=o?[Date.parse(o.decidedAt),o.decision.id,o.decision.revision]:null;(!h||f[0]>h[0]||f[0]===h[0]&&(f[1]>h[1]||f[1]===h[1]&&f[2]>h[2]))&&(o=g)}r=s.nextCursor??void 0}while(r);return o}c(Ke,"latestAcceptedLearningParent");async function We(t,i,n){if(!n)return{trainingParent:i.trainingParent,trainingParentSelection:null};let o=await L(t,"iteration",n.iterationId,n.iterationRevision),r=await S(t,"policy",o.policy);if(o.status!=="accepted"||!o.candidateVersion||!o.candidateDecision||!o.trainingJob||o.candidateVersion.id!==n.candidate.id||o.candidateVersion.contentHash!==n.candidate.contentHash||!I(o.candidateDecision,n.decision)||o.candidateDecisionAt!==n.decidedAt||r.modelProjectId!==i.modelProjectId||r.executionOwner!==i.executionOwner)throw new m("learning_accepted_parent_evidence_mismatch",409);if(r.trainingParent.id!==i.trainingParent.id||r.trainingParent.contentHash!==i.trainingParent.contentHash||r.training.method!==i.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:n.candidate,trainingParentSelection:n}}c(We,"resolveLearningTrainingParent");var Si=e.object({policy:u,modelProjectId:a,inspectedAt:l,chain:$.nullable(),trainingParent:e.object({reference:C,selection:P.nullable()}).strict().nullable().default(null),counts:G.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:l.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 mn(t,i,n,o){let r=await S(t,"policy",i),s=await L(t,"policy",r.id);if(!I(_(s),i))throw new m("learning_policy_revision_stale",409);let d=W(r.modelProjectId),g=await t.get("chain",d),f=await Qe(t,d,o),h=[],x=c((p,j)=>{h.push({code:p,message:j})},"block");r.enabled||x("learning_policy_paused","Learning is paused."),(r.automation.accept||r.automation.serve)&&x("learning_automatic_acceptance_not_available","Candidates require explicit acceptance and serving selection."),g?.activeIterationId&&x("learning_iteration_active","An iteration is already active.");let w=g?.lastReservedAt&&Date.parse(o)-Date.parse(g.lastReservedAt)<r.limits.cooldownSeconds*1e3?new Date(Date.parse(g.lastReservedAt)+r.limits.cooldownSeconds*1e3).toISOString():null;w&&x("learning_iteration_cooldown","The training cooldown has not elapsed."),f.committedSpendUsd+r.limits.maxIterationSpendUsd>r.limits.maxDailySpendUsd&&x("learning_daily_budget_exhausted","The daily budget cannot cover another iteration's maximum spend.");let b=null;try{let p=await z(t,r);b=p.counts,b.eligible<r.admission.minimumApprovedExamples?b.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 K(t,{action:"seal_batch",operationId:"policy-inspection",batchId:"policy-inspection",taskDefinition:r.taskDefinition,purpose:p.purpose,evidence:p.selected.map(j=>_(j.evidence)),decisions:p.selected.map(j=>_(j.decision))},n,o)}catch(p){if(!(p instanceof m))throw p;x(p.code,p.message.slice(0,2e4))}let R=null;try{let p=await We(t,r,await Ke(t,d,!0));R={reference:p.trainingParent,selection:p.trainingParentSelection}}catch(p){if(!(p instanceof m))throw p;x(p.code,p.message.slice(0,2e4))}return Si.parse({policy:_(r),modelProjectId:r.modelProjectId,inspectedAt:o,chain:g,trainingParent:R,counts:b,minimumApprovedExamples:r.admission.minimumApprovedExamples,canReserve:h.length===0,blockers:h,cooldownUntil:w,budget:{...f,maximumIterationSpendUsd:r.limits.maxIterationSpendUsd,maximumDailySpendUsd:r.limits.maxDailySpendUsd}})}c(mn,"inspectLearningPolicy");var Ri=e.object({modelProjectId:a.nullable(),inspectedAt:l,pendingTrainingCount:e.number().int().nonnegative().nullable(),issues:e.array(e.object({policyId:a,code:e.string(),message:e.string()}).strict())}).strict();async function vn(t,i,n){let o=new Set,r=[],s;do{let d=await t.list("policy",{limit:100,...i?{parentId:i}:{},...s?{afterId:s}:{}});for(let g of d.items)try{let f=await z(t,g,{collectEligible:!0}),h=await S(t,"definition",g.taskDefinition);for(let x of f.eligibleEvidence){let w=await S(t,"evidence",x),b=!1;for(let R of B(w,h)){let p=await t.familySplit(R.namespace,R.kind,R.key);if(p!==null&&p!=="train"){b=!0;break}}b||o.add(JSON.stringify([x.id,x.revision,x.contentHash]))}}catch(f){if(!(f instanceof m))throw f;r.push({policyId:g.id,code:f.code,message:f.message})}s=d.nextCursor??void 0}while(s);return Ri.parse({modelProjectId:i,inspectedAt:n,pendingTrainingCount:r.length?null:o.size,issues:r})}c(vn,"inspectLearningTaskQueue");function Cn(t){try{H(t,16777216)}catch(i){throw new m("learning_json_invalid",400,i instanceof Error?i.message:"Expected bounded JSON.")}}c(Cn,"assertLearningRequestJson");var jn=e.object({scope:a,command:He}).strict(),En=e.discriminatedUnion("action",[e.object({action:e.literal("inspect_task_queue"),scope:a,modelProjectId:a.nullable()}).strict(),e.object({action:e.literal("inspect_policy"),scope:a,policy:u}).strict(),e.object({action:e.literal("inspect_evidence"),scope:a,evidence:u}).strict(),e.object({action:e.literal("get"),scope:a,kind:Q,id:a,revision:e.number().int().positive().optional()}).strict(),e.object({action:e.literal("list"),scope:a,kind:Q,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()]),Tn=e.object({evidence:u,definition:u,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(),Dn=e.object({operationId:a,resources:e.array(e.union(Object.values(J))).max(100)}).strict();export{$ as a,qe as b,Pe as c,He as d,Fe as e,Be as f,bi as g,Ne as h,mt as i,lt as j,ut as k,J as l,Me as m,L as n,S as o,At as p,Lt as q,Ot as r,vi as s,W as t,wi as u,z as v,Qe as w,Ke as x,We as y,Si as z,mn as A,Ri as B,vn as C,Cn as D,jn as E,En as F,Tn as G,Dn as H};
|
|
2
|
+
import{$a as re,$b as De,Ab as Re,Ba as H,Bb as _,Cb as I,Eb as _e,Fb as ke,Gb as Ie,Hb as F,Nb as ye,Pb as B,Qa as X,Qb as Ae,Sa as Y,Sb as Le,Ua as Z,Va as V,Vb as Ce,Wa as ee,Wb as je,Xa as ie,Xb as Ee,Ya as te,Yb as N,_a as ne,_b as Te,a as m,ab as ae,cb as oe,eb as se,gb as ce,ib as y,jb as u,kb as de,lb as me,mb as le,nb as ue,ob as pe,qb as ge,rb as he,sb as fe,ub as be,vb as xe,wb as ve,xb as we,yb as P,zb as Se}from"./chunk-UW6ES5DM.js";import{a,b as E,c as l,e as C,l as k}from"./chunk-HZP5U2AA.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as c}from"./chunk-FTQLQJQV.js";var M=e.discriminatedUnion("kind",[e.object({kind:e.literal("manual"),identity:a}).strict(),e.object({kind:e.literal("schedule"),scheduledAt:l}).strict(),e.object({kind:e.literal("approved_count"),checkedAt:l}).strict()]),$=e.object({schemaVersion:e.literal("openpond.learningChain.v1"),id:a,revision:e.number().int().positive(),modelProjectId:a,activeIterationId:a.nullable(),acceptedParent:P.nullable().optional(),latestIterationId:a,lastReservedAt:l.nullable(),updatedAt:l}).strict(),G=e.object({eligible:e.number().int().nonnegative(),awaitingReview:e.number().int().nonnegative(),excluded:e.number().int().nonnegative(),consumed:e.number().int().nonnegative()}).strict(),qe=e.object({schemaVersion:e.literal("openpond.learningConsumption.v1"),id:a,revision:e.literal(1),chainId:a,iterationId:a,evidence:u,decision:u,reservedAt:l}).strict(),Pe=e.object({schemaVersion:e.literal("openpond.learningIterationReservation.v1"),id:a,revision:e.number().int().positive(),chainId:a,iterationId:a,policy:u,trigger:M,requestHash:E,outcome:e.enum(["reserved","waiting_for_data","waiting_for_review"]),counts:G,budget:e.object({maximumSpendUsd:e.number().nonnegative(),reservedSpendUsd:e.number().nonnegative(),settledSpendUsd:e.number().nonnegative(),settledAt:l.nullable()}).strict(),createdAt:l,updatedAt:l}).strict();var v=e.object({operationId:a}),Xe=v.extend({action:e.literal("import_intake"),format:Te,files:e.array(De).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(),O=v.extend({action:e.literal("publish"),expectedRevision:e.number().int().nonnegative(),finalizeDraft:N.optional()}),Oe=e.discriminatedUnion("kind",[O.extend({kind:e.literal("asset"),content:ke}).strict(),O.extend({kind:e.literal("definition"),content:de}).strict(),O.extend({kind:e.literal("reward"),content:Z}).strict(),O.extend({kind:e.literal("binding"),content:ee}).strict(),O.extend({kind:e.literal("source"),content:le}).strict(),O.extend({kind:e.literal("policy"),content:ve}).strict()]),Ye=v.extend({action:e.literal("publish_resources"),finalizeDraft:N.optional(),resources:e.array(e.union(Oe.options.map(t=>t.omit({operationId:!0,action:!0,finalizeDraft:!0})))).min(1).max(20)}).strict(),Ze=v.extend({action:e.literal("submit_example"),example:pe}).strict(),ei=v.extend({action:e.literal("submit_feedback"),feedback:he}).strict(),ii=v.extend({action:e.literal("apply_correction"),feedbackId:a,evidence:u}).strict(),ti=v.extend({action:e.literal("resolve_feedback"),feedbackId:a,expectedRevision:e.number().int().positive(),disposition:e.enum(["applied","rejected","superseded"]),decision:u.nullable(),note:e.string().max(2e4)}).strict(),ni=v.extend({action:e.literal("queue_grade"),evidence:u,target:e.enum(["observed","proposed_target"]),proposedTarget:y.nullable(),timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),ri=v.extend({action:e.literal("review"),evidence:u,expectedRevision:e.number().int().nonnegative(),disposition:e.enum(["approved","rejected","pending"]),targetApproval:e.enum(["approved","rejected","pending","not_required"]),approvedTarget:y.nullable(),observedGradeId:a.nullable(),targetGradeId:a.nullable(),note:e.string().max(2e4)}).strict(),ai=v.extend({action:e.literal("seal_batch"),batchId:a,taskDefinition:u,purpose:e.enum(["supervised_training","reward_training","evaluation"]),evidence:e.array(u).min(1).max(1e4),decisions:e.array(u).min(1).max(1e4)}).strict(),oi=v.extend({action:e.literal("cancel_grade"),gradeId:a,expectedRevision:e.number().int().positive()}).strict(),si=v.extend({action:e.literal("save_draft"),expectedRevision:e.number().int().nonnegative(),draft:je}).strict(),ci=v.extend({action:e.literal("archive_draft"),draft:u}).strict(),di=v.extend({action:e.literal("queue_reward_check"),draft:u,timeoutMs:e.number().int().min(100).max(3e5).default(3e4),maximumSpendUsd:e.number().nonnegative().max(1e3).default(0)}).strict(),mi=v.extend({action:e.literal("cancel_reward_check"),checkId:a,expectedRevision:e.number().int().positive()}).strict(),li=v.extend({action:e.literal("publish_checked_reward"),draft:u,checkId:a,checkRevision:e.number().int().positive()}).strict(),ui=v.extend({action:e.literal("reserve_iteration"),policy:u,trigger:M}).strict(),pi=v.extend({action:e.literal("cancel_iteration_reservation"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),gi=v.extend({action:e.literal("cancel_iteration"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),hi=v.extend({action:e.literal("retry_iteration_dispatch"),iterationId:a,expectedRevision:e.number().int().positive()}).strict(),He=e.union([li,Xe,gi,hi,pi,ui,di,mi,si,ci,Oe,Ye,Ze,ei,ii,ti,ni,ri,ai,oi]);var fi=e.object({provider:a,protocol:a,payload:y}).strict(),Fe=e.object({schemaVersion:e.literal("openpond.learningIterationDispatch.v1"),id:a,revision:e.number().int().positive(),iterationId:a,chainId:a,policy:u,batch:u,state:e.enum(["preparing","prepared","submitted","settled","blocked"]),submission:fi.nullable(),submissionHash:e.string().regex(/^[a-f0-9]{64}$/).nullable(),submissionStartedAt:l.nullable(),execution:C.nullable(),terminalReceipt:C.nullable(),cancelRequestedAt:l.nullable(),leaseOwner:a.nullable(),leaseGeneration:e.number().int().nonnegative(),leaseExpiresAt:l.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:l.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:l,updatedAt:l}).strict().superRefine((t,i)=>{(!!t.submission!=!!t.submissionHash||t.submission&&k(t.submission)!==t.submissionHash)&&i.addIssue({code:"custom",path:["submissionHash"],message:"Dispatch submission identity changed."}),t.submissionStartedAt&&!t.submission&&i.addIssue({code:"custom",path:["submission"],message:"A started dispatch requires its persisted submission."}),t.execution&&!t.submissionStartedAt&&i.addIssue({code:"custom",path:["execution"],message:"An execution requires a started dispatch."}),["prepared","submitted"].includes(t.state)&&!t.submission&&i.addIssue({code:"custom",path:["state"],message:"A prepared dispatch requires its immutable submission."}),t.state==="submitted"&&!t.execution&&i.addIssue({code:"custom",path:["execution"],message:"A submitted dispatch requires an observed execution."}),t.state==="settled"&&t.submissionStartedAt&&!t.terminalReceipt&&i.addIssue({code:"custom",path:["terminalReceipt"],message:"A started dispatch requires terminal receipt evidence before settlement."}),!!t.leaseOwner!=!!t.leaseExpiresAt&&i.addIssue({code:"custom",path:["leaseOwner"],message:"Dispatch lease owner and expiration must be recorded together."})}),Bi=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((t,i)=>{["succeeded","failed","cancelled"].includes(t.status)&&(!t.cleanupComplete||!t.receipt)&&i.addIssue({code:"custom",path:["receipt"],message:"Terminal execution requires an authoritative cleanup receipt."}),t.status!=="cancelled"&&!t.execution&&i.addIssue({code:"custom",path:["execution"],message:"The execution identity is required."}),t.candidate&&(t.status!=="succeeded"||!t.evaluation)&&i.addIssue({code:"custom",path:["candidate"],message:"A candidate requires successful retained evaluation."})});var Be=e.object({schemaVersion:e.literal("openpond.learningSchedule.v1"),id:a,revision:e.number().int().positive(),policy:u,modelProjectId:a,executionOwner:e.enum(["local","hosted"]),state:e.enum(["scheduled","disabled","blocked"]),intervalSeconds:e.number().int().min(60).max(31536e3).nullable(),calendar:ce.nullable().default(null),nextRunAt:l.nullable(),lastFire:u.nullable(),consecutiveFailures:e.number().int().nonnegative(),nextAttemptAt:l.nullable(),lastError:e.string().max(2e4).nullable(),createdAt:l,updatedAt:l}).strict().superRefine((t,i)=>{t.state!=="disabled"&&(!t.intervalSeconds&&!t.calendar||!t.nextRunAt)&&i.addIssue({code:"custom",path:["nextRunAt"],message:"An active timer must retain its cadence and due time."}),t.state==="disabled"&&t.nextRunAt&&i.addIssue({code:"custom",path:["nextRunAt"],message:"A disabled timer cannot have a pending occurrence."}),t.intervalSeconds&&t.calendar&&i.addIssue({code:"custom",path:["calendar"],message:"A timer uses either an interval or a nightly calendar."})}),Ue=e.object({schemaVersion:e.literal("openpond.learningScheduleFire.v1"),id:a,revision:e.literal(1),scheduleId:a,policy:u,scheduledAt:l,coalescedThroughAt:l,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:l,contentHash:E}).strict().superRefine((t,i)=>{(t.outcome==="skipped"!=!!t.reason||t.outcome!=="skipped"!=!!t.iteration)&&i.addIssue({code:"custom",path:["outcome"],message:"A fire retains either its reservation or its explicit skip reason."})});function $e(t){H(t,262144);let i=Ce.parse(t.fields),n=t.base?V.parse(t.base):null;if(n&&n.id!==t.id)throw new m("reward_authoring_base_mismatch",422);let o=i.fixtures?.length?F({text:JSON.stringify(i.fixtures),path:"reward-fixtures.json",mediaType:"application/json",visibility:"verifier"}):null,r=null,s,d;if(i.kind==="custom_verifier")r=F({text:i.code,path:"verifier.mjs",mediaType:"application/javascript",visibility:"verifier"}),s={kind:i.kind,verifierRef:r.asset,exportName:i.exportName,timeoutMs:T(i.timeout,"Time limit"),networkPolicy:"none",...n?.implementation.kind==="custom_verifier"&&n.implementation.runtime!==void 0?{runtime:n.implementation.runtime}:{}};else if(i.kind==="model_judge"||i.kind==="human"){if(!i.rubric.trim())throw new m("reward_rubric_required",422,"Write the rubric before checking or publishing this Reward.");if(r=F({text:i.rubric,path:"rubric.md",mediaType:"text/markdown",visibility:"verifier"}),i.kind==="human")s={kind:i.kind,rubricRef:r.asset,reviewerRole:i.reviewerRole};else{let h={providerId:i.providerId,modelId:i.modelId,revision:i.modelRevision.trim()||null},x=T(i.temperature,"Temperature"),w=n?.implementation,b=w?.kind==="model_judge"&&w.rubricRef.contentHash===r.asset.contentHash&&w.model?.providerId===h.providerId&&w.model?.modelId===h.modelId&&w.model?.revision===h.revision&&(w.temperature??0)===x&&n?.fixtureSetRef?.contentHash===o?.asset.contentHash;s={kind:i.kind,rubricRef:r.asset,model:h,temperature:x,calibrationStatus:b?w.calibrationStatus:"pending"},b&&(d=n?.calibrationCheckRef)}}else i.kind==="learned_model"?(D(i.inputContract,"Model input contract"),r=F({text:i.inputContract,path:"input-contract.json",mediaType:"application/json",visibility:"verifier"}),s={kind:i.kind,modelVersion:{id:i.learnedId,contentHash:i.learnedHash},inputContract:r.asset}):i.kind==="state"?s={kind:i.kind,config:{fields:Ve(i.fields)}}:i.kind==="content"?s={kind:i.kind,config:{outputField:i.outputField,expectedField:i.expectedField,...i.expectedValue?{expectedValue:i.expectedValue}:{}}}:i.kind==="schema"?s={kind:i.kind,config:{jsonSchema:D(i.schema,"Output schema")}}:i.kind==="artifact"?s={kind:i.kind,config:{refIncludes:i.reference}}:s={kind:i.kind,config:{requiredEvents:Ve(i.events)}};let g=[...r?[r]:[],...o?[o]:[]];return{reward:ne({schemaVersion:"openpond.rewardRelease.v1",id:t.id,revision:(n?.revision??0)+1,name:i.name,description:i.description,implementation:s,rawScore:i.kind==="learned_model"?{minimum:T(i.minimum,"Minimum score"),maximum:T(i.maximum,"Maximum score")}:{minimum:0,maximum:1},assets:g.map(h=>h.asset),...o?{fixtureSetRef:o.asset}:{},...d?{calibrationCheckRef:d}:{}}),assets:g}}c($e,"compileRewardAuthoring");function D(t,i){try{let n=JSON.parse(t);return H(n,131072),y.parse(n)}catch{throw new m("reward_authoring_json_invalid",422,`${i} must be a JSON object.`)}}c(D,"parseRewardAuthoringObject");function T(t,i){let n=Number(t);if(!t.trim()||!Number.isFinite(n))throw new m("reward_authoring_number_invalid",422,`${i} must be a finite number.`);return n}c(T,"authoringNumber");function Ve(t){return t.split(",").map(i=>i.trim()).filter(Boolean)}c(Ve,"split");var Je=e.object({id:a,name:e.string().trim().min(1).max(500),input:y,output:y,expectedOutput:y.nullable(),evaluatorContext:y.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((t,i)=>{t.expected.status==="scored"&&t.expected.minimum>t.expected.maximum&&i.addIssue({code:"custom",path:["expected"],message:"Expected score minimum must not exceed maximum."})}),bi=e.object({id:a,packageVersion:e.string().min(1).max(100),engine:e.string().min(1).max(200)}).strict(),ze=e.object({fixture:e.object({id:a,contentHash:E}).strict(),result:te,matchesExpectation:e.boolean()}).strict(),Ne=e.object({schemaVersion:e.literal("openpond.rewardCheckRun.v1"),id:a,revision:e.number().int().positive(),draft:u,reward:u,snapshotHash:E,fixtureRefs:e.array(e.object({id:a,contentHash:E}).strict()).min(1).max(50),status:e.enum(["queued","running","completed","failed","cancelling","cancelled"]),runtime:bi.nullable(),results:e.array(ze).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(se).max(1e3).optional(),requestedBy:a.optional(),leaseOwner:a.nullable(),leaseExpiresAt:l.nullable(),attemptCount:e.number().int().nonnegative(),createdAt:l,updatedAt:l}).strict();function xi(t){if(!t.length||t.length>50)throw new m("reward_check_fixtures_required",422,"Add between one and 50 fixtures before checking this Reward.");if(new Set(t.map(i=>i.id)).size!==t.length)throw new m("reward_fixture_id_duplicate",422);return t.map(i=>Je.parse({id:i.id,name:i.name,input:D(i.input,`${i.name}: input`),output:D(i.output,`${i.name}: output`),expectedOutput:i.expectedOutput.trim()?D(i.expectedOutput,`${i.name}: expected answer`):null,evaluatorContext:i.evaluatorContext.trim()?D(i.evaluatorContext,`${i.name}: evaluator context`):null,artifactRefs:i.artifactRefs.map(n=>n.trim()).filter(Boolean),runtimeEventRefs:i.runtimeEventRefs.map(n=>n.trim()).filter(Boolean),infrastructureError:i.infrastructureError||null,expected:i.expectedStatus==="scored"?{status:i.expectedStatus,minimum:T(i.minimumScore,`${i.name}: minimum score`),maximum:T(i.maximumScore,`${i.name}: maximum score`),passed:i.expectedPassed==="any"?null:i.expectedPassed==="true"}:{status:i.expectedStatus}}))}c(xi,"compileRewardFixtures");function mt(t,i){let n=$e({id:t.targetId,fields:t.fields,base:i}),o=xi(t.fields.fixtures??[]),r=o.map(s=>({id:s.id,contentHash:k(s)}));return{...n,fixtures:o,fixtureRefs:r,snapshotHash:k({reward:n.reward,fixtures:o})}}c(mt,"compileRewardCheck");async function lt(t){let i=Je.parse(t.fixture),n=X.parse({id:i.id,clusterKey:i.id,split:"validation",input:i.input,expectedOutput:i.expectedOutput,privilegedContextRef:null}),o=re({schemaVersion:"openpond.rewardBinding.v1",id:`fixture-binding-${k(_(t.reward))}`,revision:1,sources:[{graderId:t.reward.id,reward:_(t.reward),role:"evaluation",normalization:t.reward.rawScore.minimum===0&&t.reward.rawScore.maximum===1?{kind:"identity"}:{kind:"linear",minimum:t.reward.rawScore.minimum,maximum:t.reward.rawScore.maximum,direction:"higher"},weight:1,required:!0,hardGate:!1,privileged:!0,fixtureRefs:[]}],aggregation:"weighted_mean",unscorable:"exclude_optional_require_all_required"},[t.reward]);return(await oe({binding:o,rewards:[t.reward],task:n,evidence:{output:i.output,artifactRefs:i.artifactRefs,runtimeEventRefs:i.runtimeEventRefs,infrastructureError:i.infrastructureError},signal:t.signal,customVerifier:t.customVerifier,modelJudge:t.modelJudge,purpose:"fixture_calibration"})).results[0]}c(lt,"executeRewardFixture");function ut(t,i){let n=t.expected,o=i.status===n.status&&(n.status!=="scored"||i.rawScore!==null&&i.rawScore>=n.minimum&&i.rawScore<=n.maximum&&(n.passed===null||n.passed===i.passed));return ze.parse({fixture:{id:t.id,contentHash:k(t)},result:i,matchesExpectation:o})}c(ut,"matchRewardFixture");var J={draft:Ee,reward_check:Ne,asset:Ie,definition:me,reward:V,binding:ie,source:ue,evidence:ge,feedback:fe,decision:be,batch:xe,policy:we,chain:$,consumption:qe,reservation:Pe,dispatch:Fe,schedule:Be,schedule_fire:Ue,iteration:Se,grade:Re,package:Y},Q=e.enum(Object.keys(J)),Me=class extends m{static{c(this,"LearningConflictError")}kind;id;expectedRevision;currentRevision;constructor(i,n,o,r){super("learning_revision_conflict",409,`Revision conflict for ${i} ${n}: expected ${o}, current ${r}.`),this.kind=i,this.id=n,this.expectedRevision=o,this.currentRevision=r,this.name="LearningConflictError"}};async function L(t,i,n,o){let r=await t.get(i,n,o);if(!r)throw new m("learning_resource_not_found",404,`${i}:${n}`);return J[i].parse(r)}c(L,"requireLearningResource");async function S(t,i,n){let o=await L(t,i,n.id,n.revision);if(!("contentHash"in o)||o.contentHash!==n.contentHash)throw new m("learning_release_hash_mismatch",409,`${i}:${n.id}`);return _e(o),o}c(S,"requireLearningRelease");function At(t,i,n){return`evidence-${k([t,i,n])}`}c(At,"learningEvidenceId");function Lt(t,i){return k([t,i])}c(Lt,"learningOperationId");async function Ot(t,i,n,o){let{batch:r,release:s,evidence:d,definition:g}=await K(t,i,n,o);for(let f of d)for(let h of B(f,g))await t.reserveFamilySplit(h.namespace,h.kind,h.key,h.split);return await t.put("batch",r,0,{parentId:g.id}),await t.put("package",s,0,{parentId:r.id}),[Ge("batch",r),Ge("package",s)]}c(Ot,"sealLearningBatch");async function K(t,i,n,o){let r=await S(t,"definition",i.taskDefinition),s=await S(t,"binding",r.rewardBinding),d=await Promise.all(s.sources.map(b=>S(t,"reward",b.reward)));ae(s,d);let g=await Promise.all(i.evidence.map(b=>vi(t,b))),f=await Promise.all(i.decisions.map(async b=>{let R=await S(t,"decision",b),p=await L(t,"decision",b.id);if(!I(_(p),b))throw new m("task_admission_revision_stale",409);return R})),h=[];for(let b of g)for(let R of B(b,r)){let p=await t.familySplit(R.namespace,R.kind,R.key);p!==null&&h.push({...R,split:p})}let x=Ae({id:i.batchId,definition:r,binding:s,rewards:d,purpose:i.purpose,evidence:g,decisions:f,priorSplits:h,actorId:n,now:o}),w=Le({batch:x,definition:r,binding:s,rewards:d,evidence:g,decisions:f});return{batch:x,release:w,evidence:g,definition:r}}c(K,"prepareLearningBatch");async function vi(t,i){let n=await S(t,"evidence",i),o=await L(t,"evidence",i.id);if(!I(_(o),i))throw new m("task_evidence_revision_stale",409);return n}c(vi,"requireCurrentLearningEvidence");function Ge(t,i){return{kind:t,id:i.id,revision:i.revision}}c(Ge,"pointer");async function Qe(t,i,n){let o=new Date(n).toISOString().slice(0,10),r=0,s=0,d;do{let g=await t.list("reservation",{parentId:i,limit:100,...d?{afterId:d}:{}});for(let{budget:f}of g.items)r+=f.reservedSpendUsd,f.settledAt&&new Date(f.settledAt).toISOString().slice(0,10)===o&&(s+=f.settledSpendUsd);d=g.nextCursor??void 0}while(d);return{reservedSpendUsd:r,settledSpendUsd:s,committedSpendUsd:r+s}}c(Qe,"readLearningIterationBudget");function W(t){return`chain-${k(t)}`}c(W,"learningChainId");function wi(t,i){return`consumption-${k([t,i.id,i.revision])}`}c(wi,"learningConsumptionId");async function z(t,i,n={}){let o=i.training.method==="sft"?"supervised_training":"reward_training";if(!["sft","grpo","ppo"].includes(i.training.method))throw new m("learning_batch_method_unsupported",422);if(i.admission.mode!=="human")throw new m("learning_automatic_admission_not_available",422);let r=await S(t,"definition",i.taskDefinition);if(!I(r.rewardBinding,i.rewardBinding))throw new m("learning_policy_binding_mismatch",422);let s={eligible:0,awaitingReview:0,excluded:0,consumed:0},d=[],g=[],f=W(i.modelProjectId),h=new Set,x=0;for(let w of i.sources){let b=await S(t,"source",w),R=await L(t,"source",b.id);if(!b.enabled||!R.enabled)throw new m("learning_source_disabled",409);if(!I(b.taskDefinition,i.taskDefinition))throw new m("learning_policy_source_definition_mismatch",422);let p;do{let j=await t.list("evidence",{parentId:b.id,limit:100,...p?{afterId:p}:{}});for(let A of j.items){if(h.has(A.id))continue;if(h.add(A.id),!i.sources.some(U=>I(A.source,U))||!I(A.submission.taskDefinition,i.taskDefinition)||A.submission.split!=="train"){s.excluded+=1;continue}if(await t.get("consumption",wi(f,A))){s.consumed+=1;continue}if(++x>i.limits.maxBacklogExamples)throw new m("learning_backlog_limit_exceeded",409);let q=await t.get("decision",`decision-${A.id}`);if(!q||!I(q.evidence,_(A))||q.taskAdmissibility==="pending"||q.actor.kind!=="human"){s.awaitingReview+=1;continue}try{ye({decision:q,evidence:A,definition:r,purpose:o})}catch(U){if(!(U instanceof m))throw U;s.excluded+=1;continue}s.eligible+=1,n.collectEligible&&g.push(_(A)),d.length<i.limits.maxBatchExamples&&d.push({evidence:A,decision:q})}p=j.nextCursor??void 0}while(p)}return{counts:s,selected:d,purpose:o,eligibleEvidence:g}}c(z,"inspectIterationEligibility");async function Ke(t,i,n=!1){let o=null,r;do{let s=await t.list("iteration",{parentId:i,status:"accepted",limit:100,...r?{afterId:r}:{}});for(let d of s.items){if(!d.candidateVersion||!d.candidateDecision||!d.candidateDecisionAt||!d.trainingJob){if(n)throw new m("learning_accepted_parent_evidence_missing",409);continue}let g=P.parse({iterationId:d.id,iterationRevision:d.revision,candidate:d.candidateVersion,decision:d.candidateDecision,decidedAt:d.candidateDecisionAt}),f=[Date.parse(g.decidedAt),g.decision.id,g.decision.revision],h=o?[Date.parse(o.decidedAt),o.decision.id,o.decision.revision]:null;(!h||f[0]>h[0]||f[0]===h[0]&&(f[1]>h[1]||f[1]===h[1]&&f[2]>h[2]))&&(o=g)}r=s.nextCursor??void 0}while(r);return o}c(Ke,"latestAcceptedLearningParent");async function We(t,i,n){if(!n)return{trainingParent:i.trainingParent,trainingParentSelection:null};let o=await L(t,"iteration",n.iterationId,n.iterationRevision),r=await S(t,"policy",o.policy);if(o.status!=="accepted"||!o.candidateVersion||!o.candidateDecision||!o.trainingJob||o.candidateVersion.id!==n.candidate.id||o.candidateVersion.contentHash!==n.candidate.contentHash||!I(o.candidateDecision,n.decision)||o.candidateDecisionAt!==n.decidedAt||r.modelProjectId!==i.modelProjectId||r.executionOwner!==i.executionOwner)throw new m("learning_accepted_parent_evidence_mismatch",409);if(r.trainingParent.id!==i.trainingParent.id||r.trainingParent.contentHash!==i.trainingParent.contentHash||r.training.method!==i.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:n.candidate,trainingParentSelection:n}}c(We,"resolveLearningTrainingParent");var Si=e.object({policy:u,modelProjectId:a,inspectedAt:l,chain:$.nullable(),trainingParent:e.object({reference:C,selection:P.nullable()}).strict().nullable().default(null),counts:G.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:l.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 mn(t,i,n,o){let r=await S(t,"policy",i),s=await L(t,"policy",r.id);if(!I(_(s),i))throw new m("learning_policy_revision_stale",409);let d=W(r.modelProjectId),g=await t.get("chain",d),f=await Qe(t,d,o),h=[],x=c((p,j)=>{h.push({code:p,message:j})},"block");r.enabled||x("learning_policy_paused","Learning is paused."),(r.automation.accept||r.automation.serve)&&x("learning_automatic_acceptance_not_available","Candidates require explicit acceptance and serving selection."),g?.activeIterationId&&x("learning_iteration_active","An iteration is already active.");let w=g?.lastReservedAt&&Date.parse(o)-Date.parse(g.lastReservedAt)<r.limits.cooldownSeconds*1e3?new Date(Date.parse(g.lastReservedAt)+r.limits.cooldownSeconds*1e3).toISOString():null;w&&x("learning_iteration_cooldown","The training cooldown has not elapsed."),f.committedSpendUsd+r.limits.maxIterationSpendUsd>r.limits.maxDailySpendUsd&&x("learning_daily_budget_exhausted","The daily budget cannot cover another iteration's maximum spend.");let b=null;try{let p=await z(t,r);b=p.counts,b.eligible<r.admission.minimumApprovedExamples?b.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 K(t,{action:"seal_batch",operationId:"policy-inspection",batchId:"policy-inspection",taskDefinition:r.taskDefinition,purpose:p.purpose,evidence:p.selected.map(j=>_(j.evidence)),decisions:p.selected.map(j=>_(j.decision))},n,o)}catch(p){if(!(p instanceof m))throw p;x(p.code,p.message.slice(0,2e4))}let R=null;try{let p=await We(t,r,await Ke(t,d,!0));R={reference:p.trainingParent,selection:p.trainingParentSelection}}catch(p){if(!(p instanceof m))throw p;x(p.code,p.message.slice(0,2e4))}return Si.parse({policy:_(r),modelProjectId:r.modelProjectId,inspectedAt:o,chain:g,trainingParent:R,counts:b,minimumApprovedExamples:r.admission.minimumApprovedExamples,canReserve:h.length===0,blockers:h,cooldownUntil:w,budget:{...f,maximumIterationSpendUsd:r.limits.maxIterationSpendUsd,maximumDailySpendUsd:r.limits.maxDailySpendUsd}})}c(mn,"inspectLearningPolicy");var Ri=e.object({modelProjectId:a.nullable(),inspectedAt:l,pendingTrainingCount:e.number().int().nonnegative().nullable(),issues:e.array(e.object({policyId:a,code:e.string(),message:e.string()}).strict())}).strict();async function vn(t,i,n){let o=new Set,r=[],s;do{let d=await t.list("policy",{limit:100,...i?{parentId:i}:{},...s?{afterId:s}:{}});for(let g of d.items)try{let f=await z(t,g,{collectEligible:!0}),h=await S(t,"definition",g.taskDefinition);for(let x of f.eligibleEvidence){let w=await S(t,"evidence",x),b=!1;for(let R of B(w,h)){let p=await t.familySplit(R.namespace,R.kind,R.key);if(p!==null&&p!=="train"){b=!0;break}}b||o.add(JSON.stringify([x.id,x.revision,x.contentHash]))}}catch(f){if(!(f instanceof m))throw f;r.push({policyId:g.id,code:f.code,message:f.message})}s=d.nextCursor??void 0}while(s);return Ri.parse({modelProjectId:i,inspectedAt:n,pendingTrainingCount:r.length?null:o.size,issues:r})}c(vn,"inspectLearningTaskQueue");function Cn(t){try{H(t,16777216)}catch(i){throw new m("learning_json_invalid",400,i instanceof Error?i.message:"Expected bounded JSON.")}}c(Cn,"assertLearningRequestJson");var jn=e.object({scope:a,command:He}).strict(),En=e.discriminatedUnion("action",[e.object({action:e.literal("inspect_task_queue"),scope:a,modelProjectId:a.nullable()}).strict(),e.object({action:e.literal("inspect_policy"),scope:a,policy:u}).strict(),e.object({action:e.literal("inspect_evidence"),scope:a,evidence:u}).strict(),e.object({action:e.literal("get"),scope:a,kind:Q,id:a,revision:e.number().int().positive().optional()}).strict(),e.object({action:e.literal("list"),scope:a,kind:Q,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()]),Tn=e.object({evidence:u,definition:u,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(),Dn=e.object({operationId:a,resources:e.array(e.union(Object.values(J))).max(100)}).strict();export{$ as a,qe as b,Pe as c,He as d,Fe as e,Be as f,bi as g,Ne as h,mt as i,lt as j,ut as k,J as l,Me as m,L as n,S as o,At as p,Lt as q,Ot as r,vi as s,W as t,wi as u,z as v,Qe as w,Ke as x,We as y,Si as z,mn as A,Ri as B,vn as C,Cn as D,jn as E,En as F,Tn as G,Dn as H};
|