openpond 0.2.23 → 0.2.24

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-AOSX4AH5.js +2 -0
  5. package/dist/chunks/apps-U3TXSPU6.js +2 -0
  6. package/dist/chunks/{chunk-NS3VMSTX.js → chunk-4D3JNBSP.js} +2 -2
  7. package/dist/chunks/chunk-4KDHMGKI.js +2 -0
  8. package/dist/chunks/chunk-6LY7GYNK.js +2 -0
  9. package/dist/chunks/{chunk-BZMVB3GS.js → chunk-6XF4GI35.js} +1 -1
  10. package/dist/chunks/{chunk-73KFNV3D.js → chunk-7TV2VBSD.js} +1 -1
  11. package/dist/chunks/{chunk-CXDS2LSW.js → chunk-AC2M2HO3.js} +1 -1
  12. package/dist/chunks/{chunk-XDVKDELR.js → chunk-B3LJ777T.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-MD7IADMT.js → chunk-K5IJNSHP.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-T3VPZRIX.js → chunk-NVVETL4F.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-V2BBMZ7I.js → chunk-WK5HTGXV.js} +1 -1
  28. package/dist/chunks/{chunk-3XUBKIBN.js → chunk-WTZYPCLS.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-WZ5H6EPA.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-DT7YDHH6.js} +2 -2
  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-QCCYGHZG.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
@@ -1,53 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{p as se,q as he}from"./chunk-HZP5U2AA.js";import{b as a}from"./chunk-ES2ISFJC.js";import{c as _,d as Rr,e as R,f as Mr,g as Dr,h as y,i as Ve,j as Ur,k as $t,l as Oe,m as jr,n as D,o as ge,p as K,r as B}from"./chunk-H7IWJN7L.js";import{a as l}from"./chunk-FTQLQJQV.js";import{randomUUID as Kt,createHash as So}from"node:crypto";import{promises as V,constants as Gt}from"node:fs";import $e from"node:path";var Ao="missing";function $(e){return e===null?Ao:So("sha256").update(e).digest("hex")}l($,"fileRevision");async function E(e){Oe($e.dirname(e));try{let t=await V.lstat(e);if(!t.isFile()||t.isSymbolicLink())throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Storage must be a regular file, not a symbolic link.",action:"Use a regular file in the OpenPond home."});return await V.readFile(e,"utf8")}catch(t){if(R(t))return null;throw t}}l(E,"readOptionalFile");async function U(e){if(Oe(e),await V.mkdir(e,{recursive:!0,mode:448}),(await V.lstat(e)).isSymbolicLink())throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Managed storage directories cannot be symbolic links.",action:"Select a regular local storage folder."});$t(e)}l(U,"privateDirectory");async function I(e,t,r={}){let n=$e.dirname(e);r.privateParent===!1?await V.mkdir(n,{recursive:!0,mode:448}):await U(n);let o=await V.lstat(e).catch(s=>{if(R(s))return null;throw s});if(o&&(!o.isFile()||o.isSymbolicLink()))throw new _({code:"UNSAFE_STORAGE_PATH",path:e,message:"Cannot replace a non-regular storage file.",action:"Use a regular file in the OpenPond home."});let i=$e.join(n,`.${$e.basename(e)}.${process.pid}.${Kt()}.tmp`);try{let s=await V.open(i,Gt.O_CREAT|Gt.O_EXCL|Gt.O_WRONLY,384);try{await s.writeFile(t),await s.sync()}finally{await s.close()}if(await V.rename(i,e),process.platform!=="win32"){let c=await V.open(n,"r");try{await c.sync()}finally{await c.close()}}}finally{await V.rm(i,{force:!0})}}l(I,"atomicWriteFile");async function x(e,t,r=1e4){let n=await we(e,r);try{return await t()}finally{await n()}}l(x,"withFileLock");async function vo(e,t){let r=`${e}.${process.pid}.${Kt()}.candidate`;try{let n=await V.open(r,"wx",384);try{await n.writeFile(t),await n.sync()}finally{await n.close()}await V.link(r,e)}finally{await V.rm(r,{force:!0})}}l(vo,"publishLock");async function we(e,t=1e4){await U($e.dirname(e));let r=`${e}.lock`,n={pid:process.pid,nonce:Kt()},o=JSON.stringify(n),i=Date.now()+t;for(;;)try{await vo(r,o);break}catch(s){if(s.code!=="EEXIST")throw s;let c=await E(r);if(c){let d;try{d=JSON.parse(c).pid}catch{}if(typeof d=="number"&&Number.isInteger(d)&&d>0&&Io(d)){let f=await we(`${r}.reclaim`,Math.max(0,i-Date.now()));try{await E(r)===c&&await V.unlink(r).catch(p=>{if(!R(p))throw p})}finally{await f()}}}if(Date.now()>=i)throw new _({code:"STORAGE_BUSY",path:e,message:"Another OpenPond process is updating this storage.",action:"Wait for that process to finish, then retry. Do not delete a live process lock."});await new Promise(d=>setTimeout(d,25))}return async()=>{await E(r)===o&&await V.unlink(r)}}l(we,"acquireFileLock");function Io(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}l(Io,"processIsDead");async function M(e,t){let r=await E(e);if(r===null)return t();try{return JSON.parse(r)}catch(n){throw new _({code:"INVALID_STORAGE_JSON",path:e,message:"A storage file contains invalid JSON.",action:"Restore a verified backup or correct the file, then retry."},{cause:n})}}l(M,"readJsonFile");async function cs(e,t,r){return x(e,async()=>{let n=await r(await M(e,t));return await I(e,`${JSON.stringify(n,null,2)}
3
- `),n})}l(cs,"updateJsonFile");var lt=a.enum(["active","preview","planned","deprecated"]),Br=a.enum(["openpond-account","openpond-managed","codex-login","chatgpt-subscription","local-byok","hosted-byok","custom"]),xo=a.enum(["none","local_secret","env","openpond_account","codex_login","chatgpt_subscription","hosted"]),Fr=a.object({connected:a.boolean().default(!1),source:xo.default("none"),redacted:a.string().nullable().default(null),lastValidatedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null)}),Ht=a.object({hostedOpChat:a.boolean().default(!1),localRuntime:a.boolean().default(!0),localByok:a.boolean().default(!1),hostedByok:a.boolean().default(!1)}),Lo=a.enum(["hosted","provider","manual","none"]),zt=a.object({chatCompletions:a.boolean().default(!0),streaming:a.boolean().default(!0),modelDiscovery:Lo.default("none"),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),imageInput:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Co=a.enum(["hosted","provider","curated","manual","cache"]),Wt=a.object({streaming:a.boolean().default(!0),toolCalling:a.boolean().default(!1),reasoning:a.boolean().default(!1),vision:a.boolean().default(!1),structuredOutput:a.boolean().default(!1)}),Oo=a.object({id:a.string().trim().min(1).max(300),providerId:se,displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().default(null),outputLimit:a.number().int().positive().nullable().default(null),lifecycleStatus:lt.default("active"),source:Co,capabilities:Wt.default(()=>Wt.parse({})),raw:a.record(a.string(),a.unknown()).optional()}),No=a.object({providerId:se,models:a.array(Oo).default([]),fetchedAt:a.string().nullable().default(null),lastError:a.string().nullable().default(null),source:a.enum(["none","hosted","provider","curated","manual"]).default("none")}),ko=a.object({enabled:a.boolean().default(!1),baseUrl:a.string().trim().min(1).max(2048).nullable().default(null),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).default([]),updatedAt:a.string().nullable().default(null)}),Po=a.object({enabled:a.boolean().optional(),baseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelOverrides:a.array(a.string().trim().min(1).max(300)).max(500).optional()}),Ro=a.object({id:a.string().trim().min(1).max(300),displayName:a.string().trim().min(1).max(300),contextWindow:a.number().int().positive().nullable().optional(),outputLimit:a.number().int().positive().nullable().optional(),lifecycleStatus:lt.optional(),capabilities:Wt.partial().optional()}),Mo=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht,capabilities:zt,defaultEnabled:a.boolean().optional(),defaultBaseUrl:a.string().trim().min(1).max(2048).nullable().optional(),defaultModel:a.string().trim().min(1).max(300).nullable().optional(),modelCacheSource:a.enum(["none","hosted","provider","curated","manual"]),models:a.array(Ro).default([])}),ms=a.object({version:a.literal(1).default(1),generatedAt:a.string().datetime(),providers:a.array(Mo)}),Do=a.object({id:se,displayName:a.string().trim().min(1).max(160),lifecycleStatus:lt.default("active"),credentialModes:a.array(Br).default([]),routing:Ht.default(()=>Ht.parse({})),capabilities:zt.default(()=>zt.parse({})),credential:Fr.default(()=>Fr.parse({})),enabled:a.boolean().default(!1),available:a.boolean().default(!1),defaultModel:a.string().trim().min(1).max(300).nullable().default(null),modelIds:a.array(a.string().trim().min(1).max(300)).max(1e3).default([]),lastError:a.string().nullable().default(null)}),Jt=a.object({version:a.literal(1).default(1),providers:a.record(a.string(),ko).default({}),statuses:a.record(a.string(),Do).default({}),modelCaches:a.record(a.string(),No).default({}),updatedAt:a.string().nullable().default(null)}),hs=a.object({providers:a.record(a.string(),Po).optional()}),gs=a.object({source:a.enum(["local_secret","env"]).default("local_secret"),value:a.string().min(1).max(2e4).optional(),envVar:a.string().trim().min(1).max(160).optional()}).superRefine((e,t)=>{e.source==="env"&&!e.envVar&&t.addIssue({code:"custom",path:["envVar"],message:"envVar is required when provider credential source is env."}),e.source==="local_secret"&&!e.value&&t.addIssue({code:"custom",path:["value"],message:"value is required when provider credential source is local_secret."})}),ys=a.object({source:a.enum(["local_secret","env","chatgpt_subscription"]).optional()}),_s=a.object({modelId:a.string().trim().min(1).max(300).optional(),baseUrl:a.string().trim().min(1).max(2048).optional()}),bs=a.object({query:a.string().trim().max(200).optional(),refresh:a.boolean().default(!1),limit:a.number().int().positive().max(500).default(100)}),ws=a.object({query:a.string().trim().max(200).optional(),force:a.boolean().default(!1)});var Uo=["coding","research","review","test","docs","planner","summarizer"],vs=a.enum(Uo),Ke=a.string().trim().min(1).max(80).regex(/^[a-z][a-z0-9_-]*$/),dt=a.enum(["none","worktree","copy_on_write"]),ut=a.enum(["read_only","workspace_write","full_tools"]),pt=a.enum(["disabled","parent_scoped"]),qt=a.enum(["manual","balanced","proactive"]),jo=a.enum(["queued","running","completed","failed","cancelled","needs_resume"]),Fo=["subagent.started","subagent.reported","subagent.completed","subagent.progress","subagent.failed","subagent.cancelled","subagent.cleanup","subagent.workspace_retained","subagent.workspace_retention_expiring","subagent.archived","subagent.message"],Is=a.enum(Fo),Bo=[{id:"coding",label:"Coding",description:"Make scoped code changes and return patch, diff, and test evidence.",defaultToolPolicy:"full_tools"},{id:"research",label:"Research",description:"Inspect docs, code, web or repo context and return cited findings.",defaultToolPolicy:"full_tools"},{id:"review",label:"Review",description:"Inspect diffs or implementation plans and return ranked findings.",defaultToolPolicy:"full_tools"},{id:"test",label:"Test",description:"Run or design validation in isolation and return command evidence.",defaultToolPolicy:"full_tools"},{id:"docs",label:"Docs",description:"Update or draft project documentation in an isolated target.",defaultToolPolicy:"full_tools"},{id:"planner",label:"Planner",description:"Decompose a goal into child assignments and context packs.",defaultToolPolicy:"full_tools"},{id:"summarizer",label:"Summarizer",description:"Compact transcripts, child results, and goal state for parent context.",defaultToolPolicy:"full_tools"}],Xt=a.object({id:Ke,enabled:a.boolean().default(!0),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),maxConcurrentRuns:a.number().int().min(1).max(16).default(1),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped")}),Yt=a.object({enabled:a.boolean().default(!0),workspaceDefaultsVersion:a.literal(1).default(1),toolDefaultsVersion:a.literal(1).default(1),delegationMode:qt.default("manual"),defaultModelRef:he.nullable().default(null),roles:a.array(Xt).max(64).default(()=>$r()),maxConcurrentRuns:a.number().int().min(1).max(32).default(4),maxConcurrentRunsPerProvider:a.number().int().min(1).max(32).nullable().default(2),maxConcurrentRunsPerWorkspaceTarget:a.number().int().min(1).max(32).nullable().default(1)}).transform(e=>({...e,roles:Xo(e.roles)})),Ge=a.object({kind:a.enum(["session","turn","file","diff","artifact"]),id:a.string().trim().min(1).max(500),label:a.string().trim().min(1).max(500)}),Vo=a.object({kind:a.enum(["retain_with_parent"]).default("retain_with_parent"),messageRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),artifactRetentionDays:a.number().int().min(1).max(3650).nullable().default(null),cleanupAfterExpiry:a.boolean().default(!1)}).default(()=>({kind:"retain_with_parent",messageRetentionDays:null,artifactRetentionDays:null,cleanupAfterExpiry:!1})),$o=a.enum(["orient","edit","validate","report"]),Go=a.object({command:a.string().trim().min(1).max(2e3),status:a.enum(["passed","failed","unknown"]).default("unknown"),exitCode:a.number().int().nullable().default(null),outputSummary:a.string().trim().max(5e3).nullable().default(null),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null)}),Ko=a.object({phase:$o.default("orient"),inspectedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),inspectedResources:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),repeatedSearches:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedReads:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),repeatedCommands:a.array(a.string().trim().min(1).max(1e3)).max(200).default([]),changedFiles:a.array(a.string().trim().min(1).max(1e3)).max(500).default([]),patchRefs:a.array(Ge).max(100).default([]),validationAttempts:a.array(Go).max(100).default([]),latestMeaningfulActivity:a.string().trim().max(5e3).nullable().default(null),currentBlocker:a.string().trim().max(5e3).nullable().default(null),updatedAt:a.string().nullable().default(null)}).default(()=>({phase:"orient",inspectedFiles:[],inspectedResources:[],repeatedSearches:[],repeatedReads:[],repeatedCommands:[],changedFiles:[],patchRefs:[],validationAttempts:[],latestMeaningfulActivity:null,currentBlocker:null,updatedAt:null})),Ho=a.object({summary:a.string().trim().max(2e4).default(""),findings:a.array(a.string().trim().min(1).max(5e3)).max(200).default([]),artifacts:a.array(Ge).max(200).default([]),patchRef:Ge.nullable().default(null),diffRef:Ge.nullable().default(null),testsRun:a.array(a.string().trim().min(1).max(2e3)).max(100).default([]),blockers:a.array(a.string().trim().min(1).max(5e3)).max(100).default([]),confidence:a.enum(["low","medium","high"]).nullable().default(null),followUpNeeded:a.boolean().default(!1)}),zo=a.object({id:a.string().trim().min(1).max(200),parentSessionId:a.string().trim().min(1).max(200),parentTurnId:a.string().trim().min(1).max(200).nullable().default(null),childSessionId:a.string().trim().min(1).max(200).nullable().default(null),roleId:Ke,objective:a.string().trim().min(1).max(5e4),modelRef:he.nullable().default(null),isolationMode:dt.default("none"),toolPolicy:ut.default("read_only"),background:a.boolean().default(!0),peerMessages:pt.default("parent_scoped"),status:jo.default("queued"),progress:Ko,evidenceRetention:Vo,createdAt:a.string(),startedAt:a.string().nullable().default(null),completedAt:a.string().nullable().default(null),updatedAt:a.string().nullable().default(null),error:a.string().nullable().default(null),report:Ho.nullable().default(null),metadata:a.record(a.string(),a.unknown()).optional().default({})}),Vr=a.enum(["cleanup","archive","cleanup_and_archive"]),xs=a.object({action:Vr,reason:a.string().trim().min(1).max(2e3).nullable().default(null)}),Ls=a.object({action:Vr,run:zo,workspaceCleanup:a.record(a.string(),a.unknown()).nullable().default(null),sessionArchive:a.record(a.string(),a.unknown()).nullable().default(null),nextStep:a.string()}),Wo=a.enum(["question","answer","handoff","artifact","status","blocker"]),Jo=a.enum(["normal","interrupt"]),qo=a.object({inputIds:a.array(a.string()).default([]),status:a.enum(["pending","delivered","undelivered"]).default("pending"),deliveredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),acknowledgedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),deliveredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),acknowledgedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeRequestedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeQueuedParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeDeferredParentSessionId:a.string().trim().min(1).max(200).nullable().default(null),wakeParentReason:a.string().trim().min(1).max(1e3).nullable().default(null),wakeRequestedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeInterruptedRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),wakeDeferredRunIds:a.array(a.string().trim().min(1).max(200)).max(200).default([]),reason:a.string().trim().min(1).max(1e3).nullable().default(null)}),Cs=a.object({id:a.string().trim().min(1).max(200),fromRunId:a.string().trim().min(1).max(200),toRunId:a.string().trim().min(1).max(200).nullable().default(null),toRole:Ke.nullable().default(null),kind:Wo,priority:Jo.optional(),body:a.string().trim().min(1).max(5e4),refs:a.array(Ge).max(100).default([]),delivery:qo.optional(),createdAt:a.string()});function $r(){return Bo.map(e=>Xt.parse({id:e.id,toolPolicy:e.defaultToolPolicy}))}l($r,"defaultSubagentRoleSettings");function Xo(e){let t=$r(),r=new Map(t.map(o=>[o.id,o])),n=[];for(let o of e??[]){let i=Xt.parse(o);r.has(i.id)?r.set(i.id,i):n.push(i)}return[...t.map(o=>r.get(o.id)??o),...n]}l(Xo,"normalizeSubagentRoleSettings");var zr="gpt-5.6-sol",Yo="openpond-chat",Ms="accounts/fireworks/models/deepseek-v4-flash",Qo="openpond",Zo=Yo,ea="default",Zt="high",ta="ask",Wr=se,er=a.enum(["default","auto-review","full-access"]),tr=a.enum(["ask","full-access","disabled"]),rr=a.enum(["low","medium","high","xhigh"]),Ds=a.enum(["sandbox_app","local_project","sandbox","sandbox_template"]),Us=a.enum(["openpond"]),ra=a.enum(["provider_usage","provider_tokenizer","model_family","heuristic"]),js=a.object({provider:Wr,model:a.string().min(1),usedTokens:a.number().int().nonnegative(),maxContextTokens:a.number().int().positive(),usableContextTokens:a.number().int().positive(),percentFull:a.number().min(0).max(100),source:ra,updatedAtEventId:a.string().nullable()}),Gr=a.object({pinned:a.boolean().default(!1),projects:a.boolean().default(!1),cloudProjects:a.boolean().default(!1),chats:a.boolean().default(!1),savedForLater:a.boolean().default(!0)}),na=a.enum(["auto","off"]),oa=a.enum(["typescript","python","rust"]),Jr=a.enum(["auto","disabled","custom"]),pe=a.object({mode:Jr.default("auto"),customCommand:a.string().trim().max(4096).default("")}),Qt=a.object({languageServers:na.default("auto"),diagnosticsWhileEditing:a.boolean().default(!0),checkOnSave:a.boolean().default(!0),languages:a.object({typescript:pe.optional().default(()=>pe.parse({})),python:pe.optional().default(()=>pe.parse({})),rust:pe.optional().default(()=>pe.parse({}))}).optional().default(()=>({typescript:pe.parse({}),python:pe.parse({}),rust:pe.parse({})}))}),aa=a.object({language:oa,label:a.string(),mode:Jr,status:a.enum(["found","missing","disabled","error"]),command:a.string().nullable(),message:a.string().nullable()}),Fs=a.object({settings:Qt,languages:a.array(aa),updatedAt:a.string()}),ia=a.object({id:a.string(),root:a.string(),status:a.enum(["starting","connected","unavailable","error"]),message:a.string().nullable().optional().default(null),openedDocuments:a.number().int().nonnegative(),pendingRequests:a.number().int().nonnegative(),lastUsedAt:a.string(),stderrTail:a.string()}),Bs=a.object({clients:a.array(ia),maxClients:a.number().int().positive(),idleTimeoutMs:a.number().int().positive(),updatedAt:a.string()}),Kr=a.object({autoEnabled:a.boolean().default(!0),triggerPercent:a.number().int().min(50).max(95).default(85),summaryModel:a.enum(["same_model"]).default("same_model")}),Hr=a.object({defaultModelRef:he.nullable().default(null),creationMode:a.enum(["defaults","customize"]).default("customize"),autoApproveEvidence:a.boolean().default(!1)}),Z=a.object({defaultChatProvider:Wr.default(Qo),defaultChatModel:a.string().min(1).default(Zo),defaultChatModelRef:he.nullable().optional(),subagents:Yt.optional().default(()=>Yt.parse({})),codexPermissionMode:er.default(ea),codexReasoningEffort:rr.default(Zt),openPondCommandAccessMode:tr.default(ta),defaultBranchPrefix:a.string().trim().max(48).default("feat/"),defaultNewProjectDirectory:a.string().trim().max(4096).default(""),defaultTeamId:a.string().trim().max(191).nullable().default(null),advancedWorkspaceControls:a.boolean().default(!1),steerActiveResponses:a.boolean().default(!0),contextCompaction:Kr.optional().default(()=>Kr.parse({})),training:Hr.optional().default(()=>Hr.parse({})),sidebarWidth:a.number().int().min(244).max(560).default(332),diffPanelWidth:a.number().int().min(320).max(2400).default(560),sidebarSectionsCollapsed:Gr.optional().default(()=>Gr.parse({})),editor:Qt.optional().default(()=>Qt.parse({}))});var sa="default",He=[{id:"default",name:"Balanced",source:"built_in",description:"Clear, useful, and concise.",content:`You are OpenPond Chat, a clear and useful AI assistant.
4
- Be concise, accurate, and direct.
5
- Do not use emojis.
6
- Ask only when missing information would materially change the answer.
7
- 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.
8
- Be direct, concrete, and outcome-focused.
9
- Do not use emojis.
10
- Prefer simple working solutions over clever abstractions.
11
- Call out weak assumptions plainly.`},{id:"friendly",name:"Friendly",source:"built_in",description:"Warm, conversational, and approachable.",content:`You are a friendly AI assistant.
12
- Use a warm, conversational tone without filler.
13
- Do not use emojis.
14
- Explain decisions clearly and keep the user moving.
15
- Be patient when clarifying tradeoffs.`},{id:"formal",name:"Formal",source:"built_in",description:"Polished, careful, and professional.",content:`You are a formal AI assistant.
16
- Use precise, professional language.
17
- Do not use emojis.
18
- Structure answers clearly and avoid casual phrasing.
19
- 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.
20
- Prioritize correctness, implementation detail, and edge cases.
21
- Do not use emojis.
22
- Use concise explanations, but include necessary specifics.
23
- Surface risks, constraints, and verification steps.`}],qr=a.string().trim().min(1).max(120),ca=a.object({id:qr,name:a.string(),source:a.enum(["built_in","custom"]).default("custom"),description:a.string(),content:a.string()}),Vs=a.object({activeTemplateId:qr.default(sa),customized:a.boolean().default(!1),soul:a.string(),soulPath:a.string().nullable(),updatedAt:a.string().nullable(),templates:a.array(ca).default(()=>[...He])}),$s=a.object({id:a.string(),host:a.string(),port:a.number(),startedAt:a.string(),storePath:a.string(),version:a.string(),runtimeVersion:a.string()});var te=a.string().trim().min(1),ft=a.string().trim().max(4096),mt=te.max(200).refine(e=>!["__proto__","prototype","constructor"].includes(e),"Reserved identifier"),ht=te.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."),Yr=a.strictObject({provider_id:se,model_id:te.max(300)}),or=a.discriminatedUnion("mode",[a.strictObject({mode:a.literal("inherit")}),a.strictObject({mode:a.literal("custom"),ref:Yr})]),Qr=a.discriminatedUnion("source",[a.strictObject({source:a.literal("secret"),id:mt}),a.strictObject({source:a.literal("env"),name:te.regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(160)})]),la=a.strictObject({handle:te,base_url:ht.optional(),api_base_url:ht.optional(),chat_api_base_url:ht.optional(),environment:te.optional(),credential:Qr.optional(),enabled:a.boolean().optional()}),da=a.strictObject({enabled:a.boolean().optional(),base_url:ht.optional(),default_model:te.max(300).optional(),model_overrides:a.array(te.max(300)).max(500).optional(),credential:Qr.optional()}),nr=a.strictObject({mode:a.enum(["auto","disabled","custom"]).optional(),custom_command:ft.optional()}),Xr=a.union([a.number().int().min(1).max(32),a.literal("unlimited")]),ua=a.strictObject({enabled:a.boolean().optional(),model:or.optional(),isolation_mode:dt.optional(),max_concurrent_runs:a.number().int().min(1).max(16).optional(),tool_policy:ut.optional(),background:a.boolean().optional(),peer_messages:pt.optional()}),pa=a.strictObject({source:a.enum(["local","github","openpond_git"]),repository_id:te,profile_id:te}),ar=a.strictObject({schema_version:a.literal(1),chat:a.strictObject({model:Yr.optional(),steer_active_responses:a.boolean().optional()}).optional(),codex:a.strictObject({reasoning_effort:rr.optional()}).optional(),permissions:a.strictObject({command_access:tr.optional(),codex_mode:er.optional()}).optional(),context_compaction:a.strictObject({auto_enabled:a.boolean().optional(),trigger_percent:a.number().int().min(50).max(95).optional(),summary_model:a.literal("same_model").optional()}).optional(),subagents:a.strictObject({enabled:a.boolean().optional(),delegation_mode:qt.optional(),default_model:or.optional(),max_concurrent_runs:a.number().int().min(1).max(32).optional(),max_concurrent_runs_per_provider:Xr.optional(),max_concurrent_runs_per_workspace_target:Xr.optional(),roles:a.record(Ke,ua).refine(e=>Object.keys(e).length<=64,"At most 64 roles").optional()}).optional(),projects:a.strictObject({branch_prefix:a.string().trim().max(48).optional(),new_project_directory:ft.optional()}).optional(),defaults:a.strictObject({account_id:mt.optional(),team_id:te.max(191).optional(),profile_ref:pa.optional()}).optional(),editor:a.strictObject({language_servers:a.enum(["auto","off"]).optional(),diagnostics_while_editing:a.boolean().optional(),check_on_save:a.boolean().optional(),languages:a.strictObject({typescript:nr.optional(),python:nr.optional(),rust:nr.optional()}).optional()}).optional(),training:a.strictObject({default_model:or.optional(),creation_mode:a.enum(["defaults","customize"]).optional(),auto_approve_evidence:a.boolean().optional()}).optional(),notifications:a.strictObject({team_chat:a.enum(["all","direct_mentions","none"]).optional()}).optional(),ui:a.strictObject({advanced_workspace_controls:a.boolean().optional()}).optional(),runtime:a.strictObject({execution_mode:a.enum(["local","hosted"]).optional(),mode:a.enum(["general","builder"]).optional()}).optional(),personalization:a.strictObject({active:te.regex(/^(builtin|custom):[a-zA-Z0-9_-]+$/).optional(),mode:a.enum(["enabled","disabled"]).optional(),user_instructions:ft.optional()}).optional(),storage:a.strictObject({datasets_dir:ft.optional()}).optional(),accounts:a.record(mt,la).optional(),providers:a.record(mt,da).optional()});function oe(e,t="user"){let r=ar.parse(e);if(t==="project"){let n=new Set(["schema_version","chat","codex","permissions","context_compaction","subagents","projects","editor"]);for(let o of Object.keys(r))if(!n.has(o))throw new Error(`Setting ${o} 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 o of Object.values(r.editor?.languages??{}))if(o.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 o of Object.values(r.subagents?.roles??{}))if(o.tool_policy&&o.tool_policy!=="read_only")throw new Error("Project roles cannot grant additional tool access.")}return r}l(oe,"validateConfigDocument");import{promises as hr}from"node:fs";import Ne from"node:path";var gt={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"]},fa=Object.keys(gt);for(let e of fa)Object.freeze(gt[e]);Object.freeze(gt);var Zr=gt;function en(e){let t=Object.assign({},Zr);for(let r of Object.keys(e))if(Object.hasOwn(t,r)){let n=new Set(e[r]);for(let o of t[r])n.add(o);t[r]=Object.freeze(Array.from(n))}else t[r]=Object.freeze(Array.from(e[r]));return Object.freeze(t)}l(en,"unionWith");function Te(e){return e[e.length-1]??null}l(Te,"last");function dr(e){return e.type==="TOMLBare"?e.name:e.value}l(dr,"toKeyName");var pn=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}},tn=new pn(1,0),Ye=new pn(1,1),ma=Ye,ha={"1.0":tn,"1.0.0":tn,"1.1":Ye,"1.1.0":Ye,latest:Ye,next:Ye};function fn(e){return e&&ha[e]||ma}l(fn,"getTOMLVer");var rn={"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 ga(e,t){return t?rn[e].replace(/\{\{(.*?)\}\}/gu,(r,n)=>n in t?t[n]:`{{${n}}}`):rn[e]}l(ga,"getMessage");var mn=class extends SyntaxError{static{l(this,"ParseError")}constructor(e,t,r,n,o){super(ga(e,o)),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 ya(e){return e>=u.NULL&&e<=u.US}l(ya,"isControl");function ze(e){return e===u.TABULATION||e===u.SPACE}l(ze,"isWhitespace");function nn(e){return e===u.LINE_FEED||e===u.CARRIAGE_RETURN}l(nn,"isEOL");function _a(e){return e>=u.LATIN_CAPITAL_A&&e<=u.LATIN_CAPITAL_Z}l(_a,"isUpperLetter");function ba(e){return e>=u.LATIN_SMALL_A&&e<=u.LATIN_SMALL_Z}l(ba,"isLowerLetter");function wa(e){return ba(e)||_a(e)}l(wa,"isLetter");function O(e){return e>=u.DIGIT_0&&e<=u.DIGIT_9}l(O,"isDigit");function on(e){return O(e)||e>=u.LATIN_SMALL_A&&e<=u.LATIN_SMALL_F||e>=u.LATIN_CAPITAL_A&&e<=u.LATIN_CAPITAL_F}l(on,"isHexDig");function Ta(e){return e>=u.DIGIT_0&&e<=u.DIGIT_7}l(Ta,"isOctalDig");function Ea(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}l(Ea,"isUnicodeScalarValue");function Sa(e,t){let r=0,n=e.length;for(;r<n;){let o=r+n>>>1,i=e[o];if(i===t)return o+1;i<t?r=o+1:n=o}return r}l(Sa,"sortedLastIndex");var Aa=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=Sa(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 Aa,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}},Ia=typeof BigInt<"u",xa={16:"0x",10:"",8:"0o",2:"0b"},hn={[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},La={...hn,[u.LATIN_SMALL_E]:u.ESCAPE},Ca=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=fn(this.parserOptions.tomlVersion),this.ESCAPES=this.tomlVersion.gte(1,1)?La:hn}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 mn(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:o}=this,i=this.codePointIterator[t],s=[o,i],c={start:this.codePointIterator.getLocFromIndex(o),end:this.codePointIterator.getLocFromIndex(i)};if(e==="Block")this.token={type:e,value:this.text.slice(o+1,i),range:s,loc:c};else{let d,f=this.text.slice(o,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:Ia?BigInt(xa[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(;ze(e)||nn(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(O(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(an(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=>{Oa(r)||this.reportParseError("invalid-comment-character",{cp:JSON.stringify(String.fromCodePoint(r)).slice(1,-1)})}:r=>{We(r)&&this.reportParseErrorControlChar()};for(;!nn(e)&&e!==u.EOF;)t(e),e=this.nextCode();return this.endToken("Block","start"),"DATA"}BARE(e){for(;an(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(We(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&&We(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();ze(e)||e===u.LINE_FEED;)e=this.nextCode();continue}else if(ze(e)){let n=!0,o=this.codePointIterator.start,i;for(;(i=this.nextCode())!==u.EOF&&i!==u.LINE_FEED;)if(!ze(i)){this.moveAt(o),n=!1;break}if(n){for(e=this.nextCode();ze(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(We(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&&We(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"):O(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(O(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(O(d)){let f=this.nextCode();if(O(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:o,hasUnderscore:i}=this.parseDigits(e,O);return o===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"):o===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"):o===u.LATIN_SMALL_E||o===u.LATIN_CAPITAL_E?(this.data={minus:r===u.DASH,left:n},"EXPONENT_RIGHT"):o===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,on);return this.endToken("Integer","start",String.fromCodePoint(...t),16),this.back("DATA")}OCTAL(e){let{out:t}=this.parseDigits(e,Ta);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:o}=this.parseDigits(e,O),i=[...r,u.DOT,...n];if(o===u.LATIN_SMALL_E||o===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:o}=this.parseDigits(e,O),i=o;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(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(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(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;if(n.day=Number(this.text.slice(t,r)),!ka(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(O(this.nextCode())&&O(this.nextCode()))return this.moveAt(i),"TIME_HOUR";this.moveAt(i)}let o=Je(n,"");return this.endToken("LocalDate","start",o),this.back("DATA")}TIME_HOUR(e){let t=this.codePointIterator.start;if(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(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(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(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"):ir(n.hour,n.minute,n.second)?this.processTimeEnd(e,n):this.reportParseError("invalid-time")}TIME_SECOND(e){let t=this.codePointIterator.start;if(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;return n.second=Number(this.text.slice(t,r)),ir(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(!O(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;for(;O(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 o=Je(t,"Z");return this.endToken("OffsetDateTime","end",o),"DATA"}let n=Je(t,"");return this.endToken("LocalDateTime","start",n),this.back("DATA")}let r=Je(t,"");return this.endToken("LocalTime","start",r),this.back("DATA")}TIME_OFFSET(e){if(!O(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;if(e=this.nextCode(),!O(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(!O(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!O(e))return this.reportParseError("unexpected-char");let o=this.codePointIterator.end,i=Number(this.text.slice(t,r)),s=Number(this.text.slice(n,o));if(!ir(i,s,0))return this.reportParseError("invalid-time");let c=this.data,d=Je(c,`${String.fromCodePoint(c.offsetSign)}${ye(i,2)}:${ye(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,o=!1;for(;t(e)||e===u.UNDERSCORE;){if(e===u.UNDERSCORE){if(o=!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:o}}parseUnicode(e){let t=this.codePointIterator.start,r=this.codePointIterator.end,n=0,o;for(;(o=this.nextCode())!==u.EOF;){if(!on(o))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 Ea(c)?c:this.reportParseError("invalid-code-point",{cp:s})}reportParseErrorControlChar(){return this.reportParseError("invalid-control-character")}};function an(e,t){return wa(e)||O(e)||e===u.UNDERSCORE||e===u.DASH?!0:(t.lt(1,1),!1)}l(an,"isUnquotedKeyChar");function We(e){return ya(e)&&e!==u.TABULATION||e===u.DELETE}l(We,"isControlOtherThanTab");function Oa(e){return e===u.TABULATION||u.SPACE<=e&&e<=u.TILDE||Na(e)}l(Oa,"isNonEOL");function Na(e){return u.PAD<=e&&e<=u.CP_D7FF||u.CP_E000<=e&&e<=u.CP_10FFFF}l(Na,"isNonAscii");function ka(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(ka,"isValidDate");function ir(e,t,r){return!(e>=24||e<0||t>59||t<0||r>60||r<0)}l(ir,"isValidTime");function Je(e,t){let r=ye(e.year,4),n=e.month?ye(e.month,2):"01",o=e.day?ye(e.day,2):"01",i=ye(e.hour,2),s=ye(e.minute,2),c=ye(e.second,2),d=`${r}-${n}-${o}`,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(Je,"getDateFromDateTimeData");function ye(e,t){return String(e).padStart(t,"0")}l(ye,"padStart");var ur=Symbol("VALUE_KIND_VALUE"),sn=Symbol("VALUE_KIND_INTERMEDIATE"),Pa=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=dr(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],o=dr(n);e.resolvedKey.push(o);let i=t.get(o);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(o,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(o,{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(o,s),this.tables.push({node:e,keys:s.keys})}}verifyDuplicateKeys(e){for(let t of e.body)t.type==="TOMLKeyValue"&&pr(this.ctx,this.rootKeys,t);for(let{node:t,keys:r}of this.tables)for(let n of t.body)pr(this.ctx,r,n)}};function pr(e,t,r){let n=t,o=Te(r.key.keys);for(let i of r.key.keys){let s=dr(i),c=n.get(s);c?((c.value===ur||o===i||c.table)&&e.reportParseError("dupe-keys",_t(i,c.node)),c.value=sn):(o===i?c={value:ur,node:i,keys:new Map}:c={value:sn,node:i,keys:new Map},n.set(s,c)),n=c.keys}r.value.type==="TOMLInlineTable"?gn(e,n,r.value):r.value.type==="TOMLArray"&&yn(e,n,r.value)}l(pr,"verifyDuplicateKeysForKeyValue");function gn(e,t,r){for(let n of r.body)pr(e,t,n)}l(gn,"verifyDuplicateKeysForInlineTable");function yn(e,t,r){let n=t;for(let o=0;o<r.elements.length;o++){let i=r.elements[o],s=n.get(o);s?e.reportParseError("dupe-keys",_t(i,s.node)):(s={value:ur,node:i,keys:new Map},t.set(o,s),i.type==="TOMLInlineTable"?gn(e,s.keys,i):i.type==="TOMLArray"&&yn(e,s.keys,i))}}l(yn,"verifyDuplicateKeysForArray");function _t(e,t){return e.range[0]<=t.range[0]?t:e}l(_t,"getAfterNode");var Ra=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 Ca(e.text,e.parserOptions),this.topLevelTable=e.topLevelTable,this.table=e.topLevelTable,this.keysResolver=new Pa(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,o;if(t)r=t.range[0],n=t.loc.start.line,o=t.loc.start.column;else{r=this.tokenizer.start;let i=this.tokenizer.getLocFromIndex(r);n=i.line,o=i.column}throw new mn(e,r,n,o)}},cn={VALUE:"missing-value"},Ma={BasicString:"basic",MultiLineBasicString:"basic",LiteralString:"literal",MultiLineLiteralString:"literal"},Da={BasicString:"basic",LiteralString:"literal"},Ua={OffsetDateTime:"offset-date-time",LocalDateTime:"local-date-time",LocalDate:"local-date",LocalTime:"local-time"},ja=class{static{l(this,"TOMLParser")}constructor(e,t){this.text=e,this.parserOptions=t||{},this.tomlVersion=fn(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:H(e.range),loc:z(e.loc)};e.body=[t];let r=new Ra({text:this.text,parserOptions:this.parserOptions,topLevelTable:t}),n=r.nextToken();if(n){for(t.range[0]=n.range[0],t.loc.start=wt(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 cn)return r.reportParseError(cn[s],null);r.table.type==="TOMLTable"&&ae(r.table,Te(r.table.body)),ae(t,Te(t.body))}r.verifyDuplicateKeys(),e.tokens=r.tokens,e.comments=r.comments;let o=r.tokenizer.end,i=r.tokenizer.getLocFromIndex(o);return e.range[1]=o,e.loc.end={line:i.line,column:i.column},e}TABLE(e,t){return yt(e)||Xe(e)?this.processKeyValue(e,t.table,t):cr(e)?this.processTable(e,t.topLevelTable,t):t.reportParseError("unexpected-token",e)}VALUE(e,t){return Xe(e)||un(e)?this.processStringValue(e,t):Ba(e)?this.processNumberValue(e,t):Va(e)?this.processBooleanValue(e,t):$a(e)?this.processDateTimeValue(e,t):cr(e)?this.processArray(e,t):Fa(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:H(e.range),loc:z(e.loc)};r.table.type==="TOMLTable"&&ae(r.table,Te(r.table.body)),t.body.push(n),r.table=n;let o=r.nextToken({needSameLine:"invalid-key-value-newline"});if(cr(o)){if(e.range[1]<o.range[0])return r.reportParseError("invalid-space",o);n.kind="array",o=r.nextToken({needSameLine:"invalid-key-value-newline"})}if(qe(o))return r.reportParseError("missing-key",o);if(!o)return r.reportParseError("unterminated-table-key",null);if(o=this.processKeyNode(o,n,r).nextToken,!qe(o))return r.reportParseError("unterminated-table-key",o);if(n.kind==="array"){let i=o;if(o=r.nextToken({needSameLine:"invalid-key-value-newline"}),!qe(o))return r.reportParseError("unterminated-table-key",o);if(i.range[1]<o.range[0])return r.reportParseError("invalid-space",o)}return ae(n,o),r.applyResolveKeyForTable(n),r.needNewLine=!0,[]}processKeyValue(e,t,r){let n={type:"TOMLKeyValue",key:null,value:null,parent:t,range:H(e.range),loc:z(e.loc)};t.body.push(n);let{nextToken:o}=this.processKeyNode(e,n,r);return ln(o)?(r.addValueContainer({parent:n,set:l(i=>(n.value=i,ae(n,i),r.needNewLine=!0,[]),"set")}),r.needSameLine="invalid-key-value-newline",["VALUE"]):r.reportParseError("missing-equals-sign",o)}processKeyNode(e,t,r){sr(e)&&r.reportParseError("invalid-leading-dot-in-key",e);let n={type:"TOMLKey",keys:[],parent:t,range:H(e.range),loc:z(e.loc)};t.key=n;let o=e,i=null;do{if(yt(o))this.processBareKey(o,n);else if(Xe(o))this.processStringKey(o,n);else break;if(i=null,o=r.nextToken({needSameLine:"invalid-key-value-newline"}),!sr(o))break;i=o,o=r.nextToken({needSameLine:"invalid-key-value-newline"})}while(o);return i&&r.reportParseError(sr(o)?"invalid-consecutive-dots-in-key":"invalid-trailing-dot-in-key",i),ae(n,Te(n.keys)),{keyNode:n,nextToken:o}}processBareKey(e,t){let r={type:"TOMLBare",name:e.value,parent:t,range:H(e.range),loc:z(e.loc)};t.keys.push(r)}processStringKey(e,t){let r={type:"TOMLQuoted",kind:"string",value:e.string,style:Da[e.type],multiline:!1,parent:t,range:H(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:Ma[e.type],multiline:un(e),parent:r.parent,range:H(e.range),loc:z(e.loc)};return r.set(n)}processNumberValue(e,t){let r=t.consumeValueContainer(),n=this.text,[o,i]=e.range,s=null,c=l(()=>s??(s=n.slice(o,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:H(e.range),loc:z(e.loc)}:d={type:"TOMLValue",kind:"float",value:e.number,get number(){return c()},parent:r.parent,range:H(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:H(e.range),loc:z(e.loc)};return r.set(n)}processDateTimeValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:Ua[e.type],value:e.date,datetime:e.value,parent:r.parent,range:H(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:H(e.range),loc:z(e.loc)},o=t.nextToken({valuesEnabled:!0});return qe(o)?(ae(n,o),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 o=r.nextToken({valuesEnabled:!0}),i=dn(o);return i&&(o=r.nextToken({valuesEnabled:!0})),qe(o)?(ae(e,o),t.set(e)):i?(r.backToken(),this.processArrayValue(e,t,r)):r.reportParseError(o?"missing-comma":"unterminated-array",o)},"set")}),["VALUE"]}processInlineTable(e,t){let r=t.consumeValueContainer(),n={type:"TOMLInlineTable",body:[],parent:r.parent,range:H(e.range),loc:z(e.loc)},o=this.tomlVersion.gte(1,1)?void 0:"invalid-inline-table-newline",i=t.nextToken({needSameLine:o});if(i){if(yt(i)||Xe(i))return this.processInlineTableKeyValue(i,n,r,t);if(lr(i))return ae(n,i),r.set(n)}return t.reportParseError("unexpected-token",i)}processInlineTableKeyValue(e,t,r,n){let o={type:"TOMLKeyValue",key:null,value:null,parent:t,range:H(e.range),loc:z(e.loc)};t.body.push(o);let{nextToken:i}=this.processKeyNode(e,o,n);if(!ln(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:o,set:l(c=>{o.value=c,ae(o,c);let d=n.nextToken({needSameLine:s});if(dn(d)){if(d=n.nextToken({needSameLine:s}),d&&(yt(d)||Xe(d)))return this.processInlineTableKeyValue(d,t,r,n);if(lr(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 lr(d)?(ae(t,d),r.set(t)):n.reportParseError(d?"missing-comma":"unterminated-inline-table",d)},"set")}),n.needSameLine="invalid-key-value-newline",["VALUE"]}};function sr(e){return Ee(e)&&e.value==="."}l(sr,"isDot");function ln(e){return Ee(e)&&e.value==="="}l(ln,"isEq");function cr(e){return Ee(e)&&e.value==="["}l(cr,"isLeftBracket");function qe(e){return Ee(e)&&e.value==="]"}l(qe,"isRightBracket");function Fa(e){return Ee(e)&&e.value==="{"}l(Fa,"isLeftBrace");function lr(e){return Ee(e)&&e.value==="}"}l(lr,"isRightBrace");function dn(e){return Ee(e)&&e.value===","}l(dn,"isComma");function Ee(e){return!!(e&&e.type==="Punctuator")}l(Ee,"isPunctuator");function yt(e){return e.type==="Bare"}l(yt,"isBare");function Xe(e){return e.type==="BasicString"||e.type==="LiteralString"}l(Xe,"isString");function un(e){return e.type==="MultiLineBasicString"||e.type==="MultiLineLiteralString"}l(un,"isMultiLineString");function Ba(e){return e.type==="Integer"||e.type==="Float"}l(Ba,"isNumber");function Va(e){return e.type==="Boolean"}l(Va,"isBoolean");function $a(e){return e.type==="OffsetDateTime"||e.type==="LocalDateTime"||e.type==="LocalDate"||e.type==="LocalTime"}l($a,"isDateTime");function ae(e,t){t&&(e.range[1]=t.range[1],e.loc.end=wt(t.loc.end))}l(ae,"applyEndLoc");function H(e){return[e[0],e[1]]}l(H,"cloneRange");function z(e){return{start:wt(e.start),end:wt(e.end)}}l(z,"cloneLoc");function wt(e){return{line:e.line,column:e.column}}l(wt,"clonePos");var Ga={Program:["body"],TOMLTopLevelTable:["body"],TOMLTable:["key","body"],TOMLKeyValue:["key","value"],TOMLKey:["keys"],TOMLArray:["elements"],TOMLInlineTable:["body"],TOMLBare:[],TOMLQuoted:[],TOMLValue:[]},Ka=en(Ga);function Ha(e,t){return{ast:new ja(e,t).parse(),visitorKeys:Ka,services:{isTOML:!0}}}l(Ha,"parseForESLint");var fr=za(e=>e.value);function za(e){function t(n,o){return r[n.type](n,o)}l(t,"resolveValue");let r={Program(n,o={}){return t(n.body[0],o)},TOMLTopLevelTable(n,o={}){for(let i of n.body)t(i,o);return o},TOMLKeyValue(n,o={}){let i=t(n.value);return Ja(o,t(n.key),i),o},TOMLTable(n,o={}){let i=Wa(o,t(n.key),n.kind==="array");for(let s of n.body)t(s,i);return o},TOMLArray(n){return n.elements.map(o=>t(o))},TOMLInlineTable(n){let o={};for(let i of n.body)t(i,o);return o},TOMLKey(n){return n.keys.map(o=>t(o))},TOMLBare(n){return n.name},TOMLQuoted(n){return n.value},TOMLValue(n){return e(n)}};return n=>t(n)}l(za,"generateConvertTOMLValue");function Wa(e,t,r){let n=e;for(let d=0;d<t.length-1;d++){let f=t[d];n=c(n,f)}let o=Te(t),i=n[o];if(i==null){let d={};return n[o]=r?[d]:d,d}if(bt(i)){let d={};return n[o]=r?[d]:d,d}if(!r){if(Array.isArray(i)){let d={};return n[o]=d,d}return i}if(Array.isArray(i)){let d={};return i.push(d),d}let s={};return n[o]=[s],s;function c(d,f){let p=d[f];if(p==null){let m={};return d[f]=m,m}if(bt(p)){let m={};return d[f]=m,m}let g=p;for(;Array.isArray(g);){let m=g.length-1,h=g[m];if(bt(h)){let b={};return g[m]=b,b}g=h}return g}l(c,"getNextTargetFromKey")}l(Wa,"getTable");function Ja(e,t,r){let n=e;for(let o=0;o<t.length-1;o++){let i=t[o],s=n[i];if(s==null){let c={};n[i]=c,n=c}else if(bt(s)||Array.isArray(s)){let c={};n[i]=c,n=c}else n=s}n[Te(t)]=r}l(Ja,"set");function bt(e){return typeof e!="object"||e instanceof Date}l(bt,"isValue");function _n(e,t){return Ha(e,t).ast}l(_n,"parseTOML");function re(e,t){try{let r=_n(e,{tomlVersion:"1.0"}),n=fr(r);return Tn(n),{ast:r,value:n}}catch(r){let n=r;throw new _({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(re,"parseToml");function Tn(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");Tn(r)}}l(Tn,"assertJsonValue");function _e(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(_e).join(", ")}]`;if(ce(e))return`{ ${Object.entries(e).filter(([,t])=>t!==void 0).map(([t,r])=>`${Se(t)} = ${_e(r)}`).join(", ")} }`;throw new Error("Configuration cannot contain null or unsupported values.")}l(_e,"tomlValue");var Se=l(e=>/^[A-Za-z0-9_-]+$/.test(e)?e:JSON.stringify(e),"tomlKey"),bn=l(e=>e.keys.map(t=>t.type==="TOMLBare"?t.name:t.value),"keyPath"),qa=l((e,t)=>e.length===t.length&&e.every((r,n)=>r===t[n]),"samePath"),Tt=l((e,t)=>e.length<=t.length&&e.every((r,n)=>r===t[n]),"prefix");function ce(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof Date)}l(ce,"isRecord");function Qe(e,t,r){let n=e;for(let o of t)n=En(n,o,r);return re(n,r),n.endsWith(`
24
- `)?n:`${n}
25
- `}l(Qe,"editToml");function En(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}=re(e,r),o=[],i=[];for(let m of n.body[0].body)if(m.type==="TOMLKeyValue")o.push({path:bn(m.key),node:m});else{if(i.push(m),m.kind!=="standard")continue;for(let h of m.body)o.push({path:[...m.resolvedKey.map(String),...bn(h.key)],node:h})}let s=o.find(m=>qa(m.path,t.path));if(s){let m=s.node;if(t.op==="set")return Et(e,m.value.range,wn(e,n,m.value.range,_e(t.value)));let h=n.comments.filter(b=>b.range[0]>=m.range[0]&&b.range[1]<=m.range[1]).map(b=>e.slice(...b.range)).join(`
26
- `);return Et(e,m.range,h)}let c=o.find(m=>Tt(m.path,t.path));if(c){let m=structuredClone(fr(c.node.value));if(!ce(m))throw new Error("Cannot edit a key below a scalar or array.");return Xa(m,{...t,path:t.path.slice(c.path.length)}),Et(e,c.node.value.range,wn(e,n,c.node.value.range,_e(m)))}let d=o.filter(m=>Tt(t.path,m.path)),f=i.filter(m=>Tt(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((b,w)=>w[0]-b[0])){let b=n.comments.filter(w=>w.range[0]>=h[0]&&w.range[1]<=h[1]).map(w=>e.slice(...w.range)).join(`
27
- `);e=Et(e,h,b)}return t.op==="unset"?e:En(e,t,r)}if(t.op==="unset")return e;if(ce(t.value)&&!("mode"in t.value)&&!("source"in t.value)&&!("provider_id"in t.value))return`${e.replace(/\n?$/,`
28
- `)}
29
- ${mr(t.value,t.path)}`;let p=i.filter(m=>m.kind==="standard"&&Tt(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(Se).join("."),b=i.find(w=>w.range[0]>p.range[0])?.range[0]??e.length;return`${e.slice(0,b).replace(/\n?$/,`
30
- `)}${m} = ${_e(t.value)}
31
- ${e.slice(b)}`}if(t.path.length===1){let m=i[0]?.range[0]??e.length;return`${e.slice(0,m).replace(/\n?$/,`
32
- `)}${Se(t.path[0])} = ${_e(t.value)}
33
- ${e.slice(m)}`}let g=t.path.slice(0,-1).map(Se).join(".");return`${e.replace(/\n?$/,`
34
- `)}
35
- [${g}]
36
- ${Se(t.path.at(-1))} = ${_e(t.value)}
37
- `}l(En,"editOne");function Et(e,t,r){return e.slice(0,t[0])+r+e.slice(t[1])}l(Et,"replace");function wn(e,t,r,n){if(t.comments.filter(i=>i.range[0]>=r[0]&&i.range[1]<=r[1]).length)throw new _({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(wn,"preserveInnerComments");function Xa(e,t){let r=e;for(let o of t.path.slice(0,-1)){if(["__proto__","prototype","constructor"].includes(o))throw new Error("Reserved key");ce(r[o])||(r[o]={}),r=r[o]}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(Xa,"applyObjectOperation");function ie(e,t,r=[]){let n=[];for(let o of new Set([...Object.keys(e),...Object.keys(t)])){let i=e[o],s=t[o];if(JSON.stringify(i)===JSON.stringify(s))continue;let c=[...r,o];s===void 0?n.push({op:"unset",path:c}):ce(i)&&ce(s)&&!("mode"in s)&&!("source"in s)&&!("provider_id"in s)?n.push(...ie(i,s,c)):n.push({op:"set",path:c,value:s})}return n}l(ie,"diffConfig");function mr(e,t){let r=[],n=[];for(let[o,i]of Object.entries(e))i!==void 0&&(ce(i)&&!("mode"in i)&&!("source"in i)&&!("provider_id"in i)?n.push(mr(i,[...t,o])):r.push(`${Se(o)} = ${_e(i)}`));return[...t.length?[`[${t.map(Se).join(".")}]`]:[],...r].join(`
38
- `)+`
39
- `+(n.length?`
40
- `+n.join(`
41
- `):"")}l(mr,"renderTable");function Ya(e){let t=mr(e,[]);return re(t,"config.toml"),t}l(Ya,"serializeConfig");function gr(e,t="config.toml",r="user"){return oe(re(e,t).value,r)}l(gr,"validateConfigText");async function St(e,t){if(t===null)return;try{gr(t)}catch{return}let r=Ne.join(e,"backups","config"),n=Ne.join(r,`${$(t)}.toml`);await E(n)===null&&await I(n,t);let o=await Qa(e);for(let i of o.slice(32))await hr.rm(Ne.join(r,`${i.revision}.toml`))}l(St,"rememberValidConfig");async function Qa(e){let t=Ne.join(e,"backups","config"),r=await hr.readdir(t).catch(o=>{if(R(o))return[];throw o}),n=[];for(let o of r){if(!/^[a-f0-9]{64}\.toml$/.test(o))continue;let i=Ne.join(t,o),s=await E(i);if(!(!s||$(s)!==o.slice(0,-5))){try{gr(s,i)}catch{continue}n.push({revision:o.slice(0,-5),createdAt:(await hr.stat(i)).mtime.toISOString()})}}return n.sort((o,i)=>i.createdAt.localeCompare(o.createdAt))}l(Qa,"configRecoveryRevisions");async function Za(e,t,r){let n=y(e).config;return gr(r,n),x(n,async()=>{let o=await E(n);if(o){let i;try{i=re(o,n).value}catch{}if(i&&typeof i=="object"&&"schema_version"in i&&typeof i.schema_version=="number"&&i.schema_version>1)throw new _({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($(o)!==t)throw new _({code:"CONFIG_CONFLICT",path:n,message:"Configuration changed since you opened it.",action:"Reload the file before saving."});if(await St(e,o),$(await E(n))!==t)throw new _({code:"CONFIG_CONFLICT",path:n,message:"Configuration changed while saving.",action:"Reload the file before saving."});return await I(n,r),{rawRevision:$(r)}})}l(Za,"replaceConfigText");async function xc(e,t,r){if(!/^[a-f0-9]{64}$/.test(t))throw new Error("Invalid configuration revision.");let n=Ne.join(e,"backups","config",`${t}.toml`),o=await E(n);if(!o||$(o)!==t)throw new _({code:"INVALID_CONFIG_BACKUP",path:n,message:"This configuration backup is unavailable or changed.",action:"Select another verified revision."});return Za(e,r,o)}l(xc,"restoreConfigRevision");function Lc(){return a.toJSONSchema(ar)}l(Lc,"configEditorSchema");import{realpathSync as ei,watch as ti}from"node:fs";import ri from"node:path";async function L(e=Mr(),t={}){let r=t.path??y(e).config,n=await E(r);return{path:r,rawRevision:$(n),document:At(n===null?{schema_version:1}:re(n,r).value,r,t.scope)}}l(L,"readConfig");function At(e,t,r){try{return oe(e,r)}catch(n){let o=n instanceof a.ZodError?n.issues.map(i=>`${i.path.join(".")||"config"}: ${i.message}`).join("; "):n instanceof Error?n.message:"Invalid configuration";throw new _({code:"INVALID_CONFIG",path:t,message:o,action:"Open the configuration file and correct the indicated setting."},{cause:n})}}l(At,"validate");async function Bc(e,t,r,n={}){let o=n.path??y(e).config;return x(o,async()=>{let i=await E(o);if($(i)!==t||(await L(e,n)).rawRevision!==t)throw ke(o);let c=Qe(i??`schema_version = 1
42
- `,r,o),d=At(re(c,o).value,o,n.scope);if($(await E(o))!==t)throw ke(o);return c!==i&&(await St(e,i),await I(o,c)),{path:o,rawRevision:$(c),document:d}})}l(Bc,"patchConfig");async function W(e,t,r){let n=y(e).config;return x(n,async()=>{let o=await L(e);if(r!==void 0&&o.rawRevision!==r)throw ke(n);let i=At(await t(structuredClone(o.document)),n),s=ie(o.document,i);if(!s.length)return o;let c=await E(n);if($(c)!==o.rawRevision)throw ke(n);let d=Qe(c??`schema_version = 1
43
- `,s,n);if(At(re(d,n).value,n),$(await E(n))!==o.rawRevision)throw ke(n);return await St(e,c),await I(n,d),{path:n,rawRevision:$(d),document:i}})}l(W,"updateConfig");function ke(e){return new _({code:"CONFIG_CONFLICT",path:e,message:"Configuration changed since this edit began.",action:"Reload the latest settings and apply your change again."})}l(ke,"conflict");function vt(e,t){return Sn(e,t)}l(vt,"mergeConfig");function Sn(e,t){let r={...e};for(let[n,o]of Object.entries(t))o!==void 0&&(ce(o)&&ce(r[n])&&!("mode"in o)&&!("source"in o)&&!("provider_id"in o)?r[n]=Sn(r[n],o):r[n]=structuredClone(o));return r}l(Sn,"mergeTable");function Vc(e,t){let r,n=ti(ei.native(ri.dirname(y(e).config)),{persistent:!1},(o,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(Vc,"watchConfig");var Hc=["sidebarWidth","diffPanelWidth","sidebarSectionsCollapsed"],An=l(e=>({provider_id:e.providerId,model_id:e.modelId}),"modelToConfig"),It=l(e=>({providerId:e.provider_id,modelId:e.model_id}),"modelFromConfig"),yr=l(e=>e?{mode:"custom",ref:An(e)}:{mode:"inherit"},"modelOverride");function Ae(e){let t=Z.parse(e);return{schema_version:1,chat:{model:An(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:yr(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:yr(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:yr(r.modelRef),isolation_mode:r.isolationMode,max_concurrent_runs:r.maxConcurrentRuns,tool_policy:r.toolPolicy,background:r.background,peer_messages:r.peerMessages}]))}}}l(Ae,"preferencesToConfig");function Ze(e,t={}){let r=Z.parse({}),n=e.chat?.model?It(e.chat.model):{providerId:r.defaultChatProvider,modelId:r.defaultChatModel},o=e.subagents,i=new Map(r.subagents.roles.map(s=>[s.id,s]));for(let[s,c]of Object.entries(o?.roles??{})){let d=i.get(s);i.set(s,{id:s,enabled:c.enabled??d?.enabled??!0,modelRef:c.model?c.model.mode==="custom"?It(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 Z.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"?It(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:o?.enabled??r.subagents.enabled,delegationMode:o?.delegation_mode??r.subagents.delegationMode,defaultModelRef:o?.default_model?.mode==="custom"?It(o.default_model.ref):null,roles:[...i.values()],maxConcurrentRuns:o?.max_concurrent_runs??r.subagents.maxConcurrentRuns,maxConcurrentRunsPerProvider:o?.max_concurrent_runs_per_provider==="unlimited"?null:o?.max_concurrent_runs_per_provider??r.subagents.maxConcurrentRunsPerProvider,maxConcurrentRunsPerWorkspaceTarget:o?.max_concurrent_runs_per_workspace_target==="unlimited"?null:o?.max_concurrent_runs_per_workspace_target??r.subagents.maxConcurrentRunsPerWorkspaceTarget}})}l(Ze,"configToPreferences");function xt(e){return{sidebarWidth:e.sidebarWidth,diffPanelWidth:e.diffPanelWidth,sidebarSectionsCollapsed:e.sidebarSectionsCollapsed}}l(xt,"layoutPreferences");import ni from"node:path";import{existsSync as _r,promises as oi}from"node:fs";var ai="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 Lt(e,t){return x(ni.join(y(e).runtime,"cache"),async()=>{for(let r=0;;r++){let n;try{return n=D(y(e).cache),n.exec(ai),t(n)}catch(o){let i=o;if(!(o instanceof SyntaxError||i.errcode!==void 0&&[11,26].includes(i.errcode&255)||["SQLITE_CORRUPT","SQLITE_NOTADB"].includes(i.code??""))||r>0)throw o;n?.close(),n=void 0;for(let c of["-wal","-shm",""])await oi.rm(`${y(e).cache}${c}`,{force:!0})}finally{n?.close()}}})}l(Lt,"withCache");async function Zc(e,t,r,n={}){return _r(y(e).cache)?Lt(e,o=>{let i=o.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:(o.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(Zc,"readCache");async function br(e,t,r,n,o={}){let i=Date.now(),s=new Date(i).toISOString(),c=JSON.stringify(n);return await Lt(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,o.error??null,i+(o.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:o.error??null}}l(br,"writeCache");async function el(e,t){return _r(y(e).cache)?Lt(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(el,"listCache");async function tl(e,t){_r(y(e).cache)&&await Lt(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(tl,"clearCache");import{createCipheriv as ii,createDecipheriv as si,randomBytes as vn,randomUUID as ci,createHash as wr}from"node:crypto";var li=a.strictObject({owner:a.string(),revision:a.number().int().positive(),algorithm:a.literal("aes-256-gcm"),keyId:a.string(),iv:a.string(),ciphertext:a.string(),tag:a.string()}),di=a.strictObject({schemaVersion:a.literal("openpond.credentials.v1"),records:a.record(a.string(),li)});async function et(e){let t=y(e).credentials;try{return di.parse(await M(t,()=>({schemaVersion:"openpond.credentials.v1",records:{}})))}catch(r){throw r instanceof _?r:Tr(e,"The credential store has an invalid format.",r)}}l(et,"readVault");async function Ct(e,t){let r=y(e),n=await E(r.key);if(n===null&&t&&await E(r.credentials)===null){let i=vn(32);return await I(r.key,`${i.toString("base64")}
44
- `),i}let o=n?Buffer.from(n.trim(),"base64"):null;if(!o||o.length!==32)throw Tr(e,"The credential encryption key is missing or invalid.");return o}l(Ct,"readKey");function Tr(e,t,r){return new _({code:"CREDENTIAL_RECOVERY_REQUIRED",path:y(e).credentials,message:t,action:"Restore the matching credential store and key from a verified backup. Existing files have been preserved."},{cause:r})}l(Tr,"credentialError");function Er(e,t,r,n){try{if(r.owner!==t||r.keyId!==wr("sha256").update(n).digest("hex"))throw new Error("Credential ownership mismatch");let o=si("aes-256-gcm",n,Buffer.from(r.iv,"base64"));o.setAAD(Buffer.from(`${t}:${r.revision}`)),o.setAuthTag(Buffer.from(r.tag,"base64"));let i=JSON.parse(Buffer.concat([o.update(Buffer.from(r.ciphertext,"base64")),o.final()]).toString("utf8"));return{revision:r.revision,value:i}}catch(o){throw Tr(e,"A credential could not be verified or decrypted.",o)}}l(Er,"decrypt");async function Ot(e,t){let r=await et(e),n=r.records[t];return n?Er(e,t,n,await Ct(e,!1)):null}l(Ot,"readCredential");async function ll(e,t){let r=await et(e),n=Object.entries(r.records).filter(([i])=>i.startsWith(t));if(!n.length)return{};let o=await Ct(e,!1);return Object.fromEntries(n.map(([i,s])=>[i,Er(e,i,s,o)]))}l(ll,"readCredentials");async function Nt(e,t,r,n){return x(y(e).credentials,async()=>{let o=await et(e),i=o.records[t];if(n!==void 0&&n!==(i?.revision??null))throw new _({code:"CREDENTIAL_CONFLICT",path:t,message:"This credential changed or was revoked.",action:"Reload the connection before retrying."});let s=await Ct(e,!0),c=(i?.revision??0)+1,d=vn(12),f=ii("aes-256-gcm",s,d);f.setAAD(Buffer.from(`${t}:${c}`));let p=Buffer.concat([f.update(JSON.stringify(r),"utf8"),f.final()]);return o.records[t]={owner:t,revision:c,algorithm:"aes-256-gcm",keyId:wr("sha256").update(s).digest("hex"),iv:d.toString("base64"),ciphertext:p.toString("base64"),tag:f.getAuthTag().toString("base64")},await I(y(e).credentials,`${JSON.stringify(o,null,2)}
45
- `),c})}l(Nt,"writeCredential");async function In(e,t){await x(y(e).credentials,async()=>{let r=await et(e);t in r.records&&(delete r.records[t],await I(y(e).credentials,`${JSON.stringify(r,null,2)}
46
- `))})}l(In,"deleteCredential");function xn(e){return`${e}:${ci()}`}l(xn,"newCredentialId");async function Ln(e,t){let r=await et(e),n=t.some(o=>r.records[o])?await Ct(e,!1):null;return Object.fromEntries([...new Set(t)].sort().map(o=>{let i=r.records[o];if(!i||!n)return[o,null];let s=Er(e,o,i,n).value,c=o.startsWith("provider:")&&s?.source==="chatgpt_subscription"?{id:o,keyId:i.keyId,source:s.source,endpoint:s.endpoint,createdAt:s.createdAt,accountId:s.oauth?.accountId}:i;return[o,wr("sha256").update(JSON.stringify(c)).digest("hex")]}))}l(Ln,"credentialVersions");import{createHash as Cn}from"node:crypto";function On(e){return Cn("sha256").update(JSON.stringify([e.handle,e.base_url??null,e.api_base_url??null,e.chat_api_base_url??null])).digest("hex")}l(On,"credentialContext");function Pe(e,t){return`account-${Cn("sha256").update(JSON.stringify([e.trim().toLowerCase(),t?.trim().replace(/\/$/,"")??""])).digest("hex").slice(0,24)}`}l(Pe,"accountId");async function Nn(e){return x(`${y(e).runtime}/accounts`,()=>kn(e))}l(Nn,"readAccountConfiguration");async function kn(e,t){let{document:r}=t??await L(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 Ot(e,f.credential.id);if(!m)throw new _({code:"CREDENTIAL_MISSING",path:y(e).config,message:`The credential referenced by account ${d} is unavailable.`,action:"Reconnect this account or restore its credential backup."});p=m.value.context===On(f)?m.value:{}}else f.credential?.source==="env"&&(p={apiKey:process.env[f.credential.name]});let g=K(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 o=r.defaults?.account_id?r.accounts?.[r.defaults.account_id]:void 0;if(r.defaults?.account_id&&(!o||o.enabled===!1))throw new _({code:"INVALID_ACCOUNT_DEFAULT",path:y(e).config,message:"The configured default account is missing or disabled.",action:"Choose an enabled default account or remove defaults.account_id."});let i=o?{handle:o.handle,baseUrl:o.base_url}:K(e,"account_selection","last_used")?.value,s=K(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 _({code:"INVALID_PROFILE_DEFAULT",path:y(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(kn,"readUnlocked");async function Pn(e,t){return x(`${y(e).runtime}/accounts`,async()=>{let r=await L(e),n=r.document,o=await kn(e,r),i=await t(structuredClone(o)),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=Pe(p.handle,p.baseUrl);if(d.has(g))throw new _({code:"DUPLICATE_ACCOUNT",path:y(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(([,S])=>Pe(S.handle,S.base_url)===Pe(p.handle,p.baseUrl))?.[0]??Pe(p.handle,p.baseUrl),h=n.accounts?.[m],b={...p.apiKey?{apiKey:p.apiKey}:{},...p.session?.token?{token:p.session.token}:{}},w=h?.credential,N=o.accounts?.find(S=>Pe(S.handle,S.baseUrl)===Pe(p.handle,p.baseUrl));if((N?.apiKey!==p.apiKey||N?.session?.token!==p.session?.token||!w&&Object.keys(b).length)&&(w=void 0,Object.keys(b).length)){let S=xn(m);await Nt(e,S,{...b,context:On({handle:p.handle,base_url:p.baseUrl,api_base_url:p.apiBaseUrl,chat_api_base_url:p.chatApiBaseUrl})},null),w={source:"secret",id:S}}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}:{},...w?{credential:w}:{}},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),ge(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(o.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(o.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 In(e,p.credential.id);return i})}l(Pn,"updateAccountConfiguration");import{existsSync as ui,promises as pi}from"node:fs";import tt from"node:path";var Sr=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 kt(e,t){let r=tt.relative(t,e);return r===""||r!==".."&&!r.startsWith(`..${tt.sep}`)&&!tt.isAbsolute(r)}l(kt,"isWithinHome");async function Pt(e){let t=new Set,r=(await L(e)).document;function n(s){tt.isAbsolute(s)&&!kt(s,e)&&t.add(tt.normalize(s))}l(n,"add"),r.storage?.datasets_dir&&n(Ve(r.storage.datasets_dir,e)),r.personalization?.user_instructions&&n(Ve(r.personalization.user_instructions,e));function o(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)o(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)||o(f,d)}l(o,"visit");let i=y(e).database;if(ui(i)){let s=D(i,!0);try{for(let{name:c}of s.prepare("SELECT name FROM sqlite_master WHERE type='table'").all())if(Sr.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())o(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 pi.stat(s).catch(()=>null),included:!1})))}l(Pt,"externalStorageReferences");import{randomUUID as fi}from"node:crypto";import{promises as Rt,existsSync as Rn}from"node:fs";import mi from"node:os";import Re from"node:path";async function Mn(e,t,r){let n=await Rt.mkdtemp(Re.join(mi.tmpdir(),"openpond-migration-preview-")),o=`migration-preview-${fi()}`,i={schemaVersion:"openpond.migration.v1",id:o,status:"preparing",home:n,stage:Re.join(Re.dirname(n),`.${Re.basename(n)}-${o}`),backup:Re.join(n,"backups",o),files:[],installed:[],createdAt:new Date().toISOString(),sourceAppHome:t.sourceAppHome,sourceConfig:t.sourceConfig,sourceBrowserState:t.sourceBrowserState};try{try{await r(i)}catch(b){return{issues:[Rr(b,e)],counts:{},destinations:[],conflicts:[],estimatedBytes:null,credentialRecords:null}}let s=await L(i.stage),c=Rn(y(e).config)?await L(e):null,d=c?ie(c.document,s.document).map(b=>({path:b.path,choices:["imported","existing"]})):[],f=ie({schema_version:1},s.document).map(b=>({path:b.path,destination:"config.toml",operation:b.op})),p={},g=y(i.stage).database;if(Rn(g)){let b=D(g,!0);try{for(let w of b.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").all())p[w.name]=Number(b.prepare(`SELECT count(*) AS count FROM "${w.name.replaceAll('"','""')}"`).get().count)}finally{b.close()}}let m=0;for(let b of i.files)m+=(await Rt.lstat(Re.join(i.stage,b.path))).size;let h=Object.values(s.document.accounts??{}).filter(b=>b.credential?.source==="secret").length+Object.values(s.document.providers??{}).filter(b=>b.credential?.source==="secret").length;return{issues:[],counts:p,destinations:f,conflicts:d,estimatedBytes:m,credentialRecords:h,externalRoots:await Pt(i.stage),layoutVersion:1,configSchemaVersion:s.document.schema_version}}finally{await Rt.rm(i.stage,{recursive:!0,force:!0}),await Rt.rm(n,{recursive:!0,force:!0})}}l(Mn,"previewMigration");import{randomUUID as Un}from"node:crypto";import{promises as j}from"node:fs";import ve from"node:path";import{createHash as hi}from"node:crypto";import{createReadStream as gi,promises as Dn}from"node:fs";async function G(e){let t=await Dn.lstat(e),r=hi("sha256");if(t.isSymbolicLink())return r.update(`symlink:${await Dn.readlink(e)}`).digest("hex");if(!t.isFile())throw new Error(`Unsupported migration object: ${e}`);for await(let n of gi(e))r.update(n);return r.digest("hex")}l(G,"digestFile");var jn=a.string().regex(/^[a-f0-9]{64}$/),Ar=a.strictObject({schemaVersion:a.literal("openpond.artifact.v1"),sha256:jn,sizeBytes:a.number().int().nonnegative().safe(),createdAt:a.string().datetime()}),yi=`CREATE TABLE IF NOT EXISTS managed_artifact_objects (sha256 TEXT PRIMARY KEY, payload TEXT NOT NULL, orphaned_at TEXT);
47
- 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));
48
- 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);`,Mt=l((e,t)=>ve.join(e,"artifacts","objects",jn.parse(t).slice(0,2),t),"artifactPath"),Dt=l(e=>ve.join(y(e).runtime,"artifacts"),"lockPath");function Ie(e,t){return ge(e,r=>(r.exec(yi),t(r)))}l(Ie,"database");function fe(e){return new _({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(fe,"invalid");async function Fn(e){let t=D(y(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 o=Mt(e,n.sha256);try{let i=Ar.parse(JSON.parse(n.payload)),s=Ar.parse(JSON.parse(await j.readFile(`${o}.json`,"utf8"))),c=await j.lstat(o);if(!c.isFile()||i.sha256!==n.sha256||JSON.stringify(i)!==JSON.stringify(s)||c.size!==i.sizeBytes||await G(o)!==n.sha256)throw fe(o)}catch{throw fe(o)}}}l(Fn,"validateManagedArtifacts");async function Bn(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 x(Dt(e),async()=>{let r=ve.join(e,"artifacts",".staging");await U(r);let n=ve.join(r,Un());try{if("bytes"in t)await I(n,t.bytes);else{if(!(await j.lstat(t.sourceFile)).isFile())throw fe(t.sourceFile);await j.copyFile(t.sourceFile,n,j.constants.COPYFILE_EXCL);let m=await j.open(n,"r+");try{await m.sync()}finally{await m.close()}}let o=await G(n),i=(await j.stat(n)).size,s=Mt(e,o),c=`${s}.json`,d=new Date().toISOString();await U(ve.dirname(s));let f=await j.lstat(s).catch(m=>{if(R(m))return null;throw m});if(f){if(!f.isFile()||await G(s)!==o)throw fe(s)}else process.platform!=="win32"&&await j.chmod(n,256),await j.rename(n,s);let p;try{p=Ar.parse(JSON.parse(await j.readFile(c,"utf8")))}catch(m){if(!R(m))throw fe(c);p={schemaVersion:"openpond.artifact.v1",sha256:o,sizeBytes:i,createdAt:d},await I(c,JSON.stringify(p))}if(p.sha256!==o||p.sizeBytes!==i)throw fe(c);let g={owner:t.owner,sha256:o,sizeBytes:i,displayName:t.displayName,mediaType:t.mediaType,createdAt:d};return Ie(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!==o)throw new _({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(o,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,o,JSON.stringify(g)),m.exec("COMMIT")}catch(h){throw m.exec("ROLLBACK"),h}}),{...g,path:s}}finally{await j.rm(n,{force:!0})}})}l(Bn,"publishManagedArtifact");function _i(e,t){return Ie(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(_i,"artifactReference");async function Zl(e,t,r){let n=Un(),o=await x(Dt(e),async()=>{let i=_i(e,t);if(!i)throw fe(t.id);return Ie(e,s=>{s.prepare("INSERT INTO managed_artifact_pins VALUES (?, ?, ?, ?)").run(n,i.sha256,process.pid,new Date().toISOString())}),i});try{let i=Mt(e,o.sha256),s=await j.lstat(i).catch(()=>null);if(!s?.isFile()||s.size!==o.sizeBytes||await G(i)!==o.sha256)throw fe(i);return await r(i,o)}finally{Ie(e,i=>{i.prepare("DELETE FROM managed_artifact_pins WHERE id=?").run(n)})}}l(Zl,"withManagedArtifact");async function ed(e,t){await x(Dt(e),async()=>{Ie(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(ed,"releaseArtifactReference");async function td(e){return x(Dt(e),async()=>{let t=Date.now()-6048e5,r=Ie(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 fe(y(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=ve.join(e,"artifacts","objects"),o=[];for(let i of await j.readdir(n,{withFileTypes:!0}).catch(s=>{if(R(s))return[];throw s}))if(!(!i.isDirectory()||!/^[a-f0-9]{2}$/.test(i.name)))for(let s of await j.readdir(ve.join(n,i.name))){if(!/^[a-f0-9]{64}$/.test(s)||!s.startsWith(i.name)||r.has(s))continue;let c=Mt(e,s),d=await j.lstat(c);!d.isFile()||d.mtimeMs>=t||(await j.rm(c),await j.rm(`${c}.json`,{force:!0}),Ie(e,f=>{f.prepare("DELETE FROM managed_artifact_objects WHERE sha256=?").run(s)}),o.push(s))}return{removed:o}})}l(td,"collectArtifactOrphans");var Ut=a.array(a.strictObject({path:a.array(a.string().min(1)).min(1),choice:a.enum(["imported","existing"])})).max(1e4);async function Vn(e,t,r=[]){let n=await L(e),o=await L(t),i=ie(n.document,o.document),s=Ut.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 _({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=Qe(await E(n.path)??`schema_version = 1
49
- `,i.filter(p=>c.get(JSON.stringify(p.path))==="imported"),n.path);oe(re(f,n.path).value),await I(o.path,f)}l(Vn,"resolveMigrationTarget");import{createHash as $n}from"node:crypto";import bi from"node:path";var vr=a.strictObject({conversations:a.record(a.string(),a.strictObject({activeTabId:a.string().nullable(),tabs:a.array(a.strictObject({id:a.string().min(1),url:a.string(),title:a.string().nullable(),faviconUrl:a.string().nullable(),lastUpdatedAt:a.number().finite()}))}))});async function Gn(e,t){await x(bi.join(y(e).runtime,"browser-metadata-import"),async()=>{let r=await E(t);if(r===null)return;let n=vr.safeParse(JSON.parse(r));if(!n.success)throw new _({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 o=`browser-import:${$n("sha256").update(t).digest("hex")}`;ge(e,i=>{i.exec("BEGIN IMMEDIATE");try{if(!i.prepare("SELECT 1 FROM client_preferences WHERE id=?").get(o)){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(o,JSON.stringify({schemaVersion:"openpond.browserMetadataImport.v1",source:t,hash:$n("sha256").update(r).digest("hex"),importedAt:new Date().toISOString()}))}i.exec("COMMIT")}catch(s){throw i.exec("ROLLBACK"),s}})})}l(Gn,"importBrowserMetadataOnce");import{randomUUID as kr}from"node:crypto";import{existsSync as de,promises as P}from"node:fs";import T from"node:path";import{backup as Ni}from"node:sqlite";import{createDecipheriv as Si,createHash as xr}from"node:crypto";import{promises as Cr}from"node:fs";import ee from"node:path";function Ir(e,t){throw new _({code:"MIGRATION_CONFLICT",path:e,message:t,action:"Resolve this source field and restart failed migration preparation. Its original backup is retained."})}l(Ir,"conflict");function rt(e,t,r,n=[]){if(!(!e||typeof e!="object"||!t||typeof t!="object")){if(Array.isArray(e)&&Array.isArray(t)){e.forEach((o,i)=>rt(o,t[i],r,[...n,String(i)]));return}for(let[o,i]of Object.entries(e))Object.hasOwn(t,o)||Ir(r,`Unmapped stored field: ${[...n,o].join(".")}`),rt(i,t[o],r,[...n,o])}}l(rt,"assertNoUnmappedFields");var wi=a.strictObject({token:a.string().optional(),appId:a.string().nullable().optional(),conversationId:a.string().nullable().optional()}),Ti=a.strictObject({handle:a.string().min(1),baseUrl:a.string().optional(),apiBaseUrl:a.string().optional(),chatApiBaseUrl:a.string().optional(),environment:a.string().optional(),apiKey:a.string().optional(),session:wi.optional()});function Kn(e,t){if(e.accounts!==void 0){let r=a.array(Ti).safeParse(e.accounts);r.success||Ir(t,`Invalid stored accounts: ${r.error.issues.map(n=>n.path.join(".")).join(", ")}`)}e.activeProfile!==void 0&&!a.strictObject({handle:a.string().min(1),baseUrl:a.string().nullable().optional()}).safeParse(e.activeProfile).success&&Ir(t,"Invalid stored active account selector.")}l(Kn,"validateImportedAccounts");function Hn(e,t){let r=Z.parse(e);rt(e,r,t);let n=Ei(e),o=Z.parse(n),i=o.defaultChatProvider==="codex"&&["codex-default","gpt-5.5"].includes(o.defaultChatModel);return{...o,defaultTeamId:o.defaultTeamId?.trim()||null,defaultNewProjectDirectory:Dr(o.defaultNewProjectDirectory.trim()),...i?{defaultChatModel:zr}:{},...i&&o.codexReasoningEffort==="medium"?{codexReasoningEffort:Zt}:{}}}l(Hn,"normalizeImportedPreferences");function Ei(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,o=n.workspaceDefaultsVersion===1,i=n.toolDefaultsVersion===1;if(o&&i)return e;let s=Array.isArray(n.roles)?n.roles.map(c=>({...c,...!o&&c.isolationMode==="copy_on_write"?{isolationMode:"none"}:{},...i?{}:{toolPolicy:"full_tools"}})):n.roles;return{...t,subagents:{...n,workspaceDefaultsVersion:1,toolDefaultsVersion:1,maxConcurrentRunsPerWorkspaceTarget:!o&&n.maxConcurrentRunsPerWorkspaceTarget===2?1:n.maxConcurrentRunsPerWorkspaceTarget,...s===void 0?{}:{roles:s}}}}l(Ei,"migrateSubagentDefaults");var be=a.string().nullable().optional(),zn=a.strictObject({version:a.literal(1),providers:a.record(a.string().min(1),a.strictObject({source:a.enum(["local_secret","env","chatgpt_subscription"]),envVar:be,ciphertext:be,iv:be,tag:be,createdAt:be,updatedAt:be,lastValidatedAt:be,lastError:be}))}),Wn=a.strictObject({accessToken:a.string().nullable(),refreshToken:a.string().min(1),expiresAt:a.number().finite(),accountId:a.string().nullable()}),Jn=a.strictObject({version:a.literal(1),activeTemplateId:a.string(),updatedAt:a.string()}),qn=a.strictObject({schemaVersion:a.literal("openpond.datasetStorageSettings.v1"),datasetStorePath:a.string().min(1),updatedAt:a.string()});function C(e,t){return new _({code:"MIGRATION_CONFLICT",path:e,message:t,action:"Open migration details, resolve this conflict, and retry. The source installation has been preserved."})}l(C,"migrationConflict");async function Xn(e,t){if(!t)return;let r=await M(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 C(t,`Unmapped account configuration field: ${s}`);Kn(r,t);let o=r.accounts;if(o!==void 0&&!Array.isArray(o))throw C(t,"The account list is invalid.");!o?.length&&(r.apiKey||r.token||r.baseUrl)&&(o=[{handle:r.activeProfile?.handle??"default",...r,session:{token:r.token,appId:r.appId,conversationId:r.conversationId}}]);let i={...r,accounts:o};await Pn(e,()=>i)}l(Xn,"importAccountConfig");async function Yn(e,t){let r=y(e).database;if(!await Cr.stat(r).catch(()=>null))return;let o=D(r),i=[];try{o.exec(jr),o.prepare("SELECT 1 FROM sqlite_master WHERE type='table' AND name='cache_entries'").get()&&(i=o.prepare("SELECT type, cache_key, payload, updated_at, error FROM cache_entries").all())}finally{o.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 Z.shape))throw C(r,`Unmapped preference field: ${m}`);let p=Hn(d,r),g=(await L(e)).document;if(f.editor&&g.editor?.language_servers&&g.editor.language_servers!==p.editor.languageServers)throw C(r,"CLI language-server configuration conflicts with saved editor settings.");if(p.defaultChatModelRef&&(p.defaultChatModelRef.providerId!==p.defaultChatProvider||p.defaultChatModelRef.modelId!==p.defaultChatModel))throw C(r,"Saved model fields disagree; select which model should be retained.");await W(e,m=>vt(m,Ae(p))),B(e,"client_preferences","global",xt(p))}else if(c.type==="local.projects"){if(!Array.isArray(d))throw C(r,"Saved projects must be an array.");for(let f of d){if(!f||typeof f.id!="string")throw C(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 br(e,c.type,c.cache_key,d,{error:c.error});else throw C(r,`Unmapped cache namespace: ${c.type}`)}let s=D(r);try{i.length&&s.exec("DELETE FROM cache_entries"),s.exec("PRAGMA wal_checkpoint(TRUNCATE)")}finally{s.close()}}l(Yn,"importPreferenceRecords");async function Qn(e,t){if(!t)return;let r=ee.join(t,"providers.json"),n=await M(r,()=>({}));for(let m of Object.keys(n))if(!["version","providers","modelCaches","catalogCache","statuses","updatedAt"].includes(m))throw C(r,`Unmapped provider field: ${m}`);let o=Jt.parse(n);rt(Object.fromEntries(Object.entries(n).filter(([m])=>m!=="catalogCache")),o,r);let i={};for(let[m,h]of Object.entries(o.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 br(e,"providers","catalog",{modelCaches:o.modelCaches,catalogCache:n.catalogCache??null});let s=ee.join(t,"provider-secrets.json"),c=await M(s,()=>null);if(c===null)return;let d=zn.safeParse(c);if(!d.success)throw C(s,"The provider vault has an unsupported version or field.");let f=d.data,p=await E(ee.join(t,"provider-secrets.key")),g=p?Buffer.from(p.trim(),"base64"):null;for(let[m,h]of Object.entries(f.providers)){let b=null,w=null;if(h.source!=="env"){if(!g||g.length!==32||!h.ciphertext||!h.iv||!h.tag)throw C(s,"The old provider credential cannot be decrypted with its saved key.");try{let v=Si("aes-256-gcm",g,Buffer.from(String(h.iv),"base64"));v.setAuthTag(Buffer.from(String(h.tag),"base64")),b=Buffer.concat([v.update(Buffer.from(String(h.ciphertext),"base64")),v.final()]).toString("utf8"),h.source==="chatgpt_subscription"&&(w=Wn.parse(JSON.parse(b)),b=null)}catch{throw C(s,"The saved provider credential failed integrity verification.")}}let N=`provider:${m}`,S={endpoint:i[m]?.base_url??null,source:h.source,value:b,oauth:w,envVar:h.envVar??null,createdAt:h.createdAt,updatedAt:h.updatedAt,lastValidatedAt:h.lastValidatedAt??null,lastError:h.lastError??null};await Nt(e,N,S,null),await W(e,v=>({...v,providers:{...v.providers,[m]:{...v.providers?.[m],credential:h.source==="env"?{source:"env",name:String(h.envVar)}:{source:"secret",id:N}}}}))}}l(Qn,"importProviderConfig");async function Zn(e,t){if(!t)return;let r=new Map;for(let h of[t,ee.join(t,"souls")]){let b=await Cr.readdir(h,{withFileTypes:!0}).catch(()=>[]);for(let w of b){if(!w.isFile()||!(h===t?/^soul-.+\.md$/i:/\.md$/i).test(w.name))continue;let N=await Cr.readFile(ee.join(h,w.name),"utf8"),S=`imported-${xr("sha256").update(N).digest("hex").slice(0,16)}`;await Lr(e,S,N),r.set(`file:${ee.relative(t,ee.join(h,w.name)).split(ee.sep).join("/")}`,{id:S,content:N})}}let n=await E(ee.join(t,"SOUL.md")),o=ee.join(t,"personalization.json"),i=await M(o,()=>null),s=i===null?null:Jn.safeParse(i);if(s&&!s.success)throw C(o,"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=He.find(h=>h.id===f),m=p?`custom:${p.id}`:g?`builtin:${g.id}`:"builtin:default";if(n?.trim()&&!p&&!g){let h=`imported-${xr("sha256").update(n).digest("hex").slice(0,16)}`;await Lr(e,h,n),m=`custom:${h}`}else if(n?.trim()&&n.trim()!==(p?.content??g?.content)?.trim()){let h=`preserved-${xr("sha256").update(n).digest("hex").slice(0,16)}`;await Lr(e,h,n)}await W(e,h=>({...h,personalization:{...h.personalization,active:m}}))}l(Zn,"importPersonalization");async function eo(e,t){if(!t)return;let r=ee.join(t,"datasets","settings.json"),n=await M(r,()=>null),o=n===null?null:qn.safeParse(n);if(o&&!o.success)throw C(r,"Dataset settings have an unsupported version or field.");let i=o?.success?o.data:{};i.datasetStorePath&&await W(e,s=>({...s,storage:{...s.storage,datasets_dir:i.datasetStorePath}})),oe((await L(e)).document)}l(eo,"importDatasetPreference");async function Lr(e,t,r){await I(ee.join(e,"instructions","imported-originals",`${t}.md`),r),await I(ee.join(e,"instructions","personalities",`${t}.md`),r.trim().slice(0,8e3))}l(Lr,"preserveImportedPersonality");import{execFile as Ai}from"node:child_process";import{promisify as vi}from"node:util";import{existsSync as jt,promises as nt}from"node:fs";import to from"node:os";import J from"node:path";var ro=vi(Ai);async function no(e,t){let r=e===J.join(to.homedir(),".openpond-nightly"),n=J.join(to.homedir(),".openpond"),o=["openpond-app-dev","openpond-app-nightly-dev"].some(g=>e===J.join(n,g)),i=r||o?n:e,s=(o?[e]:[e,J.join(i,r?"openpond-app-nightly":"openpond-app")]).filter(g=>jt(J.join(g,"state.sqlite"))||jt(J.join(g,"providers.json"))),c=[...new Set([J.join(i,"config.json"),J.join(e,"config","config.json")])].filter(jt),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&&!jt(g))throw new _({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(no,"discoverMigrationSources");async function ot(e,t){let r=[e?J.join(e,"state.sqlite"):null,t].filter(o=>!!o);if(!r.length)return;let n=l(()=>new _({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 o of await nt.readdir("/proc"))if(!(!/^\d+$/.test(o)||Number(o)===process.pid))try{let i=`/proc/${o}/fd`;for(let s of await nt.readdir(i)){let c=await nt.readlink(J.join(i,s)).catch(d=>{if(R(d))return"";throw d});if(r.some(d=>c===d||c===`${d}-wal`||c===`${d}-shm`))throw n()}}catch(i){if(i instanceof _)throw i;if(R(i))continue;if(["EACCES","EPERM"].includes(i.code??"")){let s=await nt.stat(`/proc/${o}`).catch(c=>{if(R(c))return null;throw c});if(s&&s.uid===process.getuid?.()){let c=await nt.readFile(`/proc/${o}/cmdline`,"utf8").catch(p=>{if(R(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 _({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 ro("/usr/sbin/lsof",["-F","p","--",...r],{maxBuffer:1e6})).stdout.split(`
50
- `).some(i=>/^p\d+$/.test(i)&&Number(i.slice(1))!==process.pid))throw n()}catch(o){if(o instanceof _)throw o;if(o.code!==1)throw new _({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 o="Get-CimInstance Win32_Process | Select-Object ProcessId,CommandLine | ConvertTo-Json -Compress";try{let{stdout:i}=await ro("powershell.exe",["-NoProfile","-NonInteractive","-Command",o],{maxBuffer:4e6,env:Ur()}),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 _?i:new _({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 _({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(ot,"assertMigrationSourcesStopped");import{randomUUID as Ii}from"node:crypto";import{promises as q}from"node:fs";import X from"node:path";var oo=a.string().min(1).refine(e=>!X.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),xi=a.strictObject({path:oo,sha256:a.string().regex(/^[a-f0-9]{64}$/),executable:a.boolean().optional()}),ao=a.strictObject({schemaVersion:a.literal("openpond.migration.v1"),id:a.string().regex(/^migration-[A-Za-z0-9-]+$/),status:a.enum(["preparing","prepared","installing","committed","verified","failed"]),home:a.string(),stage:a.string(),backup:a.string(),files:a.array(xi),installed:a.array(oo),sourceAppHome:a.string().optional(),sourceConfig:a.string().optional(),sourceBrowserState:a.string().optional(),resolutions:Ut.optional(),snapshotComplete:a.boolean().optional(),error:a.string().optional(),createdAt:a.string()}),Ft={schemaVersion:"openpond.storage.v1",version:1};async function Me(e){let t=X.join(y(e).runtime,"migration.json"),r=await M(t,()=>null);if(r===null)return null;let n=ao.safeParse(r);if(!n.success)throw Or(t);let o=n.data,i=X.resolve(e);if(o.home!==i||o.stage!==X.join(X.dirname(i),`.${X.basename(i)}-${o.id}`)||o.backup!==X.join(i,"backups",o.id))throw Or(t);let s=new Set(o.files.map(c=>c.path));if(s.size!==o.files.length||o.installed.some(c=>!s.has(c))||o.files.some(c=>/^(runtime|backups)([\\/]|$)/.test(c.path)||c.path==="storage.json"))throw Or(t);return o}l(Me,"readMigrationJournal");function Or(e){return new _({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(Or,"invalidJournal");async function le(e){ao.parse(e),await I(X.join(y(e.home).runtime,"migration.json"),`${JSON.stringify(e,null,2)}
51
- `)}l(le,"saveMigrationJournal");async function at(e,t=e){let r=[];for(let n of await q.readdir(t,{withFileTypes:!0})){let o=X.join(t,n.name);n.isDirectory()?r.push(...await at(e,o)):r.push({path:X.relative(e,o),sha256:await G(o),executable:!!((await q.lstat(o)).mode&64)})}return r.sort((n,o)=>n.path.localeCompare(o.path))}l(at,"fileReceipts");async function Y(e,t){let r=await q.lstat(e),n=await q.lstat(t).catch(o=>{if(R(o))return null;throw o});if(r.isDirectory()){if(n&&!n.isDirectory())throw new Error(`Backup path is not a directory: ${t}`);await U(t);for(let o of await q.readdir(e))await Y(X.join(e,o),X.join(t,o));return}if(n){if(await G(e)!==await G(t))throw new _({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 U(X.dirname(t)),r.isSymbolicLink())await q.symlink(await q.readlink(e),t);else{let o=`${t}.${Ii()}.snapshot`;try{await q.copyFile(e,o,q.constants.COPYFILE_EXCL),await q.chmod(o,r.mode&64?448:384);let i=await q.open(o,"r+");try{await i.sync()}finally{await i.close()}if(await q.link(o,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(o,{force:!0})}}}l(Y,"snapshotCopy");import{existsSync as io}from"node:fs";import De from"node:path";var Li="CREATE TABLE IF NOT EXISTS storage_path_relocations (source TEXT PRIMARY KEY, destination TEXT NOT NULL)";function Bt(e,t){let r=y(e).database;if(!io(r))return;let n=[...t].sort((d,f)=>f.from.length-d.from.length);function o(d){if(!De.isAbsolute(d))return d;let f=n.find(p=>kt(d,p.from));return f?De.join(f.to,De.relative(f.from,d)):d}l(o,"rebase");function i(d,f=""){return typeof d=="string"&&/(?:path|directory|root|cwd)$/i.test(f)?o(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=D(r);try{c.exec("BEGIN IMMEDIATE"),c.exec(Li);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(o(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(Sr.has(d)){let f=c.prepare(`PRAGMA table_info(${s(d)})`).all(),p=f.filter(h=>h.pk).sort((h,b)=>h.pk-b.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 b of g){let w=h[b.name];if(typeof w!="string")continue;let N=b.name==="payload"?JSON.stringify(i(JSON.parse(w))):o(w);w!==N&&c.prepare(`UPDATE ${s(d)} SET ${s(b.name)}=? WHERE ${m}`).run(N,...p.map(S=>h[S.name]))}}c.exec("COMMIT; PRAGMA wal_checkpoint(TRUNCATE)")}finally{c.close()}}l(Bt,"rebaseStoragePointers");function Ci(e,t){let r=y(e).database;if(!De.isAbsolute(t)||!io(r))return t;let n=D(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=>kt(t,s.source));return i?De.join(i.destination,De.relative(i.source,t)):t}finally{n.close()}}l(Ci,"resolveStoredPath");import{existsSync as Ue,promises as it}from"node:fs";import A from"node:path";async function so(e){let t=A.join(e.backup,"app"),r=A.join(t,"refiners");if(Ue(A.join(r,"binding.json"))){let c=await M(A.join(r,"binding.json"),()=>({}));if(c.schemaVersion!=="openpond.refinerBinding.v1")throw C(r,"Unsupported Refiner binding schema.");B(e.stage,"refiner_bindings","active",c);let d=A.join(r,"transitions");if(Ue(d))for(let f of await it.readdir(d)){if(!f.endsWith(".json"))continue;let p=await M(A.join(d,f),()=>({}));if(p.schemaVersion!=="openpond.refinerTransitionReceipt.v1"||typeof p.contentHash!="string")throw C(d,"Unsupported Refiner transition schema.");B(e.stage,"refiner_transitions",p.contentHash,p)}await it.rm(A.join(e.stage,"library","refiners","binding.json"),{force:!0}),await it.rm(A.join(e.stage,"library","refiners","transitions"),{recursive:!0,force:!0})}let n=A.join(e.backup,"global","extensions");if(Ue(n)&&(await Y(n,A.join(e.stage,"library","extensions")),Ue(A.join(n,"registry.json")))){let c=await M(A.join(n,"registry.json"),()=>({}));if(c.schemaVersion!==1||!Array.isArray(c.extensions))throw C(n,"Unsupported extension registry schema.");B(e.stage,"extension_installations","registry",c),await it.rm(A.join(e.stage,"library","extensions","registry.json"),{force:!0})}let o=A.join(e.backup,"global","profiles");if(Ue(o)){await Y(o,A.join(e.stage,"library","profiles"));let c=K(e.stage,"profile_installations","library"),d=e.sourceConfig?A.join(A.dirname(e.sourceConfig),"profiles"):null;if(c&&d){let f=l(g=>({...g,...typeof g.repoPath=="string"&&Oi(g.repoPath,d)?{repoPath:A.join(e.home,"library","profiles",A.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=A.join(e.backup,"browser-sidebar-state.json"),d=vr.safeParse(await M(c,()=>null));if(!d.success)throw C(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:A.join(e.sourceAppHome,c),to:A.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:A.join(A.dirname(e.sourceConfig),c),to:A.join(e.home,"library",c)});Bt(e.stage,i);let s=A.join(e.stage,"attachments");Ue(s)&&await co(e.stage,s,[])}l(so,"importAdditionalDomains");function Oi(e,t){let r=A.relative(t,e);return r===""||!r.startsWith(`..${A.sep}`)&&r!==".."&&!A.isAbsolute(r)}l(Oi,"within");async function co(e,t,r){for(let n of await it.readdir(t,{withFileTypes:!0})){let o=A.join(t,n.name),i=[...r,n.name];if(n.isDirectory())await co(e,o,i);else if(n.isFile()&&i.length>=3){let s=i.slice(2).join("/");await Bn(e,{owner:{domain:"chat_attachment",id:JSON.stringify([i[0],i[1],s])},displayName:n.name,mediaType:"application/octet-stream",sourceFile:o})}else throw C(o,"Attachment storage contains an unsupported file or symbolic link.")}}l(co,"importAttachments");var ki=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"]),Pi=new Set(["cache","logs","diagnostics","backups","runtime"]);async function uo(e,t={}){e=T.resolve(e),Oe(e);let r=await M(y(e).marker,()=>null),n=await Me(e);if(r&&(lo(r,e),!n||n.status==="verified"))return t.sourceBrowserState&&!t.dryRun&&await Gn(e,t.sourceBrowserState),je(e,"current",n);if(n&&!t.dryRun)return Di(e);let o=await no(e,t),{issues:i,sourceCandidates:s,...c}=o;if(t.dryRun)return{...je(e,"planned",null),sourceAppHome:c.sourceAppHome??null,sourceConfig:c.sourceConfig??null,issues:i,sourceCandidates:s,...i.length?{}:{preview:await Mn(e,c,po)}};if(i.length)throw C(e,i.map(d=>d.message).join(" "));return x(T.join(y(e).runtime,"migration-owner"),async()=>{let d=await M(y(e).marker,()=>null);if(d)return lo(d,e),je(e,"current",null);let f=await Me(e);if(f)return Nr(f);if(!c.sourceAppHome&&!c.sourceConfig&&!c.sourceBrowserState)return await U(e),await L(e),await I(y(e).marker,`${JSON.stringify({...Ft,migrationId:null},null,2)}
52
- `),je(e,"new",null);for(let m of[y(e).database,y(e).credentials])if(m&&de(m))throw C(m,"The destination already contains authoritative state. Import the previous installation into a fresh home; existing history and credentials have been preserved.");await ot(c.sourceAppHome,c.sourceConfig);let p=`migration-${new Date().toISOString().replace(/[:.]/g,"-")}-${kr().slice(0,8)}`,g={schemaVersion:"openpond.migration.v1",id:p,status:"preparing",home:e,stage:T.join(T.dirname(e),`.${T.basename(e)}-${p}`),backup:T.join(e,"backups",p),files:[],installed:[],...c,resolutions:t.resolutions,createdAt:new Date().toISOString()};return await le(g),Nr(g)})}l(uo,"initializeHome");function lo(e,t){if(e.version!==1||e.schemaVersion!==Ft.schemaVersion)throw new _({code:"UNSUPPORTED_STORAGE_VERSION",path:y(t).marker,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}l(lo,"assertLayout");async function Ri(e){if(!e.snapshotComplete){if(await ot(e.sourceAppHome,e.sourceConfig),await U(e.backup),e.sourceConfig){await Y(e.sourceConfig,T.join(e.backup,"config.json"));for(let t of["extensions","profiles"]){let r=T.join(T.dirname(e.sourceConfig),t);de(r)&&await Y(r,T.join(e.backup,"global",t))}}if(e.sourceBrowserState&&await Y(e.sourceBrowserState,T.join(e.backup,"browser-sidebar-state.json")),e.sourceAppHome){for(let n of await P.readdir(e.sourceAppHome,{withFileTypes:!0}))["openpond-app","openpond-app-nightly","storage.json","config.toml","state","browser"].includes(n.name)||Pi.has(n.name)||n.name.startsWith("state.sqlite")||await Y(T.join(e.sourceAppHome,n.name),T.join(e.backup,"app",n.name));let t=T.join(e.sourceAppHome,"state.sqlite"),r=T.join(e.backup,"state.sqlite");if(de(t)&&!de(r)){let n=`${r}.${kr()}.tmp`,o=D(t,!0);try{await Ni(o,n);let i=await P.open(n,"r+");try{await i.sync()}finally{await i.close()}if(await P.rename(n,r),process.platform!=="win32"){let s=await P.open(T.dirname(r),"r");try{await s.sync()}finally{await s.close()}}}finally{o.close(),await P.rm(n,{force:!0})}}}await ot(e.sourceAppHome,e.sourceConfig),e.snapshotComplete=!0,await le(e)}}l(Ri,"captureSources");async function po(e){await Ri(e),await U(e.stage);let t=T.join(e.backup,"app");if(de(t))for(let n of await P.readdir(t)){if(ki.has(n)||n==="souls"||/^soul-.+\.md$/i.test(n))continue;let o=["harnesses","refiners"].includes(n)?T.join("library",n):n;await Y(T.join(t,n),T.join(e.stage,o))}de(T.join(e.backup,"state.sqlite"))&&await Y(T.join(e.backup,"state.sqlite"),y(e.stage).database),await Xn(e.stage,e.sourceConfig?T.join(e.backup,"config.json"):void 0),await Yn(e.stage,e.sourceAppHome),await Qn(e.stage,e.sourceAppHome?t:void 0),await Zn(e.stage,e.sourceAppHome?t:void 0),await eo(e.stage,e.sourceAppHome?t:void 0);let r=await E(T.join(t,"token"));r&&await I(y(e.stage).token,r),await so(e),de(y(e.home).config)&&await Vn(e.home,e.stage,e.resolutions),await xe(e.stage),await P.rm(T.join(e.stage,"runtime"),{recursive:!0,force:!0}),await P.rm(T.join(e.stage,"backups"),{recursive:!0,force:!0}),await P.rm(T.join(e.stage,"datasets","settings.json"),{force:!0}),e.files=(await at(e.stage)).filter(n=>!n.path.endsWith("-wal")&&!n.path.endsWith("-shm")),e.status="prepared",await le(e)}l(po,"prepare");async function xe(e){let{document:t}=await L(e);await Nn(e);for(let r of Object.values(t.providers??{}))if(r.credential?.source==="secret"&&!await Ot(e,r.credential.id))throw C(y(e).config,"An imported provider credential is missing.");if(de(y(e).database)){let r=D(y(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 C(y(e).database,"The imported database failed integrity checks.");r.exec("PRAGMA wal_checkpoint(TRUNCATE)")}finally{r.close()}await Fn(e)}}l(xe,"validateMigratedHome");async function Mi(e){e.status="installing",await le(e);for(let t of e.files){let r=T.join(e.home,t.path),n=T.join(e.stage,t.path),o=de(r)?await G(r):null;if(e.installed.includes(t.path)&&o!==t.sha256)throw C(r,"An installed file changed before migration recovery completed.");if(o!==t.sha256){if(await G(n)!==t.sha256)throw C(n,"A staged file failed its checksum check.");if(o!==null&&await Y(r,T.join(e.backup,"destination",t.path)),await U(T.dirname(r)),(await P.lstat(n)).isSymbolicLink())de(r)&&await P.unlink(r),await P.symlink(await P.readlink(n),r);else{let s=`${r}.${kr()}.migration`;try{await P.copyFile(n,s),await P.chmod(s,t.executable?448:384);let c=await P.open(s,"r+");try{await c.sync()}finally{await c.close()}await P.rename(s,r)}finally{await P.rm(s,{force:!0})}}}if(process.platform!=="win32"){let i=await P.open(T.dirname(r),"r");try{await i.sync()}finally{await i.close()}}e.installed.includes(t.path)||e.installed.push(t.path),await le(e)}await xe(e.home),await I(y(e.home).marker,`${JSON.stringify({...Ft,migrationId:e.id},null,2)}
53
- `),e.status="committed",await le(e),e.status="verified",delete e.error,await le(e),await P.rm(e.stage,{recursive:!0,force:!0})}l(Mi,"install");async function Di(e){return x(T.join(y(e).runtime,"migration-owner"),async()=>{let t=await Me(e);if(!t)throw C(e,"No migration journal is available.");return Nr(t)})}l(Di,"recoverMigration");async function Nr(e){if(e.status==="verified")return je(e.home,"current",e);try{return(e.status==="preparing"||e.status==="failed")&&(await P.rm(e.stage,{recursive:!0,force:!0}),e.status="preparing",await po(e)),e.status!=="committed"?await Mi(e):(await xe(e.home),e.status="verified",await le(e),await P.rm(e.stage,{recursive:!0,force:!0})),je(e.home,"verified",e)}catch(t){throw e.error=t instanceof _?t.issue.code:"MIGRATION_FAILED",e.status==="preparing"&&(e.status="failed"),await le(e),t instanceof _?t:new _({code:"MIGRATION_FAILED",path:T.join(y(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(Nr,"recoverUnlocked");function je(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(je,"report");async function Xu(e){return x(T.join(y(e).runtime,"migration-owner"),async()=>{let t=await Me(e);if(!t)return{restarted:!1,backup:null};if(!["preparing","failed"].includes(t.status)||t.installed.length||t.files.length)throw C(e,"Installation has already begun. Resume recovery or restore into a fresh home; preparation cannot be restarted.");return await ot(t.sourceAppHome,t.sourceConfig),await I(T.join(t.backup,"abandoned-preparation.json"),JSON.stringify(t,null,2)),await P.rm(t.stage,{recursive:!0,force:!0}),await P.rm(T.join(y(e).runtime,"migration.json")),{restarted:!0,backup:t.backup}})}l(Xu,"restartMigration");async function Ui(e){let t=await L(e),r=K(e,"client_preferences","global");return{preferences:Ze(t.document,r?.value),config:t}}l(Ui,"readPreferences");async function sp(e,t,r){return x(`${y(e).runtime}/preferences`,async()=>{let n=K(e,"client_preferences","global"),o=n?.value;return await W(e,i=>{let s=Ze(i,n?.value),c=Z.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}}:{}});o=xt(c);let d=structuredClone(i);for(let f of ie(Ae(s),Ae(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),o&&JSON.stringify(o)!==JSON.stringify(n?.value)&&B(e,"client_preferences","global",o,n?.revision??null),Ui(e)})}l(sp,"updatePreferences");import{createHash as ji}from"node:crypto";import{promises as Le}from"node:fs";import mo from"node:path";var me=l(e=>ji("sha256").update(JSON.stringify(e)??"null").digest("hex"),"hash"),ho=l((e,t="local")=>me([e,t]),"trustKey");async function Ep(e,t,r,n){let o=await Le.realpath(t);B(e,"project_trust",ho(o,r),{root:o,accountId:r,trusted:n,updatedAt:new Date().toISOString()})}l(Ep,"setProjectTrust");async function go(e,t={}){let r=Ae(Z.parse({})),n=[],o={},i=[];function s(h,b,w,N=me(b)){let S={layer:h,path:w,revision:N};r=vt(r,b),n.push(S);function v(F,ue){if(F&&typeof F=="object"&&!Array.isArray(F)&&!("mode"in F)&&!("source"in F)&&!("provider_id"in F))for(let[Be,ct]of Object.entries(F))v(ct,[...ue,Be]);else o[JSON.stringify(ue)]=S}l(v,"visit"),v(b,[])}l(s,"apply"),s("defaults",r,"shipped"),t.profile&&(fo(t.profile.defaults,"profile"),s("profile",t.profile.defaults,t.profile.id,t.profile.revision));let c=await L(e);s("user",c.document,c.path,c.rawRevision);let d=structuredClone(r.permissions),f=null,p=null;if(t.projectRoot){f=await Le.realpath(t.projectRoot);let h=mo.join(f,".openpond","config.toml");if(await Le.lstat(h).catch(w=>{if(R(w))return null;throw w})){if(await Le.realpath(h)!==h)throw new _({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 N=K(e,"project_trust",ho(f,t.accountId));if(!N?.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=N.revision;let S=await L(e,{path:h,scope:"project"});s("project",S.document,S.path,S.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]&&(fo(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}),oe(r),await Fi(e,r);let g=[...Object.values(r.accounts??{}),...Object.values(r.providers??{})].flatMap(h=>h.credential?.source==="secret"?[h.credential.id]:[]),m=await Ln(e,g);return{document:r,effectiveRevision:me({document:r,sources:n,projectTrustRevision:p,versions:m}),sources:n,provenance:o,diagnostics:i,projectRoot:f,projectTrustRevision:p,credentialVersions:m}}l(go,"resolveEffectiveConfig");function fo(e,t){oe(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 _({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(fo,"checkScope");async function Fi(e,t){let r=t.defaults;if(r?.account_id&&(!t.accounts?.[r.account_id]||t.accounts[r.account_id].enabled===!1))throw new _({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:")?mo.join(e,"instructions","personalities",`${n.slice(7)}.md`):n,s=n.startsWith("custom:")?await E(i):He.find(c=>c.id===n.slice(8))?.content;if(s==null||s.trim().length>8e3)throw new _({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 o=t.personalization?.user_instructions;if(o){let i=Ve(o,e);try{if(!(await Le.stat(i)).isFile())throw new Error("Not a file");await Le.access(i,Le.constants.R_OK)}catch(s){throw new _({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(Fi,"validateRequiredSources");async function Sp(e,t,r={}){let n=await go(e,r);return B(e,"config_run_snapshots",t,{...n,capturedAt:new Date().toISOString()},null),n}l(Sp,"captureConfigRun");async function Ap(e,t,r={}){let n=await go(e,r);if(t.projectTrustRevision!==null&&n.projectTrustRevision!==t.projectTrustRevision)throw new _({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 o=t.document.permissions,i=n.document.permissions;if(i?.command_access!==o?.command_access||i?.codex_mode!==o?.codex_mode||me(n.credentialVersions)!==me(t.credentialVersions)||me(n.document.accounts)!==me(t.document.accounts)||me(n.document.providers)!==me(t.document.providers))throw new _({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(Ap,"assertConfigRunCurrent");function vp(e){return Ze(e.document)}l(vp,"effectivePreferences");import{createHash as Bi}from"node:crypto";var Vt=a.strictObject({chatMode:a.enum(["chat","work"]).optional(),notificationMode:a.enum(["all","direct_mentions","none"]).optional(),learningNoticeDismissed:a.boolean().optional(),sidebarVisibility:a.strictObject({showCodexChats:a.boolean(),onlyRunningTasks:a.boolean()}).optional(),scheduledWorkView:a.enum(["calendar","list"]).optional(),editorControlsVisible:a.boolean().optional(),voiceNoticeAcknowledged:a.boolean().optional(),lessonProgress:a.record(a.string().min(1).max(200),a.strictObject({completed:a.boolean(),currentTime:a.number().finite().nonnegative(),duration:a.number().finite().positive(),updatedAt:a.number().finite().nonnegative()})).refine(e=>Object.keys(e).length<=200,"Too many lessons").optional()}),Cp={"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 Vi from"node:path";async function yo(e){let r=(await L(e)).document.defaults?.account_id??K(e,"account_selection","last_used")?.value??"local";return`choices:${Bi("sha256").update(JSON.stringify(r)).digest("hex")}`}l(yo,"scope");async function $i(e){let t=await yo(e),r=K(e,"client_preferences",t),n=await L(e);return{owner:t,revision:r?.revision??null,value:Vt.parse({...r?.value,notificationMode:n.document.notifications?.team_chat??"all"})}}l($i,"readClientChoices");async function Fp(e,t,r,n=!1){return x(Vi.join(y(e).runtime,"accounts"),async()=>{let o=Vt.parse(r);if(await yo(e)!==t)throw new _({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}=o;return i!==void 0&&await W(e,c=>n&&c.notifications?.team_chat!==void 0?c:{...c,notifications:{...c.notifications,team_chat:i}}),ge(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=Vt.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}}),$i(e)})}l(Fp,"updateClientChoices");import{randomUUID as Pr}from"node:crypto";import{promises as Q}from"node:fs";import k from"node:path";import{backup as Qi}from"node:sqlite";import{createCipheriv as Gi,createDecipheriv as Ki,randomBytes as Hi}from"node:crypto";import{createReadStream as _o,createWriteStream as zi,promises as Fe}from"node:fs";import ne from"node:path";import{Readable as Wi}from"node:stream";import{pipeline as bo}from"node:stream/promises";import{createGzip as Ji,createGunzip as qi}from"node:zlib";var Ce=Buffer.from("OPBK1\0"),Xi=a.string().min(1).refine(e=>!ne.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),Yi=a.strictObject({path:Xi,sizeBytes:a.number().safe().int().nonnegative(),sha256:a.string().regex(/^[a-f0-9]{64}$/),executable:a.boolean(),link:a.string().optional()}),wo=a.strictObject({schemaVersion:a.literal("openpond.recoveryBackup.v1"),originalHome:a.string(),createdAt:a.string().datetime(),entries:a.array(Yi).max(5e5),externalRoots:a.array(a.strictObject({path:a.string(),available:a.boolean(),included:a.literal(!1)})),browserIncluded:a.boolean()});async function To(e,t,r,n){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let o=Buffer.from(JSON.stringify(wo.parse(n)));if(o.length>32*1024*1024)throw new Error("Backup manifest exceeds the supported size.");let i=Buffer.alloc(4);i.writeUInt32BE(o.length);let s=Hi(12),c=Gi("aes-256-gcm",r,s);c.setAAD(Ce);let d=await Fe.open(t,"wx",384);try{await d.write(Buffer.concat([Ce,s])),await d.sync()}finally{await d.close()}async function*f(){yield i,yield o;for(let g of n.entries)if(g.link===void 0)for await(let m of _o(ne.join(e,g.path)))yield m}l(f,"archive"),await bo(Wi.from(f()),Ji(),c,zi(t,{flags:"a"}));let p=await Fe.open(t,"a");try{await p.write(c.getAuthTag()),await p.sync()}finally{await p.close()}}l(To,"encryptBackup");async function Eo(e,t,r){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let n=(await Fe.stat(e)).size,o=Ce.length+12;if(n<o+16)throw new Error("Truncated recovery backup.");let i=await Fe.open(e,"r"),s=Buffer.alloc(o),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,Ce.length).equals(Ce))throw new Error("Unsupported recovery backup format.");let d=Ki("aes-256-gcm",r,s.subarray(Ce.length));d.setAAD(Ce),d.setAuthTag(c);let f=_o(e,{start:o,end:n-17}),p=qi(),g=bo(f,d,p);g.catch(()=>{});let m=p[Symbol.asyncIterator](),h=Buffer.alloc(0),b=0;async function w(N){let S=Buffer.alloc(N),v=0;for(;v<N;){if(b>=h.length){let ue=await m.next();if(ue.done)throw new Error("Truncated recovery object.");h=Buffer.from(ue.value),b=0}let F=Math.min(N-v,h.length-b);h.copy(S,v,b,b+F),b+=F,v+=F}return S}l(w,"take");try{let N=(await w(4)).readUInt32BE();if(N>32*1024*1024)throw new Error("Invalid recovery manifest size.");let S=wo.parse(JSON.parse((await w(N)).toString("utf8")));if(new Set(S.entries.map(v=>v.path)).size!==S.entries.length)throw new Error("Duplicate recovery object paths.");for(let v of S.entries){let F=ne.join(t,v.path);if(/^(runtime|backups)([\\/]|$)/.test(v.path)||v.path.endsWith("-wal")||v.path.endsWith("-shm"))throw new Error("Recovery manifest contains an unsupported runtime object.");if(await U(ne.dirname(F)),v.link!==void 0){if(ne.isAbsolute(v.link)||!st(ne.resolve(ne.dirname(F),v.link),t))throw new Error("Recovery symlink leaves the backup root.");await Fe.symlink(v.link,F)}else{let ue=await Fe.open(F,"wx",v.executable?448:384);try{for(let Be=v.sizeBytes;Be>0;){let ct=await w(Math.min(1048576,Be));await ue.writeFile(ct),Be-=ct.length}await ue.sync()}finally{await ue.close()}}if(await G(F)!==v.sha256)throw new Error("Recovery object failed its checksum.")}if(b<h.length||!(await m.next()).done)throw new Error("Unexpected trailing recovery data.");return await g,S}catch(N){throw f.destroy(),d.destroy(),p.destroy(),await g.catch(()=>{}),N}}l(Eo,"decryptBackup");function st(e,t){let r=ne.relative(ne.resolve(t),ne.resolve(e));return r===""||r!==".."&&!r.startsWith(`..${ne.sep}`)&&!ne.isAbsolute(r)}l(st,"within");var Zi=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 mf(e,t,r){if(e=k.resolve(e),t=k.resolve(t),st(t,e))throw new Error("Export recovery backups outside the active home.");let n=[],o=k.join(k.dirname(e),`.${k.basename(e)}-backup-${Pr()}`),i=`${t}.${Pr()}.tmp`;try{n.push(await we(k.join(y(e).runtime,"server-owner"),100)),await uo(e);for(let f of["accounts","providers","preferences","personalization","artifacts"])n.push(await we(k.join(y(e).runtime,f)));n.push(await we(y(e).config)),n.push(await we(y(e).credentials)),await U(o);for(let f of await Q.readdir(e))Zi.has(f)||f==="state"||await Y(k.join(e,f),k.join(o,f));let s=y(e).database;if(await Q.stat(s).catch(f=>{if(R(f))return null;throw f})){await U(k.dirname(y(o).database));let f=D(s,!0);try{await Qi(f,y(o).database)}finally{f.close()}}await xe(o);let c=await Pt(e),d=[];for(let f of await at(o)){if(f.path.endsWith("-wal")||f.path.endsWith("-shm")||/^(config\.toml|secrets[\\/](?:credentials\.json|server-token))\.lock(?:\.|$)/.test(f.path))continue;let p=k.join(o,f.path),g=await Q.lstat(p),m=g.isSymbolicLink()?await Q.readlink(p):void 0;if(m!==void 0&&(k.isAbsolute(m)||!st(k.resolve(k.dirname(p),m),o)))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(k.dirname(t),{recursive:!0,mode:448}),await To(o,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 _?s:new _({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(o,{recursive:!0,force:!0}),await Q.rm(i,{force:!0});for(let s of n.reverse())await s()}}l(mf,"exportRecoveryBackup");async function hf(e,t,r){t=k.resolve(t);let n=await Q.lstat(t).catch(i=>{if(R(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 o=k.join(k.dirname(t),`.${k.basename(t)}-restore-${Pr()}`);await U(o);try{let i=await Eo(e,o,r);return await xe(o),await es(o,i.originalHome,t),await I(y(o).marker,JSON.stringify({schemaVersion:"openpond.storage.v1",version:1,migrationId:null,restoredAt:new Date().toISOString()})),await I(k.join(o,"restore-receipt.json"),JSON.stringify({schemaVersion:"openpond.restoreReceipt.v1",originalHome:i.originalHome,restoredAt:new Date().toISOString(),externalRoots:i.externalRoots})),await xe(o),n&&await Q.rmdir(t),await Q.rename(o,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 _({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(o,{recursive:!0,force:!0})}}l(hf,"restoreRecoveryBackup");async function es(e,t,r){let n=l(o=>st(o,t)?k.join(r,k.relative(t,o)):o,"rebase");await W(e,o=>({...o,...o.storage?.datasets_dir&&k.isAbsolute(o.storage.datasets_dir)?{storage:{...o.storage,datasets_dir:n(o.storage.datasets_dir)}}:{},...o.personalization?.user_instructions&&k.isAbsolute(o.personalization.user_instructions)?{personalization:{...o.personalization,user_instructions:n(o.personalization.user_instructions)}}:{},...o.projects?.new_project_directory&&k.isAbsolute(o.projects.new_project_directory)?{projects:{...o.projects,new_project_directory:n(o.projects.new_project_directory)}}:{}})),Bt(e,[{from:t,to:r}])}l(es,"rebaseRestoredPointers");async function bf(e){let t=structuredClone((await L(e)).document),r=[];function n(o,i,s,c){o&&Object.hasOwn(o,i)&&(delete o[i],r.push({path:[...s,i],reason:c}))}l(n,"omit");for(let o of["accounts","providers"])for(let[i,s]of Object.entries(t[o]??{}))n(s,"credential",[o,i],"Reconnect or bind a credential on the destination device.");for(let o of["accounts","providers"])for(let[i,s]of Object.entries(t[o]??{}))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,[o,i],"Rebind this endpoint without embedded authentication data.")}catch{n(s,c,[o,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[o,i]of Object.entries(t.editor?.languages??{}))i.custom_command&&(n(i,"custom_command",["editor","languages",o],"Configure the local language-server command."),i.mode==="custom"&&delete i.mode);return{schemaVersion:"openpond.settingsExport.v1",config:t,requiresRebinding:r}}l(bf,"exportSettings");async function ts(e){let t=y(e).marker,r=await M(t,()=>null);if(r&&(r.schemaVersion!=="openpond.storage.v1"||r.version!==1))throw new _({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(ts,"assertHomeCompatible");export{Ao as a,$ as b,E as c,U as d,I as e,x as f,we as g,Io as h,M as i,cs as j,Fr as k,zt as l,Oo as m,No as n,ko as o,Mo as p,ms as q,Do as r,Jt as s,hs as t,gs as u,ys as v,_s as w,bs as x,ws as y,Ke as z,qt as A,Fo as B,Bo as C,Yt as D,Ko as E,zo as F,xs as G,qo as H,Cs as I,zr as J,Yo as K,Ms as L,Qo as M,ta as N,Wr as O,er as P,tr as Q,rr as R,Ds as S,js as T,Gr as U,Qt as V,Fs as W,Bs as X,Kr as Y,Hr as Z,Z as _,sa as $,He as aa,qr as ba,Vs as ca,$s as da,Qr as ea,ar as fa,oe as ga,ie as ha,Ya as ia,gr as ja,St as ka,Qa as la,Za as ma,xc as na,Lc as oa,L as pa,Bc as qa,W as ra,vt as sa,Vc as ta,Hc as ua,Ae as va,Ze as wa,xt as xa,Zc as ya,br as za,el as Aa,tl as Ba,Ot as Ca,ll as Da,Nt as Ea,In as Fa,xn as Ga,Ln as Ha,Pe as Ia,Nn as Ja,Pn as Ka,Fn as La,Bn as Ma,_i as Na,Zl as Oa,ed as Pa,td as Qa,Ut as Ra,Me as Sa,Ci as Ta,uo as Ua,xe as Va,Di as Wa,Xu as Xa,Ui as Ya,sp as Za,Ep as _a,go as $a,Sp as ab,Ap as bb,vp as cb,Vt as db,Cp as eb,$i as fb,Fp as gb,mf as hb,hf as ib,bf as jb,ts as kb};
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as X,b as Q}from"./chunk-GLUWATL5.js";import{Ja as W,Ka as q,Ua as L,ya as Y,za as D}from"./chunk-NNLI4OWY.js";import{f as P,h as V}from"./chunk-H7IWJN7L.js";import{a as i}from"./chunk-FTQLQJQV.js";var I=class extends Error{constructor(n,o){super(`API request timed out after ${n}ms: ${o}`);this.timeoutMs=n;this.requestUrl=o;this.name="ApiTimeoutError"}timeoutMs;requestUrl;static{i(this,"ApiTimeoutError")}code="OPENPOND_API_TIMEOUT"},E=class extends Error{constructor(n,o){super(`API response exceeded ${n} bytes: ${o}`);this.maximumBytes=n;this.requestUrl=o;this.name="ApiResponseTooLargeError"}maximumBytes;requestUrl;static{i(this,"ApiResponseTooLargeError")}code="OPENPOND_API_RESPONSE_TOO_LARGE"},N=class extends Error{constructor(n,o,r,s=null){let a=s||o;super(`${r} failed: ${n}${a?` ${a}`:""}`);this.status=n;this.apiMessage=s;this.name="OpenPondApiError",this.code=o||"OPENPOND_API_ERROR"}status;apiMessage;static{i(this,"OpenPondApiError")}code};async function c(t,e,n,o={}){let{timeoutMs:r=3e4,maxResponseBytes:s=8388608,explicitBearerAuth:a=!1,...l}=o,p=`${t}${n}`,d=new Headers(l.headers);d.set("Content-Type","application/json");let h=a?void 0:process.env.OPENPOND_API_KEY,g=e?.trim()||"",f=!a&&g.startsWith("opk_"),k=h||(f?g:null);k&&!d.has("openpond-api-key")&&d.set("openpond-api-key",k),e?d.set("Authorization",f?`ApiKey ${g}`:`Bearer ${e}`):h&&!d.has("Authorization")&&d.set("Authorization",`ApiKey ${h}`);let x=new AbortController,T=new I(r,p),O=r>0?setTimeout(()=>x.abort(T),r):null;O?.unref?.();let _=ye(l.signal,x.signal,r),F=i(()=>{O&&clearTimeout(O)},"cleanup");try{let B=await fetch(p,{...l,headers:d,signal:_});return he(B,{cleanup:F,maximumBytes:s,requestUrl:p,timeoutController:x,timeoutError:T})}catch(B){throw F(),x.signal.aborted?T:B}}i(c,"apiFetch");async function y(t,e){let n;try{let o=await t.text();n=o?JSON.parse(o):{}}catch(o){if(o instanceof I||o instanceof E)throw o;n={}}if(!t.ok){let o=typeof n.error=="string"?n.error:null,r=typeof n.message=="string"?n.message:null;throw new N(t.status,o,e,r)}return n}i(y,"readApiJson");function he(t,e){if(!t.body)return e.cleanup(),t;let n=Number(t.headers.get("content-length"));if(e.maximumBytes>0&&Number.isFinite(n)&&n>e.maximumBytes)throw e.cleanup(),t.body.cancel(),new E(e.maximumBytes,e.requestUrl);let o=t.body.getReader(),r=0,s=new ReadableStream({async pull(a){try{let l=await o.read();if(l.done){e.cleanup(),a.close();return}if(r+=l.value.byteLength,e.maximumBytes>0&&r>e.maximumBytes){e.cleanup(),await o.cancel(),a.error(new E(e.maximumBytes,e.requestUrl));return}a.enqueue(l.value)}catch(l){e.cleanup(),a.error(e.timeoutController.signal.aborted?e.timeoutError:l)}},async cancel(a){e.cleanup(),await o.cancel(a)}});return new Response(s,{headers:t.headers,status:t.status,statusText:t.statusText})}i(he,"boundedResponse");function ye(t,e,n){return n<=0?t??void 0:t?AbortSignal.any([t,e]):e}i(ye,"composedSignal");async function Re(t,e,n,o,r){let s=await c(t,e,`/v4/apps/${n}/commits`,{method:"POST",body:JSON.stringify({files:o,message:r})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Commit failed: ${s.status} ${a}`)}return await s.json()}i(Re,"commitFiles");async function Pe(t,e,n,o){let r=o?.environment??"production",s=await c(t,e,`/v4/apps/${n}/deployments`,{method:"POST",body:JSON.stringify({environment:r,...o?.commitSha?{commitSha:o.commitSha}:{},...o?.branch?{branch:o.branch}:{}})});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Deploy failed: ${s.status} ${a}`)}return await s.json()}i(Pe,"deployApp");async function Ae(t,e,n,o){let r=await c(t,e,`/v4/apps/${encodeURIComponent(n)}/deployments/promote-preview`,{method:"POST",body:JSON.stringify(o)});return y(r,"Preview promotion")}i(Ae,"promotePreviewToProduction");async function Se(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/lifecycle/start`,{method:"POST",body:JSON.stringify(o)});return y(r,"App lifecycle start")}i(Se,"startAppLifecycle");async function we(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/logs`,{method:"GET"});if(!o.ok){let a=await o.text().catch(()=>"");throw new Error(`Deployment logs failed: ${o.status} ${a}`)}let r=await o.json().catch(()=>({}));return(Array.isArray(r.logs)?r.logs:[]).map(a=>{let l=typeof a.createdAt=="string"?a.createdAt:a.createdAt instanceof Date?a.createdAt.toISOString():new Date().toISOString();return{id:typeof a.id=="string"?a.id:`${Math.random()}`,type:typeof a.type=="string"?a.type:void 0,message:typeof a.message=="string"?a.message:"",createdAt:l}})}i(we,"getDeploymentLogs");async function xe(t,e,n){let o=await c(t,e,`/apps/deployments/${n}/status`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment status failed: ${o.status} ${s}`)}return{status:(await o.json().catch(()=>({}))).deployment?.status}}i(xe,"getDeploymentStatus");async function be(t,e,n,o){let r=new URLSearchParams;o?.status&&o.status.length>0&&r.set("status",o.status.join(",")),o?.createdAfter&&r.set("createdAfter",o.createdAfter),o?.branch&&r.set("branch",o.branch);let s=r.toString(),a=await c(t,e,`/apps/${n}/deployments/latest${s?`?${s}`:""}`,{method:"GET"});if(!a.ok){let p=await a.text().catch(()=>"");throw new Error(`Latest deployment lookup failed: ${a.status} ${p}`)}let l=await a.json().catch(()=>({}));return l.deployment?{id:l.deployment.id,status:l.deployment.status}:null}i(be,"getLatestDeploymentForApp");async function Te(t,e,n){let o=await c(t,e,`/apps/deployments/${n}`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Deployment fetch failed: ${o.status} ${s}`)}return(await o.json().catch(()=>({}))).deployment??null}i(Te,"getDeploymentDetail");var Oe=new URL(Q).hostname,Ee=new URL(X).hostname;async function We(t,e,n){let o=new URLSearchParams;n?.handle&&o.set("handle",n.handle),typeof n?.limit=="number"&&Number.isFinite(n.limit)&&o.set("limit",String(Math.max(1,Math.floor(n.limit)))),typeof n?.offset=="number"&&Number.isFinite(n.offset)&&o.set("offset",String(Math.max(0,Math.floor(n.offset)))),typeof n?.includeScheduled=="boolean"&&o.set("includeScheduled",n.includeScheduled?"true":"false");let r=o.toString(),s=await c(t,e,`/apps/list${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let l=await s.text().catch(()=>"");throw new Error(`Apps list failed: ${s.status} ${l}`)}let a=await s.json().catch(()=>({}));return Array.isArray(a.apps)?a.apps:[]}i(We,"listApps");async function Xe(t,e,n){let o=await c(t,e,"/api/projects/local",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Create project failed: ${o.status} ${r}`)}return await o.json()}i(Xe,"createLocalProject");async function Qe(t,e,n){let o=await c(t,e,"/apps/repo/create",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Repo create failed: ${o.status} ${r}`)}return await o.json()}i(Qe,"createRepo");async function Ze(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/code-visibility`,{method:"PATCH",body:JSON.stringify({codeVisibility:o})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Code visibility update failed: ${r.status} ${s}`)}return await r.json()}i(Ze,"updateAppCodeVisibility");async function et(t,e,n,o){let r=await c(t,e,"/v4/apps/headless",{method:"POST",body:JSON.stringify({items:n,...o?{teamId:o}:{}})});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Headless create failed: ${r.status} ${s}`)}return await r.json()}i(et,"createHeadlessApps");async function tt(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/status`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template status failed: ${o.status} ${r}`)}return await o.json()}i(tt,"getTemplateStatus");async function nt(t,e,n){let o=await c(t,e,`/v4/apps/${n}/template/branches`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Template branches failed: ${o.status} ${r}`)}return await o.json()}i(nt,"listTemplateBranches");async function ot(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/template/deploy-latest`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Template deploy failed: ${r.status} ${s}`)}return await r.json()}i(ot,"deployLatestTemplate");async function st(t,e,n,o){let r=await c(t,e,`/v4/apps/${n}/environment`,{method:"POST",body:JSON.stringify(o)});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Environment update failed: ${r.status} ${s}`)}return await r.json()}i(st,"updateAppEnvironment");async function rt(t,e,n){let o=await c(t,e,`/v4/apps/${n}/environment`,{method:"GET"});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Environment get failed: ${o.status} ${r}`)}return await o.json()}i(rt,"getAppEnvironment");async function it(t,e){let n=await c(t,e,"/api/tools/manifest",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Manifest fetch failed: ${n.status} ${o}`)}return await n.json()}i(it,"fetchToolManifest");async function at(t,e){let n=await c(t,e,"/apps/tools",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Tools lookup failed: ${n.status} ${o}`)}return await n.json()}i(at,"listUserTools");async function lt(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules`,{method:"GET"});if(!o.ok){let s=await o.text().catch(()=>"");throw new Error(`Schedules lookup failed: ${o.status} ${s}`)}let r=await o.json().catch(()=>({}));return{schedules:Array.isArray(r.schedules)?r.schedules:[]}}i(lt,"listAppSchedules");async function ct(t,e,n={}){let o=new URLSearchParams;n.domain&&o.set("domain",n.domain),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion),typeof n.limit=="number"&&o.set("limit",String(n.limit));for(let a of n.tags??[])o.append("tag",a);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe list")}i(ct,"listOpenToolRecipes");async function ut(t,e,n){let o=await c(t,e,"/v1/opentool/recipes/search",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool recipe search")}i(ut,"searchOpenToolRecipes");async function pt(t,e,n){let o=new URLSearchParams;typeof n.includeExamples=="boolean"&&o.set("includeExamples",String(n.includeExamples)),typeof n.includeTests=="boolean"&&o.set("includeTests",String(n.includeTests)),n.opentoolVersion&&o.set("opentoolVersion",n.opentoolVersion);let r=o.toString(),s=await c(t,e,`/v1/opentool/recipes/${encodeURIComponent(n.id)}${r?`?${r}`:""}`,{method:"GET"});return y(s,"OpenTool recipe get")}i(pt,"getOpenToolRecipe");async function dt(t,e,n){let o=await c(t,e,"/v1/opentool/rules",{method:"POST",body:JSON.stringify(n)});return y(o,"OpenTool rules get")}i(dt,"getOpenToolRules");function H(t){let e=new URLSearchParams;typeof t=="number"&&Number.isFinite(t)&&e.set("limit",String(Math.max(1,Math.floor(t))));let n=e.toString();return n?`?${n}`:""}i(H,"buildLimitQuery");function Z(t){if(Array.isArray(t))return t;if(!t||typeof t!="object")return[];let e=t;return Array.isArray(e.logs)?e.logs:Array.isArray(e.runs)?e.runs:Array.isArray(e.scheduleRuns)?e.scheduleRuns:Array.isArray(e.items)?e.items:[]}i(Z,"normalizeScheduleExecutionLogs");async function ft(t,e,n,o){let r={...o?.preferredScheduleId?{preferredScheduleId:o.preferredScheduleId}:{},...o?.scheduleId?{scheduleId:o.scheduleId}:{},...o?.startAt?{startAt:o.startAt}:{},...o&&"endAt"in o?{endAt:o.endAt??null}:{}},s=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/start`,{method:"POST",body:JSON.stringify(r)});return y(s,"Schedule start")}i(ft,"startAppSchedules");async function mt(t,e,n){let o=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/stop`,{method:"POST",body:JSON.stringify({})});return y(o,"Schedule stop")}i(mt,"stopAppSchedules");async function gt(t,e){let n=await c(t,e,"/apps/schedules/current/stop",{method:"POST",body:JSON.stringify({})});return y(n,"Current schedule stop")}i(gt,"stopCurrentAppSchedules");async function ht(t,e,n){let o=await c(t,e,"/v1/schedules/run",{method:"POST",body:JSON.stringify({scheduleId:n.scheduleId})});return y(o,"Schedule run")}i(ht,"runScheduleNow");async function yt(t,e,n,o){let r=await c(t,e,`/apps/${encodeURIComponent(n)}/schedules/${encodeURIComponent(o)}`,{method:"DELETE"});return y(r,"Schedule delete")}i(yt,"deleteOrArchiveSchedule");async function Rt(t,e,n,o){let r=await c(t,e,`/v1/schedules/${encodeURIComponent(n)}/execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Schedule execution logs");return{logs:Z(s)}}i(Rt,"listScheduleExecutionLogs");async function Pt(t,e,n,o){let r=await c(t,e,`/v1/deployments/${encodeURIComponent(n)}/schedule-execution-logs${H(o?.limit)}`,{method:"GET"}),s=await y(r,"Deployment schedule execution logs");return{logs:Z(s)}}i(Pt,"listDeploymentScheduleExecutionLogs");async function At(t,e,n){let o=await c(t,e,`/v1/schedule-execution-logs/${encodeURIComponent(n)}`,{method:"GET"});return y(o,"Schedule execution log")}i(At,"getScheduleExecutionLog");async function St(t,e,n,o){let r=await c(t,e,`/v1/apps/${encodeURIComponent(n)}/execution-timeline${H(o?.limit)}`,{method:"GET"});return y(r,"App execution timeline")}i(St,"getAppExecutionTimeline");async function wt(t,e,n){return c(t,e,"/apps/agent/create",{method:"POST",body:JSON.stringify(n)})}i(wt,"createAgentFromPrompt");async function xt(t,e,n){let o=new URLSearchParams;n?.appId&&o.set("appId",n.appId);let r=o.toString(),s=await c(t,e,`/apps/performance${r?`?${r}`:""}`,{method:"GET"});if(!s.ok){let a=await s.text().catch(()=>"");throw new Error(`Performance lookup failed: ${s.status} ${a}`)}return await s.json()}i(xt,"getUserPerformance");async function bt(t,e,n){let o=new URLSearchParams({appId:n}),r=await c(t,e,`/apps/summary?${o.toString()}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Summary lookup failed: ${r.status} ${s}`)}return await r.json()}i(bt,"getAppRuntimeSummary");async function Ce(t,e){let n=await c(t,e,"/v1/account",{method:"GET"});if(!n.ok){let o=await n.text().catch(()=>"");throw new Error(`Account lookup failed: ${n.status} ${o}`)}return await n.json()}i(Ce,"getOpenPondAccount");async function Tt(t,e){let n=new Date().toISOString(),o=Date.now(),r=t.replace(/\/$/,"");try{let s=await c(r,null,"/health",{method:"GET",headers:{Accept:"application/json"}}),a=Date.now()-o,l=await s.json().catch(()=>({})),p=null,d=null;if(e?.trim())try{let h=await Ce(r,e);p=!0,d=h.account}catch{p=!1}return{reachable:s.ok,authenticated:p,apiBase:r,latencyMs:a,status:s.status,service:typeof l.service=="string"?l.service:null,checkedAt:n,account:d,...s.ok?{}:{error:s.statusText||`HTTP ${s.status}`}}}catch(s){return{reachable:!1,authenticated:e?.trim()?!1:null,apiBase:r,latencyMs:Date.now()-o,status:null,service:null,checkedAt:n,error:s instanceof Error?s.message:String(s)}}}i(Tt,"checkOpenPondApiHealth");async function Ot(t,e,n){let o=await c(t,e,"/apps/assistant/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Assistant run failed: ${o.status} ${r}`)}return await o.json()}i(Ot,"runAssistantMode");async function Et(t,e,n){let o=await c(t,e,"/apps/agent/digest",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Agent digest failed: ${o.status} ${r}`)}return await o.json()}i(Et,"postAgentDigest");async function Ct(t,e,n){let o=await c(t,e,"/apps/tools/execute",{method:"POST",body:JSON.stringify(n)}),r=await o.text().catch(()=>""),s=null;try{s=r?JSON.parse(r):null}catch{s=r}return o.ok?{ok:!0,status:o.status,data:s}:{ok:!1,status:o.status,error:s&&typeof s=="object"&&"error"in s?String(s.error):r||o.statusText}}i(Ct,"executeUserTool");async function kt(t,e,n){let o=await c(t,e,"/apps/backtests/run",{method:"POST",body:JSON.stringify(n)});if(!o.ok){let r=await o.text().catch(()=>"");throw new Error(`Backtest run failed: ${o.status} ${r}`)}return await o.json()}i(kt,"submitBacktestRun");async function Lt(t,e,n){let o=n.query&&Object.keys(n.query).length>0?`?${new URLSearchParams(n.query).toString()}`:"",r=await c(t,e,`/apps/backtests/tx${o}`,{method:n.method,body:n.method==="POST"&&n.body!==void 0?JSON.stringify(n.body):void 0});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtests request failed: ${r.status} ${s}`)}return await r.json()}i(Lt,"submitBacktestTx");async function It(t,e,n){let o=new URLSearchParams(n).toString(),r=await c(t,e,`/apps/backtests/detail?${o}`,{method:"GET"});if(!r.ok){let s=await r.text().catch(()=>"");throw new Error(`Backtest detail failed: ${r.status} ${s}`)}return await r.json()}i(It,"submitBacktestDetail");function ke(t){let e=t.trim().replace(/^\/+/,"");return encodeURIComponent(e||"tool")}i(ke,"normalizeToolPathSegment");function Le(t){let e=t.replace(/\/$/,""),n=process.env.OPENPOND_TOOL_URL;if(n)return n.replace(/\/$/,"");try{let o=new URL(e),r=o.hostname.toLowerCase(),s=r==="apps.openpond.live"?null:r===Oe||r===Ee||r==="openpond.live"||r==="www.openpond.live"?"https://apps.openpond.live":null;if(s)return s;let a=r==="localhost"||r==="127.0.0.1",l=o.port||(o.protocol==="https:"?"443":"80");if(a&&l==="3000")return e}catch{}return e}i(Le,"resolveWorkerBaseUrl");async function Ut(t,e,n){let o=Le(t),r=ke(n.toolName),a=`${n.deploymentId?`/${n.appId}/deployments/${n.deploymentId}`:`/${n.appId}`}/${r}`,l=new Headers(n.headers||{}),p=n.method??"POST",d=n.body===void 0||p==="GET"?void 0:JSON.stringify(n.body),h=await c(o,e,a,{method:p,body:d,headers:l}),g=await h.text().catch(()=>""),f=null;try{f=g?JSON.parse(g):null}catch{f=g}let k=f&&typeof f=="object"&&"ok"in f?!!f.ok:!0,x=h.ok&&k,T=f&&typeof f=="object"&&"status"in f&&Number(f.status)||h.status,O=f&&typeof f=="object"&&"error"in f?String(f.error):h.ok?void 0:g||h.statusText,_=f&&typeof f=="object"&&"data"in f?f.data:f;return{ok:x,status:T,data:_,error:O}}i(Ut,"executeHostedTool");import Ie from"node:path";var U="default",ee=["apiKey","baseUrl","apiBaseUrl","chatApiBaseUrl","token","appId","conversationId"];function Nt(){return Ue()}i(Nt,"getConfigPath");function Ue(){return V(P()).config}i(Ue,"getGlobalConfigPath");function S(t,e){return Object.prototype.hasOwnProperty.call(t,e)}i(S,"hasOwn");function A(t){if(typeof t!="string")return null;let e=t.trim();return e.length>0?e:null}i(A,"normalizeHandle");function m(t){if(typeof t!="string")return null;let e=t.trim();return e?e.replace(/\/$/,""):null}i(m,"normalizeBaseUrl");function ae(t){let e=A(t);if(!e)throw new Error("profile handle must be non-empty");return e}i(ae,"requireHandle");function ve(t){if(typeof t!="string")throw new Error("apiKey must be a non-empty string");let e=t.trim();if(!e)throw new Error("apiKey must be a non-empty string");return e}i(ve,"requireApiKey");function C(t,e){let n=A(t),o=A(e);return!!(n&&o&&n.toLowerCase()===o.toLowerCase())}i(C,"handleEquals");function M(t,e,n){let o=m(n);return t.findIndex(r=>C(r.handle,e)?o?m(r.baseUrl)===o:!0:!1)}i(M,"findAccountIndex");function w(t){let e=A(t.handle)??U,n=m(t.baseUrl);return n?{handle:e,baseUrl:n}:{handle:e}}i(w,"selectorFromAccount");function b(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o=m(typeof e.baseUrl=="string"?e.baseUrl:void 0);return o?{handle:n,baseUrl:o}:{handle:n}}i(b,"sanitizeActiveProfile");function G(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n=typeof e.repoPath=="string"?e.repoPath.trim():"",o=typeof e.profile=="string"&&e.profile.trim()?e.profile.trim():"default";if(!n)return;let r={repoPath:n,profile:o,mode:"local"};if(e.lastCheck&&typeof e.lastCheck=="object"&&!Array.isArray(e.lastCheck)){let s=e.lastCheck,a=s.command,l=s.status,p=s.checkedAt;(a==="inspect"||a==="build"||a==="validate"||a==="eval"||a==="run")&&(l==="passed"||l==="failed")&&typeof p=="string"&&(r.lastCheck={command:a,status:l,checkedAt:p,...typeof s.exitCode=="number"||s.exitCode===null?{exitCode:s.exitCode}:{},...typeof s.sourceHead=="string"||s.sourceHead===null?{sourceHead:s.sourceHead}:{}})}if(e.lastPush&&typeof e.lastPush=="object"&&!Array.isArray(e.lastPush)){let s=e.lastPush,a=s.status,l=s.pushedAt;(a==="pushed"||a==="failed")&&typeof l=="string"&&(r.lastPush={status:a,pushedAt:l,...typeof s.teamId=="string"||s.teamId===null?{teamId:s.teamId}:{},...typeof s.projectId=="string"||s.projectId===null?{projectId:s.projectId}:{},...typeof s.localHead=="string"||s.localHead===null?{localHead:s.localHead}:{},...typeof s.hostedHead=="string"||s.hostedHead===null?{hostedHead:s.hostedHead}:{},...typeof s.sourceRef=="string"||s.sourceRef===null?{sourceRef:s.sourceRef}:{},...s.promotionStatus==="uploaded"||s.promotionStatus==="hosted_source_materialized"||s.promotionStatus==="hosted_source_materialize_failed"||s.promotionStatus==="hosted_source_check_pending"||s.promotionStatus==="hosted_source_check_failed"||s.promotionStatus==="hosted_source_published"||s.promotionStatus==="hosted_source_publish_failed"||s.promotionStatus==="hosted_run_pending"||s.promotionStatus==="hosted_run_passed"||s.promotionStatus==="hosted_run_failed"||s.promotionStatus===null?{promotionStatus:s.promotionStatus}:{},...s.hostedRunStatus==="not_started"||s.hostedRunStatus==="running"||s.hostedRunStatus==="passed"||s.hostedRunStatus==="failed"||s.hostedRunStatus===null?{hostedRunStatus:s.hostedRunStatus}:{},...typeof s.hostedRunAgentId=="string"||s.hostedRunAgentId===null?{hostedRunAgentId:s.hostedRunAgentId}:{},...typeof s.hostedRunId=="string"||s.hostedRunId===null?{hostedRunId:s.hostedRunId}:{},...typeof s.hostedRunAt=="string"||s.hostedRunAt===null?{hostedRunAt:s.hostedRunAt}:{},...te(s.hostedSourceMaterialization)?{hostedSourceMaterialization:te(s.hostedSourceMaterialization)}:{},...ne(s.hostedSourceCheck)?{hostedSourceCheck:ne(s.hostedSourceCheck)}:{},...oe(s.hostedPublish)?{hostedPublish:oe(s.hostedPublish)}:{},...se(s.hostedRun)?{hostedRun:se(s.hostedRun)}:{},...typeof s.error=="string"||s.error===null?{error:s.error}:{}})}if(Array.isArray(e.profiles)){let s=e.profiles.flatMap(a=>{let l=G(a);if(!l)return[];let p=a,d=p.source==="github"||p.source==="openpond_git"?p.source:"local",h=typeof p.repositoryId=="string"&&p.repositoryId.trim()?p.repositoryId.trim():Ie.resolve(l.repoPath);return[{source:d,repositoryId:h,repoPath:l.repoPath,profile:l.profile,...l.lastCheck?{lastCheck:l.lastCheck}:{},...l.lastPush?{lastPush:l.lastPush}:{}}]});s.length>0&&(r.profiles=s)}return r}i(G,"sanitizeLocalOpenPondProfile");function te(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runtimeAgentId"),...u(e,"projectId"),...u(e,"sourceRoot"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"manifestSyncedAt"),...re(e,"fileCount"),...re(e,"totalBytes"),...u(e,"generatedManifestPath"),...j(e,"synthesizedOpenPondYaml"),...u(e,"uploadMetadataPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...u(e,"materializedAt"),...u(e,"error")}:null}i(te,"sanitizeHostedMaterializationStatus");function ne(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"deployPlanStatus"),...j(e,"canRun"),...j(e,"canDeploy"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...R(e,"setupCommands"),...R(e,"validationCommands"),...R(e,"requiredChecks"),...R(e,"evalNames"),...R(e,"blockedReasons"),...R(e,"staleReasons"),...u(e,"runtimeId"),...u(e,"sandboxId"),...R(e,"traceArtifactRefs"),...R(e,"evalResultArtifactRefs"),...R(e,"validatorArtifactRefs"),...u(e,"checkedAt"),...u(e,"error")}:null}i(ne,"sanitizeHostedSourceCheckStatus");function oe(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"snapshotId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"manifestPath"),...u(e,"buildStatus"),...u(e,"validationStatus"),...u(e,"evalStatus"),...u(e,"publishedAt"),...u(e,"error")}:null}i(oe,"sanitizeHostedPublishStatus");function se(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=v(e.status);return n?{status:n,...u(e,"agentId"),...u(e,"runId"),...u(e,"runtimeId"),...u(e,"sandboxId"),...u(e,"sourceRef"),...u(e,"sourceCommitSha"),...u(e,"manifestHash"),...u(e,"setupGateStatus"),...R(e,"setupRequirementRefs"),...R(e,"artifactRefs"),...R(e,"traceArtifactRefs"),...R(e,"evalArtifactRefs"),...u(e,"startedAt"),...u(e,"completedAt"),...u(e,"error")}:null}i(se,"sanitizeHostedRunSummary");function u(t,e){let n=t[e];return typeof n=="string"||n===null?{[e]:n}:{}}i(u,"nullableStringProp");function j(t,e){let n=t[e];return typeof n=="boolean"||n===null?{[e]:n}:{}}i(j,"nullableBooleanProp");function re(t,e){let n=t[e];return typeof n=="number"||n===null?{[e]:n}:{}}i(re,"nullableNumberProp");function R(t,e){let n=t[e];if(!Array.isArray(n))return{};let o=n.filter(r=>typeof r=="string");return{[e]:o}}i(R,"stringArrayProp");function v(t){return typeof t=="string"&&t.trim()?t.trim():null}i(v,"stringField");function le(t,e){if(!C(t.handle,e.handle))return!1;let n=m(e.baseUrl);return n?m(t.baseUrl)===n:!m(t.baseUrl)}i(le,"accountMatchesSelector");function $(t,e,n={}){let o=m(e.baseUrl);if(o)return M(t,e.handle,o);let r=t.findIndex(a=>le(a,e));if(r!==-1)return r;let s=t.map((a,l)=>({account:a,index:l})).filter(({account:a})=>C(a.handle,e.handle));if(s.length>1&&n.requireUnambiguous)throw new Error(`multiple profiles found for ${e.handle}; pass --base-url to select one`);return s[0]?.index??-1}i($,"findAccountIndexForSelector");function $e(t){if(!t||typeof t!="object"||Array.isArray(t))return;let e=t,n={};return typeof e.token=="string"&&(n.token=e.token),(typeof e.appId=="string"||e.appId===null)&&(n.appId=e.appId),(typeof e.conversationId=="string"||e.conversationId===null)&&(n.conversationId=e.conversationId),Object.keys(n).length>0?n:void 0}i($e,"sanitizeSession");function _e(t){if(!t||typeof t!="object"||Array.isArray(t))return null;let e=t,n=A(typeof e.handle=="string"?e.handle:void 0);if(!n)return null;let o={handle:n};typeof e.apiKey=="string"&&(o.apiKey=e.apiKey),typeof e.baseUrl=="string"&&(o.baseUrl=e.baseUrl),typeof e.apiBaseUrl=="string"&&(o.apiBaseUrl=e.apiBaseUrl),typeof e.chatApiBaseUrl=="string"&&(o.chatApiBaseUrl=e.chatApiBaseUrl),typeof e.environment=="string"&&(o.environment=e.environment);let r=$e(e.session);return r&&(o.session=r),o}i(_e,"sanitizeAccount");function Be(t){let e={};return typeof t.token=="string"&&(e.token=t.token),(typeof t.appId=="string"||t.appId===null)&&(e.appId=t.appId),(typeof t.conversationId=="string"||t.conversationId===null)&&(e.conversationId=t.conversationId),Object.keys(e).length>0?e:void 0}i(Be,"extractLegacySession");function De(t,e){let n={handle:e};typeof t.apiKey=="string"&&(n.apiKey=t.apiKey),typeof t.baseUrl=="string"&&(n.baseUrl=t.baseUrl),typeof t.apiBaseUrl=="string"&&(n.apiBaseUrl=t.apiBaseUrl),typeof t.chatApiBaseUrl=="string"&&(n.chatApiBaseUrl=t.chatApiBaseUrl);let o=Be(t);return o&&(n.session=o),n}i(De,"extractLegacyAccount");function z(t){let e={};typeof t.lspEnabled=="boolean"&&(e.lspEnabled=t.lspEnabled),(t.executionMode==="local"||t.executionMode==="hosted")&&(e.executionMode=t.executionMode),(t.mode==="general"||t.mode==="builder")&&(e.mode=t.mode);let n=G(t.openpondProfile);n&&(e.openpondProfile=n);let o=[],r=Array.isArray(t.accounts)?t.accounts:[];for(let p of r){let d=_e(p);d&&M(o,d.handle,d.baseUrl)===-1&&o.push(d)}if(o.length===0){let p=b(t.activeProfile)?.handle||U;o.push(De(t,p))}let s=b(t.activeProfile),a=s?$(o,s):-1,l=o[a===-1?0:a];return e.accounts=o,e.activeProfile=w(l),e}i(z,"normalizeGlobalConfig");function ce(t,e,n){let o=t.accounts??[],r=m(n??process.env.OPENPOND_BASE_URL),s=A(e);if(s)return r?{handle:s,baseUrl:r}:{handle:s};let a=A(process.env.OPENPOND_ACCOUNT);if(a)return r?{handle:a,baseUrl:r}:{handle:a};let l=b(t.activeProfile);return l?r?{handle:l.handle,baseUrl:r}:l:o[0]?w(o[0]):{handle:U}}i(ce,"resolveRequestedProfile");function ue(t,e,n){let o=m(n);if(o){let s=M(t,e,o);if(s!==-1)return t[s]}else{let s=t.filter(a=>C(a.handle,e));if(s.length>1)throw new Error(`multiple profiles found for ${e}; pass --base-url to select one`);if(s.length===1)return s[0]}let r={handle:e};return o&&(r.baseUrl=o),t.push(r),r}i(ue,"ensureAccount");function ie(t){t.session&&Object.keys(t.session).length===0&&delete t.session}i(ie,"cleanupAccount");function qe(t,e,n,o){let r=n===null||n===void 0&&o.undefinedDeletes;switch(e){case"apiKey":{if(r){delete t.apiKey;return}typeof n=="string"&&(t.apiKey=n);return}case"baseUrl":{if(r){delete t.baseUrl;return}typeof n=="string"&&(t.baseUrl=n);return}case"apiBaseUrl":{if(r){delete t.apiBaseUrl;return}typeof n=="string"&&(t.apiBaseUrl=n);return}case"chatApiBaseUrl":{if(r){delete t.chatApiBaseUrl;return}typeof n=="string"&&(t.chatApiBaseUrl=n);return}case"token":case"appId":case"conversationId":{if(t.session||(t.session={}),r){delete t.session[e],ie(t);return}(typeof n=="string"||n===null)&&(t.session[e]=n),ie(t);return}}}i(qe,"applyScopedKey");function pe(t,e,n){if(!ee.some(p=>S(e,p)))return!1;let r=t.accounts??[],s=b(e.activeProfile)??ce(t),a=m(S(e,"baseUrl")?e.baseUrl??null:s.baseUrl??process.env.OPENPOND_BASE_URL),l=ue(r,s.handle,a);for(let p of ee)S(e,p)&&qe(l,p,e[p],n);return t.accounts=r,t.activeProfile=w(l),!0}i(pe,"applyAccountPatch");function de(t,e){if(S(e,"lspEnabled")&&(typeof e.lspEnabled=="boolean"?t.lspEnabled=e.lspEnabled:e.lspEnabled===null&&delete t.lspEnabled),S(e,"executionMode")&&(e.executionMode==="local"||e.executionMode==="hosted"?t.executionMode=e.executionMode:e.executionMode===null&&delete t.executionMode),S(e,"mode")&&(e.mode==="general"||e.mode==="builder"?t.mode=e.mode:e.mode===null&&delete t.mode),S(e,"activeProfile")){let n=b(e.activeProfile);if(n){let o=$(t.accounts??[],n);t.activeProfile=o===-1?n:w((t.accounts??[])[o])}else e.activeProfile===null&&delete t.activeProfile}if(S(e,"openpondProfile")){let n=G(e.openpondProfile);n?t.openpondProfile=n:e.openpondProfile===null&&delete t.openpondProfile}}i(de,"applyTopLevelPatch");async function Ne(t){let e=P();await L(e),await q(e,()=>t)}i(Ne,"writeGlobalConfig");async function K(t){let e=P();return await L(e),await q(e,n=>{let o=z(n);return t(o),o})}i(K,"updateGlobalConfig");async function fe(){let t=P();return await L(t),z(await W(t))}i(fe,"loadGlobalConfig");async function Ht(t={}){let e=await fe(),n=e.accounts??[],o=ce(e,t.account,t.baseUrl),r=$(n,o,{requireUnambiguous:!0}),s=r===-1?null:n[r],a=s?.session;return{...e,activeProfile:s?w(s):o,apiKey:s?.apiKey,baseUrl:s?.baseUrl,apiBaseUrl:s?.apiBaseUrl,chatApiBaseUrl:s?.chatApiBaseUrl,token:a?.token,appId:a?.appId,conversationId:a?.conversationId}}i(Ht,"loadConfig");async function me(){let t=await fe(),e=b(t.activeProfile);return(t.accounts??[]).map(n=>{let o=A(n.handle)??U;return{handle:o,baseUrl:m(n.baseUrl),apiBaseUrl:m(n.apiBaseUrl),chatApiBaseUrl:m(n.chatApiBaseUrl),environment:n.environment?.trim()||null,isActive:!!(e&&le({...n,handle:o},e)),hasApiKey:!!n.apiKey?.trim(),hasSessionToken:!!n.session?.token?.trim(),sessionAppId:n.session?.appId??null,sessionConversationId:n.session?.conversationId??null}})}i(me,"listConfiguredProfiles");async function jt(t,e={}){let n=ae(t),o=m(e.baseUrl),r=-1;await K(a=>{let l=a.accounts??[];if(r=$(l,o?{handle:n,baseUrl:o}:{handle:n},{requireUnambiguous:!0}),r===-1)throw new Error(`profile not found: ${n}`);a.activeProfile=w(l[r])});let s=await me();return s.find(a=>a.isActive)??s[r]}i(jt,"setActiveProfile");async function Mt(t){let e=ae(t.handle),n=ve(t.apiKey),o=m(t.baseUrl),r=m(t.apiBaseUrl),s=m(t.chatApiBaseUrl),a={handle:e};await K(d=>{let h=d.accounts??[],g=ue(h,e,o);g.apiKey=n,o&&(g.baseUrl=o),r?g.apiBaseUrl=r:t.apiBaseUrl===null&&delete g.apiBaseUrl,s?g.chatApiBaseUrl=s:t.chatApiBaseUrl===null&&delete g.chatApiBaseUrl,t.environment===null?delete g.environment:typeof t.environment=="string"&&t.environment.trim()&&(g.environment=t.environment.trim()),d.accounts=h,a=w(g),t.setActive!==!1&&(d.activeProfile=a)});let p=(await me()).find(d=>C(d.handle,a.handle)?o?m(d.baseUrl)===o:!0:!1);if(!p)throw new Error(`failed to save profile: ${e}`);return p}i(Mt,"saveProfileApiKey");async function Gt(t){let e=z(t);de(e,t),pe(e,t,{undefinedDeletes:!0}),await Ne(e)}i(Gt,"saveConfig");async function zt(t){await K(e=>{de(e,t),pe(e,t,{undefinedDeletes:!1})})}i(zt,"saveGlobalConfig");import{createHash as He}from"node:crypto";var je=3600*1e3;function J(t){return He("sha256").update(JSON.stringify([t.apiBase.replace(/\/$/,""),t.apiKey.trim()])).digest("hex")}i(J,"buildCacheKey");async function ge(t,e){let n=await Y(P(),t,J(e),{allowStale:!0});return!n||Date.now()-Date.parse(n.updatedAt)>=(e.ttlMs??je)?null:n.payload}i(ge,"cached");async function on(t){return ge("cloud.apps",t)}i(on,"getCachedApps");async function sn(t){await D(P(),"cloud.apps",J(t),t.apps)}i(sn,"setCachedApps");async function rn(t){return ge("cloud.tools",t)}i(rn,"getCachedTools");async function an(t){await D(P(),"cloud.tools",J(t),t.tools)}i(an,"setCachedTools");var un=["openpond-generic-v1","openpond-work-v1","openpond-coding-core-v1","openpond-agent-harness-v1"];export{c as a,Re as b,Pe as c,Ae as d,Se as e,we as f,xe as g,be as h,Te as i,We as j,Xe as k,Qe as l,Ze as m,et as n,tt as o,nt as p,ot as q,st as r,rt as s,it as t,at as u,lt as v,ct as w,ut as x,pt as y,dt as z,ft as A,mt as B,gt as C,ht as D,yt as E,Rt as F,Pt as G,At as H,St as I,wt as J,xt as K,bt as L,Ce as M,Tt as N,Ot as O,Et as P,Ct as Q,kt as R,Lt as S,It as T,Le as U,Ut as V,Nt as W,K as X,fe as Y,Ht as Z,me as _,jt as $,Mt as aa,Gt as ba,zt as ca,je as da,on as ea,sn as fa,rn as ga,an as ha,un as ia};
@@ -1,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{b as de}from"./chunk-22UARBPW.js";import{a as fe,c as ge,d as ye,f as Re,g as Ae,i as Ce,j as Oe}from"./chunk-I5K74TOH.js";import{A as z,B as J,C as $,D as V,E as Y,F as Q,G as X,H as Z,I as ee,J as te,K as ne,L as oe,M as se,N as re,O as ae,Q as le,V as pe,c as E,d as b,da as ie,e as x,ea as ce,f as L,fa as ue,g as B,ga as me,h as D,ha as he,i as I,j as v,l as U,o as M,p as _,q as H,r as N,s as q,u as k,v as K,w as F,x as G,y as j,z as W}from"./chunk-SS3EG6S2.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,2 +0,0 @@
1
- import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{i as a,j as b,k as c}from"./chunk-3XUBKIBN.js";import"./chunk-MD7IADMT.js";import"./chunk-XDVKDELR.js";import"./chunk-V2BBMZ7I.js";import"./chunk-Q76GR2JM.js";import"./chunk-CTC5EYSH.js";import"./chunk-6MI4KKWF.js";import"./chunk-SDO4FC4Q.js";import"./chunk-IR3YJWPW.js";import"./chunk-J2S7BOZU.js";import"./chunk-WYHHDJEG.js";import"./chunk-6FA3GG5B.js";import"./chunk-NNLI4OWY.js";import"./chunk-HZP5U2AA.js";import"./chunk-ES2ISFJC.js";import"./chunk-H7IWJN7L.js";import"./chunk-FTQLQJQV.js";export{a as resolveWebLaunchMessages,c as runOpenPondAppServerCli,b as runOpenPondServerCli};