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.
Files changed (146) hide show
  1. package/dist/app-server.d.ts +28 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{actions-command-FJM6WNUI.js → actions-command-V5DZWEON.js} +1 -1
  4. package/dist/chunks/{app-layer-XNA7UVWS.js → app-layer-SFV6ZPKZ.js} +1 -1
  5. package/dist/chunks/app-server-runtime-RBWHBX7T.js +2 -0
  6. package/dist/chunks/{apps-SC5SKRJC.js → apps-SR7CAM42.js} +1 -1
  7. package/dist/chunks/{chunk-FOZVXTZM.js → chunk-4LLHOG7L.js} +1 -1
  8. package/dist/chunks/{chunk-MVPNEF5P.js → chunk-5N6YRABR.js} +2 -2
  9. package/dist/chunks/{chunk-3NDRIQTI.js → chunk-73KFNV3D.js} +1 -1
  10. package/dist/chunks/{chunk-3WTRTL56.js → chunk-ADMQIREX.js} +1 -1
  11. package/dist/chunks/chunk-B6IIGPWS.js +6 -0
  12. package/dist/chunks/chunk-BB6DJKXX.js +19 -0
  13. package/dist/chunks/chunk-DY5RF2YE.js +26 -0
  14. package/dist/chunks/{chunk-36OUIHLX.js → chunk-G2VYRU27.js} +1 -1
  15. package/dist/chunks/chunk-KRNLKKN6.js +5 -0
  16. package/dist/chunks/{chunk-EDD5KGLG.js → chunk-LFL4M4DL.js} +7 -3
  17. package/dist/chunks/{chunk-7P6ZK5IG.js → chunk-LLJI6QAY.js} +1 -1
  18. package/dist/chunks/{chunk-FYCJSUFV.js → chunk-NNLI4OWY.js} +1 -1
  19. package/dist/chunks/{chunk-HTTZFZEP.js → chunk-O4IARD7H.js} +1 -1
  20. package/dist/chunks/{chunk-URZJ4Y2A.js → chunk-QOR55VHT.js} +1 -1
  21. package/dist/chunks/{chunk-WRMXQAYN.js → chunk-QWE3RHNY.js} +1 -1
  22. package/dist/chunks/{chunk-WUHDI23M.js → chunk-RQLWYR5B.js} +1 -1
  23. package/dist/chunks/{chunk-NC6ITVZS.js → chunk-S64WASAO.js} +1 -1
  24. package/dist/chunks/{chunk-HCJADRKO.js → chunk-SS3EG6S2.js} +1 -1
  25. package/dist/chunks/chunk-UW6ES5DM.js +28 -0
  26. package/dist/chunks/{chunk-W56MAK5K.js → chunk-V4ACXLID.js} +1 -1
  27. package/dist/chunks/{chunk-3VQIZYAN.js → chunk-WDE3KN3N.js} +439 -343
  28. package/dist/chunks/{chunk-2S2UONFI.js → chunk-Y7ZYJQGZ.js} +1 -1
  29. package/dist/chunks/{cli-LBXU6SRW.js → cli-3LLBTPP5.js} +1 -1
  30. package/dist/chunks/{configuration-command-3ZVMKIZK.js → configuration-command-EBN7RH3X.js} +1 -1
  31. package/dist/chunks/{core-commands-IXY7BKVS.js → core-commands-2S4UQPXW.js} +1 -1
  32. package/dist/chunks/{desktop-test-V5YO4LCV.js → desktop-test-WN7ZLQVQ.js} +1 -1
  33. package/dist/chunks/{dist-NKLXFA37.js → dist-UA2RQUA4.js} +1 -1
  34. package/dist/chunks/extension-ERM5EUUO.js +6 -0
  35. package/dist/chunks/{help-UIHQZ4CU.js → help-N25BKIHM.js} +1 -1
  36. package/dist/chunks/{opchat-G7QSVFAI.js → opchat-V4A4WCND.js} +1 -1
  37. package/dist/chunks/{organizations-Z4SFKZZ7.js → organizations-TSOT7MDT.js} +1 -1
  38. package/dist/chunks/{profile-XZWNVG5R.js → profile-3JQ3XM6Q.js} +1 -1
  39. package/dist/chunks/{project-agent-P6TRRYOC.js → project-agent-S76FWVPV.js} +1 -1
  40. package/dist/chunks/{sandbox-command-JISHBUMC.js → sandbox-command-YQDGQBBQ.js} +1 -1
  41. package/dist/chunks/{sandbox-template-YGPOBKNA.js → sandbox-template-GM2A3437.js} +1 -1
  42. package/dist/chunks/{src-S7SFHJYJ.js → src-BC7WOVGF.js} +1 -1
  43. package/dist/chunks/src-KNUCNVBC.js +319 -0
  44. package/dist/chunks/{teams-bot-TXCL4DNV.js → teams-bot-M6QLZAHA.js} +1 -1
  45. package/dist/chunks/{workspaces-5XC34YIM.js → workspaces-ZWG55DFE.js} +1 -1
  46. package/dist/cli.js +1 -1
  47. package/dist/index.js +1 -1
  48. package/dist/profile/local-profile.d.ts +7 -0
  49. package/dist/skills/openpond-agent-authoring/references/profile-layout.md +9 -0
  50. package/dist/web/assets/App-7h_oHCFd.css +1 -0
  51. package/dist/web/assets/App-Dx38Dhlo.js +176 -0
  52. package/dist/web/assets/{AppDialog-CtqbY289.js → AppDialog-DdWbnFnr.js} +1 -1
  53. package/dist/web/assets/AppTerminalPanel-BotH-2y4.js +2 -0
  54. package/dist/web/assets/{AppsView-BeGbrJkU.js → AppsView-B3ybXi71.js} +1 -1
  55. package/dist/web/assets/BrowserSidebar-CLE27mjT.js +1 -0
  56. package/dist/web/assets/{BrowserSidebar-D9i7gQzw.css → BrowserSidebar-lNqqj4Ip.css} +1 -1
  57. package/dist/web/assets/{CartesianChart-Cp_-LaJY.js → CartesianChart-SB3Jq3CQ.js} +1 -1
  58. package/dist/web/assets/{CollaborationTabs-BL6guh-3.js → CollaborationTabs-C3jO5y5v.js} +1 -1
  59. package/dist/web/assets/{CommandMenu-hNQCm8mw.css → CommandMenu-Cb3vNGJr.css} +1 -1
  60. package/dist/web/assets/{CommandMenu-B-DEtpTp.js → CommandMenu-DqtJane1.js} +1 -1
  61. package/dist/web/assets/{CommunityView-DaIS0cHw.css → CommunityView-CnZqWEjK.css} +1 -1
  62. package/dist/web/assets/{CommunityView-DcEhEMm_.js → CommunityView-Dg02tZmL.js} +1 -1
  63. package/dist/web/assets/{ComposerCreateImproveStrip-C4mCZcKl.js → ComposerCreateImproveStrip-BTJhG8aU.js} +1 -1
  64. package/dist/web/assets/{GetStartedView-BUlaCO6a.js → GetStartedView-BlyP6VY8.js} +1 -1
  65. package/dist/web/assets/HostedModelLearningReview-BwSAO9y6.js +1 -0
  66. package/dist/web/assets/HostedModelLearningSettings-CiY2K8Fz.js +1 -0
  67. package/dist/web/assets/{LabModelVersionDetailPage-Bb1XRvo_.js → LabModelVersionDetailPage-cE1kuSWk.js} +1 -1
  68. package/dist/web/assets/{LabSkillSidebar-CPucMztm.js → LabSkillSidebar-BrSa3H3m.js} +1 -1
  69. package/dist/web/assets/{LabsRoute-C_HDADl0.js → LabsRoute-CY7rB25U.js} +4 -4
  70. package/dist/web/assets/MainChatThread-BM8l-LiB.js +2 -0
  71. package/dist/web/assets/MainPane-CsAYR_EF.js +10 -0
  72. package/dist/web/assets/{MarkdownText-_zVYW4pN.js → MarkdownText-8GA7g1qR.js} +1 -1
  73. package/dist/web/assets/{Messages-DxctstDI.js → Messages-CX08x24k.js} +6 -6
  74. package/dist/web/assets/{NativeSkillSidebar-DV4AGiCD.js → NativeSkillSidebar-mSz4GlxA.js} +1 -1
  75. package/dist/web/assets/{NewExperienceSwitcher-CZCLJj99.js → NewExperienceSwitcher-CHAC2Zid.js} +1 -1
  76. package/dist/web/assets/{NewProjectDialog-CQSipZ5d.js → NewProjectDialog-5B17C6Vh.js} +1 -1
  77. package/dist/web/assets/{OutputsPage-aPJP4mTV.js → OutputsPage-27Gp1K5N.js} +1 -1
  78. package/dist/web/assets/{ProjectsPage-CyThuXQv.js → ProjectsPage-DJpPuKBP.js} +1 -1
  79. package/dist/web/assets/RightChatPanelStack-C_4rbc1i.js +1 -0
  80. package/dist/web/assets/{RightSidebarHomePanel-CtH0vZ36.js → RightSidebarHomePanel-PHndCapL.js} +1 -1
  81. package/dist/web/assets/{ScheduledWorkPage-BY_4jFm7.js → ScheduledWorkPage-CYQZ0Zal.js} +1 -1
  82. package/dist/web/assets/{SettingsView-ZPnupcpg.js → SettingsView-DQPMLKNH.js} +7 -7
  83. package/dist/web/assets/{TeamChatView-DWjwVxMp.js → TeamChatView-DRvqhiOV.js} +2 -2
  84. package/dist/web/assets/{TeamChatView-Br3VdxhD.css → TeamChatView-dL6B0qib.css} +1 -1
  85. package/dist/web/assets/{TerminalOverlay-DxuUGKYH.js → TerminalOverlay-C8FbaVVP.js} +1 -1
  86. package/dist/web/assets/{TrainingCreationPanel-CjIPEoTX.js → TrainingCreationPanel-BGsd95vF.js} +1 -1
  87. package/dist/web/assets/{TrainingDraftPanel-CxevAlkr.js → TrainingDraftPanel-Bm6j-IuS.js} +1 -1
  88. package/dist/web/assets/{UsageSettingsSection-CY1lQB_g.js → UsageSettingsSection-CTCDOE-_.js} +3 -3
  89. package/dist/web/assets/{WorkSidebarPanel-DMsiwOSi.js → WorkSidebarPanel-UaymQC_e.js} +1 -1
  90. package/dist/web/assets/WorkspaceDiffPanel-D6mKLQha.js +14 -0
  91. package/dist/web/assets/{WorkspaceEnvironmentMenu-7DSF_BpI.js → WorkspaceEnvironmentMenu-C4Uw5qMA.js} +3 -3
  92. package/dist/web/assets/{WorkspaceGitDialogs-Ck8BzH11.js → WorkspaceGitDialogs--t9VpTCT.js} +1 -1
  93. package/dist/web/assets/{WorkspaceMonacoEditor-gsEP4W37.js → WorkspaceMonacoEditor-CElU0vIN.js} +3 -3
  94. package/dist/web/assets/{arrow-up-right-BK6EpHpC.js → arrow-up-right-C0HJHPjq.js} +1 -1
  95. package/dist/web/assets/{chat-file-links-BQe708gU.js → chat-file-links-D5q1as_h.js} +1 -1
  96. package/dist/web/assets/chevron-up-B3Cyo8SJ.js +1 -0
  97. package/dist/web/assets/{clipboard-DOmCP7eR.js → clipboard-wiphvxrN.js} +1 -1
  98. package/dist/web/assets/{cloud-upload-DLtawDYW.js → cloud-upload-Bgm5_SSr.js} +1 -1
  99. package/dist/web/assets/{cssMode-C0Qw8i_8.js → cssMode-DudNT1l3.js} +1 -1
  100. package/dist/web/assets/{folder-open-B_Ayxxo8.js → folder-open-DLuZSDXn.js} +1 -1
  101. package/dist/web/assets/{folder-plus-CPgtt3pN.js → folder-plus-DXN0q9GR.js} +1 -1
  102. package/dist/web/assets/{git-commit-horizontal-23xCJjd8.js → git-commit-horizontal-CdiI4K5M.js} +1 -1
  103. package/dist/web/assets/{htmlMode-DuQ7zaau.js → htmlMode-B2sAXhgB.js} +1 -1
  104. package/dist/web/assets/index-C5EoPZr0.css +1 -0
  105. package/dist/web/assets/{index-BoaTQ0Rb.js → index-DSK9XSir.js} +2 -1
  106. package/dist/web/assets/{info-CQ2kJJ5E.js → info-DcmIP9D3.js} +1 -1
  107. package/dist/web/assets/{jsonMode-DVQSEPUy.js → jsonMode-aQlrpuz5.js} +1 -1
  108. package/dist/web/assets/{lspLanguageFeatures-DWKH3min.js → lspLanguageFeatures-BMskOvs7.js} +1 -1
  109. package/dist/web/assets/{minimize-2-1M-fFBeP.js → minimize-2-CvKd6Q_r.js} +1 -1
  110. package/dist/web/assets/{monaco.contribution-jXX7-l5p.js → monaco.contribution-BHv_qQG9.js} +2 -2
  111. package/dist/web/assets/{monaco.contribution-ytVV-s22.js → monaco.contribution-BSRllZgB.js} +2 -2
  112. package/dist/web/assets/{monaco.contribution-B5Jz7f4W.js → monaco.contribution-VS3RCwFP.js} +2 -2
  113. package/dist/web/assets/{monaco.contribution-DB7pp5Y-.js → monaco.contribution-tZUXzebU.js} +2 -2
  114. package/dist/web/assets/{play-D9jaK5MP.js → play-BzfQJMmu.js} +1 -1
  115. package/dist/web/assets/{python-_yRitN2I.js → python-Bm9eN64d.js} +1 -1
  116. package/dist/web/assets/{refresh-cw-DZHqZGos.js → refresh-cw-Cvy0BqFv.js} +1 -1
  117. package/dist/web/assets/{save-DOT3oYfU.js → save-miVdIz56.js} +1 -1
  118. package/dist/web/assets/{square-D_1V6onE.js → square-DlJ_-dur.js} +1 -1
  119. package/dist/web/assets/{toggleHighContrast-C06C-luq.js → toggleHighContrast-B8jte8Lm.js} +1 -1
  120. package/dist/web/assets/{tsMode-CTMYvh-R.js → tsMode-CmAPBzqb.js} +1 -1
  121. package/dist/web/assets/{upload-EAAHd0Nx.js → upload-C71OnfRd.js} +1 -1
  122. package/dist/web/assets/{useLocalAgentSchedules-DBsx4aIY.js → useLocalAgentSchedules-D9hDhAba.js} +1 -1
  123. package/dist/web/assets/{wifi-off-DYRTrfYa.js → wifi-off-DhI7P9WW.js} +1 -1
  124. package/dist/web/assets/{workers-DAytqxd3.js → workers-BDI2xQio.js} +1 -1
  125. package/dist/web/assets/{yaml-iZnWWABr.js → yaml-DNSpZj5_.js} +1 -1
  126. package/dist/web/index.html +2 -2
  127. package/package.json +1 -1
  128. package/dist/chunks/app-server-runtime-MICKKE3S.js +0 -2
  129. package/dist/chunks/chunk-AD3RLKPP.js +0 -5
  130. package/dist/chunks/chunk-AIGGIV44.js +0 -5
  131. package/dist/chunks/chunk-HEUO2XEH.js +0 -28
  132. package/dist/chunks/chunk-L6OFNJ6Y.js +0 -19
  133. package/dist/chunks/chunk-XSFF4T2Z.js +0 -24
  134. package/dist/chunks/extension-N5SBQPJO.js +0 -5
  135. package/dist/chunks/src-UDJ7D55P.js +0 -319
  136. package/dist/web/assets/App-DNZ5VhFd.js +0 -176
  137. package/dist/web/assets/AppTerminalPanel-C1U1RKU6.js +0 -2
  138. package/dist/web/assets/BrowserSidebar-XgQLeXw1.js +0 -1
  139. package/dist/web/assets/HostedModelLearningReview-CZyb95R_.js +0 -1
  140. package/dist/web/assets/HostedModelLearningSettings-D2o7rh0w.js +0 -1
  141. package/dist/web/assets/MainChatThread-CnXHxCy3.js +0 -2
  142. package/dist/web/assets/MainPane-DjnT-kvm.js +0 -8
  143. package/dist/web/assets/RightChatPanelStack-jsP9CukH.js +0 -1
  144. package/dist/web/assets/WorkspaceDiffPanel-HdfItqu2.js +0 -14
  145. package/dist/web/assets/chevron-up-CHxYR4AX.js +0 -1
  146. 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-HCJADRKO.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(`
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,r as ee,w as oe}from"./chunk-AD3RLKPP.js";import{a as T,b as X,h as K}from"./chunk-3WTRTL56.js";import{n as te,p as re}from"./chunk-7P6ZK5IG.js";import{$a as C,Ra as J,Sa as V,Ua as A,Xa as F,_a as W,b as L,c as B,db as z,fb as q,gb as Y,ja as D,la as H,ma as M,na as $,oa as j,qa as G}from"./chunk-FYCJSUFV.js";import{b as i}from"./chunk-ES2ISFJC.js";import{c as N,d as P,f as k,h as O}from"./chunk-H7IWJN7L.js";import{a as s}from"./chunk-FTQLQJQV.js";import{promises as I}from"node:fs";import Ee from"node:os";import Ae from"node:path";import{createServer as Te}from"node:http";import{randomBytes as _e}from"node:crypto";var be=i.discriminatedUnion("op",[i.strictObject({op:i.literal("set"),path:i.array(i.string().min(1)).min(1),value:i.unknown()}),i.strictObject({op:i.literal("unset"),path:i.array(i.string().min(1)).min(1)})]),Oe=i.discriminatedUnion("action",[i.strictObject({action:i.literal("patch"),expectedRevision:i.string(),operations:i.array(be).max(100)}),i.strictObject({action:i.literal("replace"),expectedRevision:i.string(),text:i.string().max(1048576)}),i.strictObject({action:i.literal("validate"),text:i.string().max(1048576)}),i.strictObject({action:i.literal("restore"),expectedRevision:i.string(),revision:i.string()}),i.strictObject({action:i.literal("trust"),root:i.string(),accountId:i.string(),trusted:i.boolean()}),i.strictObject({action:i.literal("client-state"),owner:i.string(),patch:z,importOnly:i.boolean().optional()})]);function ne(e){let t=null;async function r(a,n){let f=O(e).config,m=null,c=null,u=null;try{m=await B(f),u=await C(e,{projectRoot:a,accountId:n}),a||(t=u)}catch(l){c=P(l,f)}let v=u??(a?null:t);return{path:f,text:m,rawRevision:L(m),issue:c,effective:v,usingLastValid:!u&&!!v,applies:"next_turn",recoverableRevisions:await H(e),clientState:c?null:await q(e)}}s(r,"status");async function o(a){let n=Oe.parse(a);return n.action==="validate"?{valid:!0,document:D(n.text,O(e).config)}:(n.action==="patch"&&await G(e,n.expectedRevision,n.operations),n.action==="replace"&&await M(e,n.expectedRevision,n.text),n.action==="restore"&&await $(e,n.revision,n.expectedRevision),n.action==="trust"&&await W(e,n.root,n.accountId,n.trusted),n.action==="client-state"?Y(e,n.owner,n.patch,n.importOnly):r())}return s(o,"mutate"),{status:r,mutate:o,schema:j}}s(ne,"createConfigurationPayloads");import{Buffer as ie}from"node:buffer";var E={"Access-Control-Allow-Headers":"authorization, content-type, x-openpond-team-id","Access-Control-Allow-Methods":"GET, POST, PUT, PATCH, DELETE, OPTIONS"},Se=25*1024*1024,x=class extends Error{constructor(r,o,a){super(a);this.status=r;this.code=o;this.name="HttpBodyError"}status;code;static{s(this,"HttpBodyError")}};function ae(e,t,r={}){for(let[a,n]of Object.entries(E))t.setHeader(a,n);let o=le(e.headers.origin);return o?(t.setHeader("Vary",Ce(t.getHeader("Vary"))),Re(o,r)?(t.setHeader("Access-Control-Allow-Origin",o),{allowed:!0,origin:o}):{allowed:!1,origin:o}):{allowed:!0,origin:null}}s(ae,"applyCorsHeaders");function Re(e,t={}){if(e==="null")return!0;let r=se(e);return r?xe(r)?!0:new Set((t.allowedOrigins??[]).map(a=>a?se(a):null).filter(a=>!!a)).has(r):!1}s(Re,"isAllowedCorsOrigin");function h(e,t,r){e.writeHead(t,{"Content-Type":"application/json",...E}),e.end(JSON.stringify(r))}s(h,"sendJson");function Ve(e,t,r){e.writeHead(t,{"Content-Type":"text/plain; charset=utf-8",...E}),e.end(r)}s(Ve,"sendText");function Fe(e,t,r,o){e.writeHead(t,{"Content-Type":o,"Content-Length":String(r.byteLength),"Cache-Control":"no-store","X-Content-Type-Options":"nosniff",...E}),e.end(r)}s(Fe,"sendBinary");async function _(e,t={}){let r=t.maxBytes??Se,o=le(e.headers["content-type"]),a=[],n=0;for await(let m of e){let c=ie.from(m);if(n+=c.byteLength,n>r)throw new x(413,"request_body_too_large",`JSON request body exceeds ${r} bytes.`);a.push(c)}let f=ie.concat(a).toString("utf8").trim();if(!f)return{};if(!Pe(o))throw new x(415,"unsupported_media_type","JSON request body requires Content-Type: application/json.");try{return JSON.parse(f)}catch{throw new x(400,"invalid_json","Request body is not valid JSON.")}}s(_,"readJson");function ce(e,t,r){let o=e.headers.authorization;return(typeof o=="string"&&o.startsWith("Bearer ")?o.slice(7):null)===r}s(ce,"hasAuth");function le(e){return Array.isArray(e)?e[0]??null:e??null}s(le,"headerValue");function Pe(e){if(!e)return!1;let t=e.split(";")[0]?.trim().toLowerCase();return t==="application/json"||!!t?.endsWith("+json")}s(Pe,"isJsonContentType");function se(e){try{let t=new URL(e);return t.protocol!=="http:"&&t.protocol!=="https:"?null:t.origin}catch{return null}}s(se,"normalizeOrigin");function xe(e){let t=new URL(e);return t.hostname==="localhost"||t.hostname==="127.0.0.1"||t.hostname==="::1"||t.hostname==="[::1]"}s(xe,"isLoopbackOrigin");function Ce(e){let r=(Array.isArray(e)?e.join(", "):e?String(e):"").split(",").map(o=>o.trim()).filter(Boolean);return r.some(o=>o.toLowerCase()==="origin")||r.push("Origin"),r.join(", ")}s(Ce,"appendVaryOrigin");function pe(e){return`<!doctype html><html lang="en"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>OpenPond recovery</title>
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 Ie=i.strictObject({action:i.enum(["preview","migrate","restart","retry"]),sourceAppHome:i.string().optional(),sourceConfig:i.string().optional(),resolutions:J.optional()});function ue(e){return e instanceof N&&/^(PRIVATE_STORAGE_|UNSAFE_STORAGE_|INVALID_CONFIG|CONFIG_|MIGRATION_|SOURCE_CHANGED_|CREDENTIAL_|UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|INVALID_ACCOUNT_|MISSING_INSTRUCTION_|INVALID_PROFILE_|DATABASE_RECOVERY_)/.test(e.issue.code)}s(ue,"isRecoverableStartupError");async function de(e,t,r){let o=/^(UNSUPPORTED_STORAGE_|INVALID_MIGRATION_|UNSAFE_STORAGE_|PRIVATE_STORAGE_)/.test(r.issue.code),a=o?await I.mkdtemp(Ae.join(Ee.tmpdir(),"openpond-recovery-")):e;return Q(a,async()=>{let{token:n,tokenFile:f}=await oe(a),m=ne(e),c=r.issue,u,v=new Promise(g=>{u=g}),l=Te((g,d)=>{(async()=>{let y=new URL(g.url??"/","http://127.0.0.1");if(!ae(g,d).allowed){h(d,403,{error:"Origin not allowed"});return}if(g.method==="OPTIONS"){h(d,204,{});return}if(g.method==="GET"&&y.pathname==="/health"){h(d,200,{ok:!0,server:"openpond-app-server",version:X,recovery:!0});return}if(g.method==="GET"&&y.pathname==="/"){let w=_e(18).toString("base64");d.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Cache-Control":"no-store","Content-Security-Policy":`default-src 'none'; script-src 'nonce-${w}'; style-src 'nonce-${w}'; connect-src 'self'; base-uri 'none'; frame-ancestors 'none'`}),d.end(pe(w));return}if(!ce(g,y,n)){h(d,401,{error:"Unauthorized"});return}let U=!o;if(g.method==="GET"&&y.pathname==="/v1/recovery"){h(d,200,{issue:c,configEditable:U,config:o?{path:O(e).config,text:null,rawRevision:"unavailable",issue:c,recoverableRevisions:[]}:await m.status(),migration:await V(e).catch(w=>({issue:P(w,e)}))});return}if(g.method==="POST"&&y.pathname==="/v1/configuration"&&U){h(d,200,await m.mutate(await _(g)));return}if(g.method==="POST"&&y.pathname==="/v1/recovery"){let w=Ie.parse(await _(g));if(o&&w.action!=="retry"&&w.action!=="preview")throw r;if(w.action==="restart"){h(d,200,await F(e));return}if(w.action==="preview"||w.action==="migrate"){h(d,200,await A(e,{sourceAppHome:w.sourceAppHome,sourceConfig:w.sourceConfig,resolutions:w.resolutions,dryRun:w.action==="preview"}));return}await A(e),await C(e),h(d,200,{ready:!0}),u();return}h(d,503,{error:`${c.message} ${c.action}`,issue:c,recovery:!0})})().catch(y=>{c=P(y,e),h(d,422,{error:`${c.message} ${c.action}`,issue:c})})});await new Promise((g,d)=>{l.once("error",d),l.listen(t,"127.0.0.1",()=>{l.off("error",d),g()})});let p=l.address().port,R=`http://127.0.0.1:${p}`;return await Z(a,R,"startup-recovery"),{url:R,port:p,token:n,tokenFile:f,storePath:O(e).database,repaired:v,close:s(async()=>{l.closeIdleConnections(),await new Promise((g,d)=>l.close(y=>y?d(y):g())),o&&await I.rm(a,{recursive:!0,force:!0})},"close")}}).catch(async n=>{throw o&&await I.rm(a,{recursive:!0,force:!0}),n})}s(de,"startRecoveryServer");import{existsSync as Ue}from"node:fs";import b from"node:path";import{fileURLToPath as Ne}from"node:url";var fe=b.dirname(Ne(import.meta.url));function S(e,t,r){let o=e[t+1];if(!o||o.startsWith("--"))throw new Error(`${r} requires a value.`);return o}s(S,"requireValue");function ge(e,t){let r=Number.parseInt(e,10);if(!Number.isFinite(r)||r<0||r>65535)throw new Error(`${t} must be a port from 0 to 65535.`);return r}s(ge,"parsePort");function we(e){let t="serve",r=T,o=17874,a=null,n=!1,f=!1,m=null,c,u=0,v=e[0];if(v&&!v.startsWith("-")){if(v==="serve"||v==="server")t="serve";else if(v==="app-server")t="app-server";else if(v==="web")t="web";else{if(v==="help")return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,help:!0};throw new Error(`Unknown command: ${v}`)}u=1}for(let l=u;l<e.length;l+=1){let p=e[l];if(p==="--help"||p==="-h")return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,help:!0};if(p==="--listen"){let R=K(S(e,l,p));r=R.host,o=ge(String(R.port),p),l+=1}else if(p==="--hostname"||p==="--host")r=S(e,l,p),l+=1;else if(p==="--port")o=ge(S(e,l,p),p),l+=1;else if(p==="--web-root")a=b.resolve(S(e,l,p)),l+=1;else if(p==="--source-browser-state")c=b.resolve(S(e,l,p)),l+=1;else{if(p==="--store-dir")throw new Error("--store-dir has been replaced by --home. Use --home <directory> or OPENPOND_HOME.");if(p==="--home")m=b.resolve(S(e,l,p)),l+=1;else if(p==="--open-browser")n=!0;else if(p==="--print-access-url")f=!0;else throw new Error(`Unknown option: ${p}`)}}if(n&&f)throw new Error("--open-browser and --print-access-url cannot be used together.");if(t!=="web"&&(n||f))throw new Error("Browser options are only available in web mode.");return{mode:t,host:r,port:o,webRoot:a,openBrowser:n,printAccessUrl:f,storeDir:m,sourceBrowserState:c,help:!1}}s(we,"parseCliArgs");function ke(){return[process.env.OPENPOND_WEB_ROOT,b.resolve(process.cwd(),"apps/web/dist"),b.resolve(fe,"../../web/dist"),b.resolve(process.cwd(),"web"),b.resolve(fe,"../web")].filter(e=>!!e)}s(ke,"defaultWebRootCandidates");function Le(e){let t=e?[e]:ke();for(let r of t){let o=b.resolve(r);if(Ue(b.join(o,"index.html")))return o}return null}s(Le,"resolveWebRoot");function Be(e){let t=e==="0.0.0.0"||e==="::"?"127.0.0.1":e;return t.includes(":")&&!t.startsWith("[")?`[${t}]`:t}s(Be,"formatHostForUrl");function De(e){return`http://${Be(e.status.host)}:${e.status.port}`}s(De,"browserBaseUrl");function He(e,t){let r=new URL(e),o=new URLSearchParams;return o.set("openpondServerUrl",e),o.set("openpondToken",t),r.hash=o.toString(),r.toString()}s(He,"tokenizedWebUrl");async function me(e,t=re){let r=He(e.baseUrl,e.token);if(e.printAccessUrl)return{stdout:[`OpenPond access URL: ${r}`],stderr:[]};if(!e.openBrowser)return{stdout:[`OpenPond web UI: ${e.baseUrl}`],stderr:[]};let o=await t(r);return o.opened?{stdout:[`Opened OpenPond in your browser: ${e.baseUrl}`],stderr:[]}:{stdout:[`OpenPond access URL: ${r}`],stderr:[`Could not open the system browser: ${o.error}`]}}s(me,"resolveWebLaunchMessages");function he(){console.log(`Usage:
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,a=t.port;for(;;)try{o=await e.createOpenPondServer({host:t.host,port:a,webRoot:r,sourceBrowserState:t.sourceBrowserState,...t.storeDir?{storeDir:t.storeDir}:{},httpEnabled:!0});break}catch(c){if(!ue(c))throw c;let u=await de(k({home:t.storeDir??void 0}),a,c);a=u.port,console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:"recovery",url:u.url,tokenFile:u.tokenFile,storePath:u.storePath})}`),console.error(`${c.issue.code}: ${c.issue.message} ${c.issue.action}`);let v=await me({baseUrl:u.url,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:u.token});for(let p of v.stdout)console.log(p);for(let p of v.stderr)console.error(p);let l=s(()=>{u.close().finally(()=>process.exit(0))},"close");process.once("SIGINT",l),process.once("SIGTERM",l);try{await u.repaired}finally{process.off("SIGINT",l),process.off("SIGTERM",l),await u.close()}}let n=t.mode==="web"?De(o):null;if(console.log(`OPENPOND_APP_SERVER_READY ${JSON.stringify({mode:t.mode,url:o.url,webUrl:null,webRoot:r,tokenFile:o.tokenFile,storePath:o.storePath,runtime:te()})}`),n){let c=await me({baseUrl:n,openBrowser:t.openBrowser,printAccessUrl:t.printAccessUrl,token:o.token});for(let u of c.stderr)console.error(u);for(let u of c.stdout)console.log(u)}else console.log(`OpenPond API server: ${o.url}`);let f=!1,m=s(async()=>{f||(f=!0,await o.close(),process.exit(0))},"shutdown");process.on("SIGINT",()=>{m()}),process.on("SIGTERM",()=>{m()}),await new Promise(()=>{})}s(bt,"runOpenPondServerCli");async function Ot(e){let t=process.argv.slice(2),r=we(!t[0]||t[0].startsWith("-")?["app-server",...t]:t);if(r.help){he();return}if(r.mode!=="app-server")throw new Error("The app-server entrypoint only accepts the app-server command.");await ye(e,r.storeDir)}s(Ot,"runOpenPondAppServerCli");async function ye(e,t){t&&(process.env.OPENPOND_HOME=t);let r=await e({...t?{storeDir:t}:{}});await ee({appServer:r,readable:process.stdin,writable:process.stdout})}s(ye,"runAgentServer");export{ne as a,x as b,ae as c,h as d,Ve as e,Fe as f,_ as g,ce as h,me as i,bt as j,Ot as k};
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{W 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-XSFF4T2Z.js";import{d as R,e as U}from"./chunk-J2S7BOZU.js";import{K as ne,q as ce}from"./chunk-FYCJSUFV.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(`
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};