openpond 0.2.23 → 0.2.25

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 (148) hide show
  1. package/dist/app-server.js +1 -1
  2. package/dist/chunks/actions-command-S27YU6NW.js +2 -0
  3. package/dist/chunks/{app-layer-4CK6ZEKN.js → app-layer-57323XKJ.js} +1 -1
  4. package/dist/chunks/app-server-runtime-QIIJ3KQJ.js +2 -0
  5. package/dist/chunks/apps-U3TXSPU6.js +2 -0
  6. package/dist/chunks/{chunk-MD7IADMT.js → chunk-3YSCXFE6.js} +3 -3
  7. package/dist/chunks/chunk-4KDHMGKI.js +2 -0
  8. package/dist/chunks/{chunk-NS3VMSTX.js → chunk-5WFXFKLA.js} +2 -2
  9. package/dist/chunks/chunk-6LY7GYNK.js +2 -0
  10. package/dist/chunks/{chunk-BZMVB3GS.js → chunk-6XF4GI35.js} +1 -1
  11. package/dist/chunks/{chunk-73KFNV3D.js → chunk-7TV2VBSD.js} +1 -1
  12. package/dist/chunks/{chunk-CXDS2LSW.js → chunk-AC2M2HO3.js} +1 -1
  13. package/dist/chunks/{chunk-ZVOO7FKM.js → chunk-BSHAIAXY.js} +1 -1
  14. package/dist/chunks/{chunk-QWE3RHNY.js → chunk-C5OV4XWF.js} +1 -1
  15. package/dist/chunks/{chunk-WYHHDJEG.js → chunk-D6BBQHZM.js} +12 -12
  16. package/dist/chunks/{chunk-JS6MS2NR.js → chunk-F3VURV3Q.js} +2 -2
  17. package/dist/chunks/chunk-F4WS5QIT.js +54 -0
  18. package/dist/chunks/{chunk-V4ACXLID.js → chunk-GOQDMRUV.js} +1 -1
  19. package/dist/chunks/chunk-J3ZRHNGL.js +2 -0
  20. package/dist/chunks/{chunk-T3VPZRIX.js → chunk-JTX6QZEP.js} +1 -1
  21. package/dist/chunks/{chunk-H75VJFMZ.js → chunk-KLSLHUTO.js} +1 -1
  22. package/dist/chunks/{chunk-Q76GR2JM.js → chunk-M4CJXPMH.js} +1 -1
  23. package/dist/chunks/chunk-M4VGRNP6.js +2 -0
  24. package/dist/chunks/{chunk-XDVKDELR.js → chunk-RBQZVQQM.js} +1 -1
  25. package/dist/chunks/chunk-TJNIYJUH.js +2 -0
  26. package/dist/chunks/{chunk-CTC5EYSH.js → chunk-TR37PJIQ.js} +3 -3
  27. package/dist/chunks/{chunk-3XUBKIBN.js → chunk-UBHTZJEV.js} +1 -1
  28. package/dist/chunks/{chunk-V2BBMZ7I.js → chunk-WK5HTGXV.js} +1 -1
  29. package/dist/chunks/chunk-XRV4WLI7.js +2 -0
  30. package/dist/chunks/chunk-XWPC3AN4.js +1 -0
  31. package/dist/chunks/chunk-Y2NQXJ2Q.js +5 -0
  32. package/dist/chunks/{chunk-DWROB2J6.js → chunk-YNH6AUGE.js} +1 -1
  33. package/dist/chunks/cli-GGYPZNZC.js +2 -0
  34. package/dist/chunks/configuration-command-BASDSNVK.js +2 -0
  35. package/dist/chunks/{continual-OJYXVTIZ.js → continual-6EW2SLGL.js} +1 -1
  36. package/dist/chunks/core-commands-YQTVPPLJ.js +2 -0
  37. package/dist/chunks/desktop-test-JITAYXCK.js +3 -0
  38. package/dist/chunks/dist-5C6RYTQQ.js +2 -0
  39. package/dist/chunks/{extension-AZRG5IPK.js → extension-ZKWQ3ZPJ.js} +1 -1
  40. package/dist/chunks/{help-6IMGNP7A.js → help-SDEZHWZL.js} +1 -1
  41. package/dist/chunks/{opchat-OS7WAVZO.js → opchat-IOP37GN3.js} +1 -1
  42. package/dist/chunks/organizations-4LQEILYG.js +2 -0
  43. package/dist/chunks/{profile-A3YR3WVU.js → profile-MVLYUDLU.js} +1 -1
  44. package/dist/chunks/project-agent-DALYNEZ4.js +2 -0
  45. package/dist/chunks/sandbox-command-VHCKLKN5.js +2 -0
  46. package/dist/chunks/{sandbox-template-FK2TGQPK.js → sandbox-template-WY7XIMDK.js} +1 -1
  47. package/dist/chunks/{src-UIX7LWM7.js → src-22KEI2VU.js} +1 -1
  48. package/dist/chunks/{src-RZFKQSHW.js → src-R3FALV6F.js} +101 -101
  49. package/dist/chunks/taskset-YPKY3HUM.js +2 -0
  50. package/dist/chunks/{teams-bot-PASMNRFS.js → teams-bot-47H7LRFD.js} +1 -1
  51. package/dist/chunks/training-7PST5HZU.js +2 -0
  52. package/dist/chunks/{workspaces-YFAAPNVP.js → workspaces-RAHQXYWB.js} +1 -1
  53. package/dist/cli.js +1 -1
  54. package/dist/index.js +1 -1
  55. package/dist/web/assets/{App-CZo3tYaG.js → App-BzNZ7ycx.js} +28 -28
  56. package/dist/web/assets/{AppDialog-18Y9aU8z.js → AppDialog-C3H3HARP.js} +1 -1
  57. package/dist/web/assets/{AppTerminalPanel-9jAU4wYe.js → AppTerminalPanel-DIXARKfe.js} +2 -2
  58. package/dist/web/assets/{AppsView-BCYnY9mm.js → AppsView-D0xPDTPJ.js} +1 -1
  59. package/dist/web/assets/{BrowserSidebar-BVf3sUAG.js → BrowserSidebar-D5eE9O30.js} +1 -1
  60. package/dist/web/assets/{CartesianChart-iai9Dz1D.js → CartesianChart-KMVbiMJX.js} +1 -1
  61. package/dist/web/assets/{CollaborationTabs-D7bZIwFC.js → CollaborationTabs-C1LTvUbK.js} +1 -1
  62. package/dist/web/assets/{CommandMenu-diFDbKQl.js → CommandMenu-C9elnZaI.js} +1 -1
  63. package/dist/web/assets/{CommunityView-DaLkwOxW.js → CommunityView-BvXxVHmL.js} +1 -1
  64. package/dist/web/assets/{ComposerCreateImproveStrip-B59nTCE7.js → ComposerCreateImproveStrip-Cwu8EaCb.js} +1 -1
  65. package/dist/web/assets/{GetStartedView-BETryURK.js → GetStartedView-BI1j30-I.js} +1 -1
  66. package/dist/web/assets/HostedModelLearningReview-Bwkg3lyV.js +1 -0
  67. package/dist/web/assets/{HostedModelLearningSettings-FCly06RA.js → HostedModelLearningSettings-DhaT1bxX.js} +1 -1
  68. package/dist/web/assets/{LabModelVersionDetailPage-9MzQj6cy.js → LabModelVersionDetailPage-CeSm-sAq.js} +1 -1
  69. package/dist/web/assets/{LabSkillSidebar-BJHO5-J9.js → LabSkillSidebar-BzGs7EC8.js} +1 -1
  70. package/dist/web/assets/{LabsRoute-6jVWrbOO.js → LabsRoute-BQi8W0-2.js} +4 -4
  71. package/dist/web/assets/{MainChatThread-DAoPK8jG.js → MainChatThread-D3KXQ4Te.js} +2 -2
  72. package/dist/web/assets/{MainPane-LDPzuZSj.js → MainPane-J15DRf-n.js} +4 -4
  73. package/dist/web/assets/{MarkdownText-B8URwlq9.js → MarkdownText-BWIVACAt.js} +1 -1
  74. package/dist/web/assets/{Messages-Byk73D9T.js → Messages-BPbo8ih9.js} +1 -1
  75. package/dist/web/assets/{NativeSkillSidebar-BodHqCCH.js → NativeSkillSidebar-BeqI4dXF.js} +1 -1
  76. package/dist/web/assets/{NewExperienceSwitcher-BkUxxlOu.js → NewExperienceSwitcher-BggrQVIi.js} +1 -1
  77. package/dist/web/assets/{NewProjectDialog-BZr2wm-4.js → NewProjectDialog-B4PTFf78.js} +1 -1
  78. package/dist/web/assets/{OutputsPage-C8ZDtD1Y.js → OutputsPage-DChjcyaP.js} +1 -1
  79. package/dist/web/assets/{ProjectsPage-CgfjGsl2.js → ProjectsPage-BdUkyg6I.js} +1 -1
  80. package/dist/web/assets/{RightChatPanelStack-DV3csVka.js → RightChatPanelStack-CLCOzLVJ.js} +1 -1
  81. package/dist/web/assets/{RightSidebarHomePanel-DvLaHLBb.js → RightSidebarHomePanel-qs2Fa4JQ.js} +1 -1
  82. package/dist/web/assets/{ScheduledWorkPage-DtzxPTAL.js → ScheduledWorkPage-DzehKDhk.js} +1 -1
  83. package/dist/web/assets/{SettingsView-C3sVxgPc.js → SettingsView-DJiJKYWW.js} +3 -3
  84. package/dist/web/assets/{TeamChatView-B-w2nrWF.js → TeamChatView-uGwanVsA.js} +1 -1
  85. package/dist/web/assets/{TerminalOverlay-_X7WVAev.js → TerminalOverlay-DJNdErEp.js} +1 -1
  86. package/dist/web/assets/{TrainingCreationPanel-DaVppW1m.js → TrainingCreationPanel-CwyKMNwt.js} +1 -1
  87. package/dist/web/assets/{TrainingDraftPanel-CVj19T6L.js → TrainingDraftPanel-Rdusv4s_.js} +1 -1
  88. package/dist/web/assets/{UsageSettingsSection-fRTHVjhG.js → UsageSettingsSection-BkRalGcP.js} +1 -1
  89. package/dist/web/assets/{WorkSidebarPanel-CGOQwdIW.js → WorkSidebarPanel-d8PB-XNy.js} +1 -1
  90. package/dist/web/assets/{WorkspaceDiffPanel-D6hbMv14.js → WorkspaceDiffPanel-DfpyLroX.js} +3 -3
  91. package/dist/web/assets/{WorkspaceEnvironmentMenu-rWj1aDI4.js → WorkspaceEnvironmentMenu-DhUUB-lq.js} +1 -1
  92. package/dist/web/assets/{WorkspaceGitDialogs-DVU5SrD-.js → WorkspaceGitDialogs-0juVLtVy.js} +1 -1
  93. package/dist/web/assets/{WorkspaceMonacoEditor-D78JPviN.js → WorkspaceMonacoEditor-Blo5esSN.js} +3 -3
  94. package/dist/web/assets/{arrow-up-right-CnaPKXjg.js → arrow-up-right-BXeo-8KJ.js} +1 -1
  95. package/dist/web/assets/{chat-file-links-D1INEr8r.js → chat-file-links-BEbA_E33.js} +1 -1
  96. package/dist/web/assets/chevron-up-Dx5rir4H.js +1 -0
  97. package/dist/web/assets/{clipboard-B8GTg8tx.js → clipboard-17OIp5F-.js} +1 -1
  98. package/dist/web/assets/{cloud-upload-BlEc_10E.js → cloud-upload-D28o8URw.js} +1 -1
  99. package/dist/web/assets/{cssMode-BiYvezMD.js → cssMode-DDPYV_bh.js} +1 -1
  100. package/dist/web/assets/{folder-open-BaNdbDD5.js → folder-open-CqBlANkk.js} +1 -1
  101. package/dist/web/assets/{folder-plus-BQhz_VxM.js → folder-plus-DkUnvZhx.js} +1 -1
  102. package/dist/web/assets/{git-commit-horizontal-wv523Ooq.js → git-commit-horizontal-BEIomQj0.js} +1 -1
  103. package/dist/web/assets/{htmlMode-BaMdOCq4.js → htmlMode-gF-t3JxJ.js} +1 -1
  104. package/dist/web/assets/{index-DP8vqolj.js → index-Dg_FWrRZ.js} +2 -2
  105. package/dist/web/assets/{info-C0Ova1D9.js → info-n9PKmODI.js} +1 -1
  106. package/dist/web/assets/{jsonMode-BTt0GByK.js → jsonMode-B5DVQ7wE.js} +1 -1
  107. package/dist/web/assets/{lspLanguageFeatures-C-1acLbv.js → lspLanguageFeatures-FK4QlUnB.js} +1 -1
  108. package/dist/web/assets/{minimize-2-CW5KYp0W.js → minimize-2--J7-Zqg1.js} +1 -1
  109. package/dist/web/assets/{monaco.contribution-DoAhyjpn.js → monaco.contribution-CM_Srh4F.js} +2 -2
  110. package/dist/web/assets/{monaco.contribution-P9b5cZU2.js → monaco.contribution-CV2W_Ydj.js} +2 -2
  111. package/dist/web/assets/{monaco.contribution-DyKzYxR3.js → monaco.contribution-DCmsluF_.js} +2 -2
  112. package/dist/web/assets/{monaco.contribution-CpiBa8rP.js → monaco.contribution-DEkLSjvo.js} +2 -2
  113. package/dist/web/assets/{play-jV1i4pfe.js → play-CT6lFZDI.js} +1 -1
  114. package/dist/web/assets/{python-BQnnGrv3.js → python-DQHHAEpa.js} +1 -1
  115. package/dist/web/assets/{refresh-cw-REnkUGNy.js → refresh-cw-Cm-4hHSn.js} +1 -1
  116. package/dist/web/assets/{save-B2WTTCI_.js → save-CwgR_oyc.js} +1 -1
  117. package/dist/web/assets/{square-CRb2lKMC.js → square-DPrPBeHW.js} +1 -1
  118. package/dist/web/assets/{toggleHighContrast-BGsGhGW4.js → toggleHighContrast-C1QZjrPj.js} +1 -1
  119. package/dist/web/assets/{tsMode-BWtSmvFs.js → tsMode-DY4Ji1ac.js} +1 -1
  120. package/dist/web/assets/{upload-B_PICaZn.js → upload-DABGNAIq.js} +1 -1
  121. package/dist/web/assets/{useLocalAgentSchedules-zmmvBnwd.js → useLocalAgentSchedules-D5P28Jej.js} +1 -1
  122. package/dist/web/assets/{wifi-off-CjKTt0zE.js → wifi-off-CJOdJJRb.js} +1 -1
  123. package/dist/web/assets/{workers-CxglqyKV.js → workers-BLjr7D_D.js} +1 -1
  124. package/dist/web/assets/{yaml-DgyPsmb2.js → yaml-eXk00scV.js} +1 -1
  125. package/dist/web/index.html +1 -1
  126. package/package.json +1 -1
  127. package/dist/chunks/actions-command-CZD7U6CC.js +0 -2
  128. package/dist/chunks/app-server-runtime-5XZWU7JL.js +0 -2
  129. package/dist/chunks/apps-NIQBGOGH.js +0 -2
  130. package/dist/chunks/chunk-3YAGJU2X.js +0 -2
  131. package/dist/chunks/chunk-G2VYRU27.js +0 -5
  132. package/dist/chunks/chunk-HZP5U2AA.js +0 -3
  133. package/dist/chunks/chunk-J3WNPOLS.js +0 -2
  134. package/dist/chunks/chunk-NNLI4OWY.js +0 -53
  135. package/dist/chunks/chunk-SS3EG6S2.js +0 -2
  136. package/dist/chunks/chunk-Y7ZYJQGZ.js +0 -2
  137. package/dist/chunks/cli-GWKOPTLS.js +0 -2
  138. package/dist/chunks/configuration-command-OAZNWOFX.js +0 -2
  139. package/dist/chunks/core-commands-VGUAOSWS.js +0 -2
  140. package/dist/chunks/desktop-test-SPTFR43A.js +0 -3
  141. package/dist/chunks/dist-UA2RQUA4.js +0 -2
  142. package/dist/chunks/organizations-QPACFCMH.js +0 -2
  143. package/dist/chunks/project-agent-5H6VCDAY.js +0 -2
  144. package/dist/chunks/sandbox-command-RKUHXCZJ.js +0 -2
  145. package/dist/chunks/taskset-PISBOILQ.js +0 -2
  146. package/dist/chunks/training-2NDOWH5S.js +0 -2
  147. package/dist/web/assets/HostedModelLearningReview-D5JtAiLZ.js +0 -1
  148. package/dist/web/assets/chevron-up-Bx5d_Wmr.js +0 -1
@@ -0,0 +1,54 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{b as o}from"./chunk-ES2ISFJC.js";import{c as y,d as jr,e as M,f as Fr,g as Br,h as b,i as Ke,j as Vr,k as Kt,l as ke,m as $r,n as U,o as be,p as G,r as B}from"./chunk-H7IWJN7L.js";import{a as l}from"./chunk-FTQLQJQV.js";import{randomUUID as Wt,createHash as No}from"node:crypto";import{promises as V,constants as zt}from"node:fs";import ze from"node:path";var Ro="missing";function $(e){return e===null?Ro:No("sha256").update(e).digest("hex")}l($,"fileRevision");async function A(e){ke(ze.dirname(e));try{let t=await V.lstat(e);if(!t.isFile()||t.isSymbolicLink())throw new y({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(M(t))return null;throw t}}l(A,"readOptionalFile");async function j(e){if(ke(e),await V.mkdir(e,{recursive:!0,mode:448}),(await V.lstat(e)).isSymbolicLink())throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Managed storage directories cannot be symbolic links.",action:"Select a regular local storage folder."});Kt(e)}l(j,"privateDirectory");async function I(e,t,r={}){let n=ze.dirname(e);r.privateParent===!1?await V.mkdir(n,{recursive:!0,mode:448}):await j(n);let a=await V.lstat(e).catch(s=>{if(M(s))return null;throw s});if(a&&(!a.isFile()||a.isSymbolicLink()))throw new y({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=ze.join(n,`.${ze.basename(e)}.${process.pid}.${Wt()}.tmp`);try{let s=await V.open(i,zt.O_CREAT|zt.O_EXCL|zt.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 L(e,t,r=1e4){let n=await Se(e,r);try{return await t()}finally{await n()}}l(L,"withFileLock");async function ko(e,t){let r=`${e}.${process.pid}.${Wt()}.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(ko,"publishLock");async function Se(e,t=1e4){await j(ze.dirname(e));let r=`${e}.lock`,n={pid:process.pid,nonce:Wt()},a=JSON.stringify(n),i=Date.now()+t;for(;;)try{await ko(r,a);break}catch(s){if(s.code!=="EEXIST")throw s;let c=await A(r);if(c){let d;try{d=JSON.parse(c).pid}catch{}if(typeof d=="number"&&Number.isInteger(d)&&d>0&&Po(d)){let f=await Se(`${r}.reclaim`,Math.max(0,i-Date.now()));try{await A(r)===c&&await V.unlink(r).catch(p=>{if(!M(p))throw p})}finally{await f()}}}if(Date.now()>=i)throw new y({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 A(r)===a&&await V.unlink(r)}}l(Se,"acquireFileLock");function Po(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}l(Po,"processIsDead");async function D(e,t){let r=await A(e);if(r===null)return t();try{return JSON.parse(r)}catch(n){throw new y({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(D,"readJsonFile");async function As(e,t,r){return L(e,async()=>{let n=await r(await D(e,t));return await I(e,`${JSON.stringify(n,null,2)}
3
+ `),n})}l(As,"updateJsonFile");var Mo=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Do=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]);function Hr(e){let t=typeof e=="string"?new TextEncoder().encode(e):e,r=Math.ceil((t.byteLength+9)/64)*64,n=new Uint8Array(r);n.set(t),n[t.byteLength]=128;let a=t.byteLength*8,i=new DataView(n.buffer);i.setUint32(r-8,Math.floor(a/4294967296),!1),i.setUint32(r-4,a>>>0,!1);let s=new Uint32Array(Mo),c=new Uint32Array(64);for(let d=0;d<r;d+=64){for(let w=0;w<16;w+=1)c[w]=i.getUint32(d+w*4,!1);for(let w=16;w<64;w+=1){let S=c[w-15],P=c[w-2],Z=le(S,7)^le(S,18)^S>>>3,fe=le(P,17)^le(P,19)^P>>>10;c[w]=c[w-16]+Z+c[w-7]+fe>>>0}let f=s[0],p=s[1],g=s[2],m=s[3],h=s[4],_=s[5],T=s[6],v=s[7];for(let w=0;w<64;w+=1){let S=h&_^~h&T,P=f&p^f&g^p&g,Z=le(f,2)^le(f,13)^le(f,22),fe=le(h,6)^le(h,11)^le(h,25),Ee=v+fe+S+Do[w]+c[w]>>>0,Oo=Z+P>>>0;v=T,T=_,_=h,h=m+Ee>>>0,m=g,g=p,p=f,f=Ee+Oo>>>0}s[0]=s[0]+f>>>0,s[1]=s[1]+p>>>0,s[2]=s[2]+g>>>0,s[3]=s[3]+m>>>0,s[4]=s[4]+h>>>0,s[5]=s[5]+_>>>0,s[6]=s[6]+T>>>0,s[7]=s[7]+v>>>0}return Array.from(s,d=>d.toString(16).padStart(8,"0")).join("")}l(Hr,"sha256Hex");function le(e,t){return e>>>t|e<<32-t}l(le,"rotateRight");var Uo=2e3,Gr=25e7,Pe=o.string().trim().min(1).max(240),Me=o.string().regex(/^[a-f0-9]{64}$/),Ns=o.string().datetime({offset:!0}),Rs=o.record(o.string(),o.unknown()).default({}),jo=o.object({id:Pe,contentHash:Me}).strict(),ks=jo.extend({revision:o.number().int().positive()}).strict(),Ps=o.object({id:Pe,path:o.string().trim().min(1).max(Uo).refine($o),contentHash:Me,sizeBytes:o.number().int().nonnegative().max(Gr),mediaType:o.string().trim().min(1).max(200),visibility:o.enum(["policy","verifier","host_private"])}).strict(),Ms=o.object({id:Pe,contentHash:Me,mediaType:o.string().trim().min(1).max(200).nullable().default(null),sizeBytes:o.number().int().nonnegative().max(Gr).nullable().default(null)}).strict(),Ds=o.enum(["policy_failure","grader_failure","environment_failure","infrastructure_failure","timeout","cancelled"]);function Fo(e){return`${JSON.stringify(Jt(e),null,2)}
4
+ `}l(Fo,"canonicalJson");function Bo(e){return Hr(e)}l(Bo,"sha256");function Vo(e){return Bo(Fo(e))}l(Vo,"contentHash");function Us(e,t){let{contentHash:r,...n}=e,a=Vo(n);if(r!==a)throw new Error(`${t} contentHash is ${r}; expected ${a}.`)}l(Us,"assertContentHash");function $o(e){let t=e.replaceAll("\\","/");return!t||t.startsWith("/")||t.includes("\0")?!1:!t.split("/").some(r=>!r||r==="."||r==="..")}l($o,"safeRelativePath");function Jt(e){return Array.isArray(e)?e.map(Jt):!e||typeof e!="object"?e:Object.fromEntries(Object.entries(e).sort(([t],[r])=>t.localeCompare(r)).map(([t,r])=>[t,Jt(r)]))}l(Jt,"sortValue");var $s=o.object({provider:Pe,model:Pe,revision:o.string().trim().min(1).max(500).nullable().default(null),artifactHash:Me.nullable().default(null),tokenizerRevision:o.string().trim().min(1).max(500).nullable().default(null),chatTemplateHash:Me.nullable().default(null)}).strict(),Kr=["openpond","codex","anthropic","openai","xai","google","openrouter","deepseek","zai","moonshot","together","groq","custom-openai-compatible"],ae=o.enum(Kr),ye=o.object({providerId:ae,modelId:o.string().trim().min(1).max(300)});var pt=o.enum(["active","preview","planned","deprecated"]),Wr=o.enum(["openpond-account","openpond-managed","codex-login","chatgpt-subscription","local-byok","hosted-byok","custom"]),Ho=o.enum(["none","local_secret","env","openpond_account","codex_login","chatgpt_subscription","hosted"]),zr=o.object({connected:o.boolean().default(!1),source:Ho.default("none"),redacted:o.string().nullable().default(null),lastValidatedAt:o.string().nullable().default(null),lastError:o.string().nullable().default(null)}),qt=o.object({hostedOpChat:o.boolean().default(!1),localRuntime:o.boolean().default(!0),localByok:o.boolean().default(!1),hostedByok:o.boolean().default(!1)}),Go=o.enum(["hosted","provider","manual","none"]),Xt=o.object({chatCompletions:o.boolean().default(!0),streaming:o.boolean().default(!0),modelDiscovery:Go.default("none"),toolCalling:o.boolean().default(!1),reasoning:o.boolean().default(!1),imageInput:o.boolean().default(!1),structuredOutput:o.boolean().default(!1)}),Ko=o.enum(["hosted","provider","curated","manual","cache"]),Yt=o.object({streaming:o.boolean().default(!0),toolCalling:o.boolean().default(!1),reasoning:o.boolean().default(!1),vision:o.boolean().default(!1),structuredOutput:o.boolean().default(!1)}),zo=o.object({id:o.string().trim().min(1).max(300),providerId:ae,displayName:o.string().trim().min(1).max(300),contextWindow:o.number().int().positive().nullable().default(null),outputLimit:o.number().int().positive().nullable().default(null),lifecycleStatus:pt.default("active"),source:Ko,capabilities:Yt.default(()=>Yt.parse({})),raw:o.record(o.string(),o.unknown()).optional()}),Wo=o.object({providerId:ae,models:o.array(zo).default([]),fetchedAt:o.string().nullable().default(null),lastError:o.string().nullable().default(null),source:o.enum(["none","hosted","provider","curated","manual"]).default("none")}),Jo=o.object({enabled:o.boolean().default(!1),baseUrl:o.string().trim().min(1).max(2048).nullable().default(null),defaultModel:o.string().trim().min(1).max(300).nullable().default(null),modelOverrides:o.array(o.string().trim().min(1).max(300)).max(500).default([]),updatedAt:o.string().nullable().default(null)}),qo=o.object({enabled:o.boolean().optional(),baseUrl:o.string().trim().min(1).max(2048).nullable().optional(),defaultModel:o.string().trim().min(1).max(300).nullable().optional(),modelOverrides:o.array(o.string().trim().min(1).max(300)).max(500).optional()}),Xo=o.object({id:o.string().trim().min(1).max(300),displayName:o.string().trim().min(1).max(300),contextWindow:o.number().int().positive().nullable().optional(),outputLimit:o.number().int().positive().nullable().optional(),lifecycleStatus:pt.optional(),capabilities:Yt.partial().optional()}),Yo=o.object({id:ae,displayName:o.string().trim().min(1).max(160),lifecycleStatus:pt.default("active"),credentialModes:o.array(Wr).default([]),routing:qt,capabilities:Xt,defaultEnabled:o.boolean().optional(),defaultBaseUrl:o.string().trim().min(1).max(2048).nullable().optional(),defaultModel:o.string().trim().min(1).max(300).nullable().optional(),modelCacheSource:o.enum(["none","hosted","provider","curated","manual"]),models:o.array(Xo).default([])}),zs=o.object({version:o.literal(1).default(1),generatedAt:o.string().datetime(),providers:o.array(Yo)}),Qo=o.object({id:ae,displayName:o.string().trim().min(1).max(160),lifecycleStatus:pt.default("active"),credentialModes:o.array(Wr).default([]),routing:qt.default(()=>qt.parse({})),capabilities:Xt.default(()=>Xt.parse({})),credential:zr.default(()=>zr.parse({})),enabled:o.boolean().default(!1),available:o.boolean().default(!1),defaultModel:o.string().trim().min(1).max(300).nullable().default(null),modelIds:o.array(o.string().trim().min(1).max(300)).max(1e3).default([]),lastError:o.string().nullable().default(null)}),Qt=o.object({version:o.literal(1).default(1),providers:o.record(o.string(),Jo).default({}),statuses:o.record(o.string(),Qo).default({}),modelCaches:o.record(o.string(),Wo).default({}),updatedAt:o.string().nullable().default(null)}),Ws=o.object({providers:o.record(o.string(),qo).optional()}),Js=o.object({source:o.enum(["local_secret","env"]).default("local_secret"),value:o.string().min(1).max(2e4).optional(),envVar:o.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."})}),qs=o.object({source:o.enum(["local_secret","env","chatgpt_subscription"]).optional()}),Xs=o.object({modelId:o.string().trim().min(1).max(300).optional(),baseUrl:o.string().trim().min(1).max(2048).optional()}),Ys=o.object({query:o.string().trim().max(200).optional(),refresh:o.boolean().default(!1),limit:o.number().int().positive().max(500).default(100)}),Qs=o.object({query:o.string().trim().max(200).optional(),force:o.boolean().default(!1)});var Zo=["coding","research","review","test","docs","planner","summarizer"],nc=o.enum(Zo),Je=o.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_-]*$/),ft=o.enum(["none","worktree","copy_on_write"]),mt=o.enum(["read_only","workspace_write","full_tools"]),ht=o.enum(["disabled","parent_scoped"]),Zt=o.enum(["manual","balanced","proactive"]),ea=o.enum(["queued","running","completed","failed","cancelled","needs_resume"]),ta=["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"],oc=o.enum(ta),ra=[{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"}],er=o.object({id:Je,enabled:o.boolean().default(!0),modelRef:ye.nullable().default(null),isolationMode:ft.default("none"),maxConcurrentRuns:o.number().int().min(1).max(16).default(1),toolPolicy:mt.default("read_only"),background:o.boolean().default(!0),peerMessages:ht.default("parent_scoped")}),tr=o.object({enabled:o.boolean().default(!0),workspaceDefaultsVersion:o.literal(1).default(1),toolDefaultsVersion:o.literal(1).default(1),delegationMode:Zt.default("manual"),defaultModelRef:ye.nullable().default(null),roles:o.array(er).max(64).default(()=>qr()),maxConcurrentRuns:o.number().int().min(1).max(32).default(4),maxConcurrentRunsPerProvider:o.number().int().min(1).max(32).nullable().default(2),maxConcurrentRunsPerWorkspaceTarget:o.number().int().min(1).max(32).nullable().default(1)}).transform(e=>({...e,roles:pa(e.roles)})),We=o.object({kind:o.enum(["session","turn","file","diff","artifact"]),id:o.string().trim().min(1).max(500),label:o.string().trim().min(1).max(500)}),na=o.object({kind:o.enum(["retain_with_parent"]).default("retain_with_parent"),messageRetentionDays:o.number().int().min(1).max(3650).nullable().default(null),artifactRetentionDays:o.number().int().min(1).max(3650).nullable().default(null),cleanupAfterExpiry:o.boolean().default(!1)}).default(()=>({kind:"retain_with_parent",messageRetentionDays:null,artifactRetentionDays:null,cleanupAfterExpiry:!1})),oa=o.enum(["orient","edit","validate","report"]),aa=o.object({command:o.string().trim().min(1).max(2e3),status:o.enum(["passed","failed","unknown"]).default("unknown"),exitCode:o.number().int().nullable().default(null),outputSummary:o.string().trim().max(5e3).nullable().default(null),startedAt:o.string().nullable().default(null),completedAt:o.string().nullable().default(null)}),ia=o.object({phase:oa.default("orient"),inspectedFiles:o.array(o.string().trim().min(1).max(1e3)).max(500).default([]),inspectedResources:o.array(o.string().trim().min(1).max(1e3)).max(500).default([]),repeatedSearches:o.array(o.string().trim().min(1).max(1e3)).max(200).default([]),repeatedReads:o.array(o.string().trim().min(1).max(1e3)).max(200).default([]),repeatedCommands:o.array(o.string().trim().min(1).max(1e3)).max(200).default([]),changedFiles:o.array(o.string().trim().min(1).max(1e3)).max(500).default([]),patchRefs:o.array(We).max(100).default([]),validationAttempts:o.array(aa).max(100).default([]),latestMeaningfulActivity:o.string().trim().max(5e3).nullable().default(null),currentBlocker:o.string().trim().max(5e3).nullable().default(null),updatedAt:o.string().nullable().default(null)}).default(()=>({phase:"orient",inspectedFiles:[],inspectedResources:[],repeatedSearches:[],repeatedReads:[],repeatedCommands:[],changedFiles:[],patchRefs:[],validationAttempts:[],latestMeaningfulActivity:null,currentBlocker:null,updatedAt:null})),sa=o.object({summary:o.string().trim().max(2e4).default(""),findings:o.array(o.string().trim().min(1).max(5e3)).max(200).default([]),artifacts:o.array(We).max(200).default([]),patchRef:We.nullable().default(null),diffRef:We.nullable().default(null),testsRun:o.array(o.string().trim().min(1).max(2e3)).max(100).default([]),blockers:o.array(o.string().trim().min(1).max(5e3)).max(100).default([]),confidence:o.enum(["low","medium","high"]).nullable().default(null),followUpNeeded:o.boolean().default(!1)}),ca=o.object({id:o.string().trim().min(1).max(200),parentSessionId:o.string().trim().min(1).max(200),parentTurnId:o.string().trim().min(1).max(200).nullable().default(null),childSessionId:o.string().trim().min(1).max(200).nullable().default(null),roleId:Je,objective:o.string().trim().min(1).max(5e4),modelRef:ye.nullable().default(null),isolationMode:ft.default("none"),toolPolicy:mt.default("read_only"),background:o.boolean().default(!0),peerMessages:ht.default("parent_scoped"),status:ea.default("queued"),progress:ia,evidenceRetention:na,createdAt:o.string(),startedAt:o.string().nullable().default(null),completedAt:o.string().nullable().default(null),updatedAt:o.string().nullable().default(null),error:o.string().nullable().default(null),report:sa.nullable().default(null),metadata:o.record(o.string(),o.unknown()).optional().default({})}),Jr=o.enum(["cleanup","archive","cleanup_and_archive"]),ac=o.object({action:Jr,reason:o.string().trim().min(1).max(2e3).nullable().default(null)}),ic=o.object({action:Jr,run:ca,workspaceCleanup:o.record(o.string(),o.unknown()).nullable().default(null),sessionArchive:o.record(o.string(),o.unknown()).nullable().default(null),nextStep:o.string()}),la=o.enum(["question","answer","handoff","artifact","status","blocker"]),da=o.enum(["normal","interrupt"]),ua=o.object({inputIds:o.array(o.string()).default([]),status:o.enum(["pending","delivered","undelivered"]).default("pending"),deliveredRunIds:o.array(o.string().trim().min(1).max(200)).max(200).default([]),acknowledgedRunIds:o.array(o.string().trim().min(1).max(200)).max(200).default([]),deliveredParentSessionId:o.string().trim().min(1).max(200).nullable().default(null),acknowledgedParentSessionId:o.string().trim().min(1).max(200).nullable().default(null),wakeRequestedParentSessionId:o.string().trim().min(1).max(200).nullable().default(null),wakeQueuedParentSessionId:o.string().trim().min(1).max(200).nullable().default(null),wakeDeferredParentSessionId:o.string().trim().min(1).max(200).nullable().default(null),wakeParentReason:o.string().trim().min(1).max(1e3).nullable().default(null),wakeRequestedRunIds:o.array(o.string().trim().min(1).max(200)).max(200).default([]),wakeInterruptedRunIds:o.array(o.string().trim().min(1).max(200)).max(200).default([]),wakeDeferredRunIds:o.array(o.string().trim().min(1).max(200)).max(200).default([]),reason:o.string().trim().min(1).max(1e3).nullable().default(null)}),sc=o.object({id:o.string().trim().min(1).max(200),fromRunId:o.string().trim().min(1).max(200),toRunId:o.string().trim().min(1).max(200).nullable().default(null),toRole:Je.nullable().default(null),kind:la,priority:da.optional(),body:o.string().trim().min(1).max(5e4),refs:o.array(We).max(100).default([]),delivery:ua.optional(),createdAt:o.string()});function qr(){return ra.map(e=>er.parse({id:e.id,toolPolicy:e.defaultToolPolicy}))}l(qr,"defaultSubagentRoleSettings");function pa(e){let t=qr(),r=new Map(t.map(a=>[a.id,a])),n=[];for(let a of e??[]){let i=er.parse(a);r.has(i.id)?r.set(i.id,i):n.push(i)}return[...t.map(a=>r.get(a.id)??a),...n]}l(pa,"normalizeSubagentRoleSettings");var Zr="gpt-5.6-sol",fa="openpond-chat",fc="accounts/fireworks/models/deepseek-v4-flash",ma="openpond",ha=fa,ga="default",nr="high",ba="ask",en=ae,or=o.enum(["default","auto-review","full-access"]),ar=o.enum(["ask","full-access","disabled"]),ir=o.enum(["low","medium","high","xhigh"]),mc=o.enum(["sandbox_app","local_project","sandbox","sandbox_template"]),hc=o.enum(["openpond"]),ya=o.enum(["provider_usage","provider_tokenizer","model_family","heuristic"]),gc=o.object({provider:en,model:o.string().min(1),usedTokens:o.number().int().nonnegative(),maxContextTokens:o.number().int().positive(),usableContextTokens:o.number().int().positive(),percentFull:o.number().min(0).max(100),source:ya,updatedAtEventId:o.string().nullable()}),Xr=o.object({pinned:o.boolean().default(!1),projects:o.boolean().default(!1),cloudProjects:o.boolean().default(!1),chats:o.boolean().default(!1),savedForLater:o.boolean().default(!0)}),_a=o.enum(["auto","off"]),wa=o.enum(["typescript","python","rust"]),tn=o.enum(["auto","disabled","custom"]),me=o.object({mode:tn.default("auto"),customCommand:o.string().trim().max(4096).default("")}),rr=o.object({languageServers:_a.default("auto"),diagnosticsWhileEditing:o.boolean().default(!0),checkOnSave:o.boolean().default(!0),languages:o.object({typescript:me.optional().default(()=>me.parse({})),python:me.optional().default(()=>me.parse({})),rust:me.optional().default(()=>me.parse({}))}).optional().default(()=>({typescript:me.parse({}),python:me.parse({}),rust:me.parse({})}))}),Ta=o.object({language:wa,label:o.string(),mode:tn,status:o.enum(["found","missing","disabled","error"]),command:o.string().nullable(),message:o.string().nullable()}),bc=o.object({settings:rr,languages:o.array(Ta),updatedAt:o.string()}),Ea=o.object({id:o.string(),root:o.string(),status:o.enum(["starting","connected","unavailable","error"]),message:o.string().nullable().optional().default(null),openedDocuments:o.number().int().nonnegative(),pendingRequests:o.number().int().nonnegative(),lastUsedAt:o.string(),stderrTail:o.string()}),yc=o.object({clients:o.array(Ea),maxClients:o.number().int().positive(),idleTimeoutMs:o.number().int().positive(),updatedAt:o.string()}),Yr=o.object({autoEnabled:o.boolean().default(!0),triggerPercent:o.number().int().min(50).max(95).default(85),summaryModel:o.enum(["same_model"]).default("same_model")}),Qr=o.object({defaultModelRef:ye.nullable().default(null),creationMode:o.enum(["defaults","customize"]).default("customize"),autoApproveEvidence:o.boolean().default(!1)}),ee=o.object({defaultChatProvider:en.default(ma),defaultChatModel:o.string().min(1).default(ha),defaultChatModelRef:ye.nullable().optional(),subagents:tr.optional().default(()=>tr.parse({})),codexPermissionMode:or.default(ga),codexReasoningEffort:ir.default(nr),openPondCommandAccessMode:ar.default(ba),defaultBranchPrefix:o.string().trim().max(48).default("feat/"),defaultNewProjectDirectory:o.string().trim().max(4096).default(""),defaultTeamId:o.string().trim().max(191).nullable().default(null),advancedWorkspaceControls:o.boolean().default(!1),steerActiveResponses:o.boolean().default(!0),contextCompaction:Yr.optional().default(()=>Yr.parse({})),training:Qr.optional().default(()=>Qr.parse({})),sidebarWidth:o.number().int().min(244).max(560).default(332),diffPanelWidth:o.number().int().min(320).max(2400).default(560),sidebarSectionsCollapsed:Xr.optional().default(()=>Xr.parse({})),editor:rr.optional().default(()=>rr.parse({}))});var Sa="default",qe=[{id:"default",name:"Balanced",source:"built_in",description:"Clear, useful, and concise.",content:`You are OpenPond Chat, a clear and useful AI assistant.
5
+ Be concise, accurate, and direct.
6
+ Do not use emojis.
7
+ Ask only when missing information would materially change the answer.
8
+ Prioritize practical next steps.`},{id:"pragmatic",name:"Pragmatic",source:"built_in",description:"Direct, practical, and engineering-minded.",content:`You are a pragmatic AI assistant with strong engineering judgment.
9
+ Be direct, concrete, and outcome-focused.
10
+ Do not use emojis.
11
+ Prefer simple working solutions over clever abstractions.
12
+ Call out weak assumptions plainly.`},{id:"friendly",name:"Friendly",source:"built_in",description:"Warm, conversational, and approachable.",content:`You are a friendly AI assistant.
13
+ Use a warm, conversational tone without filler.
14
+ Do not use emojis.
15
+ Explain decisions clearly and keep the user moving.
16
+ Be patient when clarifying tradeoffs.`},{id:"formal",name:"Formal",source:"built_in",description:"Polished, careful, and professional.",content:`You are a formal AI assistant.
17
+ Use precise, professional language.
18
+ Do not use emojis.
19
+ Structure answers clearly and avoid casual phrasing.
20
+ State uncertainty and assumptions explicitly.`},{id:"technical",name:"Technical",source:"built_in",description:"Precise, detailed, and implementation-focused.",content:`You are a technical AI assistant.
21
+ Prioritize correctness, implementation detail, and edge cases.
22
+ Do not use emojis.
23
+ Use concise explanations, but include necessary specifics.
24
+ Surface risks, constraints, and verification steps.`}],rn=o.string().trim().min(1).max(120),Aa=o.object({id:rn,name:o.string(),source:o.enum(["built_in","custom"]).default("custom"),description:o.string(),content:o.string()}),_c=o.object({activeTemplateId:rn.default(Sa),customized:o.boolean().default(!1),soul:o.string(),soulPath:o.string().nullable(),updatedAt:o.string().nullable(),templates:o.array(Aa).default(()=>[...qe])}),wc=o.object({id:o.string(),host:o.string(),port:o.number(),startedAt:o.string(),storePath:o.string(),version:o.string(),runtimeVersion:o.string()});var re=o.string().trim().min(1),gt=o.string().trim().max(4096),bt=re.max(200).refine(e=>!["__proto__","prototype","constructor"].includes(e),"Reserved identifier"),yt=re.max(2048).refine(e=>{try{let t=new URL(e);return["http:","https:"].includes(t.protocol)&&!t.username&&!t.password&&!t.hash&&![...t.searchParams.keys()].some(r=>/(?:token|secret|password|authorization|api[_-]?key|credential)/i.test(r))}catch{return!1}},"Use an HTTP endpoint without embedded credentials; configure authentication through a credential reference."),on=o.strictObject({provider_id:ae,model_id:re.max(300)}),cr=o.discriminatedUnion("mode",[o.strictObject({mode:o.literal("inherit")}),o.strictObject({mode:o.literal("custom"),ref:on})]),an=o.discriminatedUnion("source",[o.strictObject({source:o.literal("secret"),id:bt}),o.strictObject({source:o.literal("env"),name:re.regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(160)})]),va=o.strictObject({handle:re,base_url:yt.optional(),api_base_url:yt.optional(),chat_api_base_url:yt.optional(),environment:re.optional(),credential:an.optional(),enabled:o.boolean().optional()}),xa=o.strictObject({enabled:o.boolean().optional(),base_url:yt.optional(),default_model:re.max(300).optional(),model_overrides:o.array(re.max(300)).max(500).optional(),credential:an.optional()}),sr=o.strictObject({mode:o.enum(["auto","disabled","custom"]).optional(),custom_command:gt.optional()}),nn=o.union([o.number().int().min(1).max(32),o.literal("unlimited")]),Ia=o.strictObject({enabled:o.boolean().optional(),model:cr.optional(),isolation_mode:ft.optional(),max_concurrent_runs:o.number().int().min(1).max(16).optional(),tool_policy:mt.optional(),background:o.boolean().optional(),peer_messages:ht.optional()}),La=o.strictObject({source:o.enum(["local","github","openpond_git"]),repository_id:re,profile_id:re}),lr=o.strictObject({schema_version:o.literal(1),chat:o.strictObject({model:on.optional(),steer_active_responses:o.boolean().optional()}).optional(),codex:o.strictObject({reasoning_effort:ir.optional()}).optional(),permissions:o.strictObject({command_access:ar.optional(),codex_mode:or.optional()}).optional(),context_compaction:o.strictObject({auto_enabled:o.boolean().optional(),trigger_percent:o.number().int().min(50).max(95).optional(),summary_model:o.literal("same_model").optional()}).optional(),subagents:o.strictObject({enabled:o.boolean().optional(),delegation_mode:Zt.optional(),default_model:cr.optional(),max_concurrent_runs:o.number().int().min(1).max(32).optional(),max_concurrent_runs_per_provider:nn.optional(),max_concurrent_runs_per_workspace_target:nn.optional(),roles:o.record(Je,Ia).refine(e=>Object.keys(e).length<=64,"At most 64 roles").optional()}).optional(),projects:o.strictObject({branch_prefix:o.string().trim().max(48).optional(),new_project_directory:gt.optional()}).optional(),defaults:o.strictObject({account_id:bt.optional(),team_id:re.max(191).optional(),profile_ref:La.optional()}).optional(),editor:o.strictObject({language_servers:o.enum(["auto","off"]).optional(),diagnostics_while_editing:o.boolean().optional(),check_on_save:o.boolean().optional(),languages:o.strictObject({typescript:sr.optional(),python:sr.optional(),rust:sr.optional()}).optional()}).optional(),training:o.strictObject({default_model:cr.optional(),creation_mode:o.enum(["defaults","customize"]).optional(),auto_approve_evidence:o.boolean().optional()}).optional(),notifications:o.strictObject({team_chat:o.enum(["all","direct_mentions","none"]).optional()}).optional(),ui:o.strictObject({advanced_workspace_controls:o.boolean().optional()}).optional(),runtime:o.strictObject({execution_mode:o.enum(["local","hosted"]).optional(),mode:o.enum(["general","builder"]).optional()}).optional(),personalization:o.strictObject({active:re.regex(/^(builtin|custom):[a-zA-Z0-9_-]+$/).optional(),mode:o.enum(["enabled","disabled"]).optional(),user_instructions:gt.optional()}).optional(),storage:o.strictObject({datasets_dir:gt.optional()}).optional(),accounts:o.record(bt,va).optional(),providers:o.record(bt,xa).optional()});function ie(e,t="user"){let r=lr.parse(e);if(t==="project"){let n=new Set(["schema_version","chat","codex","permissions","context_compaction","subagents","projects","editor"]);for(let a of Object.keys(r))if(!n.has(a))throw new Error(`Setting ${a} is not permitted in project configuration.`);if(r.projects?.new_project_directory!==void 0)throw new Error("projects.new_project_directory is a user-only setting.");for(let a of Object.values(r.editor?.languages??{}))if(a.custom_command!==void 0)throw new Error("Custom editor commands must be configured in user settings.");if(r.permissions?.command_access==="full-access"||r.permissions?.codex_mode==="full-access"||r.permissions?.codex_mode==="auto-review")throw new Error("Project configuration can restrict permissions but cannot grant additional access.");for(let a of Object.values(r.subagents?.roles??{}))if(a.tool_policy&&a.tool_policy!=="read_only")throw new Error("Project roles cannot grant additional tool access.")}return r}l(ie,"validateConfigDocument");import{promises as _r}from"node:fs";import De from"node:path";var _t={ArrayExpression:["elements"],ArrayPattern:["elements"],ArrowFunctionExpression:["params","body"],AssignmentExpression:["left","right"],AssignmentPattern:["left","right"],AwaitExpression:["argument"],BinaryExpression:["left","right"],BlockStatement:["body"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ChainExpression:["expression"],ClassBody:["body"],ClassDeclaration:["id","superClass","body"],ClassExpression:["id","superClass","body"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExperimentalRestProperty:["argument"],ExperimentalSpreadProperty:["argument"],ExportAllDeclaration:["exported","source","attributes"],ExportDefaultDeclaration:["declaration"],ExportNamedDeclaration:["declaration","specifiers","source","attributes"],ExportSpecifier:["local","exported"],ExpressionStatement:["expression"],ForInStatement:["left","right","body"],ForOfStatement:["left","right","body"],ForStatement:["init","test","update","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],Identifier:[],IfStatement:["test","consequent","alternate"],ImportAttribute:["key","value"],ImportDeclaration:["specifiers","source","attributes"],ImportDefaultSpecifier:["local"],ImportExpression:["source","options"],ImportNamespaceSpecifier:["local"],ImportSpecifier:["imported","local"],JSXAttribute:["name","value"],JSXClosingElement:["name"],JSXClosingFragment:[],JSXElement:["openingElement","children","closingElement"],JSXEmptyExpression:[],JSXExpressionContainer:["expression"],JSXFragment:["openingFragment","children","closingFragment"],JSXIdentifier:[],JSXMemberExpression:["object","property"],JSXNamespacedName:["namespace","name"],JSXOpeningElement:["name","attributes"],JSXOpeningFragment:[],JSXSpreadAttribute:["argument"],JSXSpreadChild:["expression"],JSXText:[],LabeledStatement:["label","body"],Literal:[],LogicalExpression:["left","right"],MemberExpression:["object","property"],MetaProperty:["meta","property"],MethodDefinition:["key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],ObjectPattern:["properties"],PrivateIdentifier:[],Program:["body"],Property:["key","value"],PropertyDefinition:["key","value"],RestElement:["argument"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SpreadElement:["argument"],StaticBlock:["body"],Super:[],SwitchCase:["test","consequent"],SwitchStatement:["discriminant","cases"],TaggedTemplateExpression:["tag","quasi"],TemplateElement:[],TemplateLiteral:["quasis","expressions"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handler","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]},Ca=Object.keys(_t);for(let e of Ca)Object.freeze(_t[e]);Object.freeze(_t);var sn=_t;function cn(e){let t=Object.assign({},sn);for(let r of Object.keys(e))if(Object.hasOwn(t,r)){let n=new Set(e[r]);for(let a of t[r])n.add(a);t[r]=Object.freeze(Array.from(n))}else t[r]=Object.freeze(Array.from(e[r]));return Object.freeze(t)}l(cn,"unionWith");function Ae(e){return e[e.length-1]??null}l(Ae,"last");function mr(e){return e.type==="TOMLBare"?e.name:e.value}l(mr,"toKeyName");var _n=class{static{l(this,"TOMLVerImpl")}constructor(e,t){this.major=e,this.minor=t}lt(e,t){return this.major<e||this.major===e&&this.minor<t}gte(e,t){return this.major>e||this.major===e&&this.minor>=t}},ln=new _n(1,0),tt=new _n(1,1),Oa=tt,Na={"1.0":ln,"1.0.0":ln,"1.1":tt,"1.1.0":tt,latest:tt,next:tt};function wn(e){return e&&Na[e]||Oa}l(wn,"getTOMLVer");var dn={"unterminated-string":"Unterminated string constant","unterminated-table-key":"Unterminated table-key","unterminated-array":"Unterminated array","unterminated-inline-table":"Unterminated inline table","missing-key":"Empty bare keys are not allowed","missing-newline":"Must be a newline","missing-equals-sign":"Expected equal (=) token","missing-value":"Unspecified values are invalid","missing-comma":"Expected comma (,) token","dupe-keys":"Defining a key multiple times is invalid","unexpected-char":"Unexpected character","unexpected-token":"Unexpected token","invalid-control-character":"Control characters (codes < 0x1f and 0x7f) are not allowed","invalid-comment-character":"Invalid code point {{cp}} within comments","invalid-key-value-newline":"The key, equals sign, and value must be on the same line","invalid-inline-table-newline":"No newlines are allowed between the curly braces unless they are valid within a value","invalid-underscore":"Underscores are allowed between digits","invalid-space":"Unexpected spaces","invalid-three-quotes":"Three or more quotes are not permitted","invalid-date":"Unexpected invalid date","invalid-time":"Unexpected invalid time","invalid-leading-zero":"Leading zeros are not allowed","invalid-trailing-comma-in-inline-table":"Trailing comma is not permitted in an inline table","invalid-char-in-escape-sequence":"Invalid character in escape sequence","invalid-consecutive-dots-in-key":"Consecutive dots are not permitted in keys","invalid-code-point":"Invalid code point {{cp}}","invalid-trailing-dot-in-key":"Keys cannot end with a dot","invalid-leading-dot-in-key":"Keys cannot start with a dot"};function Ra(e,t){return t?dn[e].replace(/\{\{(.*?)\}\}/gu,(r,n)=>n in t?t[n]:`{{${n}}}`):dn[e]}l(Ra,"getMessage");var Tn=class extends SyntaxError{static{l(this,"ParseError")}constructor(e,t,r,n,a){super(Ra(e,a)),this.index=t,this.lineNumber=r,this.column=n}},u={EOF:-1,NULL:0,SOH:1,BACKSPACE:8,TABULATION:9,LINE_FEED:10,FORM_FEED:12,CARRIAGE_RETURN:13,ESCAPE:27,SO:14,US:31,SPACE:32,QUOTATION_MARK:34,HASH:35,SINGLE_QUOTE:39,PLUS_SIGN:43,COMMA:44,DASH:45,DOT:46,DIGIT_0:48,DIGIT_1:49,DIGIT_2:50,DIGIT_3:51,DIGIT_7:55,DIGIT_9:57,COLON:58,EQUALS_SIGN:61,LATIN_CAPITAL_A:65,LATIN_CAPITAL_E:69,LATIN_CAPITAL_F:70,LATIN_CAPITAL_T:84,LATIN_CAPITAL_U:85,LATIN_CAPITAL_Z:90,LEFT_BRACKET:91,BACKSLASH:92,RIGHT_BRACKET:93,UNDERSCORE:95,LATIN_SMALL_A:97,LATIN_SMALL_B:98,LATIN_SMALL_E:101,LATIN_SMALL_F:102,LATIN_SMALL_I:105,LATIN_SMALL_L:108,LATIN_SMALL_N:110,LATIN_SMALL_O:111,LATIN_SMALL_R:114,LATIN_SMALL_S:115,LATIN_SMALL_T:116,LATIN_SMALL_U:117,LATIN_SMALL_X:120,LATIN_SMALL_Z:122,LEFT_BRACE:123,RIGHT_BRACE:125,TILDE:126,DELETE:127,PAD:128,SUPERSCRIPT_TWO:178,SUPERSCRIPT_THREE:179,SUPERSCRIPT_ONE:185,VULGAR_FRACTION_ONE_QUARTER:188,VULGAR_FRACTION_THREE_QUARTERS:190,LATIN_CAPITAL_LETTER_A_WITH_GRAVE:192,LATIN_CAPITAL_LETTER_O_WITH_DIAERESIS:214,LATIN_CAPITAL_LETTER_O_WITH_STROKE:216,LATIN_SMALL_LETTER_O_WITH_DIAERESIS:246,LATIN_SMALL_LETTER_O_WITH_STROKE:248,GREEK_SMALL_REVERSED_DOTTED_LUNATE_SIGMA_SYMBOL:891,GREEK_CAPITAL_LETTER_YOT:895,CP_1FFF:8191,ZERO_WIDTH_NON_JOINER:8204,ZERO_WIDTH_JOINER:8205,UNDERTIE:8255,CHARACTER_TIE:8256,SUPERSCRIPT_ZERO:8304,CP_218F:8591,CIRCLED_DIGIT_ONE:9312,NEGATIVE_CIRCLED_DIGIT_ZERO:9471,GLAGOLITIC_CAPITAL_LETTER_AZU:11264,CP_2FEF:12271,IDEOGRAPHIC_COMMA:12289,CP_D7FF:55295,CP_E000:57344,CJK_COMPATIBILITY_IDEOGRAPH_F900:63744,ARABIC_LIGATURE_SALAAMUHU_ALAYNAA:64975,ARABIC_LIGATURE_SALLA_USED_AS_KORANIC_STOP_SIGN_ISOLATED_FORM:65008,REPLACEMENT_CHARACTER:65533,LINEAR_B_SYLLABLE_B008_A:65536,CP_EFFFF:983039,CP_10FFFF:1114111};function ka(e){return e>=u.NULL&&e<=u.US}l(ka,"isControl");function Xe(e){return e===u.TABULATION||e===u.SPACE}l(Xe,"isWhitespace");function un(e){return e===u.LINE_FEED||e===u.CARRIAGE_RETURN}l(un,"isEOL");function Pa(e){return e>=u.LATIN_CAPITAL_A&&e<=u.LATIN_CAPITAL_Z}l(Pa,"isUpperLetter");function Ma(e){return e>=u.LATIN_SMALL_A&&e<=u.LATIN_SMALL_Z}l(Ma,"isLowerLetter");function Da(e){return Ma(e)||Pa(e)}l(Da,"isLetter");function N(e){return e>=u.DIGIT_0&&e<=u.DIGIT_9}l(N,"isDigit");function pn(e){return N(e)||e>=u.LATIN_SMALL_A&&e<=u.LATIN_SMALL_F||e>=u.LATIN_CAPITAL_A&&e<=u.LATIN_CAPITAL_F}l(pn,"isHexDig");function Ua(e){return e>=u.DIGIT_0&&e<=u.DIGIT_7}l(Ua,"isOctalDig");function ja(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}l(ja,"isUnicodeScalarValue");function Fa(e,t){let r=0,n=e.length;for(;r<n;){let a=r+n>>>1,i=e[a];if(i===t)return a+1;i<t?r=a+1:n=a}return r}l(Fa,"sortedLastIndex");var Ba=class{static{l(this,"Locations")}constructor(){this.offsets=[]}addOffset(e){for(let t=this.offsets.length-1;t>=0;t--){let r=this.offsets[t];if(r===e)return;if(r<e)break}this.offsets.push(e)}getLocFromIndex(e){let t=Fa(this.offsets,e)+1;return{line:t,column:e-(t===1?0:this.offsets[t-2])}}},Va=class{static{l(this,"CodePointIterator")}constructor(e){this.locs=new Ba,this.lastCodePoint=u.NULL,this.start=-1,this.end=0,this.text=e}next(){return this.lastCodePoint===u.EOF?u.EOF:this.lastCodePoint=this.moveAt(this.end)}getLocFromIndex(e){return this.locs.getLocFromIndex(e)}eat(e){return this.text.codePointAt(this.end)===e?(this.next(),!0):!1}moveAt(e){this.start=this.end=e;let t=this.text.codePointAt(this.start)??u.EOF;if(t===u.EOF)return this.end=this.start,t;if(this.end+=t>=65536?2:1,t===u.LINE_FEED)this.locs.addOffset(this.end);else if(t===u.CARRIAGE_RETURN)return this.text.codePointAt(this.end)===u.LINE_FEED&&(this.end++,this.locs.addOffset(this.end)),u.LINE_FEED;return t}},$a=typeof BigInt<"u",Ha={16:"0x",10:"",8:"0o",2:"0b"},En={[u.QUOTATION_MARK]:u.QUOTATION_MARK,[u.BACKSLASH]:u.BACKSLASH,[u.LATIN_SMALL_B]:u.BACKSPACE,[u.LATIN_SMALL_F]:u.FORM_FEED,[u.LATIN_SMALL_N]:u.LINE_FEED,[u.LATIN_SMALL_R]:u.CARRIAGE_RETURN,[u.LATIN_SMALL_T]:u.TABULATION},Ga={...En,[u.LATIN_SMALL_E]:u.ESCAPE},Ka=class{static{l(this,"Tokenizer")}constructor(e,t){this.backCode=!1,this.lastCodePoint=u.NULL,this.state="DATA",this.token=null,this.tokenStart=-1,this.valuesEnabled=!1,this.text=e,this.parserOptions=t||{},this.codePointIterator=new Va(e),this.tomlVersion=wn(this.parserOptions.tomlVersion),this.ESCAPES=this.tomlVersion.gte(1,1)?Ga:En}get start(){return this.codePointIterator.start}get end(){return this.codePointIterator.end}getLocFromIndex(e){return this.codePointIterator.getLocFromIndex(e)}reportParseError(e,t){let r=this.codePointIterator.start,n=this.codePointIterator.getLocFromIndex(r);throw new Tn(e,r,n.line,n.column,t)}nextToken(){let e=this.token;if(e!=null)return this.token=null,e;let t=this.lastCodePoint;for(;t!==u.EOF&&!this.token;){t=this.nextCode();let r=this[this.state](t);if(!r)throw new Error(`Unknown error: pre state=${this.state}`);this.state=r}return e=this.token,this.token=null,e}nextCode(){return this.lastCodePoint===u.EOF?u.EOF:this.backCode?(this.backCode=!1,this.lastCodePoint):this.lastCodePoint=this.codePointIterator.next()}eatCode(e){return this.lastCodePoint===u.EOF?!1:this.backCode?this.lastCodePoint===e?(this.backCode=!1,!0):!1:this.codePointIterator.eat(e)}moveAt(e){this.backCode&&(this.backCode=!1),this.lastCodePoint=this.codePointIterator.moveAt(e)}back(e){return this.backCode=!0,e}punctuatorToken(){this.startToken(),this.endToken("Punctuator","end")}startToken(){this.tokenStart=this.codePointIterator.start}endToken(e,t,r,n){let{tokenStart:a}=this,i=this.codePointIterator[t],s=[a,i],c={start:this.codePointIterator.getLocFromIndex(a),end:this.codePointIterator.getLocFromIndex(i)};if(e==="Block")this.token={type:e,value:this.text.slice(a+1,i),range:s,loc:c};else{let d,f=this.text.slice(a,i);if(e==="BasicString"||e==="LiteralString"||e==="MultiLineBasicString"||e==="MultiLineLiteralString")d={type:e,value:f,string:r,range:s,loc:c};else if(e==="Integer"){let p=r;d={type:e,value:f,number:parseInt(p,n),bigint:$a?BigInt(Ha[n]+p):null,range:s,loc:c}}else e==="Float"?d={type:e,value:f,number:r,range:s,loc:c}:e==="Boolean"?d={type:e,value:f,boolean:r,range:s,loc:c}:e==="LocalDate"||e==="LocalTime"||e==="LocalDateTime"||e==="OffsetDateTime"?d={type:e,value:f,date:r,range:s,loc:c}:d={type:e,value:f,range:s,loc:c};this.token=d}}DATA(e){for(;Xe(e)||un(e);)e=this.nextCode();if(e===u.HASH)return this.startToken(),"COMMENT";if(e===u.QUOTATION_MARK)return this.startToken(),"BASIC_STRING";if(e===u.SINGLE_QUOTE)return this.startToken(),"LITERAL_STRING";if(e===u.DOT||e===u.EQUALS_SIGN||e===u.LEFT_BRACKET||e===u.RIGHT_BRACKET||e===u.LEFT_BRACE||e===u.RIGHT_BRACE||e===u.COMMA)return this.punctuatorToken(),"DATA";if(this.valuesEnabled){if(e===u.DASH||e===u.PLUS_SIGN)return this.startToken(),"SIGN";if(e===u.LATIN_SMALL_N||e===u.LATIN_SMALL_I)return this.startToken(),this.back("NAN_OR_INF");if(N(e))return this.startToken(),this.back("NUMBER");if(e===u.LATIN_SMALL_T||e===u.LATIN_SMALL_F)return this.startToken(),this.back("BOOLEAN")}else if(fn(e,this.tomlVersion))return this.startToken(),"BARE";return e===u.EOF?"DATA":this.reportParseError("unexpected-char")}COMMENT(e){let t=this.tomlVersion.gte(1,1)?r=>{za(r)||this.reportParseError("invalid-comment-character",{cp:JSON.stringify(String.fromCodePoint(r)).slice(1,-1)})}:r=>{Ye(r)&&this.reportParseErrorControlChar()};for(;!un(e)&&e!==u.EOF;)t(e),e=this.nextCode();return this.endToken("Block","start"),"DATA"}BARE(e){for(;fn(e,this.tomlVersion);)e=this.nextCode();return this.endToken("Bare","start"),this.back("DATA")}BASIC_STRING(e){if(e===u.QUOTATION_MARK)return e=this.nextCode(),e===u.QUOTATION_MARK?"MULTI_LINE_BASIC_STRING":(this.endToken("BasicString","start",""),this.back("DATA"));let t=[];for(;e!==u.QUOTATION_MARK&&e!==u.EOF&&e!==u.LINE_FEED;){if(Ye(e))return this.reportParseErrorControlChar();if(e===u.BACKSLASH){e=this.nextCode();let r=this.ESCAPES[e];if(r){t.push(r),e=this.nextCode();continue}else if(e===u.LATIN_SMALL_U){let n=this.parseUnicode(4);t.push(n),e=this.nextCode();continue}else if(e===u.LATIN_CAPITAL_U){let n=this.parseUnicode(8);t.push(n),e=this.nextCode();continue}else if(e===u.LATIN_SMALL_X&&this.tomlVersion.gte(1,1)){let n=this.parseUnicode(2);t.push(n),e=this.nextCode();continue}return this.reportParseError("invalid-char-in-escape-sequence")}t.push(e),e=this.nextCode()}return e!==u.QUOTATION_MARK?this.reportParseError("unterminated-string"):(this.endToken("BasicString","end",String.fromCodePoint(...t)),"DATA")}MULTI_LINE_BASIC_STRING(e){let t=[];for(e===u.LINE_FEED&&(e=this.nextCode());e!==u.EOF;){if(e!==u.LINE_FEED&&Ye(e))return this.reportParseErrorControlChar();if(e===u.QUOTATION_MARK){let r=this.codePointIterator.start;if(this.eatCode(u.QUOTATION_MARK)&&this.eatCode(u.QUOTATION_MARK))return this.eatCode(u.QUOTATION_MARK)&&(t.push(u.QUOTATION_MARK),this.eatCode(u.QUOTATION_MARK)&&(t.push(u.QUOTATION_MARK),this.eatCode(u.QUOTATION_MARK)))?(this.moveAt(r),this.reportParseError("invalid-three-quotes")):(this.endToken("MultiLineBasicString","end",String.fromCodePoint(...t)),"DATA");this.moveAt(r)}if(e===u.BACKSLASH){e=this.nextCode();let r=this.ESCAPES[e];if(r){t.push(r),e=this.nextCode();continue}else if(e===u.LATIN_SMALL_U){let n=this.parseUnicode(4);t.push(n),e=this.nextCode();continue}else if(e===u.LATIN_CAPITAL_U){let n=this.parseUnicode(8);t.push(n),e=this.nextCode();continue}else if(e===u.LATIN_SMALL_X&&this.tomlVersion.gte(1,1)){let n=this.parseUnicode(2);t.push(n),e=this.nextCode();continue}else if(e===u.LINE_FEED){for(e=this.nextCode();Xe(e)||e===u.LINE_FEED;)e=this.nextCode();continue}else if(Xe(e)){let n=!0,a=this.codePointIterator.start,i;for(;(i=this.nextCode())!==u.EOF&&i!==u.LINE_FEED;)if(!Xe(i)){this.moveAt(a),n=!1;break}if(n){for(e=this.nextCode();Xe(e)||e===u.LINE_FEED;)e=this.nextCode();continue}}return this.reportParseError("invalid-char-in-escape-sequence")}t.push(e),e=this.nextCode()}return this.reportParseError("unterminated-string")}LITERAL_STRING(e){if(e===u.SINGLE_QUOTE)return e=this.nextCode(),e===u.SINGLE_QUOTE?"MULTI_LINE_LITERAL_STRING":(this.endToken("LiteralString","start",""),this.back("DATA"));let t=[];for(;e!==u.SINGLE_QUOTE&&e!==u.EOF&&e!==u.LINE_FEED;){if(Ye(e))return this.reportParseErrorControlChar();t.push(e),e=this.nextCode()}return e!==u.SINGLE_QUOTE?this.reportParseError("unterminated-string"):(this.endToken("LiteralString","end",String.fromCodePoint(...t)),"DATA")}MULTI_LINE_LITERAL_STRING(e){let t=[];for(e===u.LINE_FEED&&(e=this.nextCode());e!==u.EOF;){if(e!==u.LINE_FEED&&Ye(e))return this.reportParseErrorControlChar();if(e===u.SINGLE_QUOTE){let r=this.codePointIterator.start;if(this.eatCode(u.SINGLE_QUOTE)&&this.eatCode(u.SINGLE_QUOTE))return this.eatCode(u.SINGLE_QUOTE)&&(t.push(u.SINGLE_QUOTE),this.eatCode(u.SINGLE_QUOTE)&&(t.push(u.SINGLE_QUOTE),this.eatCode(u.SINGLE_QUOTE)))?(this.moveAt(r),this.reportParseError("invalid-three-quotes")):(this.endToken("MultiLineLiteralString","end",String.fromCodePoint(...t)),"DATA");this.moveAt(r)}t.push(e),e=this.nextCode()}return this.reportParseError("unterminated-string")}SIGN(e){return e===u.LATIN_SMALL_N||e===u.LATIN_SMALL_I?this.back("NAN_OR_INF"):N(e)?this.back("NUMBER"):this.reportParseError("unexpected-char")}NAN_OR_INF(e){if(e===u.LATIN_SMALL_N){let t=this.codePointIterator.start;if(this.eatCode(u.LATIN_SMALL_A)&&this.eatCode(u.LATIN_SMALL_N))return this.endToken("Float","end",NaN),"DATA";this.moveAt(t)}else if(e===u.LATIN_SMALL_I){let t=this.codePointIterator.start;if(this.eatCode(u.LATIN_SMALL_N)&&this.eatCode(u.LATIN_SMALL_F))return this.endToken("Float","end",this.text[this.tokenStart]==="-"?-1/0:1/0),"DATA";this.moveAt(t)}return this.reportParseError("unexpected-char")}NUMBER(e){let t=this.text[this.tokenStart],r=t==="+"?u.PLUS_SIGN:t==="-"?u.DASH:u.NULL;if(e===u.DIGIT_0){if(r===u.NULL){let s=this.codePointIterator.start,c=this.nextCode();if(N(c)){let d=this.nextCode();if(d===u.COLON)return this.data={hasDate:!1,year:0,month:0,day:0,hour:Number(String.fromCodePoint(u.DIGIT_0,c)),minute:0,second:0},"TIME_MINUTE";if(N(d)){let f=this.nextCode();if(N(f)&&this.eatCode(u.DASH))return this.data={hasDate:!0,year:Number(String.fromCodePoint(u.DIGIT_0,c,d,f)),month:0,day:0,hour:0,minute:0,second:0},"DATE_MONTH"}return this.moveAt(s),this.reportParseError("invalid-leading-zero")}this.moveAt(s)}return e=this.nextCode(),e===u.LATIN_SMALL_X||e===u.LATIN_SMALL_O||e===u.LATIN_SMALL_B?r!==u.NULL?this.reportParseError("unexpected-char"):e===u.LATIN_SMALL_X?"HEX":e===u.LATIN_SMALL_O?"OCTAL":"BINARY":e===u.LATIN_SMALL_E||e===u.LATIN_CAPITAL_E?(this.data={minus:r===u.DASH,left:[u.DIGIT_0]},"EXPONENT_RIGHT"):e===u.DOT?(this.data={minus:r===u.DASH,absInt:[u.DIGIT_0]},"FRACTIONAL_RIGHT"):(this.endToken("Integer","start","0",10),this.back("DATA"))}let{out:n,nextCp:a,hasUnderscore:i}=this.parseDigits(e,N);return a===u.DASH&&r===u.NULL&&!i&&n.length===4?(this.data={hasDate:!0,year:Number(String.fromCodePoint(...n)),month:0,day:0,hour:0,minute:0,second:0},"DATE_MONTH"):a===u.COLON&&r===u.NULL&&!i&&n.length===2?(this.data={hasDate:!1,year:0,month:0,day:0,hour:Number(String.fromCodePoint(...n)),minute:0,second:0},"TIME_MINUTE"):a===u.LATIN_SMALL_E||a===u.LATIN_CAPITAL_E?(this.data={minus:r===u.DASH,left:n},"EXPONENT_RIGHT"):a===u.DOT?(this.data={minus:r===u.DASH,absInt:n},"FRACTIONAL_RIGHT"):(this.endToken("Integer","start",r===u.DASH?String.fromCodePoint(u.DASH,...n):String.fromCodePoint(...n),10),this.back("DATA"))}HEX(e){let{out:t}=this.parseDigits(e,pn);return this.endToken("Integer","start",String.fromCodePoint(...t),16),this.back("DATA")}OCTAL(e){let{out:t}=this.parseDigits(e,Ua);return this.endToken("Integer","start",String.fromCodePoint(...t),8),this.back("DATA")}BINARY(e){let{out:t}=this.parseDigits(e,r=>r===u.DIGIT_0||r===u.DIGIT_1);return this.endToken("Integer","start",String.fromCodePoint(...t),2),this.back("DATA")}FRACTIONAL_RIGHT(e){let{minus:t,absInt:r}=this.data,{out:n,nextCp:a}=this.parseDigits(e,N),i=[...r,u.DOT,...n];if(a===u.LATIN_SMALL_E||a===u.LATIN_CAPITAL_E)return this.data={minus:t,left:i},"EXPONENT_RIGHT";let s=Number(t?String.fromCodePoint(u.DASH,...i):String.fromCodePoint(...i));return this.endToken("Float","start",s),this.back("DATA")}EXPONENT_RIGHT(e){let{left:t,minus:r}=this.data,n=!1;(e===u.DASH||e===u.PLUS_SIGN)&&(n=e===u.DASH,e=this.nextCode());let{out:a}=this.parseDigits(e,N),i=a;n&&i.unshift(u.DASH);let s=Number(r?String.fromCodePoint(u.DASH,...t,u.LATIN_SMALL_E,...i):String.fromCodePoint(...t,u.LATIN_SMALL_E,...i));return this.endToken("Float","start",s),this.back("DATA")}BOOLEAN(e){if(e===u.LATIN_SMALL_T){let t=this.codePointIterator.start;if(this.eatCode(u.LATIN_SMALL_R)&&this.eatCode(u.LATIN_SMALL_U)&&this.eatCode(u.LATIN_SMALL_E))return this.endToken("Boolean","end",!0),"DATA";this.moveAt(t)}else if(e===u.LATIN_SMALL_F){let t=this.codePointIterator.start;if(this.eatCode(u.LATIN_SMALL_A)&&this.eatCode(u.LATIN_SMALL_L)&&this.eatCode(u.LATIN_SMALL_S)&&this.eatCode(u.LATIN_SMALL_E))return this.endToken("Boolean","end",!1),"DATA";this.moveAt(t)}return this.reportParseError("unexpected-char")}DATE_MONTH(e){let t=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==u.DASH)return this.reportParseError("unexpected-char");let r=this.codePointIterator.start,n=this.data;return n.month=Number(this.text.slice(t,r)),"DATE_DAY"}DATE_DAY(e){let t=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;if(n.day=Number(this.text.slice(t,r)),!Ja(n.year,n.month,n.day))return this.reportParseError("invalid-date");if(e=this.nextCode(),e===u.LATIN_CAPITAL_T||e===u.LATIN_SMALL_T)return"TIME_HOUR";if(e===u.SPACE){let i=this.codePointIterator.start;if(N(this.nextCode())&&N(this.nextCode()))return this.moveAt(i),"TIME_HOUR";this.moveAt(i)}let a=Qe(n,"");return this.endToken("LocalDate","start",a),this.back("DATA")}TIME_HOUR(e){let t=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==u.COLON)return this.reportParseError("unexpected-char");let r=this.codePointIterator.start,n=this.data;return n.hour=Number(this.text.slice(t,r)),"TIME_MINUTE"}TIME_MINUTE(e){let t=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;return n.minute=Number(this.text.slice(t,r)),e=this.nextCode(),e===u.COLON?"TIME_SECOND":this.tomlVersion.lt(1,1)?this.reportParseError("unexpected-char"):dr(n.hour,n.minute,n.second)?this.processTimeEnd(e,n):this.reportParseError("invalid-time")}TIME_SECOND(e){let t=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;return n.second=Number(this.text.slice(t,r)),dr(n.hour,n.minute,n.second)?(e=this.nextCode(),e===u.DOT?"TIME_SEC_FRAC":this.processTimeEnd(e,n)):this.reportParseError("invalid-time")}TIME_SEC_FRAC(e){if(!N(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;for(;N(e);)e=this.nextCode();let r=this.codePointIterator.start,n=this.data;return n.frac=this.text.slice(t,r),this.processTimeEnd(e,n)}processTimeEnd(e,t){if(t.hasDate){if(e===u.DASH||e===u.PLUS_SIGN)return t.offsetSign=e,"TIME_OFFSET";if(e===u.LATIN_CAPITAL_Z||e===u.LATIN_SMALL_Z){let a=Qe(t,"Z");return this.endToken("OffsetDateTime","end",a),"DATA"}let n=Qe(t,"");return this.endToken("LocalDateTime","start",n),this.back("DATA")}let r=Qe(t,"");return this.endToken("LocalTime","start",r),this.back("DATA")}TIME_OFFSET(e){if(!N(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==u.COLON)return this.reportParseError("unexpected-char");let r=this.codePointIterator.start;e=this.nextCode();let n=this.codePointIterator.start;if(!N(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!N(e))return this.reportParseError("unexpected-char");let a=this.codePointIterator.end,i=Number(this.text.slice(t,r)),s=Number(this.text.slice(n,a));if(!dr(i,s,0))return this.reportParseError("invalid-time");let c=this.data,d=Qe(c,`${String.fromCodePoint(c.offsetSign)}${_e(i,2)}:${_e(s,2)}`);return this.endToken("OffsetDateTime","end",d),"DATA"}parseDigits(e,t){if(e===u.UNDERSCORE)return this.reportParseError("invalid-underscore");if(!t(e))return this.reportParseError("unexpected-char");let r=[],n=u.NULL,a=!1;for(;t(e)||e===u.UNDERSCORE;){if(e===u.UNDERSCORE){if(a=!0,n===u.UNDERSCORE)return this.reportParseError("invalid-underscore")}else r.push(e);n=e,e=this.nextCode()}return n===u.UNDERSCORE?this.reportParseError("invalid-underscore"):{out:r,nextCp:e,hasUnderscore:a}}parseUnicode(e){let t=this.codePointIterator.start,r=this.codePointIterator.end,n=0,a;for(;(a=this.nextCode())!==u.EOF;){if(!pn(a))return this.moveAt(t),this.reportParseError("invalid-char-in-escape-sequence");if(n++,n>=e)break}let i=this.codePointIterator.end,s=this.text.slice(r,i),c=parseInt(s,16);return ja(c)?c:this.reportParseError("invalid-code-point",{cp:s})}reportParseErrorControlChar(){return this.reportParseError("invalid-control-character")}};function fn(e,t){return Da(e)||N(e)||e===u.UNDERSCORE||e===u.DASH?!0:(t.lt(1,1),!1)}l(fn,"isUnquotedKeyChar");function Ye(e){return ka(e)&&e!==u.TABULATION||e===u.DELETE}l(Ye,"isControlOtherThanTab");function za(e){return e===u.TABULATION||u.SPACE<=e&&e<=u.TILDE||Wa(e)}l(za,"isNonEOL");function Wa(e){return u.PAD<=e&&e<=u.CP_D7FF||u.CP_E000<=e&&e<=u.CP_10FFFF}l(Wa,"isNonAscii");function Ja(e,t,r){return e>=0&&t<=12&&t>=1&&r>=1?r<=(t===2?e&3||!(e%25)&&e&15?28:29:30+(t+(t>>3)&1)):!1}l(Ja,"isValidDate");function dr(e,t,r){return!(e>=24||e<0||t>59||t<0||r>60||r<0)}l(dr,"isValidTime");function Qe(e,t){let r=_e(e.year,4),n=e.month?_e(e.month,2):"01",a=e.day?_e(e.day,2):"01",i=_e(e.hour,2),s=_e(e.minute,2),c=_e(e.second,2),d=`${r}-${n}-${a}`,f=e.frac?`.${e.frac}`:"",p=new Date(`${d}T${i}:${s}:${c}${f}${t}`);return!isNaN(p.getTime())||e.second!==60?p:new Date(`${d}T${i}:${s}:59${f}${t}`)}l(Qe,"getDateFromDateTimeData");function _e(e,t){return String(e).padStart(t,"0")}l(_e,"padStart");var hr=Symbol("VALUE_KIND_VALUE"),mn=Symbol("VALUE_KIND_INTERMEDIATE"),qa=class{static{l(this,"KeysResolver")}constructor(e){this.rootKeys=new Map,this.tables=[],this.ctx=e}applyResolveKeyForTable(e){let t=this.rootKeys,r=e.key.keys.length-1;for(let s=0;s<r;s++){let c=e.key.keys[s],d=mr(c);e.resolvedKey.push(d);let f=t.get(d);if(!f)f={node:c,keys:new Map},t.set(d,f);else if(f.table==="array"){let p=f.peekIndex;e.resolvedKey.push(p),f=f.keys.get(p)}t=f.keys}let n=e.key.keys[r],a=mr(n);e.resolvedKey.push(a);let i=t.get(a);if(i)if(i.table)if(i.table==="array")if(e.kind==="array"){let s={node:n,keys:new Map},c=i.peekIndex+1;e.resolvedKey.push(c),i.keys.set(c,s),i.peekIndex=c,this.tables.push({node:e,keys:s.keys})}else this.ctx.reportParseError("dupe-keys",n);else this.ctx.reportParseError("dupe-keys",n);else if(e.kind==="array")this.ctx.reportParseError("dupe-keys",n);else{let s={table:e.kind,node:n,keys:i.keys};t.set(a,s),this.tables.push({node:e,keys:s.keys})}else if(e.kind==="array"){e.resolvedKey.push(0);let s={node:n,keys:new Map};t.set(a,{table:e.kind,node:n,keys:new Map([[0,s]]),peekIndex:0}),this.tables.push({node:e,keys:s.keys})}else{let s={table:e.kind,node:n,keys:new Map};t.set(a,s),this.tables.push({node:e,keys:s.keys})}}verifyDuplicateKeys(e){for(let t of e.body)t.type==="TOMLKeyValue"&&gr(this.ctx,this.rootKeys,t);for(let{node:t,keys:r}of this.tables)for(let n of t.body)gr(this.ctx,r,n)}};function gr(e,t,r){let n=t,a=Ae(r.key.keys);for(let i of r.key.keys){let s=mr(i),c=n.get(s);c?((c.value===hr||a===i||c.table)&&e.reportParseError("dupe-keys",Tt(i,c.node)),c.value=mn):(a===i?c={value:hr,node:i,keys:new Map}:c={value:mn,node:i,keys:new Map},n.set(s,c)),n=c.keys}r.value.type==="TOMLInlineTable"?Sn(e,n,r.value):r.value.type==="TOMLArray"&&An(e,n,r.value)}l(gr,"verifyDuplicateKeysForKeyValue");function Sn(e,t,r){for(let n of r.body)gr(e,t,n)}l(Sn,"verifyDuplicateKeysForInlineTable");function An(e,t,r){let n=t;for(let a=0;a<r.elements.length;a++){let i=r.elements[a],s=n.get(a);s?e.reportParseError("dupe-keys",Tt(i,s.node)):(s={value:hr,node:i,keys:new Map},t.set(a,s),i.type==="TOMLInlineTable"?Sn(e,s.keys,i):i.type==="TOMLArray"&&An(e,s.keys,i))}}l(An,"verifyDuplicateKeysForArray");function Tt(e,t){return e.range[0]<=t.range[0]?t:e}l(Tt,"getAfterNode");var Xa=class{static{l(this,"Context")}constructor(e){this.tokens=[],this.comments=[],this.back=null,this.stateStack=[],this.needNewLine=!1,this.needSameLine=!1,this.currToken=null,this.prevToken=null,this.valueContainerStack=[],this.tokenizer=new Ka(e.text,e.parserOptions),this.topLevelTable=e.topLevelTable,this.table=e.topLevelTable,this.keysResolver=new qa(this)}nextToken(e){if(this.prevToken=this.currToken,this.back?(this.currToken=this.back,this.back=null):this.currToken=this._nextTokenFromTokenizer(e),(this.needNewLine||this.needSameLine||e?.needSameLine)&&this.prevToken&&this.currToken)if(this.prevToken.loc.end.line===this.currToken.loc.start.line){if(this.needNewLine)return this.reportParseError("missing-newline",this.currToken)}else{let t=this.needSameLine||e?.needSameLine;if(t)return this.reportParseError(t,this.currToken)}return this.needNewLine=!1,this.needSameLine=!1,this.currToken}_nextTokenFromTokenizer(e){let t=this.tokenizer.valuesEnabled;e?.valuesEnabled&&(this.tokenizer.valuesEnabled=e.valuesEnabled);let r=this.tokenizer.nextToken();for(;r&&r.type==="Block";)this.comments.push(r),r=this.tokenizer.nextToken();return r&&this.tokens.push(r),this.tokenizer.valuesEnabled=t,r}backToken(){if(this.back)throw new Error("Illegal state");this.back=this.currToken,this.currToken=this.prevToken}addValueContainer(e){this.valueContainerStack.push(e),this.tokenizer.valuesEnabled=!0}consumeValueContainer(){let e=this.valueContainerStack.pop();return this.tokenizer.valuesEnabled=this.valueContainerStack.length>0,e}applyResolveKeyForTable(e){this.keysResolver.applyResolveKeyForTable(e)}verifyDuplicateKeys(){this.keysResolver.verifyDuplicateKeys(this.topLevelTable)}reportParseError(e,t){let r,n,a;if(t)r=t.range[0],n=t.loc.start.line,a=t.loc.start.column;else{r=this.tokenizer.start;let i=this.tokenizer.getLocFromIndex(r);n=i.line,a=i.column}throw new Tn(e,r,n,a)}},hn={VALUE:"missing-value"},Ya={BasicString:"basic",MultiLineBasicString:"basic",LiteralString:"literal",MultiLineLiteralString:"literal"},Qa={BasicString:"basic",LiteralString:"literal"},Za={OffsetDateTime:"offset-date-time",LocalDateTime:"local-date-time",LocalDate:"local-date",LocalTime:"local-time"},ei=class{static{l(this,"TOMLParser")}constructor(e,t){this.text=e,this.parserOptions=t||{},this.tomlVersion=wn(this.parserOptions.tomlVersion)}parse(){let e={type:"Program",body:[],sourceType:"module",tokens:[],comments:[],parent:null,range:[0,0],loc:{start:{line:1,column:0},end:{line:1,column:0}}},t={type:"TOMLTopLevelTable",body:[],parent:e,range:K(e.range),loc:z(e.loc)};e.body=[t];let r=new Xa({text:this.text,parserOptions:this.parserOptions,topLevelTable:t}),n=r.nextToken();if(n){for(t.range[0]=n.range[0],t.loc.start=St(n.loc.start);n;){let c=r.stateStack.pop()||"TABLE";r.stateStack.push(...this[c](n,r)),n=r.nextToken()}let s=r.stateStack.pop()||"TABLE";if(s in hn)return r.reportParseError(hn[s],null);r.table.type==="TOMLTable"&&se(r.table,Ae(r.table.body)),se(t,Ae(t.body))}r.verifyDuplicateKeys(),e.tokens=r.tokens,e.comments=r.comments;let a=r.tokenizer.end,i=r.tokenizer.getLocFromIndex(a);return e.range[1]=a,e.loc.end={line:i.line,column:i.column},e}TABLE(e,t){return wt(e)||et(e)?this.processKeyValue(e,t.table,t):pr(e)?this.processTable(e,t.topLevelTable,t):t.reportParseError("unexpected-token",e)}VALUE(e,t){return et(e)||yn(e)?this.processStringValue(e,t):ri(e)?this.processNumberValue(e,t):ni(e)?this.processBooleanValue(e,t):oi(e)?this.processDateTimeValue(e,t):pr(e)?this.processArray(e,t):ti(e)?this.processInlineTable(e,t):t.reportParseError("unexpected-token",e)}processTable(e,t,r){let n={type:"TOMLTable",kind:"standard",key:null,resolvedKey:[],body:[],parent:t,range:K(e.range),loc:z(e.loc)};r.table.type==="TOMLTable"&&se(r.table,Ae(r.table.body)),t.body.push(n),r.table=n;let a=r.nextToken({needSameLine:"invalid-key-value-newline"});if(pr(a)){if(e.range[1]<a.range[0])return r.reportParseError("invalid-space",a);n.kind="array",a=r.nextToken({needSameLine:"invalid-key-value-newline"})}if(Ze(a))return r.reportParseError("missing-key",a);if(!a)return r.reportParseError("unterminated-table-key",null);if(a=this.processKeyNode(a,n,r).nextToken,!Ze(a))return r.reportParseError("unterminated-table-key",a);if(n.kind==="array"){let i=a;if(a=r.nextToken({needSameLine:"invalid-key-value-newline"}),!Ze(a))return r.reportParseError("unterminated-table-key",a);if(i.range[1]<a.range[0])return r.reportParseError("invalid-space",a)}return se(n,a),r.applyResolveKeyForTable(n),r.needNewLine=!0,[]}processKeyValue(e,t,r){let n={type:"TOMLKeyValue",key:null,value:null,parent:t,range:K(e.range),loc:z(e.loc)};t.body.push(n);let{nextToken:a}=this.processKeyNode(e,n,r);return gn(a)?(r.addValueContainer({parent:n,set:l(i=>(n.value=i,se(n,i),r.needNewLine=!0,[]),"set")}),r.needSameLine="invalid-key-value-newline",["VALUE"]):r.reportParseError("missing-equals-sign",a)}processKeyNode(e,t,r){ur(e)&&r.reportParseError("invalid-leading-dot-in-key",e);let n={type:"TOMLKey",keys:[],parent:t,range:K(e.range),loc:z(e.loc)};t.key=n;let a=e,i=null;do{if(wt(a))this.processBareKey(a,n);else if(et(a))this.processStringKey(a,n);else break;if(i=null,a=r.nextToken({needSameLine:"invalid-key-value-newline"}),!ur(a))break;i=a,a=r.nextToken({needSameLine:"invalid-key-value-newline"})}while(a);return i&&r.reportParseError(ur(a)?"invalid-consecutive-dots-in-key":"invalid-trailing-dot-in-key",i),se(n,Ae(n.keys)),{keyNode:n,nextToken:a}}processBareKey(e,t){let r={type:"TOMLBare",name:e.value,parent:t,range:K(e.range),loc:z(e.loc)};t.keys.push(r)}processStringKey(e,t){let r={type:"TOMLQuoted",kind:"string",value:e.string,style:Qa[e.type],multiline:!1,parent:t,range:K(e.range),loc:z(e.loc)};t.keys.push(r)}processStringValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:"string",value:e.string,style:Ya[e.type],multiline:yn(e),parent:r.parent,range:K(e.range),loc:z(e.loc)};return r.set(n)}processNumberValue(e,t){let r=t.consumeValueContainer(),n=this.text,[a,i]=e.range,s=null,c=l(()=>s??(s=n.slice(a,i).replace(/_/g,"")),"getNumberText"),d;return e.type==="Integer"?d={type:"TOMLValue",kind:"integer",value:e.number,bigint:e.bigint,get number(){return c()},parent:r.parent,range:K(e.range),loc:z(e.loc)}:d={type:"TOMLValue",kind:"float",value:e.number,get number(){return c()},parent:r.parent,range:K(e.range),loc:z(e.loc)},r.set(d)}processBooleanValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:"boolean",value:e.boolean,parent:r.parent,range:K(e.range),loc:z(e.loc)};return r.set(n)}processDateTimeValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:Za[e.type],value:e.date,datetime:e.value,parent:r.parent,range:K(e.range),loc:z(e.loc)};return r.set(n)}processArray(e,t){let r=t.consumeValueContainer(),n={type:"TOMLArray",elements:[],parent:r.parent,range:K(e.range),loc:z(e.loc)},a=t.nextToken({valuesEnabled:!0});return Ze(a)?(se(n,a),r.set(n)):(t.backToken(),this.processArrayValue(n,r,t))}processArrayValue(e,t,r){return r.addValueContainer({parent:e,set:l(n=>{e.elements.push(n);let a=r.nextToken({valuesEnabled:!0}),i=bn(a);return i&&(a=r.nextToken({valuesEnabled:!0})),Ze(a)?(se(e,a),t.set(e)):i?(r.backToken(),this.processArrayValue(e,t,r)):r.reportParseError(a?"missing-comma":"unterminated-array",a)},"set")}),["VALUE"]}processInlineTable(e,t){let r=t.consumeValueContainer(),n={type:"TOMLInlineTable",body:[],parent:r.parent,range:K(e.range),loc:z(e.loc)},a=this.tomlVersion.gte(1,1)?void 0:"invalid-inline-table-newline",i=t.nextToken({needSameLine:a});if(i){if(wt(i)||et(i))return this.processInlineTableKeyValue(i,n,r,t);if(fr(i))return se(n,i),r.set(n)}return t.reportParseError("unexpected-token",i)}processInlineTableKeyValue(e,t,r,n){let a={type:"TOMLKeyValue",key:null,value:null,parent:t,range:K(e.range),loc:z(e.loc)};t.body.push(a);let{nextToken:i}=this.processKeyNode(e,a,n);if(!gn(i))return n.reportParseError("missing-equals-sign",i);let s=this.tomlVersion.gte(1,1)?void 0:"invalid-inline-table-newline";return n.addValueContainer({parent:a,set:l(c=>{a.value=c,se(a,c);let d=n.nextToken({needSameLine:s});if(bn(d)){if(d=n.nextToken({needSameLine:s}),d&&(wt(d)||et(d)))return this.processInlineTableKeyValue(d,t,r,n);if(fr(d)){if(this.tomlVersion.lt(1,1))return n.reportParseError("invalid-trailing-comma-in-inline-table",d)}else return n.reportParseError(d?"unexpected-token":"unterminated-inline-table",d)}return fr(d)?(se(t,d),r.set(t)):n.reportParseError(d?"missing-comma":"unterminated-inline-table",d)},"set")}),n.needSameLine="invalid-key-value-newline",["VALUE"]}};function ur(e){return ve(e)&&e.value==="."}l(ur,"isDot");function gn(e){return ve(e)&&e.value==="="}l(gn,"isEq");function pr(e){return ve(e)&&e.value==="["}l(pr,"isLeftBracket");function Ze(e){return ve(e)&&e.value==="]"}l(Ze,"isRightBracket");function ti(e){return ve(e)&&e.value==="{"}l(ti,"isLeftBrace");function fr(e){return ve(e)&&e.value==="}"}l(fr,"isRightBrace");function bn(e){return ve(e)&&e.value===","}l(bn,"isComma");function ve(e){return!!(e&&e.type==="Punctuator")}l(ve,"isPunctuator");function wt(e){return e.type==="Bare"}l(wt,"isBare");function et(e){return e.type==="BasicString"||e.type==="LiteralString"}l(et,"isString");function yn(e){return e.type==="MultiLineBasicString"||e.type==="MultiLineLiteralString"}l(yn,"isMultiLineString");function ri(e){return e.type==="Integer"||e.type==="Float"}l(ri,"isNumber");function ni(e){return e.type==="Boolean"}l(ni,"isBoolean");function oi(e){return e.type==="OffsetDateTime"||e.type==="LocalDateTime"||e.type==="LocalDate"||e.type==="LocalTime"}l(oi,"isDateTime");function se(e,t){t&&(e.range[1]=t.range[1],e.loc.end=St(t.loc.end))}l(se,"applyEndLoc");function K(e){return[e[0],e[1]]}l(K,"cloneRange");function z(e){return{start:St(e.start),end:St(e.end)}}l(z,"cloneLoc");function St(e){return{line:e.line,column:e.column}}l(St,"clonePos");var ai={Program:["body"],TOMLTopLevelTable:["body"],TOMLTable:["key","body"],TOMLKeyValue:["key","value"],TOMLKey:["keys"],TOMLArray:["elements"],TOMLInlineTable:["body"],TOMLBare:[],TOMLQuoted:[],TOMLValue:[]},ii=cn(ai);function si(e,t){return{ast:new ei(e,t).parse(),visitorKeys:ii,services:{isTOML:!0}}}l(si,"parseForESLint");var br=ci(e=>e.value);function ci(e){function t(n,a){return r[n.type](n,a)}l(t,"resolveValue");let r={Program(n,a={}){return t(n.body[0],a)},TOMLTopLevelTable(n,a={}){for(let i of n.body)t(i,a);return a},TOMLKeyValue(n,a={}){let i=t(n.value);return di(a,t(n.key),i),a},TOMLTable(n,a={}){let i=li(a,t(n.key),n.kind==="array");for(let s of n.body)t(s,i);return a},TOMLArray(n){return n.elements.map(a=>t(a))},TOMLInlineTable(n){let a={};for(let i of n.body)t(i,a);return a},TOMLKey(n){return n.keys.map(a=>t(a))},TOMLBare(n){return n.name},TOMLQuoted(n){return n.value},TOMLValue(n){return e(n)}};return n=>t(n)}l(ci,"generateConvertTOMLValue");function li(e,t,r){let n=e;for(let d=0;d<t.length-1;d++){let f=t[d];n=c(n,f)}let a=Ae(t),i=n[a];if(i==null){let d={};return n[a]=r?[d]:d,d}if(Et(i)){let d={};return n[a]=r?[d]:d,d}if(!r){if(Array.isArray(i)){let d={};return n[a]=d,d}return i}if(Array.isArray(i)){let d={};return i.push(d),d}let s={};return n[a]=[s],s;function c(d,f){let p=d[f];if(p==null){let m={};return d[f]=m,m}if(Et(p)){let m={};return d[f]=m,m}let g=p;for(;Array.isArray(g);){let m=g.length-1,h=g[m];if(Et(h)){let _={};return g[m]=_,_}g=h}return g}l(c,"getNextTargetFromKey")}l(li,"getTable");function di(e,t,r){let n=e;for(let a=0;a<t.length-1;a++){let i=t[a],s=n[i];if(s==null){let c={};n[i]=c,n=c}else if(Et(s)||Array.isArray(s)){let c={};n[i]=c,n=c}else n=s}n[Ae(t)]=r}l(di,"set");function Et(e){return typeof e!="object"||e instanceof Date}l(Et,"isValue");function vn(e,t){return si(e,t).ast}l(vn,"parseTOML");function ne(e,t){try{let r=vn(e,{tomlVersion:"1.0"}),n=br(r);return Ln(n),{ast:r,value:n}}catch(r){let n=r;throw new y({code:"INVALID_CONFIG",path:t,message:"Configuration contains invalid TOML or an unsupported value.",line:n.lineNumber,column:n.column===void 0?void 0:n.column+1,action:"Open config.toml, correct the indicated value, and retry."},{cause:r})}}l(ne,"parseToml");function Ln(e){if(e instanceof Date||typeof e=="bigint"||typeof e=="number"&&(!Number.isFinite(e)||Number.isInteger(e)&&!Number.isSafeInteger(e)))throw new Error("Unsupported TOML value");if(e&&typeof e=="object")for(let[t,r]of Object.entries(e)){if(["__proto__","prototype","constructor"].includes(t))throw new Error("Reserved key");Ln(r)}}l(Ln,"assertJsonValue");function we(e){if(typeof e=="string")return JSON.stringify(e).replace(/\\u([0-9a-f]{4})/gi,"\\u$1");if(typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e))return String(e);if(Array.isArray(e))return`[${e.map(we).join(", ")}]`;if(de(e))return`{ ${Object.entries(e).filter(([,t])=>t!==void 0).map(([t,r])=>`${xe(t)} = ${we(r)}`).join(", ")} }`;throw new Error("Configuration cannot contain null or unsupported values.")}l(we,"tomlValue");var xe=l(e=>/^[A-Za-z0-9_-]+$/.test(e)?e:JSON.stringify(e),"tomlKey"),xn=l(e=>e.keys.map(t=>t.type==="TOMLBare"?t.name:t.value),"keyPath"),ui=l((e,t)=>e.length===t.length&&e.every((r,n)=>r===t[n]),"samePath"),At=l((e,t)=>e.length<=t.length&&e.every((r,n)=>r===t[n]),"prefix");function de(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof Date)}l(de,"isRecord");function rt(e,t,r){let n=e;for(let a of t)n=Cn(n,a,r);return ne(n,r),n.endsWith(`
25
+ `)?n:`${n}
26
+ `}l(rt,"editToml");function Cn(e,t,r){if(!t.path.length||t.path.some(m=>!m||["__proto__","prototype","constructor"].includes(m)))throw new Error("Invalid configuration key path.");let{ast:n}=ne(e,r),a=[],i=[];for(let m of n.body[0].body)if(m.type==="TOMLKeyValue")a.push({path:xn(m.key),node:m});else{if(i.push(m),m.kind!=="standard")continue;for(let h of m.body)a.push({path:[...m.resolvedKey.map(String),...xn(h.key)],node:h})}let s=a.find(m=>ui(m.path,t.path));if(s){let m=s.node;if(t.op==="set")return vt(e,m.value.range,In(e,n,m.value.range,we(t.value)));let h=n.comments.filter(_=>_.range[0]>=m.range[0]&&_.range[1]<=m.range[1]).map(_=>e.slice(..._.range)).join(`
27
+ `);return vt(e,m.range,h)}let c=a.find(m=>At(m.path,t.path));if(c){let m=structuredClone(br(c.node.value));if(!de(m))throw new Error("Cannot edit a key below a scalar or array.");return pi(m,{...t,path:t.path.slice(c.path.length)}),vt(e,c.node.value.range,In(e,n,c.node.value.range,we(m)))}let d=a.filter(m=>At(t.path,m.path)),f=i.filter(m=>At(t.path,m.resolvedKey.map(String)));if(d.length||f.length){let m=[...d.map(h=>h.node.range),...f.map(h=>[h.range[0],h.key.range[1]+1])];for(let h of m.sort((_,T)=>T[0]-_[0])){let _=n.comments.filter(T=>T.range[0]>=h[0]&&T.range[1]<=h[1]).map(T=>e.slice(...T.range)).join(`
28
+ `);e=vt(e,h,_)}return t.op==="unset"?e:Cn(e,t,r)}if(t.op==="unset")return e;if(de(t.value)&&!("mode"in t.value)&&!("source"in t.value)&&!("provider_id"in t.value))return`${e.replace(/\n?$/,`
29
+ `)}
30
+ ${yr(t.value,t.path)}`;let p=i.filter(m=>m.kind==="standard"&&At(m.resolvedKey,t.path)&&m.resolvedKey.length<t.path.length).sort((m,h)=>h.resolvedKey.length-m.resolvedKey.length)[0];if(p){let m=t.path.slice(p.resolvedKey.length).map(xe).join("."),_=i.find(T=>T.range[0]>p.range[0])?.range[0]??e.length;return`${e.slice(0,_).replace(/\n?$/,`
31
+ `)}${m} = ${we(t.value)}
32
+ ${e.slice(_)}`}if(t.path.length===1){let m=i[0]?.range[0]??e.length;return`${e.slice(0,m).replace(/\n?$/,`
33
+ `)}${xe(t.path[0])} = ${we(t.value)}
34
+ ${e.slice(m)}`}let g=t.path.slice(0,-1).map(xe).join(".");return`${e.replace(/\n?$/,`
35
+ `)}
36
+ [${g}]
37
+ ${xe(t.path.at(-1))} = ${we(t.value)}
38
+ `}l(Cn,"editOne");function vt(e,t,r){return e.slice(0,t[0])+r+e.slice(t[1])}l(vt,"replace");function In(e,t,r,n){if(t.comments.filter(i=>i.range[0]>=r[0]&&i.range[1]<=r[1]).length)throw new y({code:"CONFIG_EDIT_REQUIRES_TEXT",path:"config.toml",message:"This value contains comments that cannot be preserved by a structured edit.",action:"Edit this value directly in the configuration file."});return n}l(In,"preserveInnerComments");function pi(e,t){let r=e;for(let a of t.path.slice(0,-1)){if(["__proto__","prototype","constructor"].includes(a))throw new Error("Reserved key");de(r[a])||(r[a]={}),r=r[a]}let n=t.path.at(-1);if(["__proto__","prototype","constructor"].includes(n))throw new Error("Reserved key");t.op==="set"?r[n]=t.value:delete r[n]}l(pi,"applyObjectOperation");function ce(e,t,r=[]){let n=[];for(let a of new Set([...Object.keys(e),...Object.keys(t)])){let i=e[a],s=t[a];if(JSON.stringify(i)===JSON.stringify(s))continue;let c=[...r,a];s===void 0?n.push({op:"unset",path:c}):de(i)&&de(s)&&!("mode"in s)&&!("source"in s)&&!("provider_id"in s)?n.push(...ce(i,s,c)):n.push({op:"set",path:c,value:s})}return n}l(ce,"diffConfig");function yr(e,t){let r=[],n=[];for(let[a,i]of Object.entries(e))i!==void 0&&(de(i)&&!("mode"in i)&&!("source"in i)&&!("provider_id"in i)?n.push(yr(i,[...t,a])):r.push(`${xe(a)} = ${we(i)}`));return[...t.length?[`[${t.map(xe).join(".")}]`]:[],...r].join(`
39
+ `)+`
40
+ `+(n.length?`
41
+ `+n.join(`
42
+ `):"")}l(yr,"renderTable");function fi(e){let t=yr(e,[]);return ne(t,"config.toml"),t}l(fi,"serializeConfig");function wr(e,t="config.toml",r="user"){return ie(ne(e,t).value,r)}l(wr,"validateConfigText");async function xt(e,t){if(t===null)return;try{wr(t)}catch{return}let r=De.join(e,"backups","config"),n=De.join(r,`${$(t)}.toml`);await A(n)===null&&await I(n,t);let a=await mi(e);for(let i of a.slice(32))await _r.rm(De.join(r,`${i.revision}.toml`))}l(xt,"rememberValidConfig");async function mi(e){let t=De.join(e,"backups","config"),r=await _r.readdir(t).catch(a=>{if(M(a))return[];throw a}),n=[];for(let a of r){if(!/^[a-f0-9]{64}\.toml$/.test(a))continue;let i=De.join(t,a),s=await A(i);if(!(!s||$(s)!==a.slice(0,-5))){try{wr(s,i)}catch{continue}n.push({revision:a.slice(0,-5),createdAt:(await _r.stat(i)).mtime.toISOString()})}}return n.sort((a,i)=>i.createdAt.localeCompare(a.createdAt))}l(mi,"configRecoveryRevisions");async function hi(e,t,r){let n=b(e).config;return wr(r,n),L(n,async()=>{let a=await A(n);if(a){let i;try{i=ne(a,n).value}catch{}if(i&&typeof i=="object"&&"schema_version"in i&&typeof i.schema_version=="number"&&i.schema_version>1)throw new y({code:"UNSUPPORTED_CONFIG_VERSION",path:n,message:"This configuration was written for a newer OpenPond version.",action:"Update OpenPond or restore a compatible backup into a separate home."})}if($(a)!==t)throw new y({code:"CONFIG_CONFLICT",path:n,message:"Configuration changed since you opened it.",action:"Reload the file before saving."});if(await xt(e,a),$(await A(n))!==t)throw new y({code:"CONFIG_CONFLICT",path:n,message:"Configuration changed while saving.",action:"Reload the file before saving."});return await I(n,r),{rawRevision:$(r)}})}l(hi,"replaceConfigText");async function al(e,t,r){if(!/^[a-f0-9]{64}$/.test(t))throw new Error("Invalid configuration revision.");let n=De.join(e,"backups","config",`${t}.toml`),a=await A(n);if(!a||$(a)!==t)throw new y({code:"INVALID_CONFIG_BACKUP",path:n,message:"This configuration backup is unavailable or changed.",action:"Select another verified revision."});return hi(e,r,a)}l(al,"restoreConfigRevision");function il(){return o.toJSONSchema(lr)}l(il,"configEditorSchema");import{realpathSync as gi,watch as bi}from"node:fs";import yi from"node:path";async function C(e=Fr(),t={}){let r=t.path??b(e).config,n=await A(r);return{path:r,rawRevision:$(n),document:It(n===null?{schema_version:1}:ne(n,r).value,r,t.scope)}}l(C,"readConfig");function It(e,t,r){try{return ie(e,r)}catch(n){let a=n instanceof o.ZodError?n.issues.map(i=>`${i.path.join(".")||"config"}: ${i.message}`).join("; "):n instanceof Error?n.message:"Invalid configuration";throw new y({code:"INVALID_CONFIG",path:t,message:a,action:"Open the configuration file and correct the indicated setting."},{cause:n})}}l(It,"validate");async function yl(e,t,r,n={}){let a=n.path??b(e).config;return L(a,async()=>{let i=await A(a);if($(i)!==t||(await C(e,n)).rawRevision!==t)throw Ue(a);let c=rt(i??`schema_version = 1
43
+ `,r,a),d=It(ne(c,a).value,a,n.scope);if($(await A(a))!==t)throw Ue(a);return c!==i&&(await xt(e,i),await I(a,c)),{path:a,rawRevision:$(c),document:d}})}l(yl,"patchConfig");async function W(e,t,r){let n=b(e).config;return L(n,async()=>{let a=await C(e);if(r!==void 0&&a.rawRevision!==r)throw Ue(n);let i=It(await t(structuredClone(a.document)),n),s=ce(a.document,i);if(!s.length)return a;let c=await A(n);if($(c)!==a.rawRevision)throw Ue(n);let d=rt(c??`schema_version = 1
44
+ `,s,n);if(It(ne(d,n).value,n),$(await A(n))!==a.rawRevision)throw Ue(n);return await xt(e,c),await I(n,d),{path:n,rawRevision:$(d),document:i}})}l(W,"updateConfig");function Ue(e){return new y({code:"CONFIG_CONFLICT",path:e,message:"Configuration changed since this edit began.",action:"Reload the latest settings and apply your change again."})}l(Ue,"conflict");function Lt(e,t){return On(e,t)}l(Lt,"mergeConfig");function On(e,t){let r={...e};for(let[n,a]of Object.entries(t))a!==void 0&&(de(a)&&de(r[n])&&!("mode"in a)&&!("source"in a)&&!("provider_id"in a)?r[n]=On(r[n],a):r[n]=structuredClone(a));return r}l(On,"mergeTable");function _l(e,t){let r,n=bi(gi.native(yi.dirname(b(e).config)),{persistent:!1},(a,i)=>{i&&String(i)!=="config.toml"||(r&&clearTimeout(r),r=setTimeout(t,100),r.unref())});return n.on("error",t),()=>{r&&clearTimeout(r),n.close()}}l(_l,"watchConfig");var Sl=["sidebarWidth","diffPanelWidth","sidebarSectionsCollapsed"],Nn=l(e=>({provider_id:e.providerId,model_id:e.modelId}),"modelToConfig"),Ct=l(e=>({providerId:e.provider_id,modelId:e.model_id}),"modelFromConfig"),Tr=l(e=>e?{mode:"custom",ref:Nn(e)}:{mode:"inherit"},"modelOverride");function Ie(e){let t=ee.parse(e);return{schema_version:1,chat:{model:Nn(t.defaultChatModelRef??{providerId:t.defaultChatProvider,modelId:t.defaultChatModel}),steer_active_responses:t.steerActiveResponses},codex:{reasoning_effort:t.codexReasoningEffort},permissions:{command_access:t.openPondCommandAccessMode,codex_mode:t.codexPermissionMode},context_compaction:{auto_enabled:t.contextCompaction.autoEnabled,trigger_percent:t.contextCompaction.triggerPercent,summary_model:t.contextCompaction.summaryModel},projects:{branch_prefix:t.defaultBranchPrefix,new_project_directory:t.defaultNewProjectDirectory},defaults:{...t.defaultTeamId?{team_id:t.defaultTeamId}:{}},ui:{advanced_workspace_controls:t.advancedWorkspaceControls},editor:{language_servers:t.editor.languageServers,diagnostics_while_editing:t.editor.diagnosticsWhileEditing,check_on_save:t.editor.checkOnSave,languages:Object.fromEntries(Object.entries(t.editor.languages).map(([r,n])=>[r,{mode:n.mode,custom_command:n.customCommand}]))},training:{default_model:Tr(t.training.defaultModelRef),creation_mode:t.training.creationMode,auto_approve_evidence:t.training.autoApproveEvidence},subagents:{enabled:t.subagents.enabled,delegation_mode:t.subagents.delegationMode,default_model:Tr(t.subagents.defaultModelRef),max_concurrent_runs:t.subagents.maxConcurrentRuns,max_concurrent_runs_per_provider:t.subagents.maxConcurrentRunsPerProvider??"unlimited",max_concurrent_runs_per_workspace_target:t.subagents.maxConcurrentRunsPerWorkspaceTarget??"unlimited",roles:Object.fromEntries(t.subagents.roles.map(r=>[r.id,{enabled:r.enabled,model:Tr(r.modelRef),isolation_mode:r.isolationMode,max_concurrent_runs:r.maxConcurrentRuns,tool_policy:r.toolPolicy,background:r.background,peer_messages:r.peerMessages}]))}}}l(Ie,"preferencesToConfig");function nt(e,t={}){let r=ee.parse({}),n=e.chat?.model?Ct(e.chat.model):{providerId:r.defaultChatProvider,modelId:r.defaultChatModel},a=e.subagents,i=new Map(r.subagents.roles.map(s=>[s.id,s]));for(let[s,c]of Object.entries(a?.roles??{})){let d=i.get(s);i.set(s,{id:s,enabled:c.enabled??d?.enabled??!0,modelRef:c.model?c.model.mode==="custom"?Ct(c.model.ref):null:d?.modelRef??null,isolationMode:c.isolation_mode??d?.isolationMode??"none",maxConcurrentRuns:c.max_concurrent_runs??d?.maxConcurrentRuns??1,toolPolicy:c.tool_policy??d?.toolPolicy??"read_only",background:c.background??d?.background??!0,peerMessages:c.peer_messages??d?.peerMessages??"parent_scoped"})}return ee.parse({...r,...t,defaultChatProvider:n.providerId,defaultChatModel:n.modelId,defaultChatModelRef:n,codexReasoningEffort:e.codex?.reasoning_effort??r.codexReasoningEffort,codexPermissionMode:e.permissions?.codex_mode??r.codexPermissionMode,openPondCommandAccessMode:e.permissions?.command_access??r.openPondCommandAccessMode,defaultBranchPrefix:e.projects?.branch_prefix??r.defaultBranchPrefix,defaultNewProjectDirectory:e.projects?.new_project_directory??r.defaultNewProjectDirectory,defaultTeamId:e.defaults?.team_id??null,advancedWorkspaceControls:e.ui?.advanced_workspace_controls??r.advancedWorkspaceControls,steerActiveResponses:e.chat?.steer_active_responses??r.steerActiveResponses,contextCompaction:{autoEnabled:e.context_compaction?.auto_enabled??r.contextCompaction.autoEnabled,triggerPercent:e.context_compaction?.trigger_percent??r.contextCompaction.triggerPercent,summaryModel:e.context_compaction?.summary_model??r.contextCompaction.summaryModel},training:{defaultModelRef:e.training?.default_model?.mode==="custom"?Ct(e.training.default_model.ref):null,creationMode:e.training?.creation_mode??r.training.creationMode,autoApproveEvidence:e.training?.auto_approve_evidence??r.training.autoApproveEvidence},editor:{languageServers:e.editor?.language_servers??r.editor.languageServers,diagnosticsWhileEditing:e.editor?.diagnostics_while_editing??r.editor.diagnosticsWhileEditing,checkOnSave:e.editor?.check_on_save??r.editor.checkOnSave,languages:Object.fromEntries(Object.entries(r.editor.languages).map(([s,c])=>{let d=e.editor?.languages?.[s];return[s,{mode:d?.mode??c.mode,customCommand:d?.custom_command??c.customCommand}]}))},subagents:{...r.subagents,enabled:a?.enabled??r.subagents.enabled,delegationMode:a?.delegation_mode??r.subagents.delegationMode,defaultModelRef:a?.default_model?.mode==="custom"?Ct(a.default_model.ref):null,roles:[...i.values()],maxConcurrentRuns:a?.max_concurrent_runs??r.subagents.maxConcurrentRuns,maxConcurrentRunsPerProvider:a?.max_concurrent_runs_per_provider==="unlimited"?null:a?.max_concurrent_runs_per_provider??r.subagents.maxConcurrentRunsPerProvider,maxConcurrentRunsPerWorkspaceTarget:a?.max_concurrent_runs_per_workspace_target==="unlimited"?null:a?.max_concurrent_runs_per_workspace_target??r.subagents.maxConcurrentRunsPerWorkspaceTarget}})}l(nt,"configToPreferences");function Ot(e){return{sidebarWidth:e.sidebarWidth,diffPanelWidth:e.diffPanelWidth,sidebarSectionsCollapsed:e.sidebarSectionsCollapsed}}l(Ot,"layoutPreferences");import _i from"node:path";import{existsSync as Er,promises as wi}from"node:fs";var Ti="CREATE TABLE IF NOT EXISTS entries (namespace TEXT NOT NULL, cache_key TEXT NOT NULL, payload TEXT NOT NULL, updated_at TEXT NOT NULL, error TEXT, expires_at INTEGER NOT NULL, last_used INTEGER NOT NULL, PRIMARY KEY(namespace, cache_key));";async function Nt(e,t){return L(_i.join(b(e).runtime,"cache"),async()=>{for(let r=0;;r++){let n;try{return n=U(b(e).cache),n.exec(Ti),t(n)}catch(a){let i=a;if(!(a instanceof SyntaxError||i.errcode!==void 0&&[11,26].includes(i.errcode&255)||["SQLITE_CORRUPT","SQLITE_NOTADB"].includes(i.code??""))||r>0)throw a;n?.close(),n=void 0;for(let c of["-wal","-shm",""])await wi.rm(`${b(e).cache}${c}`,{force:!0})}finally{n?.close()}}})}l(Nt,"withCache");async function Nl(e,t,r,n={}){return Er(b(e).cache)?Nt(e,a=>{let i=a.prepare("SELECT payload, updated_at, error, expires_at FROM entries WHERE namespace = ? AND cache_key = ?").get(t,r);return!i||!n.allowStale&&i.expires_at<Date.now()?null:(a.prepare("UPDATE entries SET last_used = ? WHERE namespace = ? AND cache_key = ?").run(Date.now(),t,r),{payload:JSON.parse(i.payload),updatedAt:i.updated_at,error:i.error})}):null}l(Nl,"readCache");async function Sr(e,t,r,n,a={}){let i=Date.now(),s=new Date(i).toISOString(),c=JSON.stringify(n);return await Nt(e,d=>{d.prepare("INSERT INTO entries VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT(namespace, cache_key) DO UPDATE SET payload=excluded.payload, updated_at=excluded.updated_at, error=excluded.error, expires_at=excluded.expires_at, last_used=excluded.last_used").run(t,r,c,s,a.error??null,i+(a.ttlMs??36e5),i);let f=Number(d.prepare("DELETE FROM entries WHERE expires_at < ?").run(i-7*864e5).changes)>0,p=Number(d.prepare("SELECT coalesce(sum(length(CAST(payload AS BLOB))),0) AS size FROM entries").get().size);if(p>512*1024*1024){for(let g of d.prepare("SELECT namespace, cache_key, length(CAST(payload AS BLOB)) AS size FROM entries ORDER BY last_used").all())if(d.prepare("DELETE FROM entries WHERE namespace = ? AND cache_key = ?").run(g.namespace,g.cache_key),f=!0,p-=g.size,p<=512*1024*1024)break}f&&d.exec("PRAGMA wal_checkpoint(TRUNCATE); VACUUM;")}),{payload:n,updatedAt:s,error:a.error??null}}l(Sr,"writeCache");async function Rl(e,t){return Er(b(e).cache)?Nt(e,r=>Object.fromEntries(r.prepare("SELECT cache_key, payload, updated_at, error FROM entries WHERE namespace = ? AND expires_at >= ?").all(t,Date.now()).map(n=>[n.cache_key,{payload:JSON.parse(n.payload),updatedAt:n.updated_at,error:n.error}]))):{}}l(Rl,"listCache");async function kl(e,t){Er(b(e).cache)&&await Nt(e,r=>{t?r.prepare("DELETE FROM entries WHERE namespace = ?").run(t):r.exec("DELETE FROM entries"),r.exec("PRAGMA wal_checkpoint(TRUNCATE); VACUUM;")})}l(kl,"clearCache");import{createCipheriv as Ei,createDecipheriv as Si,randomBytes as Rn,randomUUID as Ai,createHash as Ar}from"node:crypto";var vi=o.strictObject({owner:o.string(),revision:o.number().int().positive(),algorithm:o.literal("aes-256-gcm"),keyId:o.string(),iv:o.string(),ciphertext:o.string(),tag:o.string()}),xi=o.strictObject({schemaVersion:o.literal("openpond.credentials.v1"),records:o.record(o.string(),vi)});async function ot(e){let t=b(e).credentials;try{return xi.parse(await D(t,()=>({schemaVersion:"openpond.credentials.v1",records:{}})))}catch(r){throw r instanceof y?r:vr(e,"The credential store has an invalid format.",r)}}l(ot,"readVault");async function Rt(e,t){let r=b(e),n=await A(r.key);if(n===null&&t&&await A(r.credentials)===null){let i=Rn(32);return await I(r.key,`${i.toString("base64")}
45
+ `),i}let a=n?Buffer.from(n.trim(),"base64"):null;if(!a||a.length!==32)throw vr(e,"The credential encryption key is missing or invalid.");return a}l(Rt,"readKey");function vr(e,t,r){return new y({code:"CREDENTIAL_RECOVERY_REQUIRED",path:b(e).credentials,message:t,action:"Restore the matching credential store and key from a verified backup. Existing files have been preserved."},{cause:r})}l(vr,"credentialError");function xr(e,t,r,n){try{if(r.owner!==t||r.keyId!==Ar("sha256").update(n).digest("hex"))throw new Error("Credential ownership mismatch");let a=Si("aes-256-gcm",n,Buffer.from(r.iv,"base64"));a.setAAD(Buffer.from(`${t}:${r.revision}`)),a.setAuthTag(Buffer.from(r.tag,"base64"));let i=JSON.parse(Buffer.concat([a.update(Buffer.from(r.ciphertext,"base64")),a.final()]).toString("utf8"));return{revision:r.revision,value:i}}catch(a){throw vr(e,"A credential could not be verified or decrypted.",a)}}l(xr,"decrypt");async function kt(e,t){let r=await ot(e),n=r.records[t];return n?xr(e,t,n,await Rt(e,!1)):null}l(kt,"readCredential");async function Vl(e,t){let r=await ot(e),n=Object.entries(r.records).filter(([i])=>i.startsWith(t));if(!n.length)return{};let a=await Rt(e,!1);return Object.fromEntries(n.map(([i,s])=>[i,xr(e,i,s,a)]))}l(Vl,"readCredentials");async function Pt(e,t,r,n){return L(b(e).credentials,async()=>{let a=await ot(e),i=a.records[t];if(n!==void 0&&n!==(i?.revision??null))throw new y({code:"CREDENTIAL_CONFLICT",path:t,message:"This credential changed or was revoked.",action:"Reload the connection before retrying."});let s=await Rt(e,!0),c=(i?.revision??0)+1,d=Rn(12),f=Ei("aes-256-gcm",s,d);f.setAAD(Buffer.from(`${t}:${c}`));let p=Buffer.concat([f.update(JSON.stringify(r),"utf8"),f.final()]);return a.records[t]={owner:t,revision:c,algorithm:"aes-256-gcm",keyId:Ar("sha256").update(s).digest("hex"),iv:d.toString("base64"),ciphertext:p.toString("base64"),tag:f.getAuthTag().toString("base64")},await I(b(e).credentials,`${JSON.stringify(a,null,2)}
46
+ `),c})}l(Pt,"writeCredential");async function kn(e,t){await L(b(e).credentials,async()=>{let r=await ot(e);t in r.records&&(delete r.records[t],await I(b(e).credentials,`${JSON.stringify(r,null,2)}
47
+ `))})}l(kn,"deleteCredential");function Pn(e){return`${e}:${Ai()}`}l(Pn,"newCredentialId");async function Mn(e,t){let r=await ot(e),n=t.some(a=>r.records[a])?await Rt(e,!1):null;return Object.fromEntries([...new Set(t)].sort().map(a=>{let i=r.records[a];if(!i||!n)return[a,null];let s=xr(e,a,i,n).value,c=a.startsWith("provider:")&&s?.source==="chatgpt_subscription"?{id:a,keyId:i.keyId,source:s.source,endpoint:s.endpoint,createdAt:s.createdAt,accountId:s.oauth?.accountId}:i;return[a,Ar("sha256").update(JSON.stringify(c)).digest("hex")]}))}l(Mn,"credentialVersions");import{createHash as Dn}from"node:crypto";function Un(e){return Dn("sha256").update(JSON.stringify([e.handle,e.base_url??null,e.api_base_url??null,e.chat_api_base_url??null])).digest("hex")}l(Un,"credentialContext");function je(e,t){return`account-${Dn("sha256").update(JSON.stringify([e.trim().toLowerCase(),t?.trim().replace(/\/$/,"")??""])).digest("hex").slice(0,24)}`}l(je,"accountId");async function jn(e){return L(`${b(e).runtime}/accounts`,()=>Fn(e))}l(jn,"readAccountConfiguration");async function Fn(e,t){let{document:r}=t??await C(e),n=[];for(let[d,f]of Object.entries(r.accounts??{})){if(f.enabled===!1)continue;let p={};if(f.credential?.source==="secret"){let m=await kt(e,f.credential.id);if(!m)throw new y({code:"CREDENTIAL_MISSING",path:b(e).config,message:`The credential referenced by account ${d} is unavailable.`,action:"Reconnect this account or restore its credential backup."});p=m.value.context===Un(f)?m.value:{}}else f.credential?.source==="env"&&(p={apiKey:process.env[f.credential.name]});let g=G(e,"account_sessions",d)?.value;n.push({handle:f.handle,...f.base_url?{baseUrl:f.base_url}:{},...f.api_base_url?{apiBaseUrl:f.api_base_url}:{},...f.chat_api_base_url?{chatApiBaseUrl:f.chat_api_base_url}:{},...f.environment?{environment:f.environment}:{},...p.apiKey?{apiKey:p.apiKey}:{},...g||p.token?{session:{...g,...p.token?{token:p.token}:{}}}:{}})}let a=r.defaults?.account_id?r.accounts?.[r.defaults.account_id]:void 0;if(r.defaults?.account_id&&(!a||a.enabled===!1))throw new y({code:"INVALID_ACCOUNT_DEFAULT",path:b(e).config,message:"The configured default account is missing or disabled.",action:"Choose an enabled default account or remove defaults.account_id."});let i=a?{handle:a.handle,baseUrl:a.base_url}:G(e,"account_selection","last_used")?.value,s=G(e,"profile_installations","library")?.value,c=r.defaults?.profile_ref;if(c){let d=s,f=d?.profiles?.find(p=>p.source===c.source&&p.repositoryId===c.repository_id&&p.profile===c.profile_id);if(!f)throw new y({code:"INVALID_PROFILE_DEFAULT",path:b(e).config,message:"The configured default Profile is not installed.",action:"Install that Profile or remove defaults.profile_ref."});s={...d,repoPath:f.repoPath,profile:f.profile,mode:"local"}}return{accounts:n,...i?{activeProfile:i}:{},...s?{openpondProfile:s}:{},...r.editor?.language_servers?{lspEnabled:r.editor.language_servers!=="off"}:{},...r.runtime?.execution_mode?{executionMode:r.runtime.execution_mode}:{},...r.runtime?.mode?{mode:r.runtime.mode}:{}}}l(Fn,"readUnlocked");async function Bn(e,t){return L(`${b(e).runtime}/accounts`,async()=>{let r=await C(e),n=r.document,a=await Fn(e,r),i=await t(structuredClone(a)),s=new Map,c=Object.fromEntries(Object.entries(n.accounts??{}).filter(([,p])=>p.enabled===!1)),d=new Set;for(let p of i.accounts??[]){let g=je(p.handle,p.baseUrl);if(d.has(g))throw new y({code:"DUPLICATE_ACCOUNT",path:b(e).config,message:"Two accounts have the same handle and service endpoint.",action:"Resolve the duplicate accounts before saving."});d.add(g);let m=Object.entries(n.accounts??{}).find(([,w])=>je(w.handle,w.base_url)===je(p.handle,p.baseUrl))?.[0]??je(p.handle,p.baseUrl),h=n.accounts?.[m],_={...p.apiKey?{apiKey:p.apiKey}:{},...p.session?.token?{token:p.session.token}:{}},T=h?.credential,v=a.accounts?.find(w=>je(w.handle,w.baseUrl)===je(p.handle,p.baseUrl));if((v?.apiKey!==p.apiKey||v?.session?.token!==p.session?.token||!T&&Object.keys(_).length)&&(T=void 0,Object.keys(_).length)){let w=Pn(m);await Pt(e,w,{..._,context:Un({handle:p.handle,base_url:p.baseUrl,api_base_url:p.apiBaseUrl,chat_api_base_url:p.chatApiBaseUrl})},null),T={source:"secret",id:w}}c[m]={...h?.enabled===void 0?{}:{enabled:h.enabled},handle:p.handle,...p.baseUrl?{base_url:p.baseUrl}:{},...p.apiBaseUrl?{api_base_url:p.apiBaseUrl}:{},...p.chatApiBaseUrl?{chat_api_base_url:p.chatApiBaseUrl}:{},...p.environment?{environment:p.environment}:{},...T?{credential:T}:{}},p.session&&s.set(m,{appId:p.session.appId??null,conversationId:p.session.conversationId??null})}await W(e,p=>({...p,accounts:c,...i.lspEnabled===void 0?{}:{editor:{...p.editor,language_servers:i.lspEnabled?"auto":"off"}},...i.executionMode||i.mode?{runtime:{...p.runtime,...i.executionMode?{execution_mode:i.executionMode}:{},...i.mode?{mode:i.mode}:{}}}:{}}),r.rawRevision),be(e,p=>{p.exec("BEGIN IMMEDIATE");try{for(let g of new Set([...Object.keys(n.accounts??{}),...Object.keys(c)])){let m=s.get(g);m?p.prepare("INSERT INTO account_sessions VALUES (?, ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(g,JSON.stringify(m)):p.prepare("DELETE FROM account_sessions WHERE id = ?").run(g)}JSON.stringify(a.activeProfile)!==JSON.stringify(i.activeProfile)&&p.prepare("INSERT INTO account_selection VALUES ('last_used', ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(JSON.stringify(i.activeProfile??null)),JSON.stringify(a.openpondProfile)!==JSON.stringify(i.openpondProfile)&&p.prepare("INSERT INTO profile_installations VALUES ('library', ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(JSON.stringify(i.openpondProfile??null)),p.exec("COMMIT")}catch(g){throw p.exec("ROLLBACK"),g}});let f=new Set(Object.values(c).flatMap(p=>p.credential?.source==="secret"?[p.credential.id]:[]));for(let p of Object.values(n.accounts??{}))p.credential?.source==="secret"&&!f.has(p.credential.id)&&await kn(e,p.credential.id);return i})}l(Bn,"updateAccountConfiguration");import{existsSync as Ii,promises as Li}from"node:fs";import at from"node:path";var Ir=new Set(["sessions","projection_session_shells","sidebar_file_bookmarks","saved_local_projects","profile_installations","extension_installations","scaffold_registrations","refiner_bindings","harness_release_records","dataset_artifacts","dataset_import_jobs","taskset_drafts","taskset_draft_workspaces","training_artifacts","task_attempt_artifacts","local_agent_schedules"]);function Mt(e,t){let r=at.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${at.sep}`)&&!at.isAbsolute(r)}l(Mt,"isWithinHome");async function Dt(e){let t=new Set,r=(await C(e)).document;function n(s){at.isAbsolute(s)&&!Mt(s,e)&&t.add(at.normalize(s))}l(n,"add"),r.storage?.datasets_dir&&n(Ke(r.storage.datasets_dir,e)),r.personalization?.user_instructions&&n(Ke(r.personalization.user_instructions,e));function a(s,c=""){if(typeof s=="string"&&/(?:path|directory|root|cwd)$/i.test(c))n(s);else if(Array.isArray(s))for(let d of s)a(d,c);else if(s&&typeof s=="object")for(let[d,f]of Object.entries(s))["messages","events","turns","metadata","input","output","result","credential"].includes(d)||a(f,d)}l(a,"visit");let i=b(e).database;if(Ii(i)){let s=U(i,!0);try{for(let{name:c}of s.prepare("SELECT name FROM sqlite_master WHERE type='table'").all())if(Ir.has(c)){let d=s.prepare(`PRAGMA table_info(${c})`).all();if(d.some(f=>f.name==="payload"))for(let f of s.prepare(`SELECT payload FROM ${c}`).all())a(JSON.parse(f.payload));for(let{name:f}of d.filter(p=>/(?:_path|_directory|_root)$/.test(p.name)||p.name==="cwd"))for(let p of s.prepare(`SELECT "${f}" AS value FROM ${c}`).all())typeof p.value=="string"&&n(p.value)}}finally{s.close()}}return Promise.all([...t].sort().map(async s=>({path:s,available:!!await Li.stat(s).catch(()=>null),included:!1})))}l(Dt,"externalStorageReferences");import{randomUUID as Ci}from"node:crypto";import{promises as Ut,existsSync as Vn}from"node:fs";import Oi from"node:os";import Fe from"node:path";async function $n(e,t,r){let n=await Ut.mkdtemp(Fe.join(Oi.tmpdir(),"openpond-migration-preview-")),a=`migration-preview-${Ci()}`,i={schemaVersion:"openpond.migration.v1",id:a,status:"preparing",home:n,stage:Fe.join(Fe.dirname(n),`.${Fe.basename(n)}-${a}`),backup:Fe.join(n,"backups",a),files:[],installed:[],createdAt:new Date().toISOString(),sourceAppHome:t.sourceAppHome,sourceConfig:t.sourceConfig,sourceBrowserState:t.sourceBrowserState};try{try{await r(i)}catch(_){return{issues:[jr(_,e)],counts:{},destinations:[],conflicts:[],estimatedBytes:null,credentialRecords:null}}let s=await C(i.stage),c=Vn(b(e).config)?await C(e):null,d=c?ce(c.document,s.document).map(_=>({path:_.path,choices:["imported","existing"]})):[],f=ce({schema_version:1},s.document).map(_=>({path:_.path,destination:"config.toml",operation:_.op})),p={},g=b(i.stage).database;if(Vn(g)){let _=U(g,!0);try{for(let T of _.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").all())p[T.name]=Number(_.prepare(`SELECT count(*) AS count FROM "${T.name.replaceAll('"','""')}"`).get().count)}finally{_.close()}}let m=0;for(let _ of i.files)m+=(await Ut.lstat(Fe.join(i.stage,_.path))).size;let h=Object.values(s.document.accounts??{}).filter(_=>_.credential?.source==="secret").length+Object.values(s.document.providers??{}).filter(_=>_.credential?.source==="secret").length;return{issues:[],counts:p,destinations:f,conflicts:d,estimatedBytes:m,credentialRecords:h,externalRoots:await Dt(i.stage),layoutVersion:1,configSchemaVersion:s.document.schema_version}}finally{await Ut.rm(i.stage,{recursive:!0,force:!0}),await Ut.rm(n,{recursive:!0,force:!0})}}l($n,"previewMigration");import{randomUUID as Gn}from"node:crypto";import{promises as F}from"node:fs";import Le from"node:path";import{createHash as Ni}from"node:crypto";import{createReadStream as Ri,promises as Hn}from"node:fs";async function H(e){let t=await Hn.lstat(e),r=Ni("sha256");if(t.isSymbolicLink())return r.update(`symlink:${await Hn.readlink(e)}`).digest("hex");if(!t.isFile())throw new Error(`Unsupported migration object: ${e}`);for await(let n of Ri(e))r.update(n);return r.digest("hex")}l(H,"digestFile");var Kn=o.string().regex(/^[a-f0-9]{64}$/),Lr=o.strictObject({schemaVersion:o.literal("openpond.artifact.v1"),sha256:Kn,sizeBytes:o.number().int().nonnegative().safe(),createdAt:o.string().datetime()}),ki=`CREATE TABLE IF NOT EXISTS managed_artifact_objects (sha256 TEXT PRIMARY KEY, payload TEXT NOT NULL, orphaned_at TEXT);
48
+ CREATE TABLE IF NOT EXISTS managed_artifact_references (domain TEXT NOT NULL, owner_id TEXT NOT NULL, sha256 TEXT NOT NULL REFERENCES managed_artifact_objects(sha256), payload TEXT NOT NULL, PRIMARY KEY(domain,owner_id));
49
+ CREATE TABLE IF NOT EXISTS managed_artifact_pins (id TEXT PRIMARY KEY, sha256 TEXT NOT NULL REFERENCES managed_artifact_objects(sha256), owner_pid INTEGER NOT NULL, created_at TEXT NOT NULL);`,jt=l((e,t)=>Le.join(e,"artifacts","objects",Kn.parse(t).slice(0,2),t),"artifactPath"),Ft=l(e=>Le.join(b(e).runtime,"artifacts"),"lockPath");function Ce(e,t){return be(e,r=>(r.exec(ki),t(r)))}l(Ce,"database");function he(e){return new y({code:"ARTIFACT_UNAVAILABLE",path:e,message:"A referenced artifact is missing or failed its checksum.",action:"Restore the object from a verified backup. Its reference has been preserved."})}l(he,"invalid");async function zn(e){let t=U(b(e).database,!0),r;try{if(!t.prepare("SELECT 1 FROM sqlite_master WHERE name='managed_artifact_references'").get())return;r=t.prepare("SELECT DISTINCT o.sha256,o.payload FROM managed_artifact_objects o JOIN managed_artifact_references r ON r.sha256=o.sha256").all()}finally{t.close()}for(let n of r){let a=jt(e,n.sha256);try{let i=Lr.parse(JSON.parse(n.payload)),s=Lr.parse(JSON.parse(await F.readFile(`${a}.json`,"utf8"))),c=await F.lstat(a);if(!c.isFile()||i.sha256!==n.sha256||JSON.stringify(i)!==JSON.stringify(s)||c.size!==i.sizeBytes||await H(a)!==n.sha256)throw he(a)}catch{throw he(a)}}}l(zn,"validateManagedArtifacts");async function Wn(e,t){if(!t.owner.id||t.owner.id.length>4096||/[\u0000-\u001f]/.test(t.displayName))throw new Error("Invalid artifact identity or display name.");return L(Ft(e),async()=>{let r=Le.join(e,"artifacts",".staging");await j(r);let n=Le.join(r,Gn());try{if("bytes"in t)await I(n,t.bytes);else{if(!(await F.lstat(t.sourceFile)).isFile())throw he(t.sourceFile);await F.copyFile(t.sourceFile,n,F.constants.COPYFILE_EXCL);let m=await F.open(n,"r+");try{await m.sync()}finally{await m.close()}}let a=await H(n),i=(await F.stat(n)).size,s=jt(e,a),c=`${s}.json`,d=new Date().toISOString();await j(Le.dirname(s));let f=await F.lstat(s).catch(m=>{if(M(m))return null;throw m});if(f){if(!f.isFile()||await H(s)!==a)throw he(s)}else process.platform!=="win32"&&await F.chmod(n,256),await F.rename(n,s);let p;try{p=Lr.parse(JSON.parse(await F.readFile(c,"utf8")))}catch(m){if(!M(m))throw he(c);p={schemaVersion:"openpond.artifact.v1",sha256:a,sizeBytes:i,createdAt:d},await I(c,JSON.stringify(p))}if(p.sha256!==a||p.sizeBytes!==i)throw he(c);let g={owner:t.owner,sha256:a,sizeBytes:i,displayName:t.displayName,mediaType:t.mediaType,createdAt:d};return Ce(e,m=>{m.exec("BEGIN IMMEDIATE");try{let h=m.prepare("SELECT sha256 FROM managed_artifact_references WHERE domain=? AND owner_id=?").get(t.owner.domain,t.owner.id);if(h&&h.sha256!==a)throw new y({code:"IMMUTABLE_ARTIFACT_CONFLICT",path:t.owner.id,message:"This artifact identity already refers to different bytes.",action:"Create a new artifact revision instead of replacing immutable content."});m.prepare("INSERT INTO managed_artifact_objects VALUES (?, ?, NULL) ON CONFLICT(sha256) DO UPDATE SET orphaned_at=NULL").run(a,JSON.stringify(p)),m.prepare("INSERT INTO managed_artifact_references VALUES (?, ?, ?, ?) ON CONFLICT(domain,owner_id) DO NOTHING").run(t.owner.domain,t.owner.id,a,JSON.stringify(g)),m.exec("COMMIT")}catch(h){throw m.exec("ROLLBACK"),h}}),{...g,path:s}}finally{await F.rm(n,{force:!0})}})}l(Wn,"publishManagedArtifact");function Pi(e,t){return Ce(e,r=>{let n=r.prepare("SELECT payload FROM managed_artifact_references WHERE domain=? AND owner_id=?").get(t.domain,t.id);return n?JSON.parse(n.payload):null})}l(Pi,"artifactReference");async function Nd(e,t,r){let n=Gn(),a=await L(Ft(e),async()=>{let i=Pi(e,t);if(!i)throw he(t.id);return Ce(e,s=>{s.prepare("INSERT INTO managed_artifact_pins VALUES (?, ?, ?, ?)").run(n,i.sha256,process.pid,new Date().toISOString())}),i});try{let i=jt(e,a.sha256),s=await F.lstat(i).catch(()=>null);if(!s?.isFile()||s.size!==a.sizeBytes||await H(i)!==a.sha256)throw he(i);return await r(i,a)}finally{Ce(e,i=>{i.prepare("DELETE FROM managed_artifact_pins WHERE id=?").run(n)})}}l(Nd,"withManagedArtifact");async function Rd(e,t){await L(Ft(e),async()=>{Ce(e,r=>{r.exec("BEGIN IMMEDIATE");try{r.prepare("DELETE FROM managed_artifact_references WHERE domain=? AND owner_id=?").run(t.domain,t.id),r.prepare("UPDATE managed_artifact_objects SET orphaned_at=coalesce(orphaned_at,?) WHERE sha256 NOT IN (SELECT sha256 FROM managed_artifact_references)").run(new Date().toISOString()),r.exec("COMMIT")}catch(n){throw r.exec("ROLLBACK"),n}})})}l(Rd,"releaseArtifactReference");async function kd(e){return L(Ft(e),async()=>{let t=Date.now()-6048e5,r=Ce(e,i=>{let s=i.prepare("PRAGMA integrity_check").all();if(s.length!==1||Object.values(s[0])[0]!=="ok"||i.prepare("PRAGMA foreign_key_check").all().length)throw he(b(e).database);return new Set(i.prepare("SELECT sha256 FROM managed_artifact_references UNION SELECT sha256 FROM managed_artifact_pins UNION SELECT sha256 FROM managed_artifact_objects WHERE orphaned_at IS NULL OR orphaned_at >= ?").all(new Date(t).toISOString()).map(c=>c.sha256))}),n=Le.join(e,"artifacts","objects"),a=[];for(let i of await F.readdir(n,{withFileTypes:!0}).catch(s=>{if(M(s))return[];throw s}))if(!(!i.isDirectory()||!/^[a-f0-9]{2}$/.test(i.name)))for(let s of await F.readdir(Le.join(n,i.name))){if(!/^[a-f0-9]{64}$/.test(s)||!s.startsWith(i.name)||r.has(s))continue;let c=jt(e,s),d=await F.lstat(c);!d.isFile()||d.mtimeMs>=t||(await F.rm(c),await F.rm(`${c}.json`,{force:!0}),Ce(e,f=>{f.prepare("DELETE FROM managed_artifact_objects WHERE sha256=?").run(s)}),a.push(s))}return{removed:a}})}l(kd,"collectArtifactOrphans");var Bt=o.array(o.strictObject({path:o.array(o.string().min(1)).min(1),choice:o.enum(["imported","existing"])})).max(1e4);async function Jn(e,t,r=[]){let n=await C(e),a=await C(t),i=ce(n.document,a.document),s=Bt.parse(r),c=new Map(s.map(p=>[JSON.stringify(p.path),p.choice])),d=i.filter(p=>!c.has(JSON.stringify(p.path)));if(d.length)throw new y({code:"MIGRATION_CONFLICT",path:n.path,message:`Existing configuration conflicts with ${d.length} imported fields: ${d.map(p=>JSON.stringify(p.path)).join(", ")}.`,action:"Preview the migration, choose imported or existing for each conflicting field, and supply the resolution map. Both source versions remain preserved."});let f=rt(await A(n.path)??`schema_version = 1
50
+ `,i.filter(p=>c.get(JSON.stringify(p.path))==="imported"),n.path);ie(ne(f,n.path).value),await I(a.path,f)}l(Jn,"resolveMigrationTarget");import{createHash as qn}from"node:crypto";import Mi from"node:path";var Cr=o.strictObject({conversations:o.record(o.string(),o.strictObject({activeTabId:o.string().nullable(),tabs:o.array(o.strictObject({id:o.string().min(1),url:o.string(),title:o.string().nullable(),faviconUrl:o.string().nullable(),lastUpdatedAt:o.number().finite()}))}))});async function Xn(e,t){await L(Mi.join(b(e).runtime,"browser-metadata-import"),async()=>{let r=await A(t);if(r===null)return;let n=Cr.safeParse(JSON.parse(r));if(!n.success)throw new y({code:"MIGRATION_CONFLICT",path:t,message:"Native browser tab metadata has an unsupported structure.",action:"Preserve this file and resolve the metadata format before retrying."});let a=`browser-import:${qn("sha256").update(t).digest("hex")}`;be(e,i=>{i.exec("BEGIN IMMEDIATE");try{if(!i.prepare("SELECT 1 FROM client_preferences WHERE id=?").get(a)){for(let[s,c]of Object.entries(n.data.conversations))i.prepare("INSERT INTO browser_tab_state VALUES (?, ?, 1) ON CONFLICT(id) DO NOTHING").run(s,JSON.stringify(c));i.prepare("INSERT INTO client_preferences VALUES (?, ?, 1)").run(a,JSON.stringify({schemaVersion:"openpond.browserMetadataImport.v1",source:t,hash:qn("sha256").update(r).digest("hex"),importedAt:new Date().toISOString()}))}i.exec("COMMIT")}catch(s){throw i.exec("ROLLBACK"),s}})})}l(Xn,"importBrowserMetadataOnce");import{randomUUID as Dr}from"node:crypto";import{existsSync as pe,promises as k}from"node:fs";import E from"node:path";import{backup as Wi}from"node:sqlite";import{createDecipheriv as Fi,createHash as Nr}from"node:crypto";import{promises as kr}from"node:fs";import te from"node:path";function Or(e,t){throw new y({code:"MIGRATION_CONFLICT",path:e,message:t,action:"Resolve this source field and restart failed migration preparation. Its original backup is retained."})}l(Or,"conflict");function it(e,t,r,n=[]){if(!(!e||typeof e!="object"||!t||typeof t!="object")){if(Array.isArray(e)&&Array.isArray(t)){e.forEach((a,i)=>it(a,t[i],r,[...n,String(i)]));return}for(let[a,i]of Object.entries(e))Object.hasOwn(t,a)||Or(r,`Unmapped stored field: ${[...n,a].join(".")}`),it(i,t[a],r,[...n,a])}}l(it,"assertNoUnmappedFields");var Di=o.strictObject({token:o.string().optional(),appId:o.string().nullable().optional(),conversationId:o.string().nullable().optional()}),Ui=o.strictObject({handle:o.string().min(1),baseUrl:o.string().optional(),apiBaseUrl:o.string().optional(),chatApiBaseUrl:o.string().optional(),environment:o.string().optional(),apiKey:o.string().optional(),session:Di.optional()});function Yn(e,t){if(e.accounts!==void 0){let r=o.array(Ui).safeParse(e.accounts);r.success||Or(t,`Invalid stored accounts: ${r.error.issues.map(n=>n.path.join(".")).join(", ")}`)}e.activeProfile!==void 0&&!o.strictObject({handle:o.string().min(1),baseUrl:o.string().nullable().optional()}).safeParse(e.activeProfile).success&&Or(t,"Invalid stored active account selector.")}l(Yn,"validateImportedAccounts");function Qn(e,t){let r=ee.parse(e);it(e,r,t);let n=ji(e),a=ee.parse(n),i=a.defaultChatProvider==="codex"&&["codex-default","gpt-5.5"].includes(a.defaultChatModel);return{...a,defaultTeamId:a.defaultTeamId?.trim()||null,defaultNewProjectDirectory:Br(a.defaultNewProjectDirectory.trim()),...i?{defaultChatModel:Zr}:{},...i&&a.codexReasoningEffort==="medium"?{codexReasoningEffort:nr}:{}}}l(Qn,"normalizeImportedPreferences");function ji(e){if(!e||typeof e!="object"||Array.isArray(e))return e;let t=e,r=t.subagents;if(!r||typeof r!="object"||Array.isArray(r))return e;let n=r,a=n.workspaceDefaultsVersion===1,i=n.toolDefaultsVersion===1;if(a&&i)return e;let s=Array.isArray(n.roles)?n.roles.map(c=>({...c,...!a&&c.isolationMode==="copy_on_write"?{isolationMode:"none"}:{},...i?{}:{toolPolicy:"full_tools"}})):n.roles;return{...t,subagents:{...n,workspaceDefaultsVersion:1,toolDefaultsVersion:1,maxConcurrentRunsPerWorkspaceTarget:!a&&n.maxConcurrentRunsPerWorkspaceTarget===2?1:n.maxConcurrentRunsPerWorkspaceTarget,...s===void 0?{}:{roles:s}}}}l(ji,"migrateSubagentDefaults");var Te=o.string().nullable().optional(),Zn=o.strictObject({version:o.literal(1),providers:o.record(o.string().min(1),o.strictObject({source:o.enum(["local_secret","env","chatgpt_subscription"]),envVar:Te,ciphertext:Te,iv:Te,tag:Te,createdAt:Te,updatedAt:Te,lastValidatedAt:Te,lastError:Te}))}),eo=o.strictObject({accessToken:o.string().nullable(),refreshToken:o.string().min(1),expiresAt:o.number().finite(),accountId:o.string().nullable()}),to=o.strictObject({version:o.literal(1),activeTemplateId:o.string(),updatedAt:o.string()}),ro=o.strictObject({schemaVersion:o.literal("openpond.datasetStorageSettings.v1"),datasetStorePath:o.string().min(1),updatedAt:o.string()});function O(e,t){return new y({code:"MIGRATION_CONFLICT",path:e,message:t,action:"Open migration details, resolve this conflict, and retry. The source installation has been preserved."})}l(O,"migrationConflict");async function no(e,t){if(!t)return;let r=await D(t,()=>({})),n=new Set(["accounts","activeProfile","openpondProfile","baseUrl","apiBaseUrl","chatApiBaseUrl","apiKey","token","appId","conversationId","lspEnabled","executionMode","mode"]);for(let s of Object.keys(r))if(!n.has(s))throw O(t,`Unmapped account configuration field: ${s}`);Yn(r,t);let a=r.accounts;if(a!==void 0&&!Array.isArray(a))throw O(t,"The account list is invalid.");!a?.length&&(r.apiKey||r.token||r.baseUrl)&&(a=[{handle:r.activeProfile?.handle??"default",...r,session:{token:r.token,appId:r.appId,conversationId:r.conversationId}}]);let i={...r,accounts:a};await Bn(e,()=>i)}l(no,"importAccountConfig");async function oo(e,t){let r=b(e).database;if(!await kr.stat(r).catch(()=>null))return;let a=U(r),i=[];try{a.exec($r),a.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='cache_entries'").get()&&(i=a.prepare("SELECT type, cache_key, payload, updated_at, error FROM cache_entries").all())}finally{a.close()}for(let c of i){let d=JSON.parse(c.payload);if(c.type==="app_preferences"){let f=d;for(let m of Object.keys(f))if(!(m in ee.shape))throw O(r,`Unmapped preference field: ${m}`);let p=Qn(d,r),g=(await C(e)).document;if(f.editor&&g.editor?.language_servers&&g.editor.language_servers!==p.editor.languageServers)throw O(r,"CLI language-server configuration conflicts with saved editor settings.");if(p.defaultChatModelRef&&(p.defaultChatModelRef.providerId!==p.defaultChatProvider||p.defaultChatModelRef.modelId!==p.defaultChatModel))throw O(r,"Saved model fields disagree; select which model should be retained.");await W(e,m=>Lt(m,Ie(p))),B(e,"client_preferences","global",Ot(p))}else if(c.type==="local.projects"){if(!Array.isArray(d))throw O(r,"Saved projects must be an array.");for(let f of d){if(!f||typeof f.id!="string")throw O(r,"A saved project has no identity.");B(e,"saved_local_projects",f.id,f)}}else if(c.type==="codex_history.sidebar_preferences")B(e,"codex_sidebar_state",c.cache_key,d);else if(c.type==="personalization")B(e,"account_selection","imported_personality",d);else if(c.type==="openpond.scaffoldApps")B(e,"scaffold_registrations",c.cache_key,d);else if(["openpond.account","openpond.apps","openpond.cloudProjects","training.hosted-model-project-catalog.v1"].includes(c.type))await Sr(e,c.type,c.cache_key,d,{error:c.error});else throw O(r,`Unmapped cache namespace: ${c.type}`)}let s=U(r);try{i.length&&s.exec("DELETE FROM cache_entries"),s.exec("PRAGMA wal_checkpoint(TRUNCATE)")}finally{s.close()}}l(oo,"importPreferenceRecords");async function ao(e,t){if(!t)return;let r=te.join(t,"providers.json"),n=await D(r,()=>({}));for(let m of Object.keys(n))if(!["version","providers","modelCaches","catalogCache","statuses","updatedAt"].includes(m))throw O(r,`Unmapped provider field: ${m}`);let a=Qt.parse(n);it(Object.fromEntries(Object.entries(n).filter(([m])=>m!=="catalogCache")),a,r);let i={};for(let[m,h]of Object.entries(a.providers))i[m]={enabled:h.enabled,...h.baseUrl?{base_url:h.baseUrl}:{},...h.defaultModel?{default_model:h.defaultModel}:{},model_overrides:h.modelOverrides};await W(e,m=>({...m,providers:i})),await Sr(e,"providers","catalog",{modelCaches:a.modelCaches,catalogCache:n.catalogCache??null});let s=te.join(t,"provider-secrets.json"),c=await D(s,()=>null);if(c===null)return;let d=Zn.safeParse(c);if(!d.success)throw O(s,"The provider vault has an unsupported version or field.");let f=d.data,p=await A(te.join(t,"provider-secrets.key")),g=p?Buffer.from(p.trim(),"base64"):null;for(let[m,h]of Object.entries(f.providers)){let _=null,T=null;if(h.source!=="env"){if(!g||g.length!==32||!h.ciphertext||!h.iv||!h.tag)throw O(s,"The old provider credential cannot be decrypted with its saved key.");try{let S=Fi("aes-256-gcm",g,Buffer.from(String(h.iv),"base64"));S.setAuthTag(Buffer.from(String(h.tag),"base64")),_=Buffer.concat([S.update(Buffer.from(String(h.ciphertext),"base64")),S.final()]).toString("utf8"),h.source==="chatgpt_subscription"&&(T=eo.parse(JSON.parse(_)),_=null)}catch{throw O(s,"The saved provider credential failed integrity verification.")}}let v=`provider:${m}`,w={endpoint:i[m]?.base_url??null,source:h.source,value:_,oauth:T,envVar:h.envVar??null,createdAt:h.createdAt,updatedAt:h.updatedAt,lastValidatedAt:h.lastValidatedAt??null,lastError:h.lastError??null};await Pt(e,v,w,null),await W(e,S=>({...S,providers:{...S.providers,[m]:{...S.providers?.[m],credential:h.source==="env"?{source:"env",name:String(h.envVar)}:{source:"secret",id:v}}}}))}}l(ao,"importProviderConfig");async function io(e,t){if(!t)return;let r=new Map;for(let h of[t,te.join(t,"souls")]){let _=await kr.readdir(h,{withFileTypes:!0}).catch(()=>[]);for(let T of _){if(!T.isFile()||!(h===t?/^soul-.+\.md$/i:/\.md$/i).test(T.name))continue;let v=await kr.readFile(te.join(h,T.name),"utf8"),w=`imported-${Nr("sha256").update(v).digest("hex").slice(0,16)}`;await Rr(e,w,v),r.set(`file:${te.relative(t,te.join(h,T.name)).split(te.sep).join("/")}`,{id:w,content:v})}}let n=await A(te.join(t,"SOUL.md")),a=te.join(t,"personalization.json"),i=await D(a,()=>null),s=i===null?null:to.safeParse(i);if(s&&!s.success)throw O(a,"Personalization has an unsupported version or field.");let c=s?.success?s.data:{},{getLocalRecord:d}=await import("./database-X2CUV732.js"),f=d(e,"account_selection","imported_personality")?.value??c.activeTemplateId??"default",p=r.get(f),g=qe.find(h=>h.id===f),m=p?`custom:${p.id}`:g?`builtin:${g.id}`:"builtin:default";if(n?.trim()&&!p&&!g){let h=`imported-${Nr("sha256").update(n).digest("hex").slice(0,16)}`;await Rr(e,h,n),m=`custom:${h}`}else if(n?.trim()&&n.trim()!==(p?.content??g?.content)?.trim()){let h=`preserved-${Nr("sha256").update(n).digest("hex").slice(0,16)}`;await Rr(e,h,n)}await W(e,h=>({...h,personalization:{...h.personalization,active:m}}))}l(io,"importPersonalization");async function so(e,t){if(!t)return;let r=te.join(t,"datasets","settings.json"),n=await D(r,()=>null),a=n===null?null:ro.safeParse(n);if(a&&!a.success)throw O(r,"Dataset settings have an unsupported version or field.");let i=a?.success?a.data:{};i.datasetStorePath&&await W(e,s=>({...s,storage:{...s.storage,datasets_dir:i.datasetStorePath}})),ie((await C(e)).document)}l(so,"importDatasetPreference");async function Rr(e,t,r){await I(te.join(e,"instructions","imported-originals",`${t}.md`),r),await I(te.join(e,"instructions","personalities",`${t}.md`),r.trim().slice(0,8e3))}l(Rr,"preserveImportedPersonality");import{execFile as Bi}from"node:child_process";import{promisify as Vi}from"node:util";import{existsSync as Vt,promises as st}from"node:fs";import co from"node:os";import J from"node:path";var lo=Vi(Bi);async function uo(e,t){let r=e===J.join(co.homedir(),".openpond-nightly"),n=J.join(co.homedir(),".openpond"),a=["openpond-app-dev","openpond-app-nightly-dev"].some(g=>e===J.join(n,g)),i=r||a?n:e,s=(a?[e]:[e,J.join(i,r?"openpond-app-nightly":"openpond-app")]).filter(g=>Vt(J.join(g,"state.sqlite"))||Vt(J.join(g,"providers.json"))),c=[...new Set([J.join(i,"config.json"),J.join(e,"config","config.json")])].filter(Vt),d=[];!t.sourceAppHome&&s.length>1&&d.push({code:"AMBIGUOUS_APP_HOME",message:"Select the previous app home with --source-app-home.",paths:s}),!t.sourceConfig&&c.length>1&&d.push({code:"AMBIGUOUS_CONFIG",message:"Select the previous account configuration with --source-config.",paths:c});let f=t.sourceAppHome?J.resolve(t.sourceAppHome):s.length===1?s[0]:void 0,p=t.sourceConfig?J.resolve(t.sourceConfig):c.length===1?c[0]:void 0;for(let g of[f,p,t.sourceBrowserState])if(g&&!Vt(g))throw new y({code:"MIGRATION_SOURCE_MISSING",path:g,message:"The selected migration source is unavailable.",action:"Correct the source path before retrying."});return{...f?{sourceAppHome:f}:{},...p?{sourceConfig:p}:{},...t.sourceBrowserState?{sourceBrowserState:J.resolve(t.sourceBrowserState)}:{},issues:d,sourceCandidates:{appHomes:s,configs:c}}}l(uo,"discoverMigrationSources");async function ct(e,t){let r=[e?J.join(e,"state.sqlite"):null,t].filter(a=>!!a);if(!r.length)return;let n=l(()=>new y({code:"MIGRATION_SOURCE_BUSY",path:e??t,message:"A previous OpenPond process is still using the source installation.",action:"Close that installation and retry. No migration source has been changed."}),"fail");if(process.platform==="linux"){for(let a of await st.readdir("/proc"))if(!(!/^\d+$/.test(a)||Number(a)===process.pid))try{let i=`/proc/${a}/fd`;for(let s of await st.readdir(i)){let c=await st.readlink(J.join(i,s)).catch(d=>{if(M(d))return"";throw d});if(r.some(d=>c===d||c===`${d}-wal`||c===`${d}-shm`))throw n()}}catch(i){if(i instanceof y)throw i;if(M(i))continue;if(["EACCES","EPERM"].includes(i.code??"")){let s=await st.stat(`/proc/${a}`).catch(c=>{if(M(c))return null;throw c});if(s&&s.uid===process.getuid?.()){let c=await st.readFile(`/proc/${a}/cmdline`,"utf8").catch(p=>{if(M(p))return"";throw p}),d=J.basename(c.split("\0")[0]??"");if(/^(?:node|electron|openpond(?:-code)?)(?:\.exe)?$/i.test(d)&&!c.includes("--type=")||r.some(p=>c.includes(p)))throw new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"A possible previous runtime could not be inspected for open migration sources.",action:"Close the previous OpenPond processes and retry with process inspection available."})}}else throw i}return}if(process.platform==="darwin"){try{if((await lo("/usr/sbin/lsof",["-F","p","--",...r],{maxBuffer:1e6})).stdout.split(`
51
+ `).some(i=>/^p\d+$/.test(i)&&Number(i.slice(1))!==process.pid))throw n()}catch(a){if(a instanceof y)throw a;if(a.code!==1)throw new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"OpenPond could not verify that the previous installation is stopped.",action:"Ensure lsof is available, close the previous app and retry."})}return}if(process.platform==="win32"){let a="Get-CimInstance Win32_Process | Select-Object ProcessId,CommandLine | ConvertTo-Json -Compress";try{let{stdout:i}=await lo("powershell.exe",["-NoProfile","-NonInteractive","-Command",a],{maxBuffer:4e6,env:Vr()}),s=JSON.parse(i),c=Array.isArray(s)?s:[s];for(let d of c)if(!(!d.CommandLine||d.ProcessId===process.pid)&&/(?:openpond|apps[\\/]server).*(?:serve|server|desktop)/i.test(d.CommandLine)&&(r.some(f=>d.CommandLine.includes(f))||e&&d.CommandLine.includes(e)))throw n()}catch(i){throw i instanceof y?i:new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"OpenPond could not inspect previous runtime ownership.",action:"Close the previous app and enable local process inspection before retrying."})}return}throw new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"Automatic migration ownership checks are unavailable on this platform.",action:"Migrate this installation on a supported desktop platform."})}l(ct,"assertMigrationSourcesStopped");import{randomUUID as $i}from"node:crypto";import{promises as q}from"node:fs";import X from"node:path";var po=o.string().min(1).refine(e=>!X.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),Hi=o.strictObject({path:po,sha256:o.string().regex(/^[a-f0-9]{64}$/),executable:o.boolean().optional()}),fo=o.strictObject({schemaVersion:o.literal("openpond.migration.v1"),id:o.string().regex(/^migration-[A-Za-z0-9-]+$/),status:o.enum(["preparing","prepared","installing","committed","verified","failed"]),home:o.string(),stage:o.string(),backup:o.string(),files:o.array(Hi),installed:o.array(po),sourceAppHome:o.string().optional(),sourceConfig:o.string().optional(),sourceBrowserState:o.string().optional(),resolutions:Bt.optional(),snapshotComplete:o.boolean().optional(),error:o.string().optional(),createdAt:o.string()}),$t={schemaVersion:"openpond.storage.v1",version:1};async function Be(e){let t=X.join(b(e).runtime,"migration.json"),r=await D(t,()=>null);if(r===null)return null;let n=fo.safeParse(r);if(!n.success)throw Pr(t);let a=n.data,i=X.resolve(e);if(a.home!==i||a.stage!==X.join(X.dirname(i),`.${X.basename(i)}-${a.id}`)||a.backup!==X.join(i,"backups",a.id))throw Pr(t);let s=new Set(a.files.map(c=>c.path));if(s.size!==a.files.length||a.installed.some(c=>!s.has(c))||a.files.some(c=>/^(runtime|backups)([\\/]|$)/.test(c.path)||c.path==="storage.json"))throw Pr(t);return a}l(Be,"readMigrationJournal");function Pr(e){return new y({code:"INVALID_MIGRATION_JOURNAL",path:e,message:"The migration journal could not be verified.",action:"Preserve the journal and backups. Restore a verified backup into a separate home."})}l(Pr,"invalidJournal");async function ue(e){fo.parse(e),await I(X.join(b(e.home).runtime,"migration.json"),`${JSON.stringify(e,null,2)}
52
+ `)}l(ue,"saveMigrationJournal");async function lt(e,t=e){let r=[];for(let n of await q.readdir(t,{withFileTypes:!0})){let a=X.join(t,n.name);n.isDirectory()?r.push(...await lt(e,a)):r.push({path:X.relative(e,a),sha256:await H(a),executable:!!((await q.lstat(a)).mode&64)})}return r.sort((n,a)=>n.path.localeCompare(a.path))}l(lt,"fileReceipts");async function Y(e,t){let r=await q.lstat(e),n=await q.lstat(t).catch(a=>{if(M(a))return null;throw a});if(r.isDirectory()){if(n&&!n.isDirectory())throw new Error(`Backup path is not a directory: ${t}`);await j(t);for(let a of await q.readdir(e))await Y(X.join(e,a),X.join(t,a));return}if(n){if(await H(e)!==await H(t))throw new y({code:"SOURCE_CHANGED_DURING_MIGRATION",path:e,message:"A source file changed after its migration backup was created.",action:"Stop the old installation and review the preserved backup before retrying."});return}if(await j(X.dirname(t)),r.isSymbolicLink())await q.symlink(await q.readlink(e),t);else{let a=`${t}.${$i()}.snapshot`;try{await q.copyFile(e,a,q.constants.COPYFILE_EXCL),await q.chmod(a,r.mode&64?448:384);let i=await q.open(a,"r+");try{await i.sync()}finally{await i.close()}if(await q.link(a,t),process.platform!=="win32"){let s=await q.open(X.dirname(t),"r");try{await s.sync()}finally{await s.close()}}}finally{await q.rm(a,{force:!0})}}}l(Y,"snapshotCopy");import{existsSync as mo}from"node:fs";import Ve from"node:path";var Gi="CREATE TABLE IF NOT EXISTS storage_path_relocations (source TEXT PRIMARY KEY, destination TEXT NOT NULL)";function Ht(e,t){let r=b(e).database;if(!mo(r))return;let n=[...t].sort((d,f)=>f.from.length-d.from.length);function a(d){if(!Ve.isAbsolute(d))return d;let f=n.find(p=>Mt(d,p.from));return f?Ve.join(f.to,Ve.relative(f.from,d)):d}l(a,"rebase");function i(d,f=""){return typeof d=="string"&&/(?:path|directory|root|cwd)$/i.test(f)?a(d):Array.isArray(d)?d.map(p=>i(p,f)):d&&typeof d=="object"?Object.fromEntries(Object.entries(d).map(([p,g])=>[p,["messages","events","turns","metadata","input","output","result","credential","manifest"].includes(p)?g:i(g,p)])):d}l(i,"visit");let s=l(d=>`"${d.replaceAll('"','""')}"`,"quote"),c=U(r);try{c.exec("BEGIN IMMEDIATE"),c.exec(Gi);for(let d of c.prepare("SELECT source, destination FROM storage_path_relocations").all())c.prepare("UPDATE storage_path_relocations SET destination=? WHERE source=?").run(a(d.destination),d.source);for(let d of n)d.from!==d.to&&c.prepare("INSERT INTO storage_path_relocations VALUES (?, ?) ON CONFLICT(source) DO UPDATE SET destination=excluded.destination").run(d.from,d.to);for(let{name:d}of c.prepare("SELECT name FROM sqlite_master WHERE type='table'").all())if(Ir.has(d)){let f=c.prepare(`PRAGMA table_info(${s(d)})`).all(),p=f.filter(h=>h.pk).sort((h,_)=>h.pk-_.pk);if(!p.length)continue;let g=f.filter(h=>h.name==="payload"||/(?:_path|_directory|_root)$/.test(h.name)||h.name==="cwd"),m=p.map(h=>`${s(h.name)}=?`).join(" AND ");for(let h of c.prepare(`SELECT * FROM ${s(d)}`).all())for(let _ of g){let T=h[_.name];if(typeof T!="string")continue;let v=_.name==="payload"?JSON.stringify(i(JSON.parse(T))):a(T);T!==v&&c.prepare(`UPDATE ${s(d)} SET ${s(_.name)}=? WHERE ${m}`).run(v,...p.map(w=>h[w.name]))}}c.exec("COMMIT; PRAGMA wal_checkpoint(TRUNCATE)")}finally{c.close()}}l(Ht,"rebaseStoragePointers");function Ki(e,t){let r=b(e).database;if(!Ve.isAbsolute(t)||!mo(r))return t;let n=U(r,!0);try{if(!n.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='storage_path_relocations'").get())return t;let i=n.prepare("SELECT source, destination FROM storage_path_relocations").all().sort((s,c)=>c.source.length-s.source.length).find(s=>Mt(t,s.source));return i?Ve.join(i.destination,Ve.relative(i.source,t)):t}finally{n.close()}}l(Ki,"resolveStoredPath");import{existsSync as $e,promises as dt}from"node:fs";import x from"node:path";async function ho(e){let t=x.join(e.backup,"app"),r=x.join(t,"refiners");if($e(x.join(r,"binding.json"))){let c=await D(x.join(r,"binding.json"),()=>({}));if(c.schemaVersion!=="openpond.refinerBinding.v1")throw O(r,"Unsupported Refiner binding schema.");B(e.stage,"refiner_bindings","active",c);let d=x.join(r,"transitions");if($e(d))for(let f of await dt.readdir(d)){if(!f.endsWith(".json"))continue;let p=await D(x.join(d,f),()=>({}));if(p.schemaVersion!=="openpond.refinerTransitionReceipt.v1"||typeof p.contentHash!="string")throw O(d,"Unsupported Refiner transition schema.");B(e.stage,"refiner_transitions",p.contentHash,p)}await dt.rm(x.join(e.stage,"library","refiners","binding.json"),{force:!0}),await dt.rm(x.join(e.stage,"library","refiners","transitions"),{recursive:!0,force:!0})}let n=x.join(e.backup,"global","extensions");if($e(n)&&(await Y(n,x.join(e.stage,"library","extensions")),$e(x.join(n,"registry.json")))){let c=await D(x.join(n,"registry.json"),()=>({}));if(c.schemaVersion!==1||!Array.isArray(c.extensions))throw O(n,"Unsupported extension registry schema.");B(e.stage,"extension_installations","registry",c),await dt.rm(x.join(e.stage,"library","extensions","registry.json"),{force:!0})}let a=x.join(e.backup,"global","profiles");if($e(a)){await Y(a,x.join(e.stage,"library","profiles"));let c=G(e.stage,"profile_installations","library"),d=e.sourceConfig?x.join(x.dirname(e.sourceConfig),"profiles"):null;if(c&&d){let f=l(g=>({...g,...typeof g.repoPath=="string"&&zi(g.repoPath,d)?{repoPath:x.join(e.home,"library","profiles",x.relative(d,g.repoPath))}:{}}),"rebase"),p=f(c.value);Array.isArray(p.profiles)&&(p.profiles=p.profiles.map(g=>f(g))),B(e.stage,"profile_installations","library",p)}}if(e.sourceBrowserState){let c=x.join(e.backup,"browser-sidebar-state.json"),d=Cr.safeParse(await D(c,()=>null));if(!d.success)throw O(c,"Unsupported browser tab metadata.");let f=d.data;for(let[p,g]of Object.entries(f.conversations))B(e.stage,"browser_tab_state",p,g)}let i=[];if(e.sourceAppHome){for(let c of["harnesses","refiners"])i.push({from:x.join(e.sourceAppHome,c),to:x.join(e.home,"library",c)});i.push({from:e.sourceAppHome,to:e.home})}if(e.sourceConfig)for(let c of["profiles","extensions"])i.push({from:x.join(x.dirname(e.sourceConfig),c),to:x.join(e.home,"library",c)});Ht(e.stage,i);let s=x.join(e.stage,"attachments");$e(s)&&await go(e.stage,s,[])}l(ho,"importAdditionalDomains");function zi(e,t){let r=x.relative(t,e);return r===""||!r.startsWith(`..${x.sep}`)&&r!==".."&&!x.isAbsolute(r)}l(zi,"within");async function go(e,t,r){for(let n of await dt.readdir(t,{withFileTypes:!0})){let a=x.join(t,n.name),i=[...r,n.name];if(n.isDirectory())await go(e,a,i);else if(n.isFile()&&i.length>=3){let s=i.slice(2).join("/");await Wn(e,{owner:{domain:"chat_attachment",id:JSON.stringify([i[0],i[1],s])},displayName:n.name,mediaType:"application/octet-stream",sourceFile:a})}else throw O(a,"Attachment storage contains an unsupported file or symbolic link.")}}l(go,"importAttachments");var Ji=new Set(["config.json","providers.json","provider-secrets.json","provider-secrets.key","personalization.json","SOUL.md","token","state.sqlite","state.sqlite-wal","state.sqlite-shm"]),qi=new Set(["cache","logs","diagnostics","backups","runtime"]);async function yo(e,t={}){e=E.resolve(e),ke(e);let r=await D(b(e).marker,()=>null),n=await Be(e);if(r&&(bo(r,e),!n||n.status==="verified"))return t.sourceBrowserState&&!t.dryRun&&await Xn(e,t.sourceBrowserState),He(e,"current",n);if(n&&!t.dryRun)return Qi(e);let a=await uo(e,t),{issues:i,sourceCandidates:s,...c}=a;if(t.dryRun)return{...He(e,"planned",null),sourceAppHome:c.sourceAppHome??null,sourceConfig:c.sourceConfig??null,issues:i,sourceCandidates:s,...i.length?{}:{preview:await $n(e,c,_o)}};if(i.length)throw O(e,i.map(d=>d.message).join(" "));return L(E.join(b(e).runtime,"migration-owner"),async()=>{let d=await D(b(e).marker,()=>null);if(d)return bo(d,e),He(e,"current",null);let f=await Be(e);if(f)return Mr(f);if(!c.sourceAppHome&&!c.sourceConfig&&!c.sourceBrowserState)return await j(e),await C(e),await I(b(e).marker,`${JSON.stringify({...$t,migrationId:null},null,2)}
53
+ `),He(e,"new",null);for(let m of[b(e).database,b(e).credentials])if(m&&pe(m))throw O(m,"The destination already contains authoritative state. Import the previous installation into a fresh home; existing history and credentials have been preserved.");await ct(c.sourceAppHome,c.sourceConfig);let p=`migration-${new Date().toISOString().replace(/[:.]/g,"-")}-${Dr().slice(0,8)}`,g={schemaVersion:"openpond.migration.v1",id:p,status:"preparing",home:e,stage:E.join(E.dirname(e),`.${E.basename(e)}-${p}`),backup:E.join(e,"backups",p),files:[],installed:[],...c,resolutions:t.resolutions,createdAt:new Date().toISOString()};return await ue(g),Mr(g)})}l(yo,"initializeHome");function bo(e,t){if(e.version!==1||e.schemaVersion!==$t.schemaVersion)throw new y({code:"UNSUPPORTED_STORAGE_VERSION",path:b(t).marker,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}l(bo,"assertLayout");async function Xi(e){if(!e.snapshotComplete){if(await ct(e.sourceAppHome,e.sourceConfig),await j(e.backup),e.sourceConfig){await Y(e.sourceConfig,E.join(e.backup,"config.json"));for(let t of["extensions","profiles"]){let r=E.join(E.dirname(e.sourceConfig),t);pe(r)&&await Y(r,E.join(e.backup,"global",t))}}if(e.sourceBrowserState&&await Y(e.sourceBrowserState,E.join(e.backup,"browser-sidebar-state.json")),e.sourceAppHome){for(let n of await k.readdir(e.sourceAppHome,{withFileTypes:!0}))["openpond-app","openpond-app-nightly","storage.json","config.toml","state","browser"].includes(n.name)||qi.has(n.name)||n.name.startsWith("state.sqlite")||await Y(E.join(e.sourceAppHome,n.name),E.join(e.backup,"app",n.name));let t=E.join(e.sourceAppHome,"state.sqlite"),r=E.join(e.backup,"state.sqlite");if(pe(t)&&!pe(r)){let n=`${r}.${Dr()}.tmp`,a=U(t,!0);try{await Wi(a,n);let i=await k.open(n,"r+");try{await i.sync()}finally{await i.close()}if(await k.rename(n,r),process.platform!=="win32"){let s=await k.open(E.dirname(r),"r");try{await s.sync()}finally{await s.close()}}}finally{a.close(),await k.rm(n,{force:!0})}}}await ct(e.sourceAppHome,e.sourceConfig),e.snapshotComplete=!0,await ue(e)}}l(Xi,"captureSources");async function _o(e){await Xi(e),await j(e.stage);let t=E.join(e.backup,"app");if(pe(t))for(let n of await k.readdir(t)){if(Ji.has(n)||n==="souls"||/^soul-.+\.md$/i.test(n))continue;let a=["harnesses","refiners"].includes(n)?E.join("library",n):n;await Y(E.join(t,n),E.join(e.stage,a))}pe(E.join(e.backup,"state.sqlite"))&&await Y(E.join(e.backup,"state.sqlite"),b(e.stage).database),await no(e.stage,e.sourceConfig?E.join(e.backup,"config.json"):void 0),await oo(e.stage,e.sourceAppHome),await ao(e.stage,e.sourceAppHome?t:void 0),await io(e.stage,e.sourceAppHome?t:void 0),await so(e.stage,e.sourceAppHome?t:void 0);let r=await A(E.join(t,"token"));r&&await I(b(e.stage).token,r),await ho(e),pe(b(e.home).config)&&await Jn(e.home,e.stage,e.resolutions),await Oe(e.stage),await k.rm(E.join(e.stage,"runtime"),{recursive:!0,force:!0}),await k.rm(E.join(e.stage,"backups"),{recursive:!0,force:!0}),await k.rm(E.join(e.stage,"datasets","settings.json"),{force:!0}),e.files=(await lt(e.stage)).filter(n=>!n.path.endsWith("-wal")&&!n.path.endsWith("-shm")),e.status="prepared",await ue(e)}l(_o,"prepare");async function Oe(e){let{document:t}=await C(e);await jn(e);for(let r of Object.values(t.providers??{}))if(r.credential?.source==="secret"&&!await kt(e,r.credential.id))throw O(b(e).config,"An imported provider credential is missing.");if(pe(b(e).database)){let r=U(b(e).database);try{let n=r.prepare("PRAGMA integrity_check").all();if(n.length!==1||Object.values(n[0])[0]!=="ok"||r.prepare("PRAGMA foreign_key_check").all().length)throw O(b(e).database,"The imported database failed integrity checks.");r.exec("PRAGMA wal_checkpoint(TRUNCATE)")}finally{r.close()}await zn(e)}}l(Oe,"validateMigratedHome");async function Yi(e){e.status="installing",await ue(e);for(let t of e.files){let r=E.join(e.home,t.path),n=E.join(e.stage,t.path),a=pe(r)?await H(r):null;if(e.installed.includes(t.path)&&a!==t.sha256)throw O(r,"An installed file changed before migration recovery completed.");if(a!==t.sha256){if(await H(n)!==t.sha256)throw O(n,"A staged file failed its checksum check.");if(a!==null&&await Y(r,E.join(e.backup,"destination",t.path)),await j(E.dirname(r)),(await k.lstat(n)).isSymbolicLink())pe(r)&&await k.unlink(r),await k.symlink(await k.readlink(n),r);else{let s=`${r}.${Dr()}.migration`;try{await k.copyFile(n,s),await k.chmod(s,t.executable?448:384);let c=await k.open(s,"r+");try{await c.sync()}finally{await c.close()}await k.rename(s,r)}finally{await k.rm(s,{force:!0})}}}if(process.platform!=="win32"){let i=await k.open(E.dirname(r),"r");try{await i.sync()}finally{await i.close()}}e.installed.includes(t.path)||e.installed.push(t.path),await ue(e)}await Oe(e.home),await I(b(e.home).marker,`${JSON.stringify({...$t,migrationId:e.id},null,2)}
54
+ `),e.status="committed",await ue(e),e.status="verified",delete e.error,await ue(e),await k.rm(e.stage,{recursive:!0,force:!0})}l(Yi,"install");async function Qi(e){return L(E.join(b(e).runtime,"migration-owner"),async()=>{let t=await Be(e);if(!t)throw O(e,"No migration journal is available.");return Mr(t)})}l(Qi,"recoverMigration");async function Mr(e){if(e.status==="verified")return He(e.home,"current",e);try{return(e.status==="preparing"||e.status==="failed")&&(await k.rm(e.stage,{recursive:!0,force:!0}),e.status="preparing",await _o(e)),e.status!=="committed"?await Yi(e):(await Oe(e.home),e.status="verified",await ue(e),await k.rm(e.stage,{recursive:!0,force:!0})),He(e.home,"verified",e)}catch(t){throw e.error=t instanceof y?t.issue.code:"MIGRATION_FAILED",e.status==="preparing"&&(e.status="failed"),await ue(e),t instanceof y?t:new y({code:"MIGRATION_FAILED",path:E.join(b(e.home).runtime,"migration.json"),message:"OpenPond could not finish updating its storage.",action:"Open migration details or run openpond config recover. Original data and snapshots have been preserved."},{cause:t})}}l(Mr,"recoverUnlocked");function He(e,t,r){return{id:r?.id??null,status:t,home:e,sourceAppHome:r?.sourceAppHome??null,sourceConfig:r?.sourceConfig??null,backup:r?.backup??null}}l(He,"report");async function Lp(e){return L(E.join(b(e).runtime,"migration-owner"),async()=>{let t=await Be(e);if(!t)return{restarted:!1,backup:null};if(!["preparing","failed"].includes(t.status)||t.installed.length||t.files.length)throw O(e,"Installation has already begun. Resume recovery or restore into a fresh home; preparation cannot be restarted.");return await ct(t.sourceAppHome,t.sourceConfig),await I(E.join(t.backup,"abandoned-preparation.json"),JSON.stringify(t,null,2)),await k.rm(t.stage,{recursive:!0,force:!0}),await k.rm(E.join(b(e).runtime,"migration.json")),{restarted:!0,backup:t.backup}})}l(Lp,"restartMigration");async function Zi(e){let t=await C(e),r=G(e,"client_preferences","global");return{preferences:nt(t.document,r?.value),config:t}}l(Zi,"readPreferences");async function Fp(e,t,r){return L(`${b(e).runtime}/preferences`,async()=>{let n=G(e,"client_preferences","global"),a=n?.value;return await W(e,i=>{let s=nt(i,n?.value),c=ee.parse({...s,...t,...t.defaultChatModelRef===void 0&&(t.defaultChatModel!==void 0||t.defaultChatProvider!==void 0)?{defaultChatModelRef:{providerId:t.defaultChatProvider??s.defaultChatProvider,modelId:t.defaultChatModel??s.defaultChatModel}}:{}});a=Ot(c);let d=structuredClone(i);for(let f of ce(Ie(s),Ie(c))){let p=d;for(let m of f.path.slice(0,-1))p[m]??={},p=p[m];let g=f.path.at(-1);f.op==="set"?p[g]=f.value:delete p[g]}return d},r),a&&JSON.stringify(a)!==JSON.stringify(n?.value)&&B(e,"client_preferences","global",a,n?.revision??null),Zi(e)})}l(Fp,"updatePreferences");import{createHash as es}from"node:crypto";import{promises as Ne}from"node:fs";import To from"node:path";var ge=l(e=>es("sha256").update(JSON.stringify(e)??"null").digest("hex"),"hash"),Eo=l((e,t="local")=>ge([e,t]),"trustKey");async function ef(e,t,r,n){let a=await Ne.realpath(t);B(e,"project_trust",Eo(a,r),{root:a,accountId:r,trusted:n,updatedAt:new Date().toISOString()})}l(ef,"setProjectTrust");async function So(e,t={}){let r=Ie(ee.parse({})),n=[],a={},i=[];function s(h,_,T,v=ge(_)){let w={layer:h,path:T,revision:v};r=Lt(r,_),n.push(w);function S(P,Z){if(P&&typeof P=="object"&&!Array.isArray(P)&&!("mode"in P)&&!("source"in P)&&!("provider_id"in P))for(let[fe,Ee]of Object.entries(P))S(Ee,[...Z,fe]);else a[JSON.stringify(Z)]=w}l(S,"visit"),S(_,[])}l(s,"apply"),s("defaults",r,"shipped"),t.profile&&(wo(t.profile.defaults,"profile"),s("profile",t.profile.defaults,t.profile.id,t.profile.revision));let c=await C(e);s("user",c.document,c.path,c.rawRevision);let d=structuredClone(r.permissions),f=null,p=null;if(t.projectRoot){f=await Ne.realpath(t.projectRoot);let h=To.join(f,".openpond","config.toml");if(await Ne.lstat(h).catch(T=>{if(M(T))return null;throw T})){if(await Ne.realpath(h)!==h)throw new y({code:"UNSAFE_PROJECT_CONFIG",path:h,message:"Project configuration must be a regular file inside its canonical project root.",action:"Replace symbolic links in the project configuration path with a regular local file."});let v=G(e,"project_trust",Eo(f,t.accountId));if(!v?.value.trusted)i.push({code:"PROJECT_CONFIG_UNTRUSTED",path:h,message:"Project settings are ignored until this project is trusted.",action:"Review the project configuration, then trust it in configuration settings."});else{p=v.revision;let w=await C(e,{path:h,scope:"project"});s("project",w.document,w.path,w.rawRevision),d?.command_access==="disabled"&&(r.permissions={...r.permissions,command_access:"disabled"}),d?.codex_mode==="default"&&(r.permissions={...r.permissions,codex_mode:"default"}),d=structuredClone(r.permissions)}}}for(let h of["task","turn"])t[h]&&(wo(t[h],h),s(h,t[h],h));(d?.command_access==="disabled"||d?.command_access==="ask"&&r.permissions?.command_access==="full-access")&&(r.permissions={...r.permissions,command_access:d.command_access}),d?.codex_mode&&d.codex_mode!=="full-access"&&r.permissions?.codex_mode!=="default"&&(r.permissions={...r.permissions,codex_mode:d.codex_mode}),ie(r),await ts(e,r);let g=[...Object.values(r.accounts??{}),...Object.values(r.providers??{})].flatMap(h=>h.credential?.source==="secret"?[h.credential.id]:[]),m=await Mn(e,g);return{document:r,effectiveRevision:ge({document:r,sources:n,projectTrustRevision:p,versions:m}),sources:n,provenance:a,diagnostics:i,projectRoot:f,projectTrustRevision:p,credentialVersions:m}}l(So,"resolveEffectiveConfig");function wo(e,t){ie(e);let r=t==="profile"?["schema_version","chat","codex","context_compaction","subagents","runtime"]:["schema_version","chat","codex","context_compaction","subagents","permissions"];for(let n of Object.keys(e))if(!r.includes(n))throw new y({code:"CONFIG_SCOPE_VIOLATION",path:`${t}.${n}`,message:`This setting is not allowed in ${t} configuration.`,action:"Move host settings to the user configuration file."})}l(wo,"checkScope");async function ts(e,t){let r=t.defaults;if(r?.account_id&&(!t.accounts?.[r.account_id]||t.accounts[r.account_id].enabled===!1))throw new y({code:"INVALID_ACCOUNT_DEFAULT",path:"defaults.account_id",message:"The default account is missing or disabled.",action:"Choose an enabled account or remove the explicit default."});let n=t.personalization?.active;if(n&&t.personalization?.mode!=="disabled"){let i=n.startsWith("custom:")?To.join(e,"instructions","personalities",`${n.slice(7)}.md`):n,s=n.startsWith("custom:")?await A(i):qe.find(c=>c.id===n.slice(8))?.content;if(s==null||s.trim().length>8e3)throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The selected personality is missing or exceeds its supported size.",action:"Restore its Markdown file or select an available personality in Settings."})}let a=t.personalization?.user_instructions;if(a){let i=Ke(a,e);try{if(!(await Ne.stat(i)).isFile())throw new Error("Not a file");await Ne.access(i,Ne.constants.R_OK)}catch(s){throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The configured user instruction file cannot be read.",action:"Restore the file or remove its configuration reference."},{cause:s})}}}l(ts,"validateRequiredSources");async function tf(e,t,r={}){let n=await So(e,r);return B(e,"config_run_snapshots",t,{...n,capturedAt:new Date().toISOString()},null),n}l(tf,"captureConfigRun");async function rf(e,t,r={}){let n=await So(e,r);if(t.projectTrustRevision!==null&&n.projectTrustRevision!==t.projectTrustRevision)throw new y({code:"PROJECT_TRUST_CHANGED",path:t.projectRoot??e,message:"Project trust changed during this turn.",action:"Review project trust before starting a new turn."});let a=t.document.permissions,i=n.document.permissions;if(i?.command_access!==a?.command_access||i?.codex_mode!==a?.codex_mode||ge(n.credentialVersions)!==ge(t.credentialVersions)||ge(n.document.accounts)!==ge(t.document.accounts)||ge(n.document.providers)!==ge(t.document.providers))throw new y({code:"EXECUTION_POLICY_CHANGED",path:e,message:"Permissions or credential configuration changed during this turn.",action:"Start a new turn with the current settings."})}l(rf,"assertConfigRunCurrent");function nf(e){return nt(e.document)}l(nf,"effectivePreferences");import{createHash as rs}from"node:crypto";var Gt=o.strictObject({chatMode:o.enum(["chat","work"]).optional(),notificationMode:o.enum(["all","direct_mentions","none"]).optional(),learningNoticeDismissed:o.boolean().optional(),sidebarVisibility:o.strictObject({showCodexChats:o.boolean(),onlyRunningTasks:o.boolean()}).optional(),scheduledWorkView:o.enum(["calendar","list"]).optional(),editorControlsVisible:o.boolean().optional(),voiceNoticeAcknowledged:o.boolean().optional(),lessonProgress:o.record(o.string().min(1).max(200),o.strictObject({completed:o.boolean(),currentTime:o.number().finite().nonnegative(),duration:o.number().finite().positive(),updatedAt:o.number().finite().nonnegative()})).refine(e=>Object.keys(e).length<=200,"Too many lessons").optional()}),cf={"openpond:last-chat-task-mode":"chatMode","openpond.team-chat.notification-mode":"notificationMode","openpond.sidebar.continuous-learning.dismissed.v1":"learningNoticeDismissed","openpond.sidebar-task-visibility.v1":"sidebarVisibility","openpond.scheduled-work.view.v1":"scheduledWorkView","openpond.workspace.editorControlsVisible":"editorControlsVisible","openpond.voice.setupNoticeAcknowledged":"voiceNoticeAcknowledged","openpond.post-training-progress.v1":"lessonProgress"};import ns from"node:path";async function Ao(e){let r=(await C(e)).document.defaults?.account_id??G(e,"account_selection","last_used")?.value??"local";return`choices:${rs("sha256").update(JSON.stringify(r)).digest("hex")}`}l(Ao,"scope");async function os(e){let t=await Ao(e),r=G(e,"client_preferences",t),n=await C(e);return{owner:t,revision:r?.revision??null,value:Gt.parse({...r?.value,notificationMode:n.document.notifications?.team_chat??"all"})}}l(os,"readClientChoices");async function yf(e,t,r,n=!1){return L(ns.join(b(e).runtime,"accounts"),async()=>{let a=Gt.parse(r);if(await Ao(e)!==t)throw new y({code:"CLIENT_OWNER_CHANGED",path:"client_preferences",message:"The active account changed before this preference was saved.",action:"Reload preferences for the current account."});let{notificationMode:i,...s}=a;return i!==void 0&&await W(e,c=>n&&c.notifications?.team_chat!==void 0?c:{...c,notifications:{...c.notifications,team_chat:i}}),be(e,c=>{c.exec("BEGIN IMMEDIATE");try{let d=c.prepare("SELECT payload, revision FROM client_preferences WHERE id=?").get(t),f=d?JSON.parse(d.payload):{};delete f.notificationMode;let p=Gt.parse(n?{...s,...f}:{...f,...s});c.prepare("INSERT INTO client_preferences VALUES (?, ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(t,JSON.stringify(p)),c.exec("COMMIT")}catch(d){throw c.exec("ROLLBACK"),d}}),os(e)})}l(yf,"updateClientChoices");import{randomUUID as Ur}from"node:crypto";import{promises as Q}from"node:fs";import R from"node:path";import{backup as ms}from"node:sqlite";import{createCipheriv as as,createDecipheriv as is,randomBytes as ss}from"node:crypto";import{createReadStream as vo,createWriteStream as cs,promises as Ge}from"node:fs";import oe from"node:path";import{Readable as ls}from"node:stream";import{pipeline as xo}from"node:stream/promises";import{createGzip as ds,createGunzip as us}from"node:zlib";var Re=Buffer.from("OPBK1\0"),ps=o.string().min(1).refine(e=>!oe.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),fs=o.strictObject({path:ps,sizeBytes:o.number().safe().int().nonnegative(),sha256:o.string().regex(/^[a-f0-9]{64}$/),executable:o.boolean(),link:o.string().optional()}),Io=o.strictObject({schemaVersion:o.literal("openpond.recoveryBackup.v1"),originalHome:o.string(),createdAt:o.string().datetime(),entries:o.array(fs).max(5e5),externalRoots:o.array(o.strictObject({path:o.string(),available:o.boolean(),included:o.literal(!1)})),browserIncluded:o.boolean()});async function Lo(e,t,r,n){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let a=Buffer.from(JSON.stringify(Io.parse(n)));if(a.length>32*1024*1024)throw new Error("Backup manifest exceeds the supported size.");let i=Buffer.alloc(4);i.writeUInt32BE(a.length);let s=ss(12),c=as("aes-256-gcm",r,s);c.setAAD(Re);let d=await Ge.open(t,"wx",384);try{await d.write(Buffer.concat([Re,s])),await d.sync()}finally{await d.close()}async function*f(){yield i,yield a;for(let g of n.entries)if(g.link===void 0)for await(let m of vo(oe.join(e,g.path)))yield m}l(f,"archive"),await xo(ls.from(f()),ds(),c,cs(t,{flags:"a"}));let p=await Ge.open(t,"a");try{await p.write(c.getAuthTag()),await p.sync()}finally{await p.close()}}l(Lo,"encryptBackup");async function Co(e,t,r){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let n=(await Ge.stat(e)).size,a=Re.length+12;if(n<a+16)throw new Error("Truncated recovery backup.");let i=await Ge.open(e,"r"),s=Buffer.alloc(a),c=Buffer.alloc(16);try{await i.read(s,0,s.length,0),await i.read(c,0,16,n-16)}finally{await i.close()}if(!s.subarray(0,Re.length).equals(Re))throw new Error("Unsupported recovery backup format.");let d=is("aes-256-gcm",r,s.subarray(Re.length));d.setAAD(Re),d.setAuthTag(c);let f=vo(e,{start:a,end:n-17}),p=us(),g=xo(f,d,p);g.catch(()=>{});let m=p[Symbol.asyncIterator](),h=Buffer.alloc(0),_=0;async function T(v){let w=Buffer.alloc(v),S=0;for(;S<v;){if(_>=h.length){let Z=await m.next();if(Z.done)throw new Error("Truncated recovery object.");h=Buffer.from(Z.value),_=0}let P=Math.min(v-S,h.length-_);h.copy(w,S,_,_+P),_+=P,S+=P}return w}l(T,"take");try{let v=(await T(4)).readUInt32BE();if(v>32*1024*1024)throw new Error("Invalid recovery manifest size.");let w=Io.parse(JSON.parse((await T(v)).toString("utf8")));if(new Set(w.entries.map(S=>S.path)).size!==w.entries.length)throw new Error("Duplicate recovery object paths.");for(let S of w.entries){let P=oe.join(t,S.path);if(/^(runtime|backups)([\\/]|$)/.test(S.path)||S.path.endsWith("-wal")||S.path.endsWith("-shm"))throw new Error("Recovery manifest contains an unsupported runtime object.");if(await j(oe.dirname(P)),S.link!==void 0){if(oe.isAbsolute(S.link)||!ut(oe.resolve(oe.dirname(P),S.link),t))throw new Error("Recovery symlink leaves the backup root.");await Ge.symlink(S.link,P)}else{let Z=await Ge.open(P,"wx",S.executable?448:384);try{for(let fe=S.sizeBytes;fe>0;){let Ee=await T(Math.min(1048576,fe));await Z.writeFile(Ee),fe-=Ee.length}await Z.sync()}finally{await Z.close()}}if(await H(P)!==S.sha256)throw new Error("Recovery object failed its checksum.")}if(_<h.length||!(await m.next()).done)throw new Error("Unexpected trailing recovery data.");return await g,w}catch(v){throw f.destroy(),d.destroy(),p.destroy(),await g.catch(()=>{}),v}}l(Co,"decryptBackup");function ut(e,t){let r=oe.relative(oe.resolve(t),oe.resolve(e));return r===""||r!==".."&&!r.startsWith(`..${oe.sep}`)&&!oe.isAbsolute(r)}l(ut,"within");var hs=new Set(["backups","runtime","cache","logs","diagnostics","browser","tmp","openpond-app","openpond-app-nightly","config.json","state.sqlite","state.sqlite-wal","state.sqlite-shm","providers.json","provider-secrets.json","provider-secrets.key","personalization.json","SOUL.md","token"]);async function zf(e,t,r){if(e=R.resolve(e),t=R.resolve(t),ut(t,e))throw new Error("Export recovery backups outside the active home.");let n=[],a=R.join(R.dirname(e),`.${R.basename(e)}-backup-${Ur()}`),i=`${t}.${Ur()}.tmp`;try{n.push(await Se(R.join(b(e).runtime,"server-owner"),100)),await yo(e);for(let f of["accounts","providers","preferences","personalization","artifacts"])n.push(await Se(R.join(b(e).runtime,f)));n.push(await Se(b(e).config)),n.push(await Se(b(e).credentials)),await j(a);for(let f of await Q.readdir(e))hs.has(f)||f==="state"||await Y(R.join(e,f),R.join(a,f));let s=b(e).database;if(await Q.stat(s).catch(f=>{if(M(f))return null;throw f})){await j(R.dirname(b(a).database));let f=U(s,!0);try{await ms(f,b(a).database)}finally{f.close()}}await Oe(a);let c=await Dt(e),d=[];for(let f of await lt(a)){if(f.path.endsWith("-wal")||f.path.endsWith("-shm")||/^(config\.toml|secrets[\\/](?:credentials\.json|server-token))\.lock(?:\.|$)/.test(f.path))continue;let p=R.join(a,f.path),g=await Q.lstat(p),m=g.isSymbolicLink()?await Q.readlink(p):void 0;if(m!==void 0&&(R.isAbsolute(m)||!ut(R.resolve(R.dirname(p),m),a)))throw new Error(`Source symlink requires rebinding before export: ${f.path}`);d.push({path:f.path,sha256:f.sha256,sizeBytes:m===void 0?g.size:0,executable:f.executable??!1,...m===void 0?{}:{link:m}})}return await Q.mkdir(R.dirname(t),{recursive:!0,mode:448}),await Lo(a,i,r,{schemaVersion:"openpond.recoveryBackup.v1",originalHome:e,createdAt:new Date().toISOString(),entries:d,externalRoots:c,browserIncluded:!1}),await Q.link(i,t),{path:t,files:d.length,externalRoots:c}}catch(s){throw s instanceof y?s:new y({code:"BACKUP_FAILED",path:t,message:"The recovery backup could not be completed.",action:"Keep the application stopped, check the destination and supplied encryption key, then retry. Existing backups are never overwritten."},{cause:s})}finally{await Q.rm(a,{recursive:!0,force:!0}),await Q.rm(i,{force:!0});for(let s of n.reverse())await s()}}l(zf,"exportRecoveryBackup");async function Wf(e,t,r){t=R.resolve(t);let n=await Q.lstat(t).catch(i=>{if(M(i))return null;throw i});if(n&&(!n.isDirectory()||(await Q.readdir(t)).length))throw new Error("Restore requires a fresh, empty home. Existing homes are never overwritten.");let a=R.join(R.dirname(t),`.${R.basename(t)}-restore-${Ur()}`);await j(a);try{let i=await Co(e,a,r);return await Oe(a),await gs(a,i.originalHome,t),await I(b(a).marker,JSON.stringify({schemaVersion:"openpond.storage.v1",version:1,migrationId:null,restoredAt:new Date().toISOString()})),await I(R.join(a,"restore-receipt.json"),JSON.stringify({schemaVersion:"openpond.restoreReceipt.v1",originalHome:i.originalHome,restoredAt:new Date().toISOString(),externalRoots:i.externalRoots})),await Oe(a),n&&await Q.rmdir(t),await Q.rename(a,t),{home:t,files:i.entries.length,externalRoots:await Promise.all(i.externalRoots.map(async s=>({...s,available:!!await Q.stat(s.path).catch(()=>null)})))}}catch(i){throw new y({code:"RESTORE_FAILED",path:t,message:"The backup could not be authenticated and validated for restoration.",action:"Check the backup and its separately stored key. The existing home has not been replaced."},{cause:i})}finally{await Q.rm(a,{recursive:!0,force:!0})}}l(Wf,"restoreRecoveryBackup");async function gs(e,t,r){let n=l(a=>ut(a,t)?R.join(r,R.relative(t,a)):a,"rebase");await W(e,a=>({...a,...a.storage?.datasets_dir&&R.isAbsolute(a.storage.datasets_dir)?{storage:{...a.storage,datasets_dir:n(a.storage.datasets_dir)}}:{},...a.personalization?.user_instructions&&R.isAbsolute(a.personalization.user_instructions)?{personalization:{...a.personalization,user_instructions:n(a.personalization.user_instructions)}}:{},...a.projects?.new_project_directory&&R.isAbsolute(a.projects.new_project_directory)?{projects:{...a.projects,new_project_directory:n(a.projects.new_project_directory)}}:{}})),Ht(e,[{from:t,to:r}])}l(gs,"rebaseRestoredPointers");async function Yf(e){let t=structuredClone((await C(e)).document),r=[];function n(a,i,s,c){a&&Object.hasOwn(a,i)&&(delete a[i],r.push({path:[...s,i],reason:c}))}l(n,"omit");for(let a of["accounts","providers"])for(let[i,s]of Object.entries(t[a]??{}))n(s,"credential",[a,i],"Reconnect or bind a credential on the destination device.");for(let a of["accounts","providers"])for(let[i,s]of Object.entries(t[a]??{}))for(let c of["base_url","api_base_url","chat_api_base_url"]){let d=s[c];if(typeof d=="string")try{let f=new URL(d);(f.username||f.password||[...f.searchParams.keys()].some(p=>/token|key|secret|password|credential|signature/i.test(p))||f.hash)&&n(s,c,[a,i],"Rebind this endpoint without embedded authentication data.")}catch{n(s,c,[a,i],"Validate and bind this endpoint on the destination device.")}}n(t.storage,"datasets_dir",["storage"],"Choose the dataset storage root on the destination device."),n(t.projects,"new_project_directory",["projects"],"Choose the local projects directory."),n(t.personalization,"user_instructions",["personalization"],"Transfer the instruction source and bind its destination path."),t.personalization?.active?.startsWith("custom:")&&n(t.personalization,"active",["personalization"],"Transfer the selected custom personality Markdown before selecting it."),n(t.defaults,"profile_ref",["defaults"],"Install and select the Profile on the destination device.");for(let[a,i]of Object.entries(t.editor?.languages??{}))i.custom_command&&(n(i,"custom_command",["editor","languages",a],"Configure the local language-server command."),i.mode==="custom"&&delete i.mode);return{schemaVersion:"openpond.settingsExport.v1",config:t,requiresRebinding:r}}l(Yf,"exportSettings");async function bs(e){let t=b(e).marker,r=await D(t,()=>null);if(r&&(r.schemaVersion!=="openpond.storage.v1"||r.version!==1))throw new y({code:"UNSUPPORTED_STORAGE_VERSION",path:t,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}l(bs,"assertHomeCompatible");export{Ro as a,$ as b,A as c,j as d,I as e,L as f,Se as g,Po as h,D as i,As as j,Pe as k,Me as l,Ns as m,Rs as n,jo as o,ks as p,Ps as q,Ms as r,Ds as s,Fo as t,Bo as u,Vo as v,Us as w,$s as x,Kr as y,ae as z,ye as A,zr as B,Xt as C,zo as D,Wo as E,Jo as F,Yo as G,zs as H,Qo as I,Qt as J,Ws as K,Js as L,qs as M,Xs as N,Ys as O,Qs as P,Je as Q,Zt as R,ta as S,ra as T,tr as U,ia as V,ca as W,ac as X,ua as Y,sc as Z,Zr as _,fa as $,fc as aa,ma as ba,ba as ca,en as da,or as ea,ar as fa,ir as ga,mc as ha,gc as ia,Xr as ja,rr as ka,bc as la,yc as ma,Yr as na,Qr as oa,ee as pa,Sa as qa,qe as ra,rn as sa,_c as ta,wc as ua,an as va,lr as wa,ie as xa,ce as ya,fi as za,wr as Aa,xt as Ba,mi as Ca,hi as Da,al as Ea,il as Fa,C as Ga,yl as Ha,W as Ia,Lt as Ja,_l as Ka,Sl as La,Ie as Ma,nt as Na,Ot as Oa,Nl as Pa,Sr as Qa,Rl as Ra,kl as Sa,kt as Ta,Vl as Ua,Pt as Va,kn as Wa,Pn as Xa,Mn as Ya,je as Za,jn as _a,Bn as $a,zn as ab,Wn as bb,Pi as cb,Nd as db,Rd as eb,kd as fb,Bt as gb,Be as hb,Ki as ib,yo as jb,Oe as kb,Qi as lb,Lp as mb,Zi as nb,Fp as ob,ef as pb,So as qb,tf as rb,rf as sb,nf as tb,Gt as ub,cf as vb,os as wb,yf as xb,zf as yb,Wf as zb,Yf as Ab,bs as Bb};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{q as z,r as V,s as G,t as q}from"./chunk-G2VYRU27.js";import{a as A,f as v,g as k,h as p,i as f}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{Buffer as Y}from"node:buffer";import{readdirSync as H,readFileSync as Q,statSync as F}from"node:fs";import b from"node:path";var K=500,Z=8*1024*1024,W=8*1024*1024;async function me(e,t){if(!t.sandboxRuntime&&!t.runtimeId)return{sandbox:await X(e,await e.create(t.sandbox,{async:!0}))};let n=t.runtimeId?void 0:await e.createSandboxRuntime(t.sandboxRuntime),r=t.runtimeId??n.id,o=await e.createSandboxRuntimeSandbox(r,t.sandbox);return{sandbox:await X(e,o.sandbox),runtime:o.runtime??n}}a(me,"createSandboxFromPlan");async function X(e,t){if(t.state==="running"||t.state==="stopped")return t;if(t.state==="error")throw new Error(`sandbox create failed: ${t.id}
2
+ import{n as z,o as V,p as G,q}from"./chunk-Y2NQXJ2Q.js";import{a as A,f as v,g as k,h as p,i as f}from"./chunk-3M53YXEI.js";import{a}from"./chunk-FTQLQJQV.js";import{Buffer as Y}from"node:buffer";import{readdirSync as H,readFileSync as Q,statSync as F}from"node:fs";import b from"node:path";var K=500,Z=8*1024*1024,W=8*1024*1024;async function me(e,t){if(!t.sandboxRuntime&&!t.runtimeId)return{sandbox:await X(e,await e.create(t.sandbox,{async:!0}))};let n=t.runtimeId?void 0:await e.createSandboxRuntime(t.sandboxRuntime),r=t.runtimeId??n.id,o=await e.createSandboxRuntimeSandbox(r,t.sandbox);return{sandbox:await X(e,o.sandbox),runtime:o.runtime??n}}a(me,"createSandboxFromPlan");async function X(e,t){if(t.state==="running"||t.state==="stopped")return t;if(t.state==="error")throw new Error(`sandbox create failed: ${t.id}
3
3
  ${t.logs.join(`
4
4
  `)}`);let n=12*6e4,r=3e3,o=Date.now()+n,i=t;for(;Date.now()<o;){if(await new Promise(s=>setTimeout(s,r)),i=await e.get(t.id),i.state==="running"||i.state==="stopped")return i;if(i.state==="error")throw new Error(`sandbox create failed: ${i.id}
5
5
  ${i.logs.join(`
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{b as de}from"./chunk-22UARBPW.js";import{a as fe,c as ge,d as ye,f as Re,g as Ae,i as Ce,j as Oe}from"./chunk-I5K74TOH.js";import{A as z,B as J,C as $,D as V,E as Y,F as Q,G as X,H as Z,I as ee,J as te,K as ne,L as oe,M as se,N as re,O as ae,Q as le,V as pe,W as ie,X as ce,Y as ue,Z as me,_ as he,c as E,d as b,e as x,f as L,g as B,h as D,i as I,j as v,l as U,o as M,p as _,q as H,r as N,s as q,u as k,v as K,w as F,x as G,y as j,z as W}from"./chunk-6LY7GYNK.js";import{a as P,b as w}from"./chunk-GLUWATL5.js";import{a as s}from"./chunk-FTQLQJQV.js";function xe(t,e=14){if(t.length<e+1)return null;let r=0,o=0;for(let l=1;l<=e;l+=1){let m=t[l]-t[l-1];m>=0?r+=m:o-=m}let a=r/e,i=o/e;for(let l=e+1;l<t.length;l+=1){let m=t[l]-t[l-1],d=m>0?m:0,n=m<0?-m:0;a=(a*(e-1)+d)/e,i=(i*(e-1)+n)/e}return i===0?100:100-100/(1+a/i)}s(xe,"computeRsi");function T(t,e){if(t.length<e)return[];let r=[],o=0;for(let a=0;a<t.length;a+=1)o+=t[a],a>=e&&(o-=t[a-e]),a>=e-1&&r.push(o/e);return r}s(T,"computeSmaSeries");function Le(t,e){let r=T(t,e);return r.length>0?r[r.length-1]:null}s(Le,"computeSma");function A(t,e){if(t.length<e)return[];let r=2/(e+1),a=t.slice(0,e).reduce((p,l)=>p+l,0)/e,i=[a];for(let p=e;p<t.length;p+=1)a=t[p]*r+a*(1-r),i.push(a);return i}s(A,"computeEmaSeries");function Be(t,e){let r=A(t,e);return r.length>0?r[r.length-1]:null}s(Be,"computeEma");function De(t){let e=A(t,12),r=A(t,26);if(e.length===0||r.length===0)return null;let o=e.length-r.length,a=r.map((m,d)=>e[d+o]-m),i=A(a,9);if(i.length===0)return null;let p=a[a.length-1],l=i[i.length-1];return{macd:p,signalLine:l,histogram:p-l}}s(De,"computeMacd");function Ie(t,e,r,o){if(t.length<o)return null;let a=e==="ema"?A(t,r):T(t,r),i=e==="ema"?A(t,o):T(t,o);if(a.length===0||i.length===0)return null;let p=a.length-i.length;if(p<0)return null;let l=i.length-1,m=a[l+p],d=i[l],n=l-1,c=n>=0?a[n+p]:null,u=n>=0?i[n]:null,h="neutral";return c!=null&&u!=null?c<=u&&m>d?h="bullish-cross":c>=u&&m<d?h="bearish-cross":m>d?h="bullish":m<d&&(h="bearish"):m>d?h="bullish":m<d&&(h="bearish"),{fast:m,slow:d,signal:h}}s(Ie,"computeMaCross");function ve(t,e=20,r=2){if(t.length<e)return null;let o=t.slice(-e),a=o.reduce((l,m)=>l+m,0)/e,i=o.reduce((l,m)=>l+Math.pow(m-a,2),0)/e,p=Math.sqrt(i);return{middle:a,upper:a+r*p,lower:a-r*p}}s(ve,"computeBollinger");function Ue(t,e=24){if(t.length<2)return null;let r=t[t.length-1],o=Math.max(0,t.length-1-e),a=t[o];if(a===0)return null;let i=(r-a)/a*100;return{previous:a,percent:i}}s(Ue,"computePriceChange");function Me(t,e=14){if(t.length<e+1)return null;let r=[];for(let i=1;i<t.length;i+=1){let p=t[i],l=t[i-1],m=p.high-p.low,d=Math.abs(p.high-l.close),n=Math.abs(p.low-l.close);r.push(Math.max(m,d,n))}return r.length<e?null:r.slice(-e).reduce((i,p)=>i+p,0)/e}s(Me,"computeAtr");function Te(t){return t.replace(/\/$/,"")}s(Te,"resolveUrl");function _e(t){let e=process.env.OPENPOND_BASE_URL,r=t.baseUrl||e||P;return Te(r.trim())}s(_e,"resolveBaseUrl");function He(t){let e=process.env.OPENPOND_API_URL,r=t.apiUrl||e||w;return Te(r.trim())}s(He,"resolveApiUrl");function Ne(t,e){return fe({apiBaseUrl:e,opChatApiBaseUrl:t.opChatApiUrl,chatApiBaseUrl:t.chatApiUrl})}s(Ne,"resolveChatApiUrl");function qe(t,e){let r=process.env.OPENPOND_TOOL_URL,o=t.toolUrl||r||e;return Te(o.trim())}s(qe,"resolveToolUrl");function ke(t){let e=t.apiKey?.trim();if(e)return e;let r=process.env.OPENPOND_API_KEY?.trim();if(r)return r;throw new Error("OPENPOND_API_KEY is required")}s(ke,"resolveApiKey");function Ke(t){let e=t.split("/").filter(Boolean);if(e.length!==2)throw new Error("expected <handle>/<repo>");return{handle:e[0],repo:e[1]}}s(Ke,"parseHandleRepo");function Pe(t){return(t||"").trim().toLowerCase()}s(Pe,"normalizeRepoName");function Fe(t){if(!t||typeof t!="object")return{name:"unknown",raw:t};let e=t,r=e.profile||e.function,o=typeof e.name=="string"?e.name:typeof r?.name=="string"?r.name:"unknown",a=typeof e.description=="string"?e.description:typeof r?.description=="string"?r.description:void 0;return{name:o,description:a,raw:t}}s(Fe,"normalizeToolSummary");function Ge(t){if(!t)return[];if(Array.isArray(t.toolsJson))return t.toolsJson;if(t.metadataJson&&typeof t.metadataJson=="object"){let e=t.metadataJson.tools;if(Array.isArray(e))return e}return[]}s(Ge,"extractDeploymentTools");async function O(t){let{handle:e,repo:r}=Ke(t.target),o=await Se({apiBase:t.apiBase,apiKey:t.apiKey,useCache:t.useCache,cacheTtlMs:t.cacheTtlMs,forceRefresh:t.forceRefresh}),a=Pe(r),i=o.find(p=>p.handle&&p.handle!==e?!1:[p.repo,p.gitRepo,p.id].map(Pe).includes(a));if(!i)throw new Error(`app not found for ${e}/${r}`);return{app:i,handle:e,repo:r}}s(O,"resolveAppTarget");async function Se(t){if(t.useCache&&!t.forceRefresh){let r=await ce({apiBase:t.apiBase,apiKey:t.apiKey,ttlMs:t.cacheTtlMs});if(r)return r}let e=await v(t.apiBase,t.apiKey);return t.useCache&&await ue({apiBase:t.apiBase,apiKey:t.apiKey,apps:e}),e}s(Se,"fetchAppsWithCache");async function we(t){if(t.useCache&&!t.forceRefresh){let o=await me({apiBase:t.apiBase,apiKey:t.apiKey,ttlMs:t.cacheTtlMs});if(o)return o}let e=await k(t.apiBase,t.apiKey),r=Array.isArray(e.tools)?e.tools:[];return t.useCache&&await he({apiBase:t.apiBase,apiKey:t.apiKey,tools:r}),r}s(we,"fetchToolsWithCache");function je(t){if(!t)return"POST";let e=t.toUpperCase();switch(e){case"GET":case"POST":case"PUT":case"DELETE":return e;default:throw new Error("method must be GET, POST, PUT, or DELETE")}}s(je,"normalizeMethod");async function We(t,e){let r,o,a;return await de(t,{...e,onConversationId:s(i=>{r=i,e?.onConversationId?.(i)},"onConversationId"),onItems:s(i=>{for(let p of i){let l=p;!o&&typeof l.appId=="string"&&(o=l.appId,e?.onAppId?.(l.appId)),!a&&typeof l.deploymentId=="string"&&(a=l.deploymentId,e?.onDeploymentId?.(l.deploymentId))}e?.onItems?.(i)},"onItems")}),{conversationId:r,appId:o,deploymentId:a}}s(We,"consumeAgentCreateStream");function Pt(t){let e=ke(t),r=_e(t),o=He(t),a=Ne(t,o),i=qe(t,r),p=t.cacheTtlMs??ie,l=t.useCache!==!1,m=s(async()=>{l&&await Promise.all([Se({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:!0}),we({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:!0})])},"refreshCache"),d=s(async(n,c)=>(await D(o,e,n,{branch:c}))?.id??null,"resolveLatestDeploymentId");return{baseUrl:r,apiUrl:o,chatApiUrl:a,toolUrl:i,apiKey:e,account:{get:s(async()=>se(o,e),"get"),health:s(async()=>re(o,e),"health")},chat:{providers:s(async()=>Re({apiBaseUrl:a,token:e}),"providers"),provider:s(async n=>Ae({apiBaseUrl:a,token:e,provider:n}),"provider"),models:s(async()=>ge({apiBaseUrl:a,token:e}),"models"),model:s(async n=>ye({apiBaseUrl:a,token:e,model:n}),"model"),send:s(async n=>Ce({...n,apiBaseUrl:a,token:e}),"send"),stream:s(n=>Oe({...n,apiBaseUrl:a,token:e}),"stream")},tool:{list:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.deploymentId||await d(u.id,c?.branch);if(!h)return{app:u,deploymentId:null,tools:[]};let g=await I(o,e,h),y=Ge(g).map(Fe);return{app:u,deploymentId:h,tools:y}},"list"),run:s(async(n,c,u)=>{let{app:h}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:u?.forceRefresh}),g=u?.deploymentId||await d(h.id,u?.branch);if(!g)throw new Error("no deployments found");let f=je(u?.method);return pe(i,e,{appId:h.id,deploymentId:g,toolName:c,method:f,body:u?.body,headers:u?.headers})},"run")},deploy:{watch:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.deploymentId||await d(u.id,c?.branch);if(!h)throw new Error("no deployments found");let g=c?.intervalMs??5e3,f=c?.timeoutMs??240*1e3,y=[],S=new Set,Ee=Date.now(),R=null;for(;Date.now()-Ee<f;){let be=await L(o,e,h);for(let C of be)S.has(C.id)||(S.add(C.id),y.push(C),c?.onLog?.(C));if(R=(await B(o,e,h)).status??null,c?.onStatus?.(R),R==="failed")return{deploymentId:h,status:R,logs:y};if(R==="running"||R==="deployed")return{deploymentId:h,status:R,logs:y};await new Promise(C=>setTimeout(C,g))}return{deploymentId:h,status:"timeout",logs:y}},"watch")},template:{status:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh});return M(o,e,u.id)},"status"),branches:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh});return _(o,e,u.id)},"branches"),update:s(async(n,c)=>{let{app:u}=await O({apiBase:o,apiKey:e,target:n,useCache:l,cacheTtlMs:p,forceRefresh:c?.forceRefresh}),h=c?.environment==="preview"?"preview":"production";return H(o,e,u.id,{environment:h})},"update")},opentool:{recipesList:s(async(n={})=>F(o,e,n),"recipesList"),recipesSearch:s(async n=>G(o,e,n),"recipesSearch"),recipeGet:s(async n=>j(o,e,n),"recipeGet"),rulesGet:s(async n=>W(o,e,n),"rulesGet")},apps:{list:s(async n=>{let c=await Se({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:n?.forceRefresh});return n?.handle?c.filter(u=>u.handle===n.handle):c},"list"),tools:s(async n=>we({apiBase:o,apiKey:e,useCache:l,cacheTtlMs:p,forceRefresh:n?.forceRefresh}),"tools"),performance:s(async n=>ne(o,e,{appId:n?.appId}),"performance"),summary:s(async n=>oe(o,e,n.appId),"summary"),schedules:s(async n=>K(o,e,n.appId),"schedules"),schedulesStart:s(async n=>{let{appId:c,...u}=n;return z(o,e,c,u)},"schedulesStart"),schedulesStop:s(async n=>J(o,e,n.appId),"schedulesStop"),schedulesStopCurrent:s(async()=>$(o,e),"schedulesStopCurrent"),scheduleRunNow:s(async n=>V(o,e,n),"scheduleRunNow"),scheduleDelete:s(async n=>Y(o,e,n.appId,n.scheduleId),"scheduleDelete"),scheduleExecutionLogs:s(async n=>Q(o,e,n.scheduleId,{limit:n.limit}),"scheduleExecutionLogs"),scheduleExecutionLog:s(async n=>Z(o,e,n.runId),"scheduleExecutionLog"),deploymentScheduleExecutionLogs:s(async n=>X(o,e,n.deploymentId,{limit:n.limit}),"deploymentScheduleExecutionLogs"),executionTimeline:s(async n=>ee(o,e,n.appId,{limit:n.limit}),"executionTimeline"),assistantRun:s(async n=>ae(o,e,n),"assistantRun"),agentCreate:s(async(n,c)=>{let{refreshCache:u,...h}=n,g={...h,streamDeployLogs:h.streamDeployLogs??!0},f=await te(o,e,g);if(!f.ok){let S=await f.text().catch(()=>"");throw new Error(`agent create failed: ${f.status} ${S}`)}let y=await We(f,c);if(l&&u!==!1)try{await m()}catch{}return y},"agentCreate"),toolsExecute:s(async n=>le(o,e,n),"toolsExecute"),deploy:s(async n=>E(o,e,n.appId,{environment:n.environment,commitSha:n.commitSha,branch:n.branch}),"deploy"),startApp:s(async n=>{let{appId:c,...u}=n;return x(o,e,c,u)},"startApp"),promotePreview:s(async n=>{let{appId:c,...u}=n;return b(o,e,c,u)},"promotePreview"),envGet:s(async n=>q(o,e,n.appId),"envGet"),envSet:s(async n=>N(o,e,n.appId,{envVars:n.envVars}),"envSet")},repo:{create:s(async n=>{let{refreshCache:c,...u}=n,h=await U(o,e,u);if(l&&c!==!1)try{await m()}catch{}return h},"create")},cache:{refresh:m}}}s(Pt,"createClient");export{xe as a,T as b,Le as c,A as d,Be as e,De as f,Ie as g,ve as h,Ue as i,Me as j,We as k,Pt as l};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{d as F}from"./chunk-XDVKDELR.js";import{a as o}from"./chunk-FTQLQJQV.js";import{spawn as nt,spawnSync as At}from"node:child_process";import{accessSync as vt,constants as Rt,existsSync as _t,promises as Bt}from"node:fs";import et from"node:path";var rt="Git is required for OpenPond app workspaces, but macOS reports Apple Command Line Tools are not installed. OpenPond skipped /usr/bin/git to avoid opening the Xcode installer prompt. Install Command Line Tools with `xcode-select --install`, install Git from Homebrew, or put a non-Apple git binary earlier on PATH.",T;function Lt(e){try{return _t(e)?(vt(e,Rt.X_OK),!0):!1}catch{return!1}}o(Lt,"isExecutable");function Ot(){let e=(process.env.PATH??"").split(et.delimiter).map(t=>t.trim()).filter(Boolean);for(let t of e){let n=et.join(t,"git");if(!(n==="/usr/bin/git"||n==="/bin/git")&&Lt(n))return n}return null}o(Ot,"firstNonAppleGitOnPath");function it(){let e=At("/usr/bin/xcode-select",["-p"],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return e.status===0&&!!e.stdout.trim()}o(it,"appleDeveloperToolsAvailable");function Dt(e){if(e!=="git"||process.platform!=="darwin")return{command:e};if(T!==void 0)return{command:T};let t=Ot();return t?(T=t,{command:t}):it()?(T="git",{command:"git"}):{error:rt}}o(Dt,"resolveWorkspaceCommand");function u(e,t,n,r={},i){return new Promise(s=>{let a=Dt(e);if("error"in a){s({code:1,stdout:"",stderr:a.error});return}let c=nt(a.command,t,{cwd:n,env:{...process.env,...r,GIT_TERMINAL_PROMPT:"0"},stdio:[i===void 0?"ignore":"pipe","pipe","pipe"]}),d=[],p=[];i!==void 0&&c.stdin?.end(i),c.stdout?.on("data",h=>d.push(h)),c.stderr?.on("data",h=>p.push(h)),c.on("error",h=>{s({code:1,stdout:"",stderr:h.message})}),c.on("close",h=>{s({code:h??1,stdout:Buffer.concat(d).toString("utf8"),stderr:Buffer.concat(p).toString("utf8")})})})}o(u,"runCommand");function Gt(e){return!!(e&&e.includes(rt.slice(0,80)))}o(Gt,"isMacOSGitDeveloperToolsMissing");async function Se(e){await Bt.mkdir(e,{recursive:!0});let t=await u("git",["--version"],e);if(t.code===0)return{ok:!0,command:T??"git",version:(t.stdout||t.stderr).trim()};let n=t.stderr.trim()||t.stdout.trim()||"Git is required for OpenPond app workspaces.";return{ok:!1,error:n,installAction:process.platform==="darwin"&&Gt(n)?"macos_command_line_tools":"manual_git_install"}}o(Se,"checkWorkspaceGitAvailability");function ye(){if(process.platform!=="darwin")return{ok:!1,error:"Apple Command Line Tools installation is only available on macOS."};if(it())return{ok:!0,message:"Apple Command Line Tools already appear to be installed."};try{return nt("/usr/bin/xcode-select",["--install"],{detached:!0,stdio:"ignore"}).unref(),{ok:!0,message:"Opened the Apple Command Line Tools installer."}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}o(ye,"startMacOSCommandLineToolsInstall");import{promises as k}from"node:fs";import m from"node:path";var st=24e3,ot=8e4,It=512*1024,ct=15*1024*1024,Tt=20*1024*1024,Mt=new Set([".cache",".eggs",".git",".ipynb_checkpoints",".mypy_cache",".next",".nox",".nuxt",".openpond",".output",".parcel-cache",".pytest_cache",".pyre",".ruff_cache",".svelte-kit",".tox",".turbo",".venv","__pycache__","artifacts","build","coverage","dist","env","node_modules","out","site-packages","target","venv","volumes"]),zt=new Set([".7z",".avif",".db",".doc",".docx",".gif",".gz",".ico",".jpeg",".jpg",".mov",".mp4",".pdf",".png",".sqlite",".tar",".webp",".xls",".xlsm",".xlsx",".zip"]),$t=new Map([[".avif","image/avif"],[".gif","image/gif"],[".jpeg","image/jpeg"],[".jpg","image/jpeg"],[".png","image/png"],[".webp","image/webp"]]),Nt=new Map([[".m4v","video/x-m4v"],[".mov","video/quicktime"],[".mp4","video/mp4"],[".webm","video/webm"]]),Ht=new Set([".doc",".docx",".pdf"]);function Ut(e){return e.replace(/[^a-zA-Z0-9._-]/g,"-").slice(0,120)||"app"}o(Ut,"safeAppSegment");function N(e){if(!e)return"unknown";try{let t=new URL(e).hostname.toLowerCase();if(t==="github.com"||t.endsWith(".github.com"))return"github";if(t==="openpond.ai"||t.endsWith(".openpond.ai"))return"openpond"}catch{return"unknown"}return"local_git"}o(N,"sourceFromRemote");function $(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@").replace(/Authorization:\s*Basic\s+[A-Za-z0-9+/=]+/gi,"Authorization: Basic ***")}o($,"redactRemoteUrl");async function G(e){try{return await k.access(e),!0}catch{return!1}}o(G,"pathExists");async function O(e){return await G(e)?(await u("git",["rev-parse","--git-dir"],e)).code===0:!1}o(O,"isGitRepo");function X(e){return e.length<=st?e:`${e.slice(0,st)}
2
+ import{d as F}from"./chunk-RBQZVQQM.js";import{a as o}from"./chunk-FTQLQJQV.js";import{spawn as nt,spawnSync as At}from"node:child_process";import{accessSync as vt,constants as Rt,existsSync as _t,promises as Bt}from"node:fs";import et from"node:path";var rt="Git is required for OpenPond app workspaces, but macOS reports Apple Command Line Tools are not installed. OpenPond skipped /usr/bin/git to avoid opening the Xcode installer prompt. Install Command Line Tools with `xcode-select --install`, install Git from Homebrew, or put a non-Apple git binary earlier on PATH.",T;function Lt(e){try{return _t(e)?(vt(e,Rt.X_OK),!0):!1}catch{return!1}}o(Lt,"isExecutable");function Ot(){let e=(process.env.PATH??"").split(et.delimiter).map(t=>t.trim()).filter(Boolean);for(let t of e){let n=et.join(t,"git");if(!(n==="/usr/bin/git"||n==="/bin/git")&&Lt(n))return n}return null}o(Ot,"firstNonAppleGitOnPath");function it(){let e=At("/usr/bin/xcode-select",["-p"],{encoding:"utf8",stdio:["ignore","pipe","pipe"]});return e.status===0&&!!e.stdout.trim()}o(it,"appleDeveloperToolsAvailable");function Dt(e){if(e!=="git"||process.platform!=="darwin")return{command:e};if(T!==void 0)return{command:T};let t=Ot();return t?(T=t,{command:t}):it()?(T="git",{command:"git"}):{error:rt}}o(Dt,"resolveWorkspaceCommand");function u(e,t,n,r={},i){return new Promise(s=>{let a=Dt(e);if("error"in a){s({code:1,stdout:"",stderr:a.error});return}let c=nt(a.command,t,{cwd:n,env:{...process.env,...r,GIT_TERMINAL_PROMPT:"0"},stdio:[i===void 0?"ignore":"pipe","pipe","pipe"]}),d=[],p=[];i!==void 0&&c.stdin?.end(i),c.stdout?.on("data",h=>d.push(h)),c.stderr?.on("data",h=>p.push(h)),c.on("error",h=>{s({code:1,stdout:"",stderr:h.message})}),c.on("close",h=>{s({code:h??1,stdout:Buffer.concat(d).toString("utf8"),stderr:Buffer.concat(p).toString("utf8")})})})}o(u,"runCommand");function Gt(e){return!!(e&&e.includes(rt.slice(0,80)))}o(Gt,"isMacOSGitDeveloperToolsMissing");async function Se(e){await Bt.mkdir(e,{recursive:!0});let t=await u("git",["--version"],e);if(t.code===0)return{ok:!0,command:T??"git",version:(t.stdout||t.stderr).trim()};let n=t.stderr.trim()||t.stdout.trim()||"Git is required for OpenPond app workspaces.";return{ok:!1,error:n,installAction:process.platform==="darwin"&&Gt(n)?"macos_command_line_tools":"manual_git_install"}}o(Se,"checkWorkspaceGitAvailability");function ye(){if(process.platform!=="darwin")return{ok:!1,error:"Apple Command Line Tools installation is only available on macOS."};if(it())return{ok:!0,message:"Apple Command Line Tools already appear to be installed."};try{return nt("/usr/bin/xcode-select",["--install"],{detached:!0,stdio:"ignore"}).unref(),{ok:!0,message:"Opened the Apple Command Line Tools installer."}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}o(ye,"startMacOSCommandLineToolsInstall");import{promises as k}from"node:fs";import m from"node:path";var st=24e3,ot=8e4,It=512*1024,ct=15*1024*1024,Tt=20*1024*1024,Mt=new Set([".cache",".eggs",".git",".ipynb_checkpoints",".mypy_cache",".next",".nox",".nuxt",".openpond",".output",".parcel-cache",".pytest_cache",".pyre",".ruff_cache",".svelte-kit",".tox",".turbo",".venv","__pycache__","artifacts","build","coverage","dist","env","node_modules","out","site-packages","target","venv","volumes"]),zt=new Set([".7z",".avif",".db",".doc",".docx",".gif",".gz",".ico",".jpeg",".jpg",".mov",".mp4",".pdf",".png",".sqlite",".tar",".webp",".xls",".xlsm",".xlsx",".zip"]),$t=new Map([[".avif","image/avif"],[".gif","image/gif"],[".jpeg","image/jpeg"],[".jpg","image/jpeg"],[".png","image/png"],[".webp","image/webp"]]),Nt=new Map([[".m4v","video/x-m4v"],[".mov","video/quicktime"],[".mp4","video/mp4"],[".webm","video/webm"]]),Ht=new Set([".doc",".docx",".pdf"]);function Ut(e){return e.replace(/[^a-zA-Z0-9._-]/g,"-").slice(0,120)||"app"}o(Ut,"safeAppSegment");function N(e){if(!e)return"unknown";try{let t=new URL(e).hostname.toLowerCase();if(t==="github.com"||t.endsWith(".github.com"))return"github";if(t==="openpond.ai"||t.endsWith(".openpond.ai"))return"openpond"}catch{return"unknown"}return"local_git"}o(N,"sourceFromRemote");function $(e){return e.replace(/x-access-token:[^@]+@/g,"x-access-token:***@").replace(/Authorization:\s*Basic\s+[A-Za-z0-9+/=]+/gi,"Authorization: Basic ***")}o($,"redactRemoteUrl");async function G(e){try{return await k.access(e),!0}catch{return!1}}o(G,"pathExists");async function O(e){return await G(e)?(await u("git",["rev-parse","--git-dir"],e)).code===0:!1}o(O,"isGitRepo");function X(e){return e.length<=st?e:`${e.slice(0,st)}
3
3
 
4
4
  [diff truncated]`}o(X,"truncatePatch");function jt(e){return e.length<=ot?e:`${e.slice(0,ot)}
5
5