openpond 0.2.46 → 0.2.48

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 (212) hide show
  1. package/dist/app-server.d.ts +157 -1
  2. package/dist/app-server.js +1 -1
  3. package/dist/chunks/{actions-command-I3NI75P2.js → actions-command-DSO6YOEE.js} +1 -1
  4. package/dist/chunks/{app-layer-B3SMVO4B.js → app-layer-RRFI27N4.js} +1 -1
  5. package/dist/chunks/app-server-runtime-RWO4KGPU.js +2 -0
  6. package/dist/chunks/{apps-OA2VX34V.js → apps-NELJL377.js} +1 -1
  7. package/dist/chunks/{chunk-4UTIEH5H.js → chunk-2SPZYBDN.js} +1 -1
  8. package/dist/chunks/{chunk-LL4QP2IM.js → chunk-2ZJJFBIA.js} +1 -1
  9. package/dist/chunks/{chunk-HP2D3W2B.js → chunk-42GOV5ZU.js} +3 -3
  10. package/dist/chunks/{chunk-PGKEDR3S.js → chunk-5CMKGD43.js} +1 -1
  11. package/dist/chunks/{chunk-D6MQTNJ3.js → chunk-7K72KS5C.js} +6 -6
  12. package/dist/chunks/{chunk-JBHAU7PH.js → chunk-7MXZJQS7.js} +137 -137
  13. package/dist/chunks/{chunk-YSYXIJ46.js → chunk-7QEE4PBI.js} +1 -1
  14. package/dist/chunks/{chunk-F2AG46CV.js → chunk-7YR6CBNU.js} +1 -1
  15. package/dist/chunks/{chunk-UWO34HP6.js → chunk-DALJMSJG.js} +2 -2
  16. package/dist/chunks/chunk-DFM5JTS2.js +2 -0
  17. package/dist/chunks/{chunk-33AO3P6X.js → chunk-DLZP22WV.js} +1 -1
  18. package/dist/chunks/{chunk-BKMGBIBT.js → chunk-EMKZVP7Z.js} +1 -1
  19. package/dist/chunks/chunk-EPY7M5XS.js +2 -0
  20. package/dist/chunks/{chunk-ZJY2L43W.js → chunk-HA7EFTPF.js} +1 -1
  21. package/dist/chunks/{chunk-HK3WGUKK.js → chunk-IKWDL3RB.js} +1 -1
  22. package/dist/chunks/chunk-IOQUF34U.js +2 -0
  23. package/dist/chunks/chunk-JCCU3VFK.js +2 -0
  24. package/dist/chunks/{chunk-ZC57DX6D.js → chunk-JDLAHVAJ.js} +1 -1
  25. package/dist/chunks/{chunk-WWABOVRW.js → chunk-LVL4TIAO.js} +2 -2
  26. package/dist/chunks/{chunk-IV7F74JJ.js → chunk-MASJQWA2.js} +1 -1
  27. package/dist/chunks/{chunk-XLDW5NN3.js → chunk-N3DEA6PG.js} +1 -1
  28. package/dist/chunks/{chunk-F5DUN73H.js → chunk-N5QNXMIS.js} +1 -1
  29. package/dist/chunks/{chunk-MCRA6ZGJ.js → chunk-NAZ26IZL.js} +1 -1
  30. package/dist/chunks/chunk-NHJ26KXF.js +518 -0
  31. package/dist/chunks/chunk-NNF6KCHD.js +3 -0
  32. package/dist/chunks/{chunk-5OGRWWEH.js → chunk-O7VGFMDO.js} +1 -1
  33. package/dist/chunks/{chunk-USWZ3KUC.js → chunk-PA7XP42P.js} +1 -1
  34. package/dist/chunks/{chunk-BQNK2NMB.js → chunk-PJM2G7SG.js} +1 -1
  35. package/dist/chunks/chunk-PNE3IETM.js +190 -0
  36. package/dist/chunks/chunk-PYABBF53.js +53 -0
  37. package/dist/chunks/{chunk-TYWBEJOA.js → chunk-Q4H3NUVW.js} +2 -2
  38. package/dist/chunks/{chunk-HO5L2FUU.js → chunk-QJRXTIOC.js} +1 -1
  39. package/dist/chunks/chunk-QRWPEW3Z.js +24 -0
  40. package/dist/chunks/{chunk-LZSY5IM3.js → chunk-QXVIIM4T.js} +1 -1
  41. package/dist/chunks/{chunk-6SJZXZNA.js → chunk-R3XFY7VL.js} +1 -1
  42. package/dist/chunks/{chunk-EWS7MXTM.js → chunk-RLZPX4YP.js} +1 -1
  43. package/dist/chunks/{chunk-VW7D3DRM.js → chunk-SDEDAHV6.js} +72 -67
  44. package/dist/chunks/{chunk-BUFQKDAW.js → chunk-T5LE6R5S.js} +1 -1
  45. package/dist/chunks/{chunk-L4BYPZ4U.js → chunk-TGIB24K4.js} +1 -1
  46. package/dist/chunks/{chunk-D6E7JBBQ.js → chunk-TIUSKRBP.js} +4 -4
  47. package/dist/chunks/{chunk-6WLJWRMF.js → chunk-UJ5EFSEC.js} +1 -1
  48. package/dist/chunks/chunk-VOIH2BQA.js +2162 -0
  49. package/dist/chunks/{chunk-KE5RH6JA.js → chunk-WITSXYEW.js} +1 -1
  50. package/dist/chunks/chunk-WV2APYWG.js +2 -0
  51. package/dist/chunks/chunk-XBCIBAXD.js +4 -0
  52. package/dist/chunks/chunk-XDMUD4FW.js +5 -0
  53. package/dist/chunks/{chunk-DNXKIIV7.js → chunk-XM26DGML.js} +1 -1
  54. package/dist/chunks/{chunk-OGXSE57Z.js → chunk-YIB3J4RC.js} +1 -1
  55. package/dist/chunks/{chunk-H6W55CQG.js → chunk-YL6VFJ4P.js} +1 -1
  56. package/dist/chunks/cli-ZLDLOKPL.js +2 -0
  57. package/dist/chunks/{configuration-command-MVZS625X.js → configuration-command-SA56RV5B.js} +1 -1
  58. package/dist/chunks/{connected-evidence-7LHUZ2UI.js → connected-evidence-IVSQZYIB.js} +1 -1
  59. package/dist/chunks/{continual-K5JNHNQH.js → continual-PKK2BOTB.js} +1 -1
  60. package/dist/chunks/core-commands-W5IGIITV.js +2 -0
  61. package/dist/chunks/{datasets-KDN2EXHE.js → datasets-KSO2UG6R.js} +1 -1
  62. package/dist/chunks/{desktop-test-WIOEKMPR.js → desktop-test-6HXFM7PO.js} +1 -1
  63. package/dist/chunks/{dist-JBE7DPFZ.js → dist-4HV2W6V4.js} +1 -1
  64. package/dist/chunks/{dist-3MTJ7VM6.js → dist-BLBZENVB.js} +1 -1
  65. package/dist/chunks/{evaluation-coordination-NGYHL7HG.js → evaluation-coordination-MOFBXRXN.js} +1 -1
  66. package/dist/chunks/{experiment-improvements-2M7GRGWS.js → experiment-improvements-TDHM6NEA.js} +1 -1
  67. package/dist/chunks/{experiments-B6CRZ3GI.js → experiments-HFPDFD4I.js} +1 -1
  68. package/dist/chunks/{extension-RZTMK3ON.js → extension-R373LYIB.js} +1 -1
  69. package/dist/chunks/{help-EISFHH2F.js → help-PEFQDDTA.js} +1 -1
  70. package/dist/chunks/{hosted-experiment-improvement-6CHH65DX.js → hosted-experiment-improvement-MGMZWTZY.js} +1 -1
  71. package/dist/chunks/hosted-harness-runtime-FZZLWLBR.js +2 -0
  72. package/dist/chunks/{hosted-profile-candidate-HYEISIAC.js → hosted-profile-candidate-LVNKOTKJ.js} +1 -1
  73. package/dist/chunks/hosted-profile-compiler-PQFIWO5B.js +2 -0
  74. package/dist/chunks/{hosted-profile-evaluation-control-LV6YXOG7.js → hosted-profile-evaluation-control-7B3RAZU2.js} +1 -1
  75. package/dist/chunks/{hosted-profile-evaluation-inspection-A62UYFEP.js → hosted-profile-evaluation-inspection-FPCV42DD.js} +1 -1
  76. package/dist/chunks/hosted-profile-evaluation-preparation-JROREZH3.js +3 -0
  77. package/dist/chunks/{human-review-J6JGNRBR.js → human-review-HRGGACEM.js} +1 -1
  78. package/dist/chunks/import-RSAQ44GG.js +4 -0
  79. package/dist/chunks/{learning-REL6GGNA.js → learning-FNBEIAY6.js} +1 -1
  80. package/dist/chunks/{opchat-CUZUU2WM.js → opchat-I7ZWJ5XK.js} +1 -1
  81. package/dist/chunks/{organizations-VT27V4B2.js → organizations-LFCZIH7E.js} +1 -1
  82. package/dist/chunks/{profile-N2E5ASHQ.js → profile-EPIX5QVK.js} +1 -1
  83. package/dist/chunks/{project-agent-XMXOBJSC.js → project-agent-DGOPMECP.js} +1 -1
  84. package/dist/chunks/{sandbox-command-NC665ZZ5.js → sandbox-command-Q5F6VUOS.js} +1 -1
  85. package/dist/chunks/{sandbox-template-OTP6S3RU.js → sandbox-template-7GICPIKJ.js} +1 -1
  86. package/dist/chunks/{src-WM35IF4W.js → src-DH5AQ4Z7.js} +1 -1
  87. package/dist/chunks/src-GKWEQK2T.js +329 -0
  88. package/dist/chunks/{taskset-COAPMTT3.js → taskset-LUG3ZU6J.js} +1 -1
  89. package/dist/chunks/{teams-bot-ACWJ7PJP.js → teams-bot-Z6RJGHME.js} +1 -1
  90. package/dist/chunks/{training-4JUK7YQV.js → training-XHE6FVII.js} +1 -1
  91. package/dist/chunks/{workspaces-WTPFRJMS.js → workspaces-XIQNPAP7.js} +1 -1
  92. package/dist/cli.js +1 -1
  93. package/dist/index.js +1 -1
  94. package/dist/web/agent-sources/SOURCES.md +11 -0
  95. package/dist/web/agent-sources/claude-code.svg +1 -0
  96. package/dist/web/agent-sources/codex.svg +1 -0
  97. package/dist/web/agent-sources/grok-build.svg +3 -0
  98. package/dist/web/agent-sources/hermes.png +0 -0
  99. package/dist/web/agent-sources/oh-my-pi.svg +11 -0
  100. package/dist/web/agent-sources/openclaw.svg +54 -0
  101. package/dist/web/agent-sources/opencode.svg +4 -0
  102. package/dist/web/agent-sources/pi.svg +6 -0
  103. package/dist/web/assets/App-BI-uOpnP.js +234 -0
  104. package/dist/web/assets/App-DkH8CeoI.css +1 -0
  105. package/dist/web/assets/{AppDialog-CaxeNfsu.js → AppDialog-1iGodoot.js} +1 -1
  106. package/dist/web/assets/{AppTerminalPanel-dtK0ZPer.js → AppTerminalPanel-udtBdWFn.js} +2 -2
  107. package/dist/web/assets/AppsView-BonAGiS8.css +1 -0
  108. package/dist/web/assets/AppsView-DhKsU4yi.js +1 -0
  109. package/dist/web/assets/BrowserSidebar-BnOyqIQT.js +1 -0
  110. package/dist/web/assets/{CartesianChart-Drfk6jTn.js → CartesianChart-C24DAywn.js} +1 -1
  111. package/dist/web/assets/{CollaborationTabs-Czh2noeb.js → CollaborationTabs-DgmOF5Fe.js} +1 -1
  112. package/dist/web/assets/{CommandMenu-D-M-xomh.js → CommandMenu-CUNGtHwS.js} +1 -1
  113. package/dist/web/assets/{CommunityView-BrdxUI5Z.js → CommunityView-CE7qeJnr.js} +1 -1
  114. package/dist/web/assets/{ComposerCreateImproveStrip-CJ8nkYJf.js → ComposerCreateImproveStrip-BixNsg2a.js} +1 -1
  115. package/dist/web/assets/{GetStartedView-u7Jw7YA1.js → GetStartedView-B8gCwmBX.js} +1 -1
  116. package/dist/web/assets/{HostedModelLearningReview-D0a2nwse.js → HostedModelLearningReview-CitgUNfC.js} +1 -1
  117. package/dist/web/assets/{HostedModelLearningSettings-CQQGyjxi.js → HostedModelLearningSettings-WUaqzNsa.js} +1 -1
  118. package/dist/web/assets/{LabModelVersionDetailPage-Cxlc4sSC.js → LabModelVersionDetailPage-Cx0kL69J.js} +1 -1
  119. package/dist/web/assets/{LabSkillSidebar-BnJkDb0c.js → LabSkillSidebar-DRggqZ1j.js} +1 -1
  120. package/dist/web/assets/LabsRoute-BujTZhqC.js +99 -0
  121. package/dist/web/assets/{MainChatThread-r_TYiTnW.js → MainChatThread-CyA_644R.js} +2 -2
  122. package/dist/web/assets/MainPane-LaEtxydD.js +19 -0
  123. package/dist/web/assets/{MarkdownText-BxPHz4je.js → MarkdownText-DJI5LwT0.js} +19 -19
  124. package/dist/web/assets/{NativeSkillSidebar-CCHK6kMG.js → NativeSkillSidebar-CkFpWxjd.js} +1 -1
  125. package/dist/web/assets/{NewExperienceSwitcher-CuKWTDZj.js → NewExperienceSwitcher-DXcRHHsu.js} +1 -1
  126. package/dist/web/assets/{NewProjectDialog-CS6sw2oD.js → NewProjectDialog-gDzX_ZIJ.js} +1 -1
  127. package/dist/web/assets/{OutputsPage-JDM5bfLJ.js → OutputsPage-J_k-_N82.js} +1 -1
  128. package/dist/web/assets/{ProjectsPage-B3zTBHOA.js → ProjectsPage-BsyZmvlg.js} +1 -1
  129. package/dist/web/assets/{RightChatPanelStack-L8S3yj1u.js → RightChatPanelStack-Bz8puMUB.js} +1 -1
  130. package/dist/web/assets/{RightSidebarHomePanel-BWJQKFUp.js → RightSidebarHomePanel-DmorYb6p.js} +1 -1
  131. package/dist/web/assets/ScheduledWorkPage-BFDzQUyL.js +1 -0
  132. package/dist/web/assets/SettingsView-BB7wCdbr.js +5 -0
  133. package/dist/web/assets/SettingsView-BnANbPLS.css +1 -0
  134. package/dist/web/assets/{TeamChatView-DakXCNQE.js → TeamChatView-CZ3b7rq2.js} +2 -2
  135. package/dist/web/assets/{TerminalOverlay-DaonK5C0.js → TerminalOverlay-Ck43Qri3.js} +1 -1
  136. package/dist/web/assets/{TrainingCreationPanel-CUvSsSwp.js → TrainingCreationPanel-ejqPZm3g.js} +1 -1
  137. package/dist/web/assets/{TrainingDraftPanel-DNivtVwd.js → TrainingDraftPanel-Cy2AQxxL.js} +1 -1
  138. package/dist/web/assets/{UsageSettingsSection-rbmuoPoE.js → UsageSettingsSection-B7nyMItm.js} +1 -1
  139. package/dist/web/assets/{WorkSidebarPanel-DrYt9xzv.js → WorkSidebarPanel-BfjAc097.js} +1 -1
  140. package/dist/web/assets/{WorkspaceDiffPanel-CThoTqe4.js → WorkspaceDiffPanel-D9hAV8l7.js} +5 -5
  141. package/dist/web/assets/{WorkspaceEnvironmentMenu-DeODKxvW.js → WorkspaceEnvironmentMenu-B-K9XgFB.js} +3 -3
  142. package/dist/web/assets/{WorkspaceGitDialogs-CBarJYF-.js → WorkspaceGitDialogs-BJVFx_L3.js} +1 -1
  143. package/dist/web/assets/{WorkspaceMonacoEditor-Hmu5m_sO.js → WorkspaceMonacoEditor-p-FWMXoZ.js} +3 -3
  144. package/dist/web/assets/{arrow-up-right-BV2IHfb9.js → arrow-up-right-CFGI2YSt.js} +1 -1
  145. package/dist/web/assets/{chunk-YTGRET2L-PKzEfYnf.js → chunk-UHVJOMWN-BAlur2vw.js} +1 -1
  146. package/dist/web/assets/{clipboard-DDIvAWKp.js → clipboard-DIIxBort.js} +1 -1
  147. package/dist/web/assets/{cloud-upload-Dv6kFnfC.js → cloud-upload-BaQFNCTp.js} +1 -1
  148. package/dist/web/assets/{cssMode-BK0jFqWW.js → cssMode-6LOkSggB.js} +1 -1
  149. package/dist/web/assets/{folder-open-B9ixJQJX.js → folder-open-DZSxfPtr.js} +1 -1
  150. package/dist/web/assets/{folder-plus-DqSKvtNB.js → folder-plus-21v4D_Vx.js} +1 -1
  151. package/dist/web/assets/{git-commit-horizontal-C1lQvfxe.js → git-commit-horizontal-CgGixL64.js} +1 -1
  152. package/dist/web/assets/{htmlMode-CCV301b6.js → htmlMode-B5uRraNd.js} +1 -1
  153. package/dist/web/assets/index-DJcUXSsN.css +1 -0
  154. package/dist/web/assets/{index-DIaKfM8a.js → index-DOMrqhcz.js} +2 -2
  155. package/dist/web/assets/{info-BEvaynAD.js → info-BGTcmow7.js} +1 -1
  156. package/dist/web/assets/{jsonMode-Co4pyN4F.js → jsonMode-D3m8N4Gi.js} +1 -1
  157. package/dist/web/assets/{lspLanguageFeatures-CSU0G5da.js → lspLanguageFeatures-DoyipLsB.js} +1 -1
  158. package/dist/web/assets/{minimize-2-DT8t8wwP.js → minimize-2-B01qSko4.js} +1 -1
  159. package/dist/web/assets/{monaco.contribution-Cr0AaHCD.js → monaco.contribution--U8v3jpa.js} +2 -2
  160. package/dist/web/assets/{monaco.contribution-DSBAb_PC.js → monaco.contribution-BJyfaGX2.js} +2 -2
  161. package/dist/web/assets/{monaco.contribution-CBwGIQY1.js → monaco.contribution-Bc22foTx.js} +2 -2
  162. package/dist/web/assets/{monaco.contribution-DUZrs1D-.js → monaco.contribution-DuRhJ6zU.js} +2 -2
  163. package/dist/web/assets/{monitor-DGqnfsK9.js → monitor-eZP8ZTHe.js} +1 -1
  164. package/dist/web/assets/{play-C1XWyKh6.js → play-CGsWFR_B.js} +1 -1
  165. package/dist/web/assets/{python-Z1foxLdf.js → python-BNrLZWud.js} +1 -1
  166. package/dist/web/assets/{save-CX2kF74j.js → save-BLgjrccP.js} +1 -1
  167. package/dist/web/assets/{square-DMkXeYeV.js → square-CI1qNtvE.js} +1 -1
  168. package/dist/web/assets/{toggleHighContrast-CRMVp779.js → toggleHighContrast-B_GcTCnw.js} +1 -1
  169. package/dist/web/assets/{tsMode-Czu8YAqh.js → tsMode-CmruH_ys.js} +1 -1
  170. package/dist/web/assets/{upload-giKOPnl1.js → upload-DnlgGS2x.js} +1 -1
  171. package/dist/web/assets/useLocalAgentSchedules-BBhGUfK-.js +1 -0
  172. package/dist/web/assets/useProviderSettings-Bw-csWbH.css +1 -0
  173. package/dist/web/assets/useProviderSettings-DfhdkKdC.js +5 -0
  174. package/dist/web/assets/{useSessionTurnCache-CUYFsu_W.js → useSessionTurnCache-BwscKl5i.js} +1 -1
  175. package/dist/web/assets/{wifi-off-DbDXaV1N.js → wifi-off-Dz-4EDCc.js} +1 -1
  176. package/dist/web/assets/{workers-Cno4XklJ.js → workers-Bi9u46cp.js} +1 -1
  177. package/dist/web/assets/{yaml-C28t_C6h.js → yaml-DVTkiRnh.js} +1 -1
  178. package/dist/web/index.html +2 -2
  179. package/package.json +1 -1
  180. package/dist/chunks/app-server-runtime-FL2CHQU2.js +0 -2
  181. package/dist/chunks/chunk-4VKNBADF.js +0 -2
  182. package/dist/chunks/chunk-5ZZM3TUN.js +0 -24
  183. package/dist/chunks/chunk-6JBWHR6T.js +0 -5
  184. package/dist/chunks/chunk-FKCWOASO.js +0 -49
  185. package/dist/chunks/chunk-FOEUDMME.js +0 -2678
  186. package/dist/chunks/chunk-ICZEOMPO.js +0 -2
  187. package/dist/chunks/chunk-JO7GRBOG.js +0 -2
  188. package/dist/chunks/chunk-KUKOZJIR.js +0 -2
  189. package/dist/chunks/chunk-M7PBDRKC.js +0 -2
  190. package/dist/chunks/chunk-P653BXMY.js +0 -3
  191. package/dist/chunks/chunk-PMZH2TKS.js +0 -4
  192. package/dist/chunks/chunk-W4IL6TWB.js +0 -186
  193. package/dist/chunks/chunk-WVNN3RB2.js +0 -2
  194. package/dist/chunks/cli-5QR7QNQJ.js +0 -2
  195. package/dist/chunks/core-commands-J2SJM5I5.js +0 -2
  196. package/dist/chunks/hosted-harness-runtime-PAYMAXH7.js +0 -2
  197. package/dist/chunks/hosted-profile-compiler-KQREWJA5.js +0 -2
  198. package/dist/chunks/hosted-profile-evaluation-preparation-OR4OLYEX.js +0 -3
  199. package/dist/chunks/import-YHSX6SBZ.js +0 -4
  200. package/dist/chunks/src-TNWF3IC5.js +0 -329
  201. package/dist/web/assets/App-CdDQ-lXE.css +0 -1
  202. package/dist/web/assets/App-D2f8_mGk.js +0 -235
  203. package/dist/web/assets/AppsView-CzbB5pXp.css +0 -1
  204. package/dist/web/assets/AppsView-DwK1UBJP.js +0 -1
  205. package/dist/web/assets/BrowserSidebar-Cj9VnkgU.js +0 -1
  206. package/dist/web/assets/LabsRoute-hHwZNbqN.js +0 -99
  207. package/dist/web/assets/MainPane-DJcd4tPk.js +0 -19
  208. package/dist/web/assets/ScheduledWorkPage-qX12p4B0.js +0 -1
  209. package/dist/web/assets/SettingsView-0KMs-r2I.js +0 -9
  210. package/dist/web/assets/SettingsView-CVsuQeCZ.css +0 -1
  211. package/dist/web/assets/index-1cMIFBxZ.css +0 -1
  212. package/dist/web/assets/useLocalAgentSchedules-BHxWmOeC.js +0 -1
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{$a as N,Qa as z,Sa as P,Va as x,Ya as G,ab as J,bb as U,db as W,kb as $}from"./chunk-5ZZM3TUN.js";import{U as V,e as C,f as O,fa as M,g as F,ha as B,vb as L}from"./chunk-BQNK2NMB.js";import{j as E,k as H,l as h}from"./chunk-P653BXMY.js";import{a as l}from"./chunk-FTQLQJQV.js";import{constants as Q}from"node:fs";import{lstat as ie,open as ce,readdir as le}from"node:fs/promises";import A from"node:path";import{createHash as q}from"node:crypto";import{mkdir as K,readdir as ae,readFile as I,writeFile as X}from"node:fs/promises";import d from"node:path";async function je(e,t){let a=x.parse(e),r=["tasks","assets","environment","graders","rubrics","comparisons","metrics","fixtures"];await Promise.all(r.map(g=>K(d.join(t,g),{recursive:!0})));let o=await re(a,t);if(a.metrics.customAggregator){let g=d.join(t,a.metrics.customAggregator.module),k=q("sha256").update(await I(g)).digest("hex");a=x.parse({...a,metrics:{...a.metrics,customAggregator:{...a.metrics.customAggregator,contentHash:k}}})}let n=d.join(t,"taskset.json"),s=d.join(t,"tasks","tasks.jsonl"),f=d.join(t,"graders","graders.json"),i=d.join(t,"fixtures","grader-fixtures.json"),u=d.join(t,"metrics","policy.json"),c=d.join(t,"assets","manifest.json"),m=d.join(t,"environment","contract.json"),w=d.join(t,"rubrics","preference-review.md"),v=d.join(t,"comparisons","policy.json");return await Promise.all([...J(a)].map(([g,k])=>X(d.join(t,g),k,"utf8"))),{directory:t,files:[n,s,c,m,f,w,v,u,i,...o],draft:a}}l(je,"writeTasksetDraftPackage");async function Re(e){let t=await se(e),a=q("sha256");for(let r of t)a.update(d.relative(e,r).replaceAll(d.sep,"/")),a.update("\0"),a.update(await I(r)),a.update("\0");return a.digest("hex")}l(Re,"hashTasksetDraftPackage");async function Y(e,t){let a=d.basename(e)==="taskset.json"?e:d.join(e,"taskset.json"),r=d.dirname(a),o=l(async f=>{if(!t)return I(f,"utf8");let i=t.get(d.relative(r,f).replaceAll(d.sep,"/"));if(!i)throw Object.assign(new Error("Authored file is absent."),{code:"ENOENT"});return new TextDecoder("utf-8",{fatal:!0}).decode(i)},"read"),n=JSON.parse(await o(a)),s=x.safeParse(n);if(s.success){let[f,i,u,c,m,w]=await Promise.all([ne(d.join(r,"tasks","tasks.jsonl"),o),S(d.join(r,"graders","graders.json"),o),S(d.join(r,"fixtures","grader-fixtures.json"),o),S(d.join(r,"metrics","policy.json"),o),S(d.join(r,"environment","contract.json"),o),S(d.join(r,"comparisons","policy.json"),o)]);return x.parse({...s.data,...f===null?{}:{tasks:f},...i===null?{}:{graders:i},...u===null?{}:{graderFixtures:u},...c===null?{}:{metrics:c},...m===null?{}:{environment:m},...w===null?{}:{review:w}})}return $(n)}l(Y,"readTasksetDraftPackage");async function re(e,t){let a=N(e),r=[];for(let o of a){let n=d.join(t,o.relativePath);await K(d.dirname(n),{recursive:!0});try{await X(n,o.source,{encoding:"utf8",flag:"wx"})}catch(s){if(!oe(s))throw s}r.push(n)}return r}l(re,"writeConfiguredStarterCode");async function se(e){let t=[];async function a(r){let o=await ae(r,{withFileTypes:!0});o.sort((n,s)=>n.name.localeCompare(s.name));for(let n of o){let s=d.join(r,n.name);if(n.isSymbolicLink())throw new Error(`Taskset workspaces cannot contain symbolic links: ${s}`);n.isDirectory()?await a(s):n.isFile()&&t.push(s)}}return l(a,"visit"),await a(e),t}l(se,"packageFiles");async function S(e,t=a=>I(a,"utf8")){try{return JSON.parse(await t(e))}catch(a){if(Z(a))return null;throw a}}l(S,"readOptionalJson");async function ne(e,t=a=>I(a,"utf8")){try{return(await t(e)).split(/\r?\n/).map(r=>r.trim()).filter(Boolean).map(r=>JSON.parse(r))}catch(a){if(Z(a))return null;throw a}}l(ne,"readOptionalJsonLines");function Z(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}l(Z,"isMissingFile");function oe(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}l(oe,"isFileExists");async function Oe(e){let t=A.resolve(e.directory);if(!(await ie(t)).isDirectory())throw new Error("Dataset upload requires a regular authored folder.");let a=new Map,r=0;async function o(c,m){if(m>30)throw new Error("Dataset folder nesting exceeds 30 levels.");for(let w of(await le(c,{withFileTypes:!0})).sort((v,g)=>v.name<g.name?-1:v.name>g.name?1:0)){if(w.name.startsWith("."))throw new Error("Dataset folders cannot include hidden files or directories.");if(w.isSymbolicLink()||!w.isDirectory()&&!w.isFile())throw new Error("Dataset folders can contain only regular files and directories.");let v=A.join(c,w.name);if(w.isDirectory()){await o(v,m+1);continue}if(a.size>=1e4)throw new Error("Dataset folder exceeds 10,000 files.");let g=await ce(v,Q.O_RDONLY|Q.O_NOFOLLOW);try{let k=await g.stat();if(!k.isFile()||k.size>U-r)throw new Error("Dataset folder exceeds the 64 MiB capture limit.");let j=new Uint8Array(k.size),R=0;for(;R<j.length;){let D=await g.read(j,R,j.length-R,R);if(!D.bytesRead)throw new Error("Dataset file changed during capture.");R+=D.bytesRead}let _=await g.stat();if(_.size!==k.size||_.mtimeMs!==k.mtimeMs||_.ctimeMs!==k.ctimeMs)throw new Error("Dataset file changed during capture.");r+=j.length,a.set(A.relative(t,v).replaceAll(A.sep,"/"),j)}finally{await g.close()}}}l(o,"visit"),await o(t,0);let n=await Y(t,a),s=[...a].map(([c,m])=>({path:c,contentHash:H(m),sizeBytes:m.byteLength})),f=h(s),i=x.parse({...n,id:e.datasetId??n.id,profileId:e.teamId,revision:e.expectedRevision+1,modelScope:null,status:"draft",publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:f}}});return{workspace:W({schemaVersion:"openpond.tasksetDraftWorkspace.v1",draft:i,files:[...a].filter(([c])=>!G(c)).map(([c,m])=>({path:c,base64:Buffer.from(m).toString("base64"),contentHash:H(m),sizeBytes:m.byteLength}))}),sourceHash:f,sourceFiles:s,capturedBytes:r}}l(Oe,"captureTasksetDraftWorkspace");async function ee(e){let{binding:t,rewards:a}=e.learning,r=M(t,a);if(e.graders.length!==r.length||r.some(({source:i,reward:u})=>!e.graders.some(c=>c.id===i.graderId&&c.version===String(u.revision)&&h(c.metadata.rewardBinding)===h(L(t)))))throw new Error("Prepared Taskset graders do not match their immutable Reward binding.");let o=V.parse({id:e.task.id,clusterKey:e.task.clusterKey,split:e.task.split,input:e.task.input,expectedOutput:e.task.expectedOutput,policyVisibleContext:e.task.policyVisibleContext,privilegedContextRef:e.task.privilegedContextRef,artifactRefs:[],tags:e.task.tags}),n=await B({binding:t,rewards:a,task:o,signal:e.signal,evidence:{output:e.attempt.output,artifactRefs:e.attempt.artifactRefs,runtimeEventRefs:e.attempt.runtimeEventRefs,infrastructureError:e.attempt.infrastructureError},customVerifier:e.customVerifier?async({grader:i})=>{let u=e.graders.find(m=>m.id===i.id);if(u?.kind!=="custom_verifier")throw new Error("Bound verifier projection is missing.");let c=await e.customVerifier({grader:u,task:e.task,attempt:e.attempt,signal:e.signal});return{score:c.score,passed:c.passed,rewardEligible:i.rewardEligible,failureClass:null,feedback:[c.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:c.evidenceRefs??[]}}:void 0,modelJudge:e.modelJudge?async({grader:i})=>{let u=e.graders.find(m=>m.id===i.id);if(u?.kind!=="model_judge")throw new Error("Bound judge projection is missing.");let c=await e.modelJudge({grader:u,task:e.task,attempt:e.attempt});return{score:c.score,passed:c.passed,rewardEligible:i.rewardEligible,failureClass:null,feedback:[c.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:c.evidenceRefs??[]}}:void 0}),s=n.training.status==="not_configured"?n.evaluation:n.training,f=h(e.graders);return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${h([e.attempt.id,n.contentHash]).slice(0,24)}`,attemptId:e.attempt.id,graderSetHash:f,score:s.score,passed:s.passed===!0,components:n.results.map(i=>{let u=t.sources.find(m=>m.graderId===i.graderId),c=e.graders.find(m=>m.id===i.graderId);return{graderId:i.graderId,graderVersion:c.version,score:i.normalizedScore,passed:i.passed===!0,hardGate:u.hardGate,rewardEligible:u.role==="training"&&i.status==="scored",feedback:i.message?.trim()||null,evidenceRefs:i.evidenceHashes,judge:c.kind==="model_judge"?c.judge:null,calibrationStatus:c.kind==="model_judge"?c.calibrationStatus:"not_applicable"}}),failureClass:e.attempt.infrastructureError?"infrastructure_failure":s.status!=="scored"?"grader_failure":s.passed?null:"policy_failure",feedback:n.results.flatMap(i=>i.message?.trim()?[i.message.trim()]:[]),rewardEligible:n.training.status==="scored",rewardComposition:n,createdAt:e.now?.()??new Date().toISOString()}}l(ee,"gradeLearningBatchAttempt");async function at(e){if(e.learning)return ee({...e,learning:e.learning});if(e.graders.some(o=>o.metadata.rewardBinding!==void 0))throw new Error("This Taskset requires its immutable public Reward binding to grade an attempt.");let t=h(e.graders),a=[];for(let o of e.graders)e.signal?.throwIfAborted(),a.push(e.attempt.infrastructureError?b(o,null,!1,"Infrastructure failure; no reward was produced.",[],!1):await me(o,e.task,e.attempt,e.modelJudge,e.customVerifier,e.signal));let r=F({graders:e.graders,infrastructureError:e.attempt.infrastructureError,components:a.map(o=>({...o,failureClass:o.score===null?"grader_failure":o.passed?null:"policy_failure"}))});return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${h([e.attempt.id,t,a]).slice(0,24)}`,attemptId:e.attempt.id,graderSetHash:t,score:r.score,passed:r.passed,components:a,failureClass:r.failureClass,feedback:e.attempt.infrastructureError?[e.attempt.infrastructureError]:a.flatMap(o=>o.feedback?[o.feedback]:[]),rewardEligible:r.rewardEligible,createdAt:e.now?.()??new Date().toISOString()}}l(at,"gradeAttempt");async function me(e,t,a,r,o,n){if(e.kind==="model_judge"){if(!r)return b(e,null,!1,"Model judge runner is unavailable.",[],!1);if(e.calibrationStatus!=="passed")return b(e,null,!1,"Model judge calibration has not passed.",[],!1);let f=await r({grader:e,task:t,attempt:a});return b(e,f.score,f.passed,f.feedback,f.evidenceRefs??[])}if(e.kind==="human")return b(e,null,!1,"Human review is pending.",[],!1);if(e.kind==="custom_verifier"){if(!o)return b(e,null,!1,"Sandboxed verifier runner is unavailable.",[],!1);let f=await o({grader:e,task:t,attempt:a,signal:n});return b(e,f.score,f.passed,f.feedback,f.evidenceRefs??[])}let s=C({grader:O(e),task:t,evidence:a});return b(e,s.score,s.passed,s.feedback,[...a.artifactRefs,...a.runtimeEventRefs])}l(me,"runGrader");function b(e,t,a,r,o,n=e.rewardEligible){let s=t!==null&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):null;return{graderId:e.id,graderVersion:e.version,score:s,passed:s!==null&&a,hardGate:e.hardGate,rewardEligible:s!==null&&n,feedback:r,evidenceRefs:o,judge:e.kind==="model_judge"?e.judge:null,calibrationStatus:e.kind==="model_judge"?e.calibrationStatus:"not_applicable"}}l(b,"component");import{access as ue,mkdir as T,readFile as Vt,writeFile as y}from"node:fs/promises";import p from"node:path";async function Gt(e,t,a={}){let r=z.parse(e),o=P(r);if(!o.valid)throw new Error(o.issues.map(s=>`${s.code}: ${s.message}`).join(`
2
+ import{$a as N,Qa as z,Sa as P,Va as x,Ya as G,ab as J,bb as U,db as W,kb as $}from"./chunk-QRWPEW3Z.js";import{U as V,e as C,f as O,fa as M,g as F,ha as B,vb as L}from"./chunk-PJM2G7SG.js";import{k as E,l as H,m as h}from"./chunk-NNF6KCHD.js";import{a as l}from"./chunk-FTQLQJQV.js";import{constants as Q}from"node:fs";import{lstat as ie,open as ce,readdir as le}from"node:fs/promises";import A from"node:path";import{createHash as q}from"node:crypto";import{mkdir as K,readdir as ae,readFile as I,writeFile as X}from"node:fs/promises";import d from"node:path";async function je(e,t){let a=x.parse(e),r=["tasks","assets","environment","graders","rubrics","comparisons","metrics","fixtures"];await Promise.all(r.map(g=>K(d.join(t,g),{recursive:!0})));let o=await re(a,t);if(a.metrics.customAggregator){let g=d.join(t,a.metrics.customAggregator.module),k=q("sha256").update(await I(g)).digest("hex");a=x.parse({...a,metrics:{...a.metrics,customAggregator:{...a.metrics.customAggregator,contentHash:k}}})}let n=d.join(t,"taskset.json"),s=d.join(t,"tasks","tasks.jsonl"),f=d.join(t,"graders","graders.json"),i=d.join(t,"fixtures","grader-fixtures.json"),u=d.join(t,"metrics","policy.json"),c=d.join(t,"assets","manifest.json"),m=d.join(t,"environment","contract.json"),w=d.join(t,"rubrics","preference-review.md"),v=d.join(t,"comparisons","policy.json");return await Promise.all([...J(a)].map(([g,k])=>X(d.join(t,g),k,"utf8"))),{directory:t,files:[n,s,c,m,f,w,v,u,i,...o],draft:a}}l(je,"writeTasksetDraftPackage");async function Re(e){let t=await se(e),a=q("sha256");for(let r of t)a.update(d.relative(e,r).replaceAll(d.sep,"/")),a.update("\0"),a.update(await I(r)),a.update("\0");return a.digest("hex")}l(Re,"hashTasksetDraftPackage");async function Y(e,t){let a=d.basename(e)==="taskset.json"?e:d.join(e,"taskset.json"),r=d.dirname(a),o=l(async f=>{if(!t)return I(f,"utf8");let i=t.get(d.relative(r,f).replaceAll(d.sep,"/"));if(!i)throw Object.assign(new Error("Authored file is absent."),{code:"ENOENT"});return new TextDecoder("utf-8",{fatal:!0}).decode(i)},"read"),n=JSON.parse(await o(a)),s=x.safeParse(n);if(s.success){let[f,i,u,c,m,w]=await Promise.all([ne(d.join(r,"tasks","tasks.jsonl"),o),S(d.join(r,"graders","graders.json"),o),S(d.join(r,"fixtures","grader-fixtures.json"),o),S(d.join(r,"metrics","policy.json"),o),S(d.join(r,"environment","contract.json"),o),S(d.join(r,"comparisons","policy.json"),o)]);return x.parse({...s.data,...f===null?{}:{tasks:f},...i===null?{}:{graders:i},...u===null?{}:{graderFixtures:u},...c===null?{}:{metrics:c},...m===null?{}:{environment:m},...w===null?{}:{review:w}})}return $(n)}l(Y,"readTasksetDraftPackage");async function re(e,t){let a=N(e),r=[];for(let o of a){let n=d.join(t,o.relativePath);await K(d.dirname(n),{recursive:!0});try{await X(n,o.source,{encoding:"utf8",flag:"wx"})}catch(s){if(!oe(s))throw s}r.push(n)}return r}l(re,"writeConfiguredStarterCode");async function se(e){let t=[];async function a(r){let o=await ae(r,{withFileTypes:!0});o.sort((n,s)=>n.name.localeCompare(s.name));for(let n of o){let s=d.join(r,n.name);if(n.isSymbolicLink())throw new Error(`Taskset workspaces cannot contain symbolic links: ${s}`);n.isDirectory()?await a(s):n.isFile()&&t.push(s)}}return l(a,"visit"),await a(e),t}l(se,"packageFiles");async function S(e,t=a=>I(a,"utf8")){try{return JSON.parse(await t(e))}catch(a){if(Z(a))return null;throw a}}l(S,"readOptionalJson");async function ne(e,t=a=>I(a,"utf8")){try{return(await t(e)).split(/\r?\n/).map(r=>r.trim()).filter(Boolean).map(r=>JSON.parse(r))}catch(a){if(Z(a))return null;throw a}}l(ne,"readOptionalJsonLines");function Z(e){return e instanceof Error&&"code"in e&&e.code==="ENOENT"}l(Z,"isMissingFile");function oe(e){return e instanceof Error&&"code"in e&&e.code==="EEXIST"}l(oe,"isFileExists");async function Oe(e){let t=A.resolve(e.directory);if(!(await ie(t)).isDirectory())throw new Error("Dataset upload requires a regular authored folder.");let a=new Map,r=0;async function o(c,m){if(m>30)throw new Error("Dataset folder nesting exceeds 30 levels.");for(let w of(await le(c,{withFileTypes:!0})).sort((v,g)=>v.name<g.name?-1:v.name>g.name?1:0)){if(w.name.startsWith("."))throw new Error("Dataset folders cannot include hidden files or directories.");if(w.isSymbolicLink()||!w.isDirectory()&&!w.isFile())throw new Error("Dataset folders can contain only regular files and directories.");let v=A.join(c,w.name);if(w.isDirectory()){await o(v,m+1);continue}if(a.size>=1e4)throw new Error("Dataset folder exceeds 10,000 files.");let g=await ce(v,Q.O_RDONLY|Q.O_NOFOLLOW);try{let k=await g.stat();if(!k.isFile()||k.size>U-r)throw new Error("Dataset folder exceeds the 64 MiB capture limit.");let j=new Uint8Array(k.size),R=0;for(;R<j.length;){let D=await g.read(j,R,j.length-R,R);if(!D.bytesRead)throw new Error("Dataset file changed during capture.");R+=D.bytesRead}let _=await g.stat();if(_.size!==k.size||_.mtimeMs!==k.mtimeMs||_.ctimeMs!==k.ctimeMs)throw new Error("Dataset file changed during capture.");r+=j.length,a.set(A.relative(t,v).replaceAll(A.sep,"/"),j)}finally{await g.close()}}}l(o,"visit"),await o(t,0);let n=await Y(t,a),s=[...a].map(([c,m])=>({path:c,contentHash:H(m),sizeBytes:m.byteLength})),f=h(s),i=x.parse({...n,id:e.datasetId??n.id,profileId:e.teamId,revision:e.expectedRevision+1,modelScope:null,status:"draft",publishedTasksetRef:null,metadata:{...n.metadata,importedTasksetPackage:{packageHash:f}}});return{workspace:W({schemaVersion:"openpond.tasksetDraftWorkspace.v1",draft:i,files:[...a].filter(([c])=>!G(c)).map(([c,m])=>({path:c,base64:Buffer.from(m).toString("base64"),contentHash:H(m),sizeBytes:m.byteLength}))}),sourceHash:f,sourceFiles:s,capturedBytes:r}}l(Oe,"captureTasksetDraftWorkspace");async function ee(e){let{binding:t,rewards:a}=e.learning,r=M(t,a);if(e.graders.length!==r.length||r.some(({source:i,reward:u})=>!e.graders.some(c=>c.id===i.graderId&&c.version===String(u.revision)&&h(c.metadata.rewardBinding)===h(L(t)))))throw new Error("Prepared Taskset graders do not match their immutable Reward binding.");let o=V.parse({id:e.task.id,clusterKey:e.task.clusterKey,split:e.task.split,input:e.task.input,expectedOutput:e.task.expectedOutput,policyVisibleContext:e.task.policyVisibleContext,privilegedContextRef:e.task.privilegedContextRef,artifactRefs:[],tags:e.task.tags}),n=await B({binding:t,rewards:a,task:o,signal:e.signal,evidence:{output:e.attempt.output,artifactRefs:e.attempt.artifactRefs,runtimeEventRefs:e.attempt.runtimeEventRefs,infrastructureError:e.attempt.infrastructureError},customVerifier:e.customVerifier?async({grader:i})=>{let u=e.graders.find(m=>m.id===i.id);if(u?.kind!=="custom_verifier")throw new Error("Bound verifier projection is missing.");let c=await e.customVerifier({grader:u,task:e.task,attempt:e.attempt,signal:e.signal});return{score:c.score,passed:c.passed,rewardEligible:i.rewardEligible,failureClass:null,feedback:[c.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:c.evidenceRefs??[]}}:void 0,modelJudge:e.modelJudge?async({grader:i})=>{let u=e.graders.find(m=>m.id===i.id);if(u?.kind!=="model_judge")throw new Error("Bound judge projection is missing.");let c=await e.modelJudge({grader:u,task:e.task,attempt:e.attempt});return{score:c.score,passed:c.passed,rewardEligible:i.rewardEligible,failureClass:null,feedback:[c.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:c.evidenceRefs??[]}}:void 0}),s=n.training.status==="not_configured"?n.evaluation:n.training,f=h(e.graders);return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${h([e.attempt.id,n.contentHash]).slice(0,24)}`,attemptId:e.attempt.id,graderSetHash:f,score:s.score,passed:s.passed===!0,components:n.results.map(i=>{let u=t.sources.find(m=>m.graderId===i.graderId),c=e.graders.find(m=>m.id===i.graderId);return{graderId:i.graderId,graderVersion:c.version,score:i.normalizedScore,passed:i.passed===!0,hardGate:u.hardGate,rewardEligible:u.role==="training"&&i.status==="scored",feedback:i.message?.trim()||null,evidenceRefs:i.evidenceHashes,judge:c.kind==="model_judge"?c.judge:null,calibrationStatus:c.kind==="model_judge"?c.calibrationStatus:"not_applicable"}}),failureClass:e.attempt.infrastructureError?"infrastructure_failure":s.status!=="scored"?"grader_failure":s.passed?null:"policy_failure",feedback:n.results.flatMap(i=>i.message?.trim()?[i.message.trim()]:[]),rewardEligible:n.training.status==="scored",rewardComposition:n,createdAt:e.now?.()??new Date().toISOString()}}l(ee,"gradeLearningBatchAttempt");async function at(e){if(e.learning)return ee({...e,learning:e.learning});if(e.graders.some(o=>o.metadata.rewardBinding!==void 0))throw new Error("This Taskset requires its immutable public Reward binding to grade an attempt.");let t=h(e.graders),a=[];for(let o of e.graders)e.signal?.throwIfAborted(),a.push(e.attempt.infrastructureError?b(o,null,!1,"Infrastructure failure; no reward was produced.",[],!1):await me(o,e.task,e.attempt,e.modelJudge,e.customVerifier,e.signal));let r=F({graders:e.graders,infrastructureError:e.attempt.infrastructureError,components:a.map(o=>({...o,failureClass:o.score===null?"grader_failure":o.passed?null:"policy_failure"}))});return{schemaVersion:"openpond.gradeResult.v1",id:`grade_${h([e.attempt.id,t,a]).slice(0,24)}`,attemptId:e.attempt.id,graderSetHash:t,score:r.score,passed:r.passed,components:a,failureClass:r.failureClass,feedback:e.attempt.infrastructureError?[e.attempt.infrastructureError]:a.flatMap(o=>o.feedback?[o.feedback]:[]),rewardEligible:r.rewardEligible,createdAt:e.now?.()??new Date().toISOString()}}l(at,"gradeAttempt");async function me(e,t,a,r,o,n){if(e.kind==="model_judge"){if(!r)return b(e,null,!1,"Model judge runner is unavailable.",[],!1);if(e.calibrationStatus!=="passed")return b(e,null,!1,"Model judge calibration has not passed.",[],!1);let f=await r({grader:e,task:t,attempt:a});return b(e,f.score,f.passed,f.feedback,f.evidenceRefs??[])}if(e.kind==="human")return b(e,null,!1,"Human review is pending.",[],!1);if(e.kind==="custom_verifier"){if(!o)return b(e,null,!1,"Sandboxed verifier runner is unavailable.",[],!1);let f=await o({grader:e,task:t,attempt:a,signal:n});return b(e,f.score,f.passed,f.feedback,f.evidenceRefs??[])}let s=C({grader:O(e),task:t,evidence:a});return b(e,s.score,s.passed,s.feedback,[...a.artifactRefs,...a.runtimeEventRefs])}l(me,"runGrader");function b(e,t,a,r,o,n=e.rewardEligible){let s=t!==null&&Number.isFinite(t)?Math.max(0,Math.min(1,t)):null;return{graderId:e.id,graderVersion:e.version,score:s,passed:s!==null&&a,hardGate:e.hardGate,rewardEligible:s!==null&&n,feedback:r,evidenceRefs:o,judge:e.kind==="model_judge"?e.judge:null,calibrationStatus:e.kind==="model_judge"?e.calibrationStatus:"not_applicable"}}l(b,"component");import{access as ue,mkdir as T,readFile as Vt,writeFile as y}from"node:fs/promises";import p from"node:path";async function Gt(e,t,a={}){let r=z.parse(e),o=P(r);if(!o.valid)throw new Error(o.issues.map(s=>`${s.code}: ${s.message}`).join(`
3
3
  `));await T(p.join(t,"data"),{recursive:!0}),await T(p.join(t,"graders"),{recursive:!0}),await T(p.join(t,"environment"),{recursive:!0}),await T(p.join(t,"fixtures"),{recursive:!0});let n=[p.join(t,"taskset.json"),p.join(t,"capabilities.json"),p.join(t,"data","tasks.jsonl"),p.join(t,"graders","graders.json"),p.join(t,"fixtures","grader-fixtures.json"),p.join(t,"environment","taskset.ts")];await y(n[0],E(r),"utf8"),await y(n[1],E(r.capabilities),"utf8"),await y(n[2],r.tasks.map(s=>JSON.stringify(s)).join(`
4
4
  `)+`
5
5
  `,"utf8"),await y(n[3],E(r.graders),"utf8"),await y(n[4],E(r.graderFixtures),"utf8"),await y(n[5],pe(r),"utf8");for(let s of a.generatedFiles??[]){let f=te(s.path,s.role),i=p.join(t,f);await T(p.dirname(i),{recursive:!0}),await y(i,s.content,"utf8"),n.push(i)}for(let s of r.graders){if(s.kind!=="custom_verifier")continue;let f=te(s.module,"verifier");try{await ue(p.join(t,f))}catch{throw new Error(`Custom verifier ${s.id} is missing generated source ${f}.`)}}return{directory:t,files:n,taskset:r}}l(Gt,"buildTaskset");function te(e,t){let a=e.replaceAll("\\","/");if(p.posix.isAbsolute(a)||a.split("/").includes(".."))throw new Error(`Generated ${t} path must stay inside the Taskset: ${e}.`);let r=t==="verifier"?"graders/":t==="environment"?"environment/":"fixtures/";if(!a.startsWith(r))throw new Error(`Generated ${t} path must start with ${r}.`);return a}l(te,"safeGeneratedPath");function pe(e){return`// Generated by @openpond/taskset-sdk.
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{L as r}from"./chunk-6JBWHR6T.js";import{r as o}from"./chunk-JO7GRBOG.js";import{l as t}from"./chunk-BQNK2NMB.js";import{e as a}from"./chunk-P653BXMY.js";import{b as e}from"./chunk-ES2ISFJC.js";var s=e.object({profileRef:r,manifest:o,metric:t,gradeRefs:e.array(a),receiptRefs:e.array(a),passRate:e.number().min(0).max(1),passed:e.boolean(),completedAt:e.string().datetime(),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict();export{s as a};
2
+ import{L as r}from"./chunk-XDMUD4FW.js";import{r as o}from"./chunk-WV2APYWG.js";import{l as t}from"./chunk-PJM2G7SG.js";import{f as a}from"./chunk-NNF6KCHD.js";import{b as e}from"./chunk-ES2ISFJC.js";var s=e.object({profileRef:r,manifest:o,metric:t,gradeRefs:e.array(a),receiptRefs:e.array(a),passRate:e.number().min(0).max(1),passed:e.boolean(),completedAt:e.string().datetime(),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict();export{s as a};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{C as Sr,G as vr,J as Ir,K as Lr,L as Or,U as ee,W as nt,i as yr,p as wr,q as Tr,r as Er,s as Ar,t as br}from"./chunk-L4BYPZ4U.js";import{p as fr}from"./chunk-P653BXMY.js";import{b as u}from"./chunk-ES2ISFJC.js";import{c as y,d as mr,e as P,f as hr,g as gr,h as _,i as Fe,j as _r,k as Rt,l as Le,m as Cr,n as D,o as fe,p as H,r as B}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";import{randomUUID as Mt,createHash as ro}from"node:crypto";import{promises as V,constants as Pt}from"node:fs";import je from"node:path";var no="missing";function $(e){return e===null?no:ro("sha256").update(e).digest("hex")}c($,"fileRevision");async function A(e){Le(je.dirname(e));try{let t=await V.lstat(e);if(!t.isFile()||t.isSymbolicLink())throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Storage must be a regular file, not a symbolic link.",action:"Use a regular file in the OpenPond home."});return await V.readFile(e,"utf8")}catch(t){if(P(t))return null;throw t}}c(A,"readOptionalFile");async function U(e){if(Le(e),await V.mkdir(e,{recursive:!0,mode:448}),(await V.lstat(e)).isSymbolicLink())throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Managed storage directories cannot be symbolic links.",action:"Select a regular local storage folder."});Rt(e)}c(U,"privateDirectory");async function I(e,t,r={}){let n=je.dirname(e);r.privateParent===!1?await V.mkdir(n,{recursive:!0,mode:448}):await U(n);let o=await V.lstat(e).catch(a=>{if(P(a))return null;throw a});if(o&&(!o.isFile()||o.isSymbolicLink()))throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Cannot replace a non-regular storage file.",action:"Use a regular file in the OpenPond home."});let i=je.join(n,`.${je.basename(e)}.${process.pid}.${Mt()}.tmp`);try{let a=await V.open(i,Pt.O_CREAT|Pt.O_EXCL|Pt.O_WRONLY,384);try{await a.writeFile(t),await a.sync()}finally{await a.close()}if(await V.rename(i,e),process.platform!=="win32"){let s=await V.open(n,"r");try{await s.sync()}finally{await s.close()}}}finally{await V.rm(i,{force:!0})}}c(I,"atomicWriteFile");async function L(e,t,r=1e4){let n=await _e(e,r);try{return await t()}finally{await n()}}c(L,"withFileLock");async function oo(e,t){let r=`${e}.${process.pid}.${Mt()}.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})}}c(oo,"publishLock");async function _e(e,t=1e4){await U(je.dirname(e));let r=`${e}.lock`,n={pid:process.pid,nonce:Mt()},o=JSON.stringify(n),i=Date.now()+t;for(;;)try{await oo(r,o);break}catch(a){if(a.code!=="EEXIST")throw a;let s=await A(r);if(s){let l;try{l=JSON.parse(s).pid}catch{}if(typeof l=="number"&&Number.isInteger(l)&&l>0&&io(l)){let f=await _e(`${r}.reclaim`,Math.max(0,i-Date.now()));try{await A(r)===s&&await V.unlink(r).catch(p=>{if(!P(p))throw p})}finally{await f()}}}if(Date.now()>=i)throw new y({code:"STORAGE_BUSY",path:e,message:"Another OpenPond process is updating this storage.",action:"Wait for that process to finish, then retry. Do not delete a live process lock."});await new Promise(l=>setTimeout(l,25))}return async()=>{await A(r)===o&&await V.unlink(r)}}c(_e,"acquireFileLock");function io(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}c(io,"processIsDead");async function M(e,t){let r=await A(e);if(r===null)return t();try{return JSON.parse(r)}catch(n){throw new y({code:"INVALID_STORAGE_JSON",path:e,message:"A storage file contains invalid JSON.",action:"Restore a verified backup or correct the file, then retry."},{cause:n})}}c(M,"readJsonFile");async function aa(e,t,r){return L(e,async()=>{let n=await r(await M(e,t));return await I(e,`${JSON.stringify(n,null,2)}
2
+ import{C as Sr,G as vr,J as Ir,K as Lr,L as Or,U as ee,W as nt,i as yr,p as wr,q as Tr,r as Er,s as Ar,t as br}from"./chunk-TGIB24K4.js";import{q as fr}from"./chunk-NNF6KCHD.js";import{b as u}from"./chunk-ES2ISFJC.js";import{c as y,d as mr,e as P,f as hr,g as gr,h as _,i as Fe,j as _r,k as Rt,l as Le,m as Cr,n as D,o as fe,p as H,r as B}from"./chunk-H7IWJN7L.js";import{a as c}from"./chunk-FTQLQJQV.js";import{randomUUID as Mt,createHash as ro}from"node:crypto";import{promises as V,constants as Pt}from"node:fs";import je from"node:path";var no="missing";function $(e){return e===null?no:ro("sha256").update(e).digest("hex")}c($,"fileRevision");async function A(e){Le(je.dirname(e));try{let t=await V.lstat(e);if(!t.isFile()||t.isSymbolicLink())throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Storage must be a regular file, not a symbolic link.",action:"Use a regular file in the OpenPond home."});return await V.readFile(e,"utf8")}catch(t){if(P(t))return null;throw t}}c(A,"readOptionalFile");async function U(e){if(Le(e),await V.mkdir(e,{recursive:!0,mode:448}),(await V.lstat(e)).isSymbolicLink())throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Managed storage directories cannot be symbolic links.",action:"Select a regular local storage folder."});Rt(e)}c(U,"privateDirectory");async function I(e,t,r={}){let n=je.dirname(e);r.privateParent===!1?await V.mkdir(n,{recursive:!0,mode:448}):await U(n);let o=await V.lstat(e).catch(a=>{if(P(a))return null;throw a});if(o&&(!o.isFile()||o.isSymbolicLink()))throw new y({code:"UNSAFE_STORAGE_PATH",path:e,message:"Cannot replace a non-regular storage file.",action:"Use a regular file in the OpenPond home."});let i=je.join(n,`.${je.basename(e)}.${process.pid}.${Mt()}.tmp`);try{let a=await V.open(i,Pt.O_CREAT|Pt.O_EXCL|Pt.O_WRONLY,384);try{await a.writeFile(t),await a.sync()}finally{await a.close()}if(await V.rename(i,e),process.platform!=="win32"){let s=await V.open(n,"r");try{await s.sync()}finally{await s.close()}}}finally{await V.rm(i,{force:!0})}}c(I,"atomicWriteFile");async function L(e,t,r=1e4){let n=await _e(e,r);try{return await t()}finally{await n()}}c(L,"withFileLock");async function oo(e,t){let r=`${e}.${process.pid}.${Mt()}.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})}}c(oo,"publishLock");async function _e(e,t=1e4){await U(je.dirname(e));let r=`${e}.lock`,n={pid:process.pid,nonce:Mt()},o=JSON.stringify(n),i=Date.now()+t;for(;;)try{await oo(r,o);break}catch(a){if(a.code!=="EEXIST")throw a;let s=await A(r);if(s){let l;try{l=JSON.parse(s).pid}catch{}if(typeof l=="number"&&Number.isInteger(l)&&l>0&&io(l)){let f=await _e(`${r}.reclaim`,Math.max(0,i-Date.now()));try{await A(r)===s&&await V.unlink(r).catch(p=>{if(!P(p))throw p})}finally{await f()}}}if(Date.now()>=i)throw new y({code:"STORAGE_BUSY",path:e,message:"Another OpenPond process is updating this storage.",action:"Wait for that process to finish, then retry. Do not delete a live process lock."});await new Promise(l=>setTimeout(l,25))}return async()=>{await A(r)===o&&await V.unlink(r)}}c(_e,"acquireFileLock");function io(e){try{return process.kill(e,0),!1}catch(t){return t.code==="ESRCH"}}c(io,"processIsDead");async function M(e,t){let r=await A(e);if(r===null)return t();try{return JSON.parse(r)}catch(n){throw new y({code:"INVALID_STORAGE_JSON",path:e,message:"A storage file contains invalid JSON.",action:"Restore a verified backup or correct the file, then retry."},{cause:n})}}c(M,"readJsonFile");async function aa(e,t,r){return L(e,async()=>{let n=await r(await M(e,t));return await I(e,`${JSON.stringify(n,null,2)}
3
3
  `),n})}c(aa,"updateJsonFile");var G=u.string().trim().min(1),ot=u.string().trim().max(4096),it=G.max(200).refine(e=>!["__proto__","prototype","constructor"].includes(e),"Reserved identifier"),at=G.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."),xr=u.strictObject({provider_id:fr,model_id:G.max(300)}),Ut=u.discriminatedUnion("mode",[u.strictObject({mode:u.literal("inherit")}),u.strictObject({mode:u.literal("custom"),ref:xr})]),kr=u.discriminatedUnion("source",[u.strictObject({source:u.literal("secret"),id:it}),u.strictObject({source:u.literal("env"),name:G.regex(/^[A-Za-z_][A-Za-z0-9_]*$/).max(160)})]),ao=u.strictObject({handle:G,base_url:at.optional(),api_base_url:at.optional(),chat_api_base_url:at.optional(),environment:G.optional(),credential:kr.optional(),enabled:u.boolean().optional()}),so=u.strictObject({enabled:u.boolean().optional(),binary_path:G.max(4096).optional(),source_home:G.max(4096).optional(),native_mode:G.max(200).optional(),native_options:u.record(u.string().max(200),u.string().max(300)).optional(),base_url:at.optional(),default_model:G.max(300).optional(),model_overrides:u.array(G.max(300)).max(500).optional(),credential:kr.optional()}),Dt=u.strictObject({mode:u.enum(["auto","disabled","custom"]).optional(),custom_command:ot.optional()}),Nr=u.union([u.number().int().min(1).max(32),u.literal("unlimited")]),co=u.strictObject({enabled:u.boolean().optional(),model:Ut.optional(),isolation_mode:Tr.optional(),max_concurrent_runs:u.number().int().min(1).max(16).optional(),tool_policy:Er.optional(),background:u.boolean().optional(),peer_messages:Ar.optional()}),lo=u.strictObject({source:u.enum(["local","github","openpond_git"]),repository_id:G,profile_id:G}),Ft=u.strictObject({schema_version:u.literal(1),chat:u.strictObject({model:xr.optional(),steer_active_responses:u.boolean().optional()}).optional(),codex:u.strictObject({reasoning_effort:Or.optional()}).optional(),permissions:u.strictObject({command_access:Lr.optional(),codex_mode:Ir.optional()}).optional(),context_compaction:u.strictObject({auto_enabled:u.boolean().optional(),trigger_percent:u.number().int().min(50).max(95).optional(),summary_model:u.literal("same_model").optional()}).optional(),subagents:u.strictObject({enabled:u.boolean().optional(),delegation_mode:br.optional(),default_model:Ut.optional(),max_concurrent_runs:u.number().int().min(1).max(32).optional(),max_concurrent_runs_per_provider:Nr.optional(),max_concurrent_runs_per_workspace_target:Nr.optional(),roles:u.record(wr,co).refine(e=>Object.keys(e).length<=64,"At most 64 roles").optional()}).optional(),projects:u.strictObject({branch_prefix:u.string().trim().max(48).optional(),new_project_directory:ot.optional()}).optional(),defaults:u.strictObject({account_id:it.optional(),team_id:G.max(191).optional(),profile_ref:lo.optional()}).optional(),editor:u.strictObject({language_servers:u.enum(["auto","off"]).optional(),diagnostics_while_editing:u.boolean().optional(),check_on_save:u.boolean().optional(),languages:u.strictObject({typescript:Dt.optional(),python:Dt.optional(),rust:Dt.optional()}).optional()}).optional(),training:u.strictObject({default_model:Ut.optional(),creation_mode:u.enum(["defaults","customize"]).optional(),auto_approve_evidence:u.boolean().optional()}).optional(),notifications:u.strictObject({team_chat:u.enum(["all","direct_mentions","none"]).optional()}).optional(),ui:u.strictObject({advanced_workspace_controls:u.boolean().optional()}).optional(),runtime:u.strictObject({execution_mode:u.enum(["local","hosted"]).optional(),mode:u.enum(["general","builder"]).optional()}).optional(),personalization:u.strictObject({active:G.regex(/^(builtin|custom):[a-zA-Z0-9_-]+$/).optional(),mode:u.enum(["enabled","disabled"]).optional(),user_instructions:ot.optional()}).optional(),storage:u.strictObject({datasets_dir:ot.optional()}).optional(),accounts:u.record(it,ao).optional(),providers:u.record(it,so).optional()});function oe(e,t="user"){let r=Ft.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}c(oe,"validateConfigDocument");import{promises as Wt}from"node:fs";import Oe from"node:path";var st={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"]},uo=Object.keys(st);for(let e of uo)Object.freeze(st[e]);Object.freeze(st);var Rr=st;function Pr(e){let t=Object.assign({},Rr);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)}c(Pr,"unionWith");function ye(e){return e[e.length-1]??null}c(ye,"last");function Gt(e){return e.type==="TOMLBare"?e.name:e.value}c(Gt,"toKeyName");var Hr=class{static{c(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}},Mr=new Hr(1,0),He=new Hr(1,1),po=He,fo={"1.0":Mr,"1.0.0":Mr,"1.1":He,"1.1.0":He,latest:He,next:He};function Jr(e){return e&&fo[e]||po}c(Jr,"getTOMLVer");var Dr={"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 mo(e,t){return t?Dr[e].replace(/\{\{(.*?)\}\}/gu,(r,n)=>n in t?t[n]:`{{${n}}}`):Dr[e]}c(mo,"getMessage");var zr=class extends SyntaxError{static{c(this,"ParseError")}constructor(e,t,r,n,o){super(mo(e,o)),this.index=t,this.lineNumber=r,this.column=n}},d={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 ho(e){return e>=d.NULL&&e<=d.US}c(ho,"isControl");function Be(e){return e===d.TABULATION||e===d.SPACE}c(Be,"isWhitespace");function Ur(e){return e===d.LINE_FEED||e===d.CARRIAGE_RETURN}c(Ur,"isEOL");function go(e){return e>=d.LATIN_CAPITAL_A&&e<=d.LATIN_CAPITAL_Z}c(go,"isUpperLetter");function _o(e){return e>=d.LATIN_SMALL_A&&e<=d.LATIN_SMALL_Z}c(_o,"isLowerLetter");function yo(e){return _o(e)||go(e)}c(yo,"isLetter");function x(e){return e>=d.DIGIT_0&&e<=d.DIGIT_9}c(x,"isDigit");function Fr(e){return x(e)||e>=d.LATIN_SMALL_A&&e<=d.LATIN_SMALL_F||e>=d.LATIN_CAPITAL_A&&e<=d.LATIN_CAPITAL_F}c(Fr,"isHexDig");function wo(e){return e>=d.DIGIT_0&&e<=d.DIGIT_7}c(wo,"isOctalDig");function To(e){return e>=0&&e<=55295||e>=57344&&e<=1114111}c(To,"isUnicodeScalarValue");function Eo(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}c(Eo,"sortedLastIndex");var Ao=class{static{c(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=Eo(this.offsets,e)+1;return{line:t,column:e-(t===1?0:this.offsets[t-2])}}},bo=class{static{c(this,"CodePointIterator")}constructor(e){this.locs=new Ao,this.lastCodePoint=d.NULL,this.start=-1,this.end=0,this.text=e}next(){return this.lastCodePoint===d.EOF?d.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)??d.EOF;if(t===d.EOF)return this.end=this.start,t;if(this.end+=t>=65536?2:1,t===d.LINE_FEED)this.locs.addOffset(this.end);else if(t===d.CARRIAGE_RETURN)return this.text.codePointAt(this.end)===d.LINE_FEED&&(this.end++,this.locs.addOffset(this.end)),d.LINE_FEED;return t}},So=typeof BigInt<"u",vo={16:"0x",10:"",8:"0o",2:"0b"},Wr={[d.QUOTATION_MARK]:d.QUOTATION_MARK,[d.BACKSLASH]:d.BACKSLASH,[d.LATIN_SMALL_B]:d.BACKSPACE,[d.LATIN_SMALL_F]:d.FORM_FEED,[d.LATIN_SMALL_N]:d.LINE_FEED,[d.LATIN_SMALL_R]:d.CARRIAGE_RETURN,[d.LATIN_SMALL_T]:d.TABULATION},Io={...Wr,[d.LATIN_SMALL_E]:d.ESCAPE},Lo=class{static{c(this,"Tokenizer")}constructor(e,t){this.backCode=!1,this.lastCodePoint=d.NULL,this.state="DATA",this.token=null,this.tokenStart=-1,this.valuesEnabled=!1,this.text=e,this.parserOptions=t||{},this.codePointIterator=new bo(e),this.tomlVersion=Jr(this.parserOptions.tomlVersion),this.ESCAPES=this.tomlVersion.gte(1,1)?Io:Wr}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 zr(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!==d.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===d.EOF?d.EOF:this.backCode?(this.backCode=!1,this.lastCodePoint):this.lastCodePoint=this.codePointIterator.next()}eatCode(e){return this.lastCodePoint===d.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],a=[o,i],s={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:a,loc:s};else{let l,f=this.text.slice(o,i);if(e==="BasicString"||e==="LiteralString"||e==="MultiLineBasicString"||e==="MultiLineLiteralString")l={type:e,value:f,string:r,range:a,loc:s};else if(e==="Integer"){let p=r;l={type:e,value:f,number:parseInt(p,n),bigint:So?BigInt(vo[n]+p):null,range:a,loc:s}}else e==="Float"?l={type:e,value:f,number:r,range:a,loc:s}:e==="Boolean"?l={type:e,value:f,boolean:r,range:a,loc:s}:e==="LocalDate"||e==="LocalTime"||e==="LocalDateTime"||e==="OffsetDateTime"?l={type:e,value:f,date:r,range:a,loc:s}:l={type:e,value:f,range:a,loc:s};this.token=l}}DATA(e){for(;Be(e)||Ur(e);)e=this.nextCode();if(e===d.HASH)return this.startToken(),"COMMENT";if(e===d.QUOTATION_MARK)return this.startToken(),"BASIC_STRING";if(e===d.SINGLE_QUOTE)return this.startToken(),"LITERAL_STRING";if(e===d.DOT||e===d.EQUALS_SIGN||e===d.LEFT_BRACKET||e===d.RIGHT_BRACKET||e===d.LEFT_BRACE||e===d.RIGHT_BRACE||e===d.COMMA)return this.punctuatorToken(),"DATA";if(this.valuesEnabled){if(e===d.DASH||e===d.PLUS_SIGN)return this.startToken(),"SIGN";if(e===d.LATIN_SMALL_N||e===d.LATIN_SMALL_I)return this.startToken(),this.back("NAN_OR_INF");if(x(e))return this.startToken(),this.back("NUMBER");if(e===d.LATIN_SMALL_T||e===d.LATIN_SMALL_F)return this.startToken(),this.back("BOOLEAN")}else if(jr(e,this.tomlVersion))return this.startToken(),"BARE";return e===d.EOF?"DATA":this.reportParseError("unexpected-char")}COMMENT(e){let t=this.tomlVersion.gte(1,1)?r=>{Oo(r)||this.reportParseError("invalid-comment-character",{cp:JSON.stringify(String.fromCodePoint(r)).slice(1,-1)})}:r=>{Ve(r)&&this.reportParseErrorControlChar()};for(;!Ur(e)&&e!==d.EOF;)t(e),e=this.nextCode();return this.endToken("Block","start"),"DATA"}BARE(e){for(;jr(e,this.tomlVersion);)e=this.nextCode();return this.endToken("Bare","start"),this.back("DATA")}BASIC_STRING(e){if(e===d.QUOTATION_MARK)return e=this.nextCode(),e===d.QUOTATION_MARK?"MULTI_LINE_BASIC_STRING":(this.endToken("BasicString","start",""),this.back("DATA"));let t=[];for(;e!==d.QUOTATION_MARK&&e!==d.EOF&&e!==d.LINE_FEED;){if(Ve(e))return this.reportParseErrorControlChar();if(e===d.BACKSLASH){e=this.nextCode();let r=this.ESCAPES[e];if(r){t.push(r),e=this.nextCode();continue}else if(e===d.LATIN_SMALL_U){let n=this.parseUnicode(4);t.push(n),e=this.nextCode();continue}else if(e===d.LATIN_CAPITAL_U){let n=this.parseUnicode(8);t.push(n),e=this.nextCode();continue}else if(e===d.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!==d.QUOTATION_MARK?this.reportParseError("unterminated-string"):(this.endToken("BasicString","end",String.fromCodePoint(...t)),"DATA")}MULTI_LINE_BASIC_STRING(e){let t=[];for(e===d.LINE_FEED&&(e=this.nextCode());e!==d.EOF;){if(e!==d.LINE_FEED&&Ve(e))return this.reportParseErrorControlChar();if(e===d.QUOTATION_MARK){let r=this.codePointIterator.start;if(this.eatCode(d.QUOTATION_MARK)&&this.eatCode(d.QUOTATION_MARK))return this.eatCode(d.QUOTATION_MARK)&&(t.push(d.QUOTATION_MARK),this.eatCode(d.QUOTATION_MARK)&&(t.push(d.QUOTATION_MARK),this.eatCode(d.QUOTATION_MARK)))?(this.moveAt(r),this.reportParseError("invalid-three-quotes")):(this.endToken("MultiLineBasicString","end",String.fromCodePoint(...t)),"DATA");this.moveAt(r)}if(e===d.BACKSLASH){e=this.nextCode();let r=this.ESCAPES[e];if(r){t.push(r),e=this.nextCode();continue}else if(e===d.LATIN_SMALL_U){let n=this.parseUnicode(4);t.push(n),e=this.nextCode();continue}else if(e===d.LATIN_CAPITAL_U){let n=this.parseUnicode(8);t.push(n),e=this.nextCode();continue}else if(e===d.LATIN_SMALL_X&&this.tomlVersion.gte(1,1)){let n=this.parseUnicode(2);t.push(n),e=this.nextCode();continue}else if(e===d.LINE_FEED){for(e=this.nextCode();Be(e)||e===d.LINE_FEED;)e=this.nextCode();continue}else if(Be(e)){let n=!0,o=this.codePointIterator.start,i;for(;(i=this.nextCode())!==d.EOF&&i!==d.LINE_FEED;)if(!Be(i)){this.moveAt(o),n=!1;break}if(n){for(e=this.nextCode();Be(e)||e===d.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===d.SINGLE_QUOTE)return e=this.nextCode(),e===d.SINGLE_QUOTE?"MULTI_LINE_LITERAL_STRING":(this.endToken("LiteralString","start",""),this.back("DATA"));let t=[];for(;e!==d.SINGLE_QUOTE&&e!==d.EOF&&e!==d.LINE_FEED;){if(Ve(e))return this.reportParseErrorControlChar();t.push(e),e=this.nextCode()}return e!==d.SINGLE_QUOTE?this.reportParseError("unterminated-string"):(this.endToken("LiteralString","end",String.fromCodePoint(...t)),"DATA")}MULTI_LINE_LITERAL_STRING(e){let t=[];for(e===d.LINE_FEED&&(e=this.nextCode());e!==d.EOF;){if(e!==d.LINE_FEED&&Ve(e))return this.reportParseErrorControlChar();if(e===d.SINGLE_QUOTE){let r=this.codePointIterator.start;if(this.eatCode(d.SINGLE_QUOTE)&&this.eatCode(d.SINGLE_QUOTE))return this.eatCode(d.SINGLE_QUOTE)&&(t.push(d.SINGLE_QUOTE),this.eatCode(d.SINGLE_QUOTE)&&(t.push(d.SINGLE_QUOTE),this.eatCode(d.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===d.LATIN_SMALL_N||e===d.LATIN_SMALL_I?this.back("NAN_OR_INF"):x(e)?this.back("NUMBER"):this.reportParseError("unexpected-char")}NAN_OR_INF(e){if(e===d.LATIN_SMALL_N){let t=this.codePointIterator.start;if(this.eatCode(d.LATIN_SMALL_A)&&this.eatCode(d.LATIN_SMALL_N))return this.endToken("Float","end",NaN),"DATA";this.moveAt(t)}else if(e===d.LATIN_SMALL_I){let t=this.codePointIterator.start;if(this.eatCode(d.LATIN_SMALL_N)&&this.eatCode(d.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==="+"?d.PLUS_SIGN:t==="-"?d.DASH:d.NULL;if(e===d.DIGIT_0){if(r===d.NULL){let a=this.codePointIterator.start,s=this.nextCode();if(x(s)){let l=this.nextCode();if(l===d.COLON)return this.data={hasDate:!1,year:0,month:0,day:0,hour:Number(String.fromCodePoint(d.DIGIT_0,s)),minute:0,second:0},"TIME_MINUTE";if(x(l)){let f=this.nextCode();if(x(f)&&this.eatCode(d.DASH))return this.data={hasDate:!0,year:Number(String.fromCodePoint(d.DIGIT_0,s,l,f)),month:0,day:0,hour:0,minute:0,second:0},"DATE_MONTH"}return this.moveAt(a),this.reportParseError("invalid-leading-zero")}this.moveAt(a)}return e=this.nextCode(),e===d.LATIN_SMALL_X||e===d.LATIN_SMALL_O||e===d.LATIN_SMALL_B?r!==d.NULL?this.reportParseError("unexpected-char"):e===d.LATIN_SMALL_X?"HEX":e===d.LATIN_SMALL_O?"OCTAL":"BINARY":e===d.LATIN_SMALL_E||e===d.LATIN_CAPITAL_E?(this.data={minus:r===d.DASH,left:[d.DIGIT_0]},"EXPONENT_RIGHT"):e===d.DOT?(this.data={minus:r===d.DASH,absInt:[d.DIGIT_0]},"FRACTIONAL_RIGHT"):(this.endToken("Integer","start","0",10),this.back("DATA"))}let{out:n,nextCp:o,hasUnderscore:i}=this.parseDigits(e,x);return o===d.DASH&&r===d.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===d.COLON&&r===d.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===d.LATIN_SMALL_E||o===d.LATIN_CAPITAL_E?(this.data={minus:r===d.DASH,left:n},"EXPONENT_RIGHT"):o===d.DOT?(this.data={minus:r===d.DASH,absInt:n},"FRACTIONAL_RIGHT"):(this.endToken("Integer","start",r===d.DASH?String.fromCodePoint(d.DASH,...n):String.fromCodePoint(...n),10),this.back("DATA"))}HEX(e){let{out:t}=this.parseDigits(e,Fr);return this.endToken("Integer","start",String.fromCodePoint(...t),16),this.back("DATA")}OCTAL(e){let{out:t}=this.parseDigits(e,wo);return this.endToken("Integer","start",String.fromCodePoint(...t),8),this.back("DATA")}BINARY(e){let{out:t}=this.parseDigits(e,r=>r===d.DIGIT_0||r===d.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,x),i=[...r,d.DOT,...n];if(o===d.LATIN_SMALL_E||o===d.LATIN_CAPITAL_E)return this.data={minus:t,left:i},"EXPONENT_RIGHT";let a=Number(t?String.fromCodePoint(d.DASH,...i):String.fromCodePoint(...i));return this.endToken("Float","start",a),this.back("DATA")}EXPONENT_RIGHT(e){let{left:t,minus:r}=this.data,n=!1;(e===d.DASH||e===d.PLUS_SIGN)&&(n=e===d.DASH,e=this.nextCode());let{out:o}=this.parseDigits(e,x),i=o;n&&i.unshift(d.DASH);let a=Number(r?String.fromCodePoint(d.DASH,...t,d.LATIN_SMALL_E,...i):String.fromCodePoint(...t,d.LATIN_SMALL_E,...i));return this.endToken("Float","start",a),this.back("DATA")}BOOLEAN(e){if(e===d.LATIN_SMALL_T){let t=this.codePointIterator.start;if(this.eatCode(d.LATIN_SMALL_R)&&this.eatCode(d.LATIN_SMALL_U)&&this.eatCode(d.LATIN_SMALL_E))return this.endToken("Boolean","end",!0),"DATA";this.moveAt(t)}else if(e===d.LATIN_SMALL_F){let t=this.codePointIterator.start;if(this.eatCode(d.LATIN_SMALL_A)&&this.eatCode(d.LATIN_SMALL_L)&&this.eatCode(d.LATIN_SMALL_S)&&this.eatCode(d.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(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==d.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(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;if(n.day=Number(this.text.slice(t,r)),!No(n.year,n.month,n.day))return this.reportParseError("invalid-date");if(e=this.nextCode(),e===d.LATIN_CAPITAL_T||e===d.LATIN_SMALL_T)return"TIME_HOUR";if(e===d.SPACE){let i=this.codePointIterator.start;if(x(this.nextCode())&&x(this.nextCode()))return this.moveAt(i),"TIME_HOUR";this.moveAt(i)}let o=$e(n,"");return this.endToken("LocalDate","start",o),this.back("DATA")}TIME_HOUR(e){let t=this.codePointIterator.start;if(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==d.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(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(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===d.COLON?"TIME_SECOND":this.tomlVersion.lt(1,1)?this.reportParseError("unexpected-char"):jt(n.hour,n.minute,n.second)?this.processTimeEnd(e,n):this.reportParseError("invalid-time")}TIME_SECOND(e){let t=this.codePointIterator.start;if(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");let r=this.codePointIterator.end,n=this.data;return n.second=Number(this.text.slice(t,r)),jt(n.hour,n.minute,n.second)?(e=this.nextCode(),e===d.DOT?"TIME_SEC_FRAC":this.processTimeEnd(e,n)):this.reportParseError("invalid-time")}TIME_SEC_FRAC(e){if(!x(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;for(;x(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===d.DASH||e===d.PLUS_SIGN)return t.offsetSign=e,"TIME_OFFSET";if(e===d.LATIN_CAPITAL_Z||e===d.LATIN_SMALL_Z){let o=$e(t,"Z");return this.endToken("OffsetDateTime","end",o),"DATA"}let n=$e(t,"");return this.endToken("LocalDateTime","start",n),this.back("DATA")}let r=$e(t,"");return this.endToken("LocalTime","start",r),this.back("DATA")}TIME_OFFSET(e){if(!x(e))return this.reportParseError("unexpected-char");let t=this.codePointIterator.start;if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),e!==d.COLON)return this.reportParseError("unexpected-char");let r=this.codePointIterator.start;e=this.nextCode();let n=this.codePointIterator.start;if(!x(e))return this.reportParseError("unexpected-char");if(e=this.nextCode(),!x(e))return this.reportParseError("unexpected-char");let o=this.codePointIterator.end,i=Number(this.text.slice(t,r)),a=Number(this.text.slice(n,o));if(!jt(i,a,0))return this.reportParseError("invalid-time");let s=this.data,l=$e(s,`${String.fromCodePoint(s.offsetSign)}${me(i,2)}:${me(a,2)}`);return this.endToken("OffsetDateTime","end",l),"DATA"}parseDigits(e,t){if(e===d.UNDERSCORE)return this.reportParseError("invalid-underscore");if(!t(e))return this.reportParseError("unexpected-char");let r=[],n=d.NULL,o=!1;for(;t(e)||e===d.UNDERSCORE;){if(e===d.UNDERSCORE){if(o=!0,n===d.UNDERSCORE)return this.reportParseError("invalid-underscore")}else r.push(e);n=e,e=this.nextCode()}return n===d.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())!==d.EOF;){if(!Fr(o))return this.moveAt(t),this.reportParseError("invalid-char-in-escape-sequence");if(n++,n>=e)break}let i=this.codePointIterator.end,a=this.text.slice(r,i),s=parseInt(a,16);return To(s)?s:this.reportParseError("invalid-code-point",{cp:a})}reportParseErrorControlChar(){return this.reportParseError("invalid-control-character")}};function jr(e,t){return yo(e)||x(e)||e===d.UNDERSCORE||e===d.DASH?!0:(t.lt(1,1),!1)}c(jr,"isUnquotedKeyChar");function Ve(e){return ho(e)&&e!==d.TABULATION||e===d.DELETE}c(Ve,"isControlOtherThanTab");function Oo(e){return e===d.TABULATION||d.SPACE<=e&&e<=d.TILDE||Co(e)}c(Oo,"isNonEOL");function Co(e){return d.PAD<=e&&e<=d.CP_D7FF||d.CP_E000<=e&&e<=d.CP_10FFFF}c(Co,"isNonAscii");function No(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}c(No,"isValidDate");function jt(e,t,r){return!(e>=24||e<0||t>59||t<0||r>60||r<0)}c(jt,"isValidTime");function $e(e,t){let r=me(e.year,4),n=e.month?me(e.month,2):"01",o=e.day?me(e.day,2):"01",i=me(e.hour,2),a=me(e.minute,2),s=me(e.second,2),l=`${r}-${n}-${o}`,f=e.frac?`.${e.frac}`:"",p=new Date(`${l}T${i}:${a}:${s}${f}${t}`);return!isNaN(p.getTime())||e.second!==60?p:new Date(`${l}T${i}:${a}:59${f}${t}`)}c($e,"getDateFromDateTimeData");function me(e,t){return String(e).padStart(t,"0")}c(me,"padStart");var Kt=Symbol("VALUE_KIND_VALUE"),Br=Symbol("VALUE_KIND_INTERMEDIATE"),xo=class{static{c(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 a=0;a<r;a++){let s=e.key.keys[a],l=Gt(s);e.resolvedKey.push(l);let f=t.get(l);if(!f)f={node:s,keys:new Map},t.set(l,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=Gt(n);e.resolvedKey.push(o);let i=t.get(o);if(i)if(i.table)if(i.table==="array")if(e.kind==="array"){let a={node:n,keys:new Map},s=i.peekIndex+1;e.resolvedKey.push(s),i.keys.set(s,a),i.peekIndex=s,this.tables.push({node:e,keys:a.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 a={table:e.kind,node:n,keys:i.keys};t.set(o,a),this.tables.push({node:e,keys:a.keys})}else if(e.kind==="array"){e.resolvedKey.push(0);let a={node:n,keys:new Map};t.set(o,{table:e.kind,node:n,keys:new Map([[0,a]]),peekIndex:0}),this.tables.push({node:e,keys:a.keys})}else{let a={table:e.kind,node:n,keys:new Map};t.set(o,a),this.tables.push({node:e,keys:a.keys})}}verifyDuplicateKeys(e){for(let t of e.body)t.type==="TOMLKeyValue"&&Ht(this.ctx,this.rootKeys,t);for(let{node:t,keys:r}of this.tables)for(let n of t.body)Ht(this.ctx,r,n)}};function Ht(e,t,r){let n=t,o=ye(r.key.keys);for(let i of r.key.keys){let a=Gt(i),s=n.get(a);s?((s.value===Kt||o===i||s.table)&&e.reportParseError("dupe-keys",lt(i,s.node)),s.value=Br):(o===i?s={value:Kt,node:i,keys:new Map}:s={value:Br,node:i,keys:new Map},n.set(a,s)),n=s.keys}r.value.type==="TOMLInlineTable"?Xr(e,n,r.value):r.value.type==="TOMLArray"&&qr(e,n,r.value)}c(Ht,"verifyDuplicateKeysForKeyValue");function Xr(e,t,r){for(let n of r.body)Ht(e,t,n)}c(Xr,"verifyDuplicateKeysForInlineTable");function qr(e,t,r){let n=t;for(let o=0;o<r.elements.length;o++){let i=r.elements[o],a=n.get(o);a?e.reportParseError("dupe-keys",lt(i,a.node)):(a={value:Kt,node:i,keys:new Map},t.set(o,a),i.type==="TOMLInlineTable"?Xr(e,a.keys,i):i.type==="TOMLArray"&&qr(e,a.keys,i))}}c(qr,"verifyDuplicateKeysForArray");function lt(e,t){return e.range[0]<=t.range[0]?t:e}c(lt,"getAfterNode");var ko=class{static{c(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 Lo(e.text,e.parserOptions),this.topLevelTable=e.topLevelTable,this.table=e.topLevelTable,this.keysResolver=new xo(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 zr(e,r,n,o)}},Vr={VALUE:"missing-value"},Ro={BasicString:"basic",MultiLineBasicString:"basic",LiteralString:"literal",MultiLineLiteralString:"literal"},Po={BasicString:"basic",LiteralString:"literal"},Mo={OffsetDateTime:"offset-date-time",LocalDateTime:"local-date-time",LocalDate:"local-date",LocalTime:"local-time"},Do=class{static{c(this,"TOMLParser")}constructor(e,t){this.text=e,this.parserOptions=t||{},this.tomlVersion=Jr(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:J(e.range),loc:z(e.loc)};e.body=[t];let r=new ko({text:this.text,parserOptions:this.parserOptions,topLevelTable:t}),n=r.nextToken();if(n){for(t.range[0]=n.range[0],t.loc.start=ut(n.loc.start);n;){let s=r.stateStack.pop()||"TABLE";r.stateStack.push(...this[s](n,r)),n=r.nextToken()}let a=r.stateStack.pop()||"TABLE";if(a in Vr)return r.reportParseError(Vr[a],null);r.table.type==="TOMLTable"&&ie(r.table,ye(r.table.body)),ie(t,ye(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 ct(e)||Ke(e)?this.processKeyValue(e,t.table,t):Vt(e)?this.processTable(e,t.topLevelTable,t):t.reportParseError("unexpected-token",e)}VALUE(e,t){return Ke(e)||Kr(e)?this.processStringValue(e,t):Fo(e)?this.processNumberValue(e,t):jo(e)?this.processBooleanValue(e,t):Bo(e)?this.processDateTimeValue(e,t):Vt(e)?this.processArray(e,t):Uo(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:J(e.range),loc:z(e.loc)};r.table.type==="TOMLTable"&&ie(r.table,ye(r.table.body)),t.body.push(n),r.table=n;let o=r.nextToken({needSameLine:"invalid-key-value-newline"});if(Vt(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(Ge(o))return r.reportParseError("missing-key",o);if(!o)return r.reportParseError("unterminated-table-key",null);if(o=this.processKeyNode(o,n,r).nextToken,!Ge(o))return r.reportParseError("unterminated-table-key",o);if(n.kind==="array"){let i=o;if(o=r.nextToken({needSameLine:"invalid-key-value-newline"}),!Ge(o))return r.reportParseError("unterminated-table-key",o);if(i.range[1]<o.range[0])return r.reportParseError("invalid-space",o)}return ie(n,o),r.applyResolveKeyForTable(n),r.needNewLine=!0,[]}processKeyValue(e,t,r){let n={type:"TOMLKeyValue",key:null,value:null,parent:t,range:J(e.range),loc:z(e.loc)};t.body.push(n);let{nextToken:o}=this.processKeyNode(e,n,r);return $r(o)?(r.addValueContainer({parent:n,set:c(i=>(n.value=i,ie(n,i),r.needNewLine=!0,[]),"set")}),r.needSameLine="invalid-key-value-newline",["VALUE"]):r.reportParseError("missing-equals-sign",o)}processKeyNode(e,t,r){Bt(e)&&r.reportParseError("invalid-leading-dot-in-key",e);let n={type:"TOMLKey",keys:[],parent:t,range:J(e.range),loc:z(e.loc)};t.key=n;let o=e,i=null;do{if(ct(o))this.processBareKey(o,n);else if(Ke(o))this.processStringKey(o,n);else break;if(i=null,o=r.nextToken({needSameLine:"invalid-key-value-newline"}),!Bt(o))break;i=o,o=r.nextToken({needSameLine:"invalid-key-value-newline"})}while(o);return i&&r.reportParseError(Bt(o)?"invalid-consecutive-dots-in-key":"invalid-trailing-dot-in-key",i),ie(n,ye(n.keys)),{keyNode:n,nextToken:o}}processBareKey(e,t){let r={type:"TOMLBare",name:e.value,parent:t,range:J(e.range),loc:z(e.loc)};t.keys.push(r)}processStringKey(e,t){let r={type:"TOMLQuoted",kind:"string",value:e.string,style:Po[e.type],multiline:!1,parent:t,range:J(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:Ro[e.type],multiline:Kr(e),parent:r.parent,range:J(e.range),loc:z(e.loc)};return r.set(n)}processNumberValue(e,t){let r=t.consumeValueContainer(),n=this.text,[o,i]=e.range,a=null,s=c(()=>a??(a=n.slice(o,i).replace(/_/g,"")),"getNumberText"),l;return e.type==="Integer"?l={type:"TOMLValue",kind:"integer",value:e.number,bigint:e.bigint,get number(){return s()},parent:r.parent,range:J(e.range),loc:z(e.loc)}:l={type:"TOMLValue",kind:"float",value:e.number,get number(){return s()},parent:r.parent,range:J(e.range),loc:z(e.loc)},r.set(l)}processBooleanValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:"boolean",value:e.boolean,parent:r.parent,range:J(e.range),loc:z(e.loc)};return r.set(n)}processDateTimeValue(e,t){let r=t.consumeValueContainer(),n={type:"TOMLValue",kind:Mo[e.type],value:e.date,datetime:e.value,parent:r.parent,range:J(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:J(e.range),loc:z(e.loc)},o=t.nextToken({valuesEnabled:!0});return Ge(o)?(ie(n,o),r.set(n)):(t.backToken(),this.processArrayValue(n,r,t))}processArrayValue(e,t,r){return r.addValueContainer({parent:e,set:c(n=>{e.elements.push(n);let o=r.nextToken({valuesEnabled:!0}),i=Gr(o);return i&&(o=r.nextToken({valuesEnabled:!0})),Ge(o)?(ie(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:J(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(ct(i)||Ke(i))return this.processInlineTableKeyValue(i,n,r,t);if($t(i))return ie(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:J(e.range),loc:z(e.loc)};t.body.push(o);let{nextToken:i}=this.processKeyNode(e,o,n);if(!$r(i))return n.reportParseError("missing-equals-sign",i);let a=this.tomlVersion.gte(1,1)?void 0:"invalid-inline-table-newline";return n.addValueContainer({parent:o,set:c(s=>{o.value=s,ie(o,s);let l=n.nextToken({needSameLine:a});if(Gr(l)){if(l=n.nextToken({needSameLine:a}),l&&(ct(l)||Ke(l)))return this.processInlineTableKeyValue(l,t,r,n);if($t(l)){if(this.tomlVersion.lt(1,1))return n.reportParseError("invalid-trailing-comma-in-inline-table",l)}else return n.reportParseError(l?"unexpected-token":"unterminated-inline-table",l)}return $t(l)?(ie(t,l),r.set(t)):n.reportParseError(l?"missing-comma":"unterminated-inline-table",l)},"set")}),n.needSameLine="invalid-key-value-newline",["VALUE"]}};function Bt(e){return we(e)&&e.value==="."}c(Bt,"isDot");function $r(e){return we(e)&&e.value==="="}c($r,"isEq");function Vt(e){return we(e)&&e.value==="["}c(Vt,"isLeftBracket");function Ge(e){return we(e)&&e.value==="]"}c(Ge,"isRightBracket");function Uo(e){return we(e)&&e.value==="{"}c(Uo,"isLeftBrace");function $t(e){return we(e)&&e.value==="}"}c($t,"isRightBrace");function Gr(e){return we(e)&&e.value===","}c(Gr,"isComma");function we(e){return!!(e&&e.type==="Punctuator")}c(we,"isPunctuator");function ct(e){return e.type==="Bare"}c(ct,"isBare");function Ke(e){return e.type==="BasicString"||e.type==="LiteralString"}c(Ke,"isString");function Kr(e){return e.type==="MultiLineBasicString"||e.type==="MultiLineLiteralString"}c(Kr,"isMultiLineString");function Fo(e){return e.type==="Integer"||e.type==="Float"}c(Fo,"isNumber");function jo(e){return e.type==="Boolean"}c(jo,"isBoolean");function Bo(e){return e.type==="OffsetDateTime"||e.type==="LocalDateTime"||e.type==="LocalDate"||e.type==="LocalTime"}c(Bo,"isDateTime");function ie(e,t){t&&(e.range[1]=t.range[1],e.loc.end=ut(t.loc.end))}c(ie,"applyEndLoc");function J(e){return[e[0],e[1]]}c(J,"cloneRange");function z(e){return{start:ut(e.start),end:ut(e.end)}}c(z,"cloneLoc");function ut(e){return{line:e.line,column:e.column}}c(ut,"clonePos");var Vo={Program:["body"],TOMLTopLevelTable:["body"],TOMLTable:["key","body"],TOMLKeyValue:["key","value"],TOMLKey:["keys"],TOMLArray:["elements"],TOMLInlineTable:["body"],TOMLBare:[],TOMLQuoted:[],TOMLValue:[]},$o=Pr(Vo);function Go(e,t){return{ast:new Do(e,t).parse(),visitorKeys:$o,services:{isTOML:!0}}}c(Go,"parseForESLint");var Jt=Ko(e=>e.value);function Ko(e){function t(n,o){return r[n.type](n,o)}c(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 Jo(o,t(n.key),i),o},TOMLTable(n,o={}){let i=Ho(o,t(n.key),n.kind==="array");for(let a of n.body)t(a,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)}c(Ko,"generateConvertTOMLValue");function Ho(e,t,r){let n=e;for(let l=0;l<t.length-1;l++){let f=t[l];n=s(n,f)}let o=ye(t),i=n[o];if(i==null){let l={};return n[o]=r?[l]:l,l}if(dt(i)){let l={};return n[o]=r?[l]:l,l}if(!r){if(Array.isArray(i)){let l={};return n[o]=l,l}return i}if(Array.isArray(i)){let l={};return i.push(l),l}let a={};return n[o]=[a],a;function s(l,f){let p=l[f];if(p==null){let m={};return l[f]=m,m}if(dt(p)){let m={};return l[f]=m,m}let g=p;for(;Array.isArray(g);){let m=g.length-1,h=g[m];if(dt(h)){let w={};return g[m]=w,w}g=h}return g}c(s,"getNextTargetFromKey")}c(Ho,"getTable");function Jo(e,t,r){let n=e;for(let o=0;o<t.length-1;o++){let i=t[o],a=n[i];if(a==null){let s={};n[i]=s,n=s}else if(dt(a)||Array.isArray(a)){let s={};n[i]=s,n=s}else n=a}n[ye(t)]=r}c(Jo,"set");function dt(e){return typeof e!="object"||e instanceof Date}c(dt,"isValue");function Qr(e,t){return Go(e,t).ast}c(Qr,"parseTOML");function re(e,t){try{let r=Qr(e,{tomlVersion:"1.0"}),n=Jt(r);return en(n),{ast:r,value:n}}catch(r){let n=r;throw new y({code:"INVALID_CONFIG",path:t,message:"Configuration contains invalid TOML or an unsupported value.",line:n.lineNumber,column:n.column===void 0?void 0:n.column+1,action:"Open config.toml, correct the indicated value, and retry."},{cause:r})}}c(re,"parseToml");function en(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");en(r)}}c(en,"assertJsonValue");function he(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(he).join(", ")}]`;if(se(e))return`{ ${Object.entries(e).filter(([,t])=>t!==void 0).map(([t,r])=>`${Te(t)} = ${he(r)}`).join(", ")} }`;throw new Error("Configuration cannot contain null or unsupported values.")}c(he,"tomlValue");var Te=c(e=>/^[A-Za-z0-9_-]+$/.test(e)?e:JSON.stringify(e),"tomlKey"),Yr=c(e=>e.keys.map(t=>t.type==="TOMLBare"?t.name:t.value),"keyPath"),zo=c((e,t)=>e.length===t.length&&e.every((r,n)=>r===t[n]),"samePath"),pt=c((e,t)=>e.length<=t.length&&e.every((r,n)=>r===t[n]),"prefix");function se(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)&&!(e instanceof Date)}c(se,"isRecord");function Je(e,t,r){let n=e;for(let o of t)n=tn(n,o,r);return re(n,r),n.endsWith(`
4
4
  `)?n:`${n}
5
5
  `}c(Je,"editToml");function tn(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:Yr(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),...Yr(h.key)],node:h})}let a=o.find(m=>zo(m.path,t.path));if(a){let m=a.node;if(t.op==="set")return ft(e,m.value.range,Zr(e,n,m.value.range,he(t.value)));let h=n.comments.filter(w=>w.range[0]>=m.range[0]&&w.range[1]<=m.range[1]).map(w=>e.slice(...w.range)).join(`
@@ -30,4 +30,4 @@ CREATE TABLE IF NOT EXISTS managed_artifact_pins (id TEXT PRIMARY KEY, sha256 TE
30
30
  `).some(i=>/^p\d+$/.test(i)&&Number(i.slice(1))!==process.pid))throw n()}catch(o){if(o instanceof y)throw o;if(o.code!==1)throw new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"OpenPond could not verify that the previous installation is stopped.",action:"Ensure lsof is available, close the previous app and retry."})}return}if(process.platform==="win32"){let o="Get-CimInstance Win32_Process | Select-Object ProcessId,CommandLine | ConvertTo-Json -Compress";try{let{stdout:i}=await Dn("powershell.exe",["-NoProfile","-NonInteractive","-Command",o],{maxBuffer:4e6,env:_r()}),a=JSON.parse(i),s=Array.isArray(a)?a:[a];for(let l of s)if(!(!l.CommandLine||l.ProcessId===process.pid)&&/(?:openpond|apps[\\/]server).*(?:serve|server|desktop)/i.test(l.CommandLine)&&(r.some(f=>l.CommandLine.includes(f))||e&&l.CommandLine.includes(e)))throw n()}catch(i){throw i instanceof y?i:new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"OpenPond could not inspect previous runtime ownership.",action:"Close the previous app and enable local process inspection before retrying."})}return}throw new y({code:"MIGRATION_OWNERSHIP_UNVERIFIED",path:e??t,message:"Automatic migration ownership checks are unavailable on this platform.",action:"Migrate this installation on a supported desktop platform."})}c(Ye,"assertMigrationSourcesStopped");import{randomUUID as Si}from"node:crypto";import{promises as q}from"node:fs";import Q from"node:path";var Fn=u.string().min(1).refine(e=>!Q.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),vi=u.strictObject({path:Fn,sha256:u.string().regex(/^[a-f0-9]{64}$/),executable:u.boolean().optional()}),jn=u.strictObject({schemaVersion:u.literal("openpond.migration.v1"),id:u.string().regex(/^migration-[A-Za-z0-9-]+$/),status:u.enum(["preparing","prepared","installing","committed","verified","failed"]),home:u.string(),stage:u.string(),backup:u.string(),files:u.array(vi),installed:u.array(Fn),sourceAppHome:u.string().optional(),sourceConfig:u.string().optional(),sourceBrowserState:u.string().optional(),resolutions:Ot.optional(),snapshotComplete:u.boolean().optional(),error:u.string().optional(),createdAt:u.string()}),Nt={schemaVersion:"openpond.storage.v1",version:1};async function ke(e){let t=Q.join(_(e).runtime,"migration.json"),r=await M(t,()=>null);if(r===null)return null;let n=jn.safeParse(r);if(!n.success)throw lr(t);let o=n.data,i=Q.resolve(e);if(o.home!==i||o.stage!==Q.join(Q.dirname(i),`.${Q.basename(i)}-${o.id}`)||o.backup!==Q.join(i,"backups",o.id))throw lr(t);let a=new Set(o.files.map(s=>s.path));if(a.size!==o.files.length||o.installed.some(s=>!a.has(s))||o.files.some(s=>/^(runtime|backups)([\\/]|$)/.test(s.path)||s.path==="storage.json"))throw lr(t);return o}c(ke,"readMigrationJournal");function lr(e){return new y({code:"INVALID_MIGRATION_JOURNAL",path:e,message:"The migration journal could not be verified.",action:"Preserve the journal and backups. Restore a verified backup into a separate home."})}c(lr,"invalidJournal");async function ce(e){jn.parse(e),await I(Q.join(_(e.home).runtime,"migration.json"),`${JSON.stringify(e,null,2)}
31
31
  `)}c(ce,"saveMigrationJournal");async function Ze(e,t=e){let r=[];for(let n of await q.readdir(t,{withFileTypes:!0})){let o=Q.join(t,n.name);n.isDirectory()?r.push(...await Ze(e,o)):r.push({path:Q.relative(e,o),sha256:await K(o),executable:!!((await q.lstat(o)).mode&64)})}return r.sort((n,o)=>n.path.localeCompare(o.path))}c(Ze,"fileReceipts");async function Y(e,t){let r=await q.lstat(e),n=await q.lstat(t).catch(o=>{if(P(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(Q.join(e,o),Q.join(t,o));return}if(n){if(await K(e)!==await K(t))throw new y({code:"SOURCE_CHANGED_DURING_MIGRATION",path:e,message:"A source file changed after its migration backup was created.",action:"Stop the old installation and review the preserved backup before retrying."});return}if(await U(Q.dirname(t)),r.isSymbolicLink())await q.symlink(await q.readlink(e),t);else{let o=`${t}.${Si()}.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 a=await q.open(Q.dirname(t),"r");try{await a.sync()}finally{await a.close()}}}finally{await q.rm(o,{force:!0})}}}c(Y,"snapshotCopy");import{existsSync as Bn}from"node:fs";import Re from"node:path";var Ii="CREATE TABLE IF NOT EXISTS storage_path_relocations (source TEXT PRIMARY KEY, destination TEXT NOT NULL)";function xt(e,t){let r=_(e).database;if(!Bn(r))return;let n=[...t].sort((l,f)=>f.from.length-l.from.length);function o(l){if(!Re.isAbsolute(l))return l;let f=n.find(p=>bt(l,p.from));return f?Re.join(f.to,Re.relative(f.from,l)):l}c(o,"rebase");function i(l,f=""){return typeof l=="string"&&/(?:path|directory|root|cwd)$/i.test(f)?o(l):Array.isArray(l)?l.map(p=>i(p,f)):l&&typeof l=="object"?Object.fromEntries(Object.entries(l).map(([p,g])=>[p,["messages","events","turns","metadata","input","output","result","credential","manifest"].includes(p)?g:i(g,p)])):l}c(i,"visit");let a=c(l=>`"${l.replaceAll('"','""')}"`,"quote"),s=D(r);try{s.exec("BEGIN IMMEDIATE"),s.exec(Ii);for(let l of s.prepare("SELECT source, destination FROM storage_path_relocations").all())s.prepare("UPDATE storage_path_relocations SET destination=? WHERE source=?").run(o(l.destination),l.source);for(let l of n)l.from!==l.to&&s.prepare("INSERT INTO storage_path_relocations VALUES (?, ?) ON CONFLICT(source) DO UPDATE SET destination=excluded.destination").run(l.from,l.to);for(let{name:l}of s.prepare("SELECT name FROM sqlite_master WHERE type='table'").all())if(rr.has(l)){let f=s.prepare(`PRAGMA table_info(${a(l)})`).all(),p=f.filter(h=>h.pk).sort((h,w)=>h.pk-w.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=>`${a(h.name)}=?`).join(" AND ");for(let h of s.prepare(`SELECT * FROM ${a(l)}`).all())for(let w of g){let T=h[w.name];if(typeof T!="string")continue;let N=w.name==="payload"?JSON.stringify(i(JSON.parse(T))):o(T);T!==N&&s.prepare(`UPDATE ${a(l)} SET ${a(w.name)}=? WHERE ${m}`).run(N,...p.map(b=>h[b.name]))}}s.exec("COMMIT; PRAGMA wal_checkpoint(TRUNCATE)")}finally{s.close()}}c(xt,"rebaseStoragePointers");function Li(e,t){let r=_(e).database;if(!Re.isAbsolute(t)||!Bn(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((a,s)=>s.source.length-a.source.length).find(a=>bt(t,a.source));return i?Re.join(i.destination,Re.relative(i.source,t)):t}finally{n.close()}}c(Li,"resolveStoredPath");import{existsSync as Pe,promises as et}from"node:fs";import S from"node:path";async function Vn(e){let t=S.join(e.backup,"app"),r=S.join(t,"refiners");if(Pe(S.join(r,"binding.json"))){let s=await M(S.join(r,"binding.json"),()=>({}));if(s.schemaVersion!=="openpond.refinerBinding.v1")throw C(r,"Unsupported Refiner binding schema.");B(e.stage,"refiner_bindings","active",s);let l=S.join(r,"transitions");if(Pe(l))for(let f of await et.readdir(l)){if(!f.endsWith(".json"))continue;let p=await M(S.join(l,f),()=>({}));if(p.schemaVersion!=="openpond.refinerTransitionReceipt.v1"||typeof p.contentHash!="string")throw C(l,"Unsupported Refiner transition schema.");B(e.stage,"refiner_transitions",p.contentHash,p)}await et.rm(S.join(e.stage,"library","refiners","binding.json"),{force:!0}),await et.rm(S.join(e.stage,"library","refiners","transitions"),{recursive:!0,force:!0})}let n=S.join(e.backup,"global","extensions");if(Pe(n)&&(await Y(n,S.join(e.stage,"library","extensions")),Pe(S.join(n,"registry.json")))){let s=await M(S.join(n,"registry.json"),()=>({}));if(s.schemaVersion!==1||!Array.isArray(s.extensions))throw C(n,"Unsupported extension registry schema.");B(e.stage,"extension_installations","registry",s),await et.rm(S.join(e.stage,"library","extensions","registry.json"),{force:!0})}let o=S.join(e.backup,"global","profiles");if(Pe(o)){await Y(o,S.join(e.stage,"library","profiles"));let s=H(e.stage,"profile_installations","library"),l=e.sourceConfig?S.join(S.dirname(e.sourceConfig),"profiles"):null;if(s&&l){let f=c(g=>({...g,...typeof g.repoPath=="string"&&Oi(g.repoPath,l)?{repoPath:S.join(e.home,"library","profiles",S.relative(l,g.repoPath))}:{}}),"rebase"),p=f(s.value);Array.isArray(p.profiles)&&(p.profiles=p.profiles.map(g=>f(g))),B(e.stage,"profile_installations","library",p)}}if(e.sourceBrowserState){let s=S.join(e.backup,"browser-sidebar-state.json"),l=or.safeParse(await M(s,()=>null));if(!l.success)throw C(s,"Unsupported browser tab metadata.");let f=l.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 s of["harnesses","refiners"])i.push({from:S.join(e.sourceAppHome,s),to:S.join(e.home,"library",s)});i.push({from:e.sourceAppHome,to:e.home})}if(e.sourceConfig)for(let s of["profiles","extensions"])i.push({from:S.join(S.dirname(e.sourceConfig),s),to:S.join(e.home,"library",s)});xt(e.stage,i);let a=S.join(e.stage,"attachments");Pe(a)&&await $n(e.stage,a,[])}c(Vn,"importAdditionalDomains");function Oi(e,t){let r=S.relative(t,e);return r===""||!r.startsWith(`..${S.sep}`)&&r!==".."&&!S.isAbsolute(r)}c(Oi,"within");async function $n(e,t,r){for(let n of await et.readdir(t,{withFileTypes:!0})){let o=S.join(t,n.name),i=[...r,n.name];if(n.isDirectory())await $n(e,o,i);else if(n.isFile()&&i.length>=3){let a=i.slice(2).join("/");await Tn(e,{owner:{domain:"chat_attachment",id:JSON.stringify([i[0],i[1],a])},displayName:n.name,mediaType:"application/octet-stream",sourceFile:o})}else throw C(o,"Attachment storage contains an unsupported file or symbolic link.")}}c($n,"importAttachments");var Ni=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"]),xi=new Set(["cache","logs","diagnostics","backups","runtime"]);async function Kn(e,t={}){e=E.resolve(e),Le(e);let r=await M(_(e).marker,()=>null),n=await ke(e);if(r&&(Gn(r,e),!n||n.status==="verified"))return t.sourceBrowserState&&!t.dryRun&&await bn(e,t.sourceBrowserState),Me(e,"current",n);if(n&&!t.dryRun)return Pi(e);let o=await Un(e,t),{issues:i,sourceCandidates:a,...s}=o;if(t.dryRun)return{...Me(e,"planned",null),sourceAppHome:s.sourceAppHome??null,sourceConfig:s.sourceConfig??null,issues:i,sourceCandidates:a,...i.length?{}:{preview:await hn(e,s,Hn)}};if(i.length)throw C(e,i.map(l=>l.message).join(" "));return L(E.join(_(e).runtime,"migration-owner"),async()=>{let l=await M(_(e).marker,()=>null);if(l)return Gn(l,e),Me(e,"current",null);let f=await ke(e);if(f)return dr(f);if(!s.sourceAppHome&&!s.sourceConfig&&!s.sourceBrowserState)return await U(e),await O(e),await I(_(e).marker,`${JSON.stringify({...Nt,migrationId:null},null,2)}
32
32
  `),Me(e,"new",null);for(let m of[_(e).database,_(e).credentials])if(m&&le(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 Ye(s.sourceAppHome,s.sourceConfig);let p=`migration-${new Date().toISOString().replace(/[:.]/g,"-")}-${ur().slice(0,8)}`,g={schemaVersion:"openpond.migration.v1",id:p,status:"preparing",home:e,stage:E.join(E.dirname(e),`.${E.basename(e)}-${p}`),backup:E.join(e,"backups",p),files:[],installed:[],...s,resolutions:t.resolutions,createdAt:new Date().toISOString()};return await ce(g),dr(g)})}c(Kn,"initializeHome");function Gn(e,t){if(e.version!==1||e.schemaVersion!==Nt.schemaVersion)throw new y({code:"UNSUPPORTED_STORAGE_VERSION",path:_(t).marker,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}c(Gn,"assertLayout");async function ki(e){if(!e.snapshotComplete){if(await Ye(e.sourceAppHome,e.sourceConfig),await U(e.backup),e.sourceConfig){await Y(e.sourceConfig,E.join(e.backup,"config.json"));for(let t of["extensions","profiles"]){let r=E.join(E.dirname(e.sourceConfig),t);le(r)&&await Y(r,E.join(e.backup,"global",t))}}if(e.sourceBrowserState&&await Y(e.sourceBrowserState,E.join(e.backup,"browser-sidebar-state.json")),e.sourceAppHome){for(let n of await R.readdir(e.sourceAppHome,{withFileTypes:!0}))["openpond-app","openpond-app-nightly","storage.json","config.toml","state","browser"].includes(n.name)||xi.has(n.name)||n.name.startsWith("state.sqlite")||await Y(E.join(e.sourceAppHome,n.name),E.join(e.backup,"app",n.name));let t=E.join(e.sourceAppHome,"state.sqlite"),r=E.join(e.backup,"state.sqlite");if(le(t)&&!le(r)){let n=`${r}.${ur()}.tmp`,o=D(t,!0);try{await Ci(o,n);let i=await R.open(n,"r+");try{await i.sync()}finally{await i.close()}if(await R.rename(n,r),process.platform!=="win32"){let a=await R.open(E.dirname(r),"r");try{await a.sync()}finally{await a.close()}}}finally{o.close(),await R.rm(n,{force:!0})}}}await Ye(e.sourceAppHome,e.sourceConfig),e.snapshotComplete=!0,await ce(e)}}c(ki,"captureSources");async function Hn(e){await ki(e),await U(e.stage);let t=E.join(e.backup,"app");if(le(t))for(let n of await R.readdir(t)){if(Ni.has(n)||n==="souls"||/^soul-.+\.md$/i.test(n))continue;let o=["harnesses","refiners"].includes(n)?E.join("library",n):n;await Y(E.join(t,n),E.join(e.stage,o))}le(E.join(e.backup,"state.sqlite"))&&await Y(E.join(e.backup,"state.sqlite"),_(e.stage).database),await Nn(e.stage,e.sourceConfig?E.join(e.backup,"config.json"):void 0),await xn(e.stage,e.sourceAppHome),await kn(e.stage,e.sourceAppHome?t:void 0),await Rn(e.stage,e.sourceAppHome?t:void 0),await Pn(e.stage,e.sourceAppHome?t:void 0);let r=await A(E.join(t,"token"));r&&await I(_(e.stage).token,r),await Vn(e),le(_(e.home).config)&&await En(e.home,e.stage,e.resolutions),await Se(e.stage),await R.rm(E.join(e.stage,"runtime"),{recursive:!0,force:!0}),await R.rm(E.join(e.stage,"backups"),{recursive:!0,force:!0}),await R.rm(E.join(e.stage,"datasets","settings.json"),{force:!0}),e.files=(await Ze(e.stage)).filter(n=>!n.path.endsWith("-wal")&&!n.path.endsWith("-shm")),e.status="prepared",await ce(e)}c(Hn,"prepare");async function Se(e){let{document:t}=await O(e);await un(e);for(let r of Object.values(t.providers??{}))if(r.credential?.source==="secret"&&!await Et(e,r.credential.id))throw C(_(e).config,"An imported provider credential is missing.");if(le(_(e).database)){let r=D(_(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(_(e).database,"The imported database failed integrity checks.");r.exec("PRAGMA wal_checkpoint(TRUNCATE)")}finally{r.close()}await wn(e)}}c(Se,"validateMigratedHome");async function Ri(e){e.status="installing",await ce(e);for(let t of e.files){let r=E.join(e.home,t.path),n=E.join(e.stage,t.path),o=le(r)?await K(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 K(n)!==t.sha256)throw C(n,"A staged file failed its checksum check.");if(o!==null&&await Y(r,E.join(e.backup,"destination",t.path)),await U(E.dirname(r)),(await R.lstat(n)).isSymbolicLink())le(r)&&await R.unlink(r),await R.symlink(await R.readlink(n),r);else{let a=`${r}.${ur()}.migration`;try{await R.copyFile(n,a),await R.chmod(a,t.executable?448:384);let s=await R.open(a,"r+");try{await s.sync()}finally{await s.close()}await R.rename(a,r)}finally{await R.rm(a,{force:!0})}}}if(process.platform!=="win32"){let i=await R.open(E.dirname(r),"r");try{await i.sync()}finally{await i.close()}}e.installed.includes(t.path)||e.installed.push(t.path),await ce(e)}await Se(e.home),await I(_(e.home).marker,`${JSON.stringify({...Nt,migrationId:e.id},null,2)}
33
- `),e.status="committed",await ce(e),e.status="verified",delete e.error,await ce(e),await R.rm(e.stage,{recursive:!0,force:!0})}c(Ri,"install");async function Pi(e){return L(E.join(_(e).runtime,"migration-owner"),async()=>{let t=await ke(e);if(!t)throw C(e,"No migration journal is available.");return dr(t)})}c(Pi,"recoverMigration");async function dr(e){if(e.status==="verified")return Me(e.home,"current",e);try{return(e.status==="preparing"||e.status==="failed")&&(await R.rm(e.stage,{recursive:!0,force:!0}),e.status="preparing",await Hn(e)),e.status!=="committed"?await Ri(e):(await Se(e.home),e.status="verified",await ce(e),await R.rm(e.stage,{recursive:!0,force:!0})),Me(e.home,"verified",e)}catch(t){throw e.error=t instanceof y?t.issue.code:"MIGRATION_FAILED",e.status==="preparing"&&(e.status="failed"),await ce(e),t instanceof y?t:new y({code:"MIGRATION_FAILED",path:E.join(_(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})}}c(dr,"recoverUnlocked");function Me(e,t,r){return{id:r?.id??null,status:t,home:e,sourceAppHome:r?.sourceAppHome??null,sourceConfig:r?.sourceConfig??null,backup:r?.backup??null}}c(Me,"report");async function hd(e){return L(E.join(_(e).runtime,"migration-owner"),async()=>{let t=await ke(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 Ye(t.sourceAppHome,t.sourceConfig),await I(E.join(t.backup,"abandoned-preparation.json"),JSON.stringify(t,null,2)),await R.rm(t.stage,{recursive:!0,force:!0}),await R.rm(E.join(_(e).runtime,"migration.json")),{restarted:!0,backup:t.backup}})}c(hd,"restartMigration");async function Mi(e){let t=await O(e),r=H(e,"client_preferences","global");return{preferences:ze(t.document,r?.value),config:t}}c(Mi,"readPreferences");async function Id(e,t,r){return L(`${_(e).runtime}/preferences`,async()=>{let n=H(e,"client_preferences","global"),o=n?.value;return await W(e,i=>{let a=ze(i,n?.value),s=ee.parse({...a,...t,...t.defaultChatModelRef===void 0&&(t.defaultChatModel!==void 0||t.defaultChatProvider!==void 0)?{defaultChatModelRef:{providerId:t.defaultChatProvider??a.defaultChatProvider,modelId:t.defaultChatModel??a.defaultChatModel}}:{}});o=yt(s);let l=structuredClone(i);for(let f of ae(Ee(a),Ee(s))){let p=l;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 l},r),o&&JSON.stringify(o)!==JSON.stringify(n?.value)&&B(e,"client_preferences","global",o,n?.revision??null),Mi(e)})}c(Id,"updatePreferences");import{createHash as Di}from"node:crypto";import{promises as ve}from"node:fs";import zn from"node:path";var pe=c(e=>Di("sha256").update(JSON.stringify(e)??"null").digest("hex"),"hash"),Wn=c((e,t="local")=>pe([e,t]),"trustKey");async function Vd(e,t,r,n){let o=await ve.realpath(t);B(e,"project_trust",Wn(o,r),{root:o,accountId:r,trusted:n,updatedAt:new Date().toISOString()})}c(Vd,"setProjectTrust");async function Xn(e,t={}){let r=Ee(ee.parse({})),n=[],o={},i=[];function a(h,w,T,N=pe(w)){let b={layer:h,path:T,revision:N};r=gt(r,w),n.push(b);function v(j,de){if(j&&typeof j=="object"&&!Array.isArray(j)&&!("mode"in j)&&!("source"in j)&&!("provider_id"in j))for(let[Ue,rt]of Object.entries(j))v(rt,[...de,Ue]);else o[JSON.stringify(de)]=b}c(v,"visit"),v(w,[])}c(a,"apply"),a("defaults",r,"shipped"),t.profile&&(Jn(t.profile.defaults,"profile"),a("profile",t.profile.defaults,t.profile.id,t.profile.revision));let s=await O(e);a("user",s.document,s.path,s.rawRevision);let l=structuredClone(r.permissions),f=null,p=null;if(t.projectRoot){f=await ve.realpath(t.projectRoot);let h=zn.join(f,".openpond","config.toml");if(await ve.lstat(h).catch(T=>{if(P(T))return null;throw T})){if(await ve.realpath(h)!==h)throw new y({code:"UNSAFE_PROJECT_CONFIG",path:h,message:"Project configuration must be a regular file inside its canonical project root.",action:"Replace symbolic links in the project configuration path with a regular local file."});let N=H(e,"project_trust",Wn(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 b=await O(e,{path:h,scope:"project"});a("project",b.document,b.path,b.rawRevision),l?.command_access==="disabled"&&(r.permissions={...r.permissions,command_access:"disabled"}),l?.codex_mode==="default"&&(r.permissions={...r.permissions,codex_mode:"default"}),l=structuredClone(r.permissions)}}}for(let h of["task","turn"])t[h]&&(Jn(t[h],h),a(h,t[h],h));(l?.command_access==="disabled"||l?.command_access==="ask"&&r.permissions?.command_access==="full-access")&&(r.permissions={...r.permissions,command_access:l.command_access}),l?.codex_mode&&l.codex_mode!=="full-access"&&r.permissions?.codex_mode!=="default"&&(r.permissions={...r.permissions,codex_mode:l.codex_mode}),oe(r),await Ui(e,r);let g=[...Object.values(r.accounts??{}),...Object.values(r.providers??{})].flatMap(h=>h.credential?.source==="secret"?[h.credential.id]:[]),m=await cn(e,g);return{document:r,effectiveRevision:pe({document:r,sources:n,projectTrustRevision:p,versions:m}),sources:n,provenance:o,diagnostics:i,projectRoot:f,projectTrustRevision:p,credentialVersions:m}}c(Xn,"resolveEffectiveConfig");function Jn(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 y({code:"CONFIG_SCOPE_VIOLATION",path:`${t}.${n}`,message:`This setting is not allowed in ${t} configuration.`,action:"Move host settings to the user configuration file."})}c(Jn,"checkScope");async function Ui(e,t){let r=t.defaults;if(r?.account_id&&(!t.accounts?.[r.account_id]||t.accounts[r.account_id].enabled===!1))throw new y({code:"INVALID_ACCOUNT_DEFAULT",path:"defaults.account_id",message:"The default account is missing or disabled.",action:"Choose an enabled account or remove the explicit default."});let n=t.personalization?.active;if(n&&t.personalization?.mode!=="disabled"){let i=n.startsWith("custom:")?zn.join(e,"instructions","personalities",`${n.slice(7)}.md`):n,a=n.startsWith("custom:")?await A(i):nt.find(s=>s.id===n.slice(8))?.content;if(a==null||a.trim().length>8e3)throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The selected personality is missing or exceeds its supported size.",action:"Restore its Markdown file or select an available personality in Settings."})}let o=t.personalization?.user_instructions;if(o){let i=Fe(o,e);try{if(!(await ve.stat(i)).isFile())throw new Error("Not a file");await ve.access(i,ve.constants.R_OK)}catch(a){throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The configured user instruction file cannot be read.",action:"Restore the file or remove its configuration reference."},{cause:a})}}}c(Ui,"validateRequiredSources");async function $d(e,t,r={}){let n=await Xn(e,r);return B(e,"config_run_snapshots",t,{...n,capturedAt:new Date().toISOString()},null),n}c($d,"captureConfigRun");async function Gd(e,t,r={}){let n=await Xn(e,r);if(t.projectTrustRevision!==null&&n.projectTrustRevision!==t.projectTrustRevision)throw new y({code:"PROJECT_TRUST_CHANGED",path:t.projectRoot??e,message:"Project trust changed during this turn.",action:"Review project trust before starting a new turn."});let o=t.document.permissions,i=n.document.permissions;if(i?.command_access!==o?.command_access||i?.codex_mode!==o?.codex_mode||pe(n.credentialVersions)!==pe(t.credentialVersions)||pe(n.document.accounts)!==pe(t.document.accounts)||pe(n.document.providers)!==pe(t.document.providers))throw new y({code:"EXECUTION_POLICY_CHANGED",path:e,message:"Permissions or credential configuration changed during this turn.",action:"Start a new turn with the current settings."})}c(Gd,"assertConfigRunCurrent");function Kd(e){return ze(e.document)}c(Kd,"effectivePreferences");import{createHash as Fi}from"node:crypto";var kt=u.strictObject({chatMode:u.enum(["chat","work"]).optional(),notificationMode:u.enum(["all","direct_mentions","none"]).optional(),learningNoticeDismissed:u.boolean().optional(),sidebarVisibility:u.strictObject({showCodexChats:u.boolean(),onlyRunningTasks:u.boolean()}).optional(),scheduledWorkView:u.enum(["calendar","list"]).optional(),editorControlsVisible:u.boolean().optional(),voiceNoticeAcknowledged:u.boolean().optional(),lessonProgress:u.record(u.string().min(1).max(200),u.strictObject({completed:u.boolean(),currentTime:u.number().finite().nonnegative(),duration:u.number().finite().positive(),updatedAt:u.number().finite().nonnegative()})).refine(e=>Object.keys(e).length<=200,"Too many lessons").optional()}),Wd={"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 ji from"node:path";async function qn(e){let r=(await O(e)).document.defaults?.account_id??H(e,"account_selection","last_used")?.value??"local";return`choices:${Fi("sha256").update(JSON.stringify(r)).digest("hex")}`}c(qn,"scope");async function Bi(e){let t=await qn(e),r=H(e,"client_preferences",t),n=await O(e);return{owner:t,revision:r?.revision??null,value:kt.parse({...r?.value,notificationMode:n.document.notifications?.team_chat??"all"})}}c(Bi,"readClientChoices");async function ou(e,t,r,n=!1){return L(ji.join(_(e).runtime,"accounts"),async()=>{let o=kt.parse(r);if(await qn(e)!==t)throw new y({code:"CLIENT_OWNER_CHANGED",path:"client_preferences",message:"The active account changed before this preference was saved.",action:"Reload preferences for the current account."});let{notificationMode:i,...a}=o;return i!==void 0&&await W(e,s=>n&&s.notifications?.team_chat!==void 0?s:{...s,notifications:{...s.notifications,team_chat:i}}),fe(e,s=>{s.exec("BEGIN IMMEDIATE");try{let l=s.prepare("SELECT payload, revision FROM client_preferences WHERE id=?").get(t),f=l?JSON.parse(l.payload):{};delete f.notificationMode;let p=kt.parse(n?{...a,...f}:{...f,...a});s.prepare("INSERT INTO client_preferences VALUES (?, ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(t,JSON.stringify(p)),s.exec("COMMIT")}catch(l){throw s.exec("ROLLBACK"),l}}),Bi(e)})}c(ou,"updateClientChoices");import{randomUUID as pr}from"node:crypto";import{promises as Z}from"node:fs";import k from"node:path";import{backup as qi}from"node:sqlite";import{createCipheriv as Vi,createDecipheriv as $i,randomBytes as Gi}from"node:crypto";import{createReadStream as Qn,createWriteStream as Ki,promises as De}from"node:fs";import ne from"node:path";import{Readable as Hi}from"node:stream";import{pipeline as Yn}from"node:stream/promises";import{createGzip as Ji,createGunzip as zi}from"node:zlib";var Ie=Buffer.from("OPBK1\0"),Wi=u.string().min(1).refine(e=>!ne.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),Xi=u.strictObject({path:Wi,sizeBytes:u.number().safe().int().nonnegative(),sha256:u.string().regex(/^[a-f0-9]{64}$/),executable:u.boolean(),link:u.string().optional()}),Zn=u.strictObject({schemaVersion:u.literal("openpond.recoveryBackup.v1"),originalHome:u.string(),createdAt:u.string().datetime(),entries:u.array(Xi).max(5e5),externalRoots:u.array(u.strictObject({path:u.string(),available:u.boolean(),included:u.literal(!1)})),browserIncluded:u.boolean()});async function eo(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(Zn.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 a=Gi(12),s=Vi("aes-256-gcm",r,a);s.setAAD(Ie);let l=await De.open(t,"wx",384);try{await l.write(Buffer.concat([Ie,a])),await l.sync()}finally{await l.close()}async function*f(){yield i,yield o;for(let g of n.entries)if(g.link===void 0)for await(let m of Qn(ne.join(e,g.path)))yield m}c(f,"archive"),await Yn(Hi.from(f()),Ji(),s,Ki(t,{flags:"a"}));let p=await De.open(t,"a");try{await p.write(s.getAuthTag()),await p.sync()}finally{await p.close()}}c(eo,"encryptBackup");async function to(e,t,r){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let n=(await De.stat(e)).size,o=Ie.length+12;if(n<o+16)throw new Error("Truncated recovery backup.");let i=await De.open(e,"r"),a=Buffer.alloc(o),s=Buffer.alloc(16);try{await i.read(a,0,a.length,0),await i.read(s,0,16,n-16)}finally{await i.close()}if(!a.subarray(0,Ie.length).equals(Ie))throw new Error("Unsupported recovery backup format.");let l=$i("aes-256-gcm",r,a.subarray(Ie.length));l.setAAD(Ie),l.setAuthTag(s);let f=Qn(e,{start:o,end:n-17}),p=zi(),g=Yn(f,l,p);g.catch(()=>{});let m=p[Symbol.asyncIterator](),h=Buffer.alloc(0),w=0;async function T(N){let b=Buffer.alloc(N),v=0;for(;v<N;){if(w>=h.length){let de=await m.next();if(de.done)throw new Error("Truncated recovery object.");h=Buffer.from(de.value),w=0}let j=Math.min(N-v,h.length-w);h.copy(b,v,w,w+j),w+=j,v+=j}return b}c(T,"take");try{let N=(await T(4)).readUInt32BE();if(N>32*1024*1024)throw new Error("Invalid recovery manifest size.");let b=Zn.parse(JSON.parse((await T(N)).toString("utf8")));if(new Set(b.entries.map(v=>v.path)).size!==b.entries.length)throw new Error("Duplicate recovery object paths.");for(let v of b.entries){let j=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(j)),v.link!==void 0){if(ne.isAbsolute(v.link)||!tt(ne.resolve(ne.dirname(j),v.link),t))throw new Error("Recovery symlink leaves the backup root.");await De.symlink(v.link,j)}else{let de=await De.open(j,"wx",v.executable?448:384);try{for(let Ue=v.sizeBytes;Ue>0;){let rt=await T(Math.min(1048576,Ue));await de.writeFile(rt),Ue-=rt.length}await de.sync()}finally{await de.close()}}if(await K(j)!==v.sha256)throw new Error("Recovery object failed its checksum.")}if(w<h.length||!(await m.next()).done)throw new Error("Unexpected trailing recovery data.");return await g,b}catch(N){throw f.destroy(),l.destroy(),p.destroy(),await g.catch(()=>{}),N}}c(to,"decryptBackup");function tt(e,t){let r=ne.relative(ne.resolve(t),ne.resolve(e));return r===""||r!==".."&&!r.startsWith(`..${ne.sep}`)&&!ne.isAbsolute(r)}c(tt,"within");var Qi=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 ku(e,t,r){if(e=k.resolve(e),t=k.resolve(t),tt(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 _e(k.join(_(e).runtime,"server-owner"),100)),await Kn(e);for(let f of["accounts","providers","preferences","personalization","artifacts"])n.push(await _e(k.join(_(e).runtime,f)));n.push(await _e(_(e).config)),n.push(await _e(_(e).credentials)),await U(o);for(let f of await Z.readdir(e))Qi.has(f)||f==="state"||await Y(k.join(e,f),k.join(o,f));let a=_(e).database;if(await Z.stat(a).catch(f=>{if(P(f))return null;throw f})){await U(k.dirname(_(o).database));let f=D(a,!0);try{await qi(f,_(o).database)}finally{f.close()}}await Se(o);let s=await St(e),l=[];for(let f of await Ze(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 Z.lstat(p),m=g.isSymbolicLink()?await Z.readlink(p):void 0;if(m!==void 0&&(k.isAbsolute(m)||!tt(k.resolve(k.dirname(p),m),o)))throw new Error(`Source symlink requires rebinding before export: ${f.path}`);l.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 Z.mkdir(k.dirname(t),{recursive:!0,mode:448}),await eo(o,i,r,{schemaVersion:"openpond.recoveryBackup.v1",originalHome:e,createdAt:new Date().toISOString(),entries:l,externalRoots:s,browserIncluded:!1}),await Z.link(i,t),{path:t,files:l.length,externalRoots:s}}catch(a){throw a instanceof y?a:new y({code:"BACKUP_FAILED",path:t,message:"The recovery backup could not be completed.",action:"Keep the application stopped, check the destination and supplied encryption key, then retry. Existing backups are never overwritten."},{cause:a})}finally{await Z.rm(o,{recursive:!0,force:!0}),await Z.rm(i,{force:!0});for(let a of n.reverse())await a()}}c(ku,"exportRecoveryBackup");async function Ru(e,t,r){t=k.resolve(t);let n=await Z.lstat(t).catch(i=>{if(P(i))return null;throw i});if(n&&(!n.isDirectory()||(await Z.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 to(e,o,r);return await Se(o),await Yi(o,i.originalHome,t),await I(_(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 Se(o),n&&await Z.rmdir(t),await Z.rename(o,t),{home:t,files:i.entries.length,externalRoots:await Promise.all(i.externalRoots.map(async a=>({...a,available:!!await Z.stat(a.path).catch(()=>null)})))}}catch(i){throw new y({code:"RESTORE_FAILED",path:t,message:"The backup could not be authenticated and validated for restoration.",action:"Check the backup and its separately stored key. The existing home has not been replaced."},{cause:i})}finally{await Z.rm(o,{recursive:!0,force:!0})}}c(Ru,"restoreRecoveryBackup");async function Yi(e,t,r){let n=c(o=>tt(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)}}:{}})),xt(e,[{from:t,to:r}])}c(Yi,"rebaseRestoredPointers");async function Uu(e){let t=structuredClone((await O(e)).document),r=[];function n(o,i,a,s){o&&Object.hasOwn(o,i)&&(delete o[i],r.push({path:[...a,i],reason:s}))}c(n,"omit");for(let o of["accounts","providers"])for(let[i,a]of Object.entries(t[o]??{}))n(a,"credential",[o,i],"Reconnect or bind a credential on the destination device.");for(let o of["accounts","providers"])for(let[i,a]of Object.entries(t[o]??{}))for(let s of["base_url","api_base_url","chat_api_base_url"]){let l=a[s];if(typeof l=="string")try{let f=new URL(l);(f.username||f.password||[...f.searchParams.keys()].some(p=>/token|key|secret|password|credential|signature/i.test(p))||f.hash)&&n(a,s,[o,i],"Rebind this endpoint without embedded authentication data.")}catch{n(a,s,[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}}c(Uu,"exportSettings");async function Zi(e){let t=_(e).marker,r=await M(t,()=>null);if(r&&(r.schemaVersion!=="openpond.storage.v1"||r.version!==1))throw new y({code:"UNSUPPORTED_STORAGE_VERSION",path:t,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}c(Zi,"assertHomeCompatible");export{no as a,$ as b,A as c,U as d,I as e,L as f,_e as g,io as h,M as i,aa as j,kr as k,Ft as l,oe as m,ae as n,Xo as o,Xt as p,mt as q,qo as r,Qo as s,Ja as t,za as u,O as v,is as w,W as x,gt as y,as as z,ds as A,Ee as B,ze as C,yt as D,ys as E,Yt as F,ws as G,Ts as H,Et as I,Os as J,At as K,an as L,sn as M,cn as N,Ne as O,un as P,fn as Q,wn as R,Tn as S,gi as T,yc as U,wc as V,Tc as W,Ot as X,ke as Y,Li as Z,Kn as _,Se as $,Pi as aa,hd as ba,Mi as ca,Id as da,Vd as ea,Xn as fa,$d as ga,Gd as ha,Kd as ia,kt as ja,Wd as ka,Bi as la,ou as ma,ku as na,Ru as oa,Uu as pa,Zi as qa};
33
+ `),e.status="committed",await ce(e),e.status="verified",delete e.error,await ce(e),await R.rm(e.stage,{recursive:!0,force:!0})}c(Ri,"install");async function Pi(e){return L(E.join(_(e).runtime,"migration-owner"),async()=>{let t=await ke(e);if(!t)throw C(e,"No migration journal is available.");return dr(t)})}c(Pi,"recoverMigration");async function dr(e){if(e.status==="verified")return Me(e.home,"current",e);try{return(e.status==="preparing"||e.status==="failed")&&(await R.rm(e.stage,{recursive:!0,force:!0}),e.status="preparing",await Hn(e)),e.status!=="committed"?await Ri(e):(await Se(e.home),e.status="verified",await ce(e),await R.rm(e.stage,{recursive:!0,force:!0})),Me(e.home,"verified",e)}catch(t){throw e.error=t instanceof y?t.issue.code:"MIGRATION_FAILED",e.status==="preparing"&&(e.status="failed"),await ce(e),t instanceof y?t:new y({code:"MIGRATION_FAILED",path:E.join(_(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})}}c(dr,"recoverUnlocked");function Me(e,t,r){return{id:r?.id??null,status:t,home:e,sourceAppHome:r?.sourceAppHome??null,sourceConfig:r?.sourceConfig??null,backup:r?.backup??null}}c(Me,"report");async function hd(e){return L(E.join(_(e).runtime,"migration-owner"),async()=>{let t=await ke(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 Ye(t.sourceAppHome,t.sourceConfig),await I(E.join(t.backup,"abandoned-preparation.json"),JSON.stringify(t,null,2)),await R.rm(t.stage,{recursive:!0,force:!0}),await R.rm(E.join(_(e).runtime,"migration.json")),{restarted:!0,backup:t.backup}})}c(hd,"restartMigration");async function Mi(e){let t=await O(e),r=H(e,"client_preferences","global");return{preferences:ze(t.document,r?.value),config:t}}c(Mi,"readPreferences");async function Id(e,t,r){return L(`${_(e).runtime}/preferences`,async()=>{let n=H(e,"client_preferences","global"),o=n?.value;return await W(e,i=>{let a=ze(i,n?.value),s=ee.parse({...a,...t,...t.defaultChatModelRef===void 0&&(t.defaultChatModel!==void 0||t.defaultChatProvider!==void 0)?{defaultChatModelRef:{providerId:t.defaultChatProvider??a.defaultChatProvider,modelId:t.defaultChatModel??a.defaultChatModel}}:{}});o=yt(s);let l=structuredClone(i);for(let f of ae(Ee(a),Ee(s))){let p=l;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 l},r),o&&JSON.stringify(o)!==JSON.stringify(n?.value)&&B(e,"client_preferences","global",o,n?.revision??null),Mi(e)})}c(Id,"updatePreferences");import{createHash as Di}from"node:crypto";import{promises as ve}from"node:fs";import zn from"node:path";var pe=c(e=>Di("sha256").update(JSON.stringify(e)??"null").digest("hex"),"hash"),Wn=c((e,t="local")=>pe([e,t]),"trustKey");async function Vd(e,t,r,n){let o=await ve.realpath(t);B(e,"project_trust",Wn(o,r),{root:o,accountId:r,trusted:n,updatedAt:new Date().toISOString()})}c(Vd,"setProjectTrust");async function Xn(e,t={}){let r=Ee(ee.parse({})),n=[],o={},i=[];function a(h,w,T,N=pe(w)){let b={layer:h,path:T,revision:N};r=gt(r,w),n.push(b);function v(j,de){if(j&&typeof j=="object"&&!Array.isArray(j)&&!("mode"in j)&&!("source"in j)&&!("provider_id"in j))for(let[Ue,rt]of Object.entries(j))v(rt,[...de,Ue]);else o[JSON.stringify(de)]=b}c(v,"visit"),v(w,[])}c(a,"apply"),a("defaults",r,"shipped"),t.profile&&(Jn(t.profile.defaults,"profile"),a("profile",t.profile.defaults,t.profile.id,t.profile.revision));let s=await O(e);a("user",s.document,s.path,s.rawRevision);let l=structuredClone(r.permissions),f=null,p=null;if(t.projectRoot){f=await ve.realpath(t.projectRoot);let h=zn.join(f,".openpond","config.toml");if(await ve.lstat(h).catch(T=>{if(P(T))return null;throw T})){if(await ve.realpath(h)!==h)throw new y({code:"UNSAFE_PROJECT_CONFIG",path:h,message:"Project configuration must be a regular file inside its canonical project root.",action:"Replace symbolic links in the project configuration path with a regular local file."});let N=H(e,"project_trust",Wn(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 b=await O(e,{path:h,scope:"project"});a("project",b.document,b.path,b.rawRevision),l?.command_access==="disabled"&&(r.permissions={...r.permissions,command_access:"disabled"}),l?.codex_mode==="default"&&(r.permissions={...r.permissions,codex_mode:"default"}),l=structuredClone(r.permissions)}}}for(let h of["task","turn"])t[h]&&(Jn(t[h],h),a(h,t[h],h));(l?.command_access==="disabled"||l?.command_access==="ask"&&r.permissions?.command_access==="full-access")&&(r.permissions={...r.permissions,command_access:l.command_access}),l?.codex_mode&&l.codex_mode!=="full-access"&&r.permissions?.codex_mode!=="default"&&(r.permissions={...r.permissions,codex_mode:l.codex_mode}),oe(r),await Ui(e,r);let g=[...Object.values(r.accounts??{}),...Object.values(r.providers??{})].flatMap(h=>h.credential?.source==="secret"?[h.credential.id]:[]),m=await cn(e,g);return{document:r,effectiveRevision:pe({document:r,sources:n,projectTrustRevision:p,versions:m}),sources:n,provenance:o,diagnostics:i,projectRoot:f,projectTrustRevision:p,credentialVersions:m}}c(Xn,"resolveEffectiveConfig");function Jn(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 y({code:"CONFIG_SCOPE_VIOLATION",path:`${t}.${n}`,message:`This setting is not allowed in ${t} configuration.`,action:"Move host settings to the user configuration file."})}c(Jn,"checkScope");async function Ui(e,t){let r=t.defaults;if(r?.account_id&&(!t.accounts?.[r.account_id]||t.accounts[r.account_id].enabled===!1))throw new y({code:"INVALID_ACCOUNT_DEFAULT",path:"defaults.account_id",message:"The default account is missing or disabled.",action:"Choose an enabled account or remove the explicit default."});let n=t.personalization?.active;if(n&&t.personalization?.mode!=="disabled"){let i=n.startsWith("custom:")?zn.join(e,"instructions","personalities",`${n.slice(7)}.md`):n,a=n.startsWith("custom:")?await A(i):nt.find(s=>s.id===n.slice(8))?.content;if(a==null||a.trim().length>8e3)throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The selected personality is missing or exceeds its supported size.",action:"Restore its Markdown file or select an available personality in Settings."})}let o=t.personalization?.user_instructions;if(o){let i=Fe(o,e);try{if(!(await ve.stat(i)).isFile())throw new Error("Not a file");await ve.access(i,ve.constants.R_OK)}catch(a){throw new y({code:"MISSING_INSTRUCTION_SOURCE",path:i,message:"The configured user instruction file cannot be read.",action:"Restore the file or remove its configuration reference."},{cause:a})}}}c(Ui,"validateRequiredSources");async function $d(e,t,r={}){let n=await Xn(e,r);return B(e,"config_run_snapshots",t,{...n,capturedAt:new Date().toISOString()},null),n}c($d,"captureConfigRun");async function Gd(e,t,r={}){let n=await Xn(e,r);if(t.projectTrustRevision!==null&&n.projectTrustRevision!==t.projectTrustRevision)throw new y({code:"PROJECT_TRUST_CHANGED",path:t.projectRoot??e,message:"Project trust changed during this turn.",action:"Review project trust before starting a new turn."});let o=t.document.permissions,i=n.document.permissions;if(i?.command_access!==o?.command_access||i?.codex_mode!==o?.codex_mode||pe(n.credentialVersions)!==pe(t.credentialVersions)||pe(n.document.accounts)!==pe(t.document.accounts)||pe(n.document.providers)!==pe(t.document.providers))throw new y({code:"EXECUTION_POLICY_CHANGED",path:e,message:"Permissions or credential configuration changed during this turn.",action:"Start a new turn with the current settings."})}c(Gd,"assertConfigRunCurrent");function Kd(e){return ze(e.document)}c(Kd,"effectivePreferences");import{createHash as Fi}from"node:crypto";var kt=u.strictObject({chatMode:u.enum(["chat","work"]).optional(),sidebarPresentation:u.enum(["grouped","inbox"]).optional(),notificationMode:u.enum(["all","direct_mentions","none"]).optional(),learningNoticeDismissed:u.boolean().optional(),sidebarVisibility:u.strictObject({showCodexChats:u.boolean(),onlyRunningTasks:u.boolean()}).optional(),scheduledWorkView:u.enum(["calendar","list"]).optional(),editorControlsVisible:u.boolean().optional(),voiceNoticeAcknowledged:u.boolean().optional(),lessonProgress:u.record(u.string().min(1).max(200),u.strictObject({completed:u.boolean(),currentTime:u.number().finite().nonnegative(),duration:u.number().finite().positive(),updatedAt:u.number().finite().nonnegative()})).refine(e=>Object.keys(e).length<=200,"Too many lessons").optional()}),Wd={"openpond:last-chat-task-mode":"chatMode","openpond.sidebar.presentation.v1":"sidebarPresentation","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 ji from"node:path";async function qn(e){let r=(await O(e)).document.defaults?.account_id??H(e,"account_selection","last_used")?.value??"local";return`choices:${Fi("sha256").update(JSON.stringify(r)).digest("hex")}`}c(qn,"scope");async function Bi(e){let t=await qn(e),r=H(e,"client_preferences",t),n=await O(e);return{owner:t,revision:r?.revision??null,value:kt.parse({...r?.value,notificationMode:n.document.notifications?.team_chat??"all"})}}c(Bi,"readClientChoices");async function ou(e,t,r,n=!1){return L(ji.join(_(e).runtime,"accounts"),async()=>{let o=kt.parse(r);if(await qn(e)!==t)throw new y({code:"CLIENT_OWNER_CHANGED",path:"client_preferences",message:"The active account changed before this preference was saved.",action:"Reload preferences for the current account."});let{notificationMode:i,...a}=o;return i!==void 0&&await W(e,s=>n&&s.notifications?.team_chat!==void 0?s:{...s,notifications:{...s.notifications,team_chat:i}}),fe(e,s=>{s.exec("BEGIN IMMEDIATE");try{let l=s.prepare("SELECT payload, revision FROM client_preferences WHERE id=?").get(t),f=l?JSON.parse(l.payload):{};delete f.notificationMode;let p=kt.parse(n?{...a,...f}:{...f,...a});s.prepare("INSERT INTO client_preferences VALUES (?, ?, 1) ON CONFLICT(id) DO UPDATE SET payload=excluded.payload, revision=revision+1").run(t,JSON.stringify(p)),s.exec("COMMIT")}catch(l){throw s.exec("ROLLBACK"),l}}),Bi(e)})}c(ou,"updateClientChoices");import{randomUUID as pr}from"node:crypto";import{promises as Z}from"node:fs";import k from"node:path";import{backup as qi}from"node:sqlite";import{createCipheriv as Vi,createDecipheriv as $i,randomBytes as Gi}from"node:crypto";import{createReadStream as Qn,createWriteStream as Ki,promises as De}from"node:fs";import ne from"node:path";import{Readable as Hi}from"node:stream";import{pipeline as Yn}from"node:stream/promises";import{createGzip as Ji,createGunzip as zi}from"node:zlib";var Ie=Buffer.from("OPBK1\0"),Wi=u.string().min(1).refine(e=>!ne.isAbsolute(e)&&!/^[A-Za-z]:/.test(e)&&!e.split(/[\\/]/).some(t=>!t||t==="."||t==="..")),Xi=u.strictObject({path:Wi,sizeBytes:u.number().safe().int().nonnegative(),sha256:u.string().regex(/^[a-f0-9]{64}$/),executable:u.boolean(),link:u.string().optional()}),Zn=u.strictObject({schemaVersion:u.literal("openpond.recoveryBackup.v1"),originalHome:u.string(),createdAt:u.string().datetime(),entries:u.array(Xi).max(5e5),externalRoots:u.array(u.strictObject({path:u.string(),available:u.boolean(),included:u.literal(!1)})),browserIncluded:u.boolean()});async function eo(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(Zn.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 a=Gi(12),s=Vi("aes-256-gcm",r,a);s.setAAD(Ie);let l=await De.open(t,"wx",384);try{await l.write(Buffer.concat([Ie,a])),await l.sync()}finally{await l.close()}async function*f(){yield i,yield o;for(let g of n.entries)if(g.link===void 0)for await(let m of Qn(ne.join(e,g.path)))yield m}c(f,"archive"),await Yn(Hi.from(f()),Ji(),s,Ki(t,{flags:"a"}));let p=await De.open(t,"a");try{await p.write(s.getAuthTag()),await p.sync()}finally{await p.close()}}c(eo,"encryptBackup");async function to(e,t,r){if(r.byteLength!==32)throw new Error("A backup encryption key must contain exactly 32 bytes.");let n=(await De.stat(e)).size,o=Ie.length+12;if(n<o+16)throw new Error("Truncated recovery backup.");let i=await De.open(e,"r"),a=Buffer.alloc(o),s=Buffer.alloc(16);try{await i.read(a,0,a.length,0),await i.read(s,0,16,n-16)}finally{await i.close()}if(!a.subarray(0,Ie.length).equals(Ie))throw new Error("Unsupported recovery backup format.");let l=$i("aes-256-gcm",r,a.subarray(Ie.length));l.setAAD(Ie),l.setAuthTag(s);let f=Qn(e,{start:o,end:n-17}),p=zi(),g=Yn(f,l,p);g.catch(()=>{});let m=p[Symbol.asyncIterator](),h=Buffer.alloc(0),w=0;async function T(N){let b=Buffer.alloc(N),v=0;for(;v<N;){if(w>=h.length){let de=await m.next();if(de.done)throw new Error("Truncated recovery object.");h=Buffer.from(de.value),w=0}let j=Math.min(N-v,h.length-w);h.copy(b,v,w,w+j),w+=j,v+=j}return b}c(T,"take");try{let N=(await T(4)).readUInt32BE();if(N>32*1024*1024)throw new Error("Invalid recovery manifest size.");let b=Zn.parse(JSON.parse((await T(N)).toString("utf8")));if(new Set(b.entries.map(v=>v.path)).size!==b.entries.length)throw new Error("Duplicate recovery object paths.");for(let v of b.entries){let j=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(j)),v.link!==void 0){if(ne.isAbsolute(v.link)||!tt(ne.resolve(ne.dirname(j),v.link),t))throw new Error("Recovery symlink leaves the backup root.");await De.symlink(v.link,j)}else{let de=await De.open(j,"wx",v.executable?448:384);try{for(let Ue=v.sizeBytes;Ue>0;){let rt=await T(Math.min(1048576,Ue));await de.writeFile(rt),Ue-=rt.length}await de.sync()}finally{await de.close()}}if(await K(j)!==v.sha256)throw new Error("Recovery object failed its checksum.")}if(w<h.length||!(await m.next()).done)throw new Error("Unexpected trailing recovery data.");return await g,b}catch(N){throw f.destroy(),l.destroy(),p.destroy(),await g.catch(()=>{}),N}}c(to,"decryptBackup");function tt(e,t){let r=ne.relative(ne.resolve(t),ne.resolve(e));return r===""||r!==".."&&!r.startsWith(`..${ne.sep}`)&&!ne.isAbsolute(r)}c(tt,"within");var Qi=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 ku(e,t,r){if(e=k.resolve(e),t=k.resolve(t),tt(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 _e(k.join(_(e).runtime,"server-owner"),100)),await Kn(e);for(let f of["accounts","providers","preferences","personalization","artifacts"])n.push(await _e(k.join(_(e).runtime,f)));n.push(await _e(_(e).config)),n.push(await _e(_(e).credentials)),await U(o);for(let f of await Z.readdir(e))Qi.has(f)||f==="state"||await Y(k.join(e,f),k.join(o,f));let a=_(e).database;if(await Z.stat(a).catch(f=>{if(P(f))return null;throw f})){await U(k.dirname(_(o).database));let f=D(a,!0);try{await qi(f,_(o).database)}finally{f.close()}}await Se(o);let s=await St(e),l=[];for(let f of await Ze(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 Z.lstat(p),m=g.isSymbolicLink()?await Z.readlink(p):void 0;if(m!==void 0&&(k.isAbsolute(m)||!tt(k.resolve(k.dirname(p),m),o)))throw new Error(`Source symlink requires rebinding before export: ${f.path}`);l.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 Z.mkdir(k.dirname(t),{recursive:!0,mode:448}),await eo(o,i,r,{schemaVersion:"openpond.recoveryBackup.v1",originalHome:e,createdAt:new Date().toISOString(),entries:l,externalRoots:s,browserIncluded:!1}),await Z.link(i,t),{path:t,files:l.length,externalRoots:s}}catch(a){throw a instanceof y?a:new y({code:"BACKUP_FAILED",path:t,message:"The recovery backup could not be completed.",action:"Keep the application stopped, check the destination and supplied encryption key, then retry. Existing backups are never overwritten."},{cause:a})}finally{await Z.rm(o,{recursive:!0,force:!0}),await Z.rm(i,{force:!0});for(let a of n.reverse())await a()}}c(ku,"exportRecoveryBackup");async function Ru(e,t,r){t=k.resolve(t);let n=await Z.lstat(t).catch(i=>{if(P(i))return null;throw i});if(n&&(!n.isDirectory()||(await Z.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 to(e,o,r);return await Se(o),await Yi(o,i.originalHome,t),await I(_(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 Se(o),n&&await Z.rmdir(t),await Z.rename(o,t),{home:t,files:i.entries.length,externalRoots:await Promise.all(i.externalRoots.map(async a=>({...a,available:!!await Z.stat(a.path).catch(()=>null)})))}}catch(i){throw new y({code:"RESTORE_FAILED",path:t,message:"The backup could not be authenticated and validated for restoration.",action:"Check the backup and its separately stored key. The existing home has not been replaced."},{cause:i})}finally{await Z.rm(o,{recursive:!0,force:!0})}}c(Ru,"restoreRecoveryBackup");async function Yi(e,t,r){let n=c(o=>tt(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)}}:{}})),xt(e,[{from:t,to:r}])}c(Yi,"rebaseRestoredPointers");async function Uu(e){let t=structuredClone((await O(e)).document),r=[];function n(o,i,a,s){o&&Object.hasOwn(o,i)&&(delete o[i],r.push({path:[...a,i],reason:s}))}c(n,"omit");for(let o of["accounts","providers"])for(let[i,a]of Object.entries(t[o]??{}))n(a,"credential",[o,i],"Reconnect or bind a credential on the destination device.");for(let o of["accounts","providers"])for(let[i,a]of Object.entries(t[o]??{}))for(let s of["base_url","api_base_url","chat_api_base_url"]){let l=a[s];if(typeof l=="string")try{let f=new URL(l);(f.username||f.password||[...f.searchParams.keys()].some(p=>/token|key|secret|password|credential|signature/i.test(p))||f.hash)&&n(a,s,[o,i],"Rebind this endpoint without embedded authentication data.")}catch{n(a,s,[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}}c(Uu,"exportSettings");async function Zi(e){let t=_(e).marker,r=await M(t,()=>null);if(r&&(r.schemaVersion!=="openpond.storage.v1"||r.version!==1))throw new y({code:"UNSUPPORTED_STORAGE_VERSION",path:t,message:"This OpenPond home requires a different application version.",action:"Update OpenPond, or restore a compatible backup into a separate home."})}c(Zi,"assertHomeCompatible");export{no as a,$ as b,A as c,U as d,I as e,L as f,_e as g,io as h,M as i,aa as j,kr as k,Ft as l,oe as m,ae as n,Xo as o,Xt as p,mt as q,qo as r,Qo as s,Ja as t,za as u,O as v,is as w,W as x,gt as y,as as z,ds as A,Ee as B,ze as C,yt as D,ys as E,Yt as F,ws as G,Ts as H,Et as I,Os as J,At as K,an as L,sn as M,cn as N,Ne as O,un as P,fn as Q,wn as R,Tn as S,gi as T,yc as U,wc as V,Tc as W,Ot as X,ke as Y,Li as Z,Kn as _,Se as $,Pi as aa,hd as ba,Mi as ca,Id as da,Vd as ea,Xn as fa,$d as ga,Gd as ha,Kd as ia,kt as ja,Wd as ka,Bi as la,ou as ma,ku as na,Ru as oa,Uu as pa,Zi as qa};
@@ -0,0 +1,2 @@
1
+ import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
+ import{a as H,f as te,h as ae,i as ie}from"./chunk-VOIH2BQA.js";import{g as se}from"./chunk-QJRXTIOC.js";import{F as re,H as oe}from"./chunk-7K72KS5C.js";import{U as X,ba as Y,ca as Z,ga as ee}from"./chunk-7MXZJQS7.js";import{L as K,da as b}from"./chunk-XDMUD4FW.js";import{Ca as g,Ta as U,pc as Q,xa as P}from"./chunk-QRWPEW3Z.js";import{s as G,t as F,u as T}from"./chunk-WV2APYWG.js";import{Qa as L,na as N,oa as y,qa as W,wa as $}from"./chunk-PJM2G7SG.js";import{Fa as _}from"./chunk-SDEDAHV6.js";import{b as R,c as v,d as J,l as S,m as n,o as j,r as q}from"./chunk-NNF6KCHD.js";import{b as h}from"./chunk-ES2ISFJC.js";import{a as d}from"./chunk-FTQLQJQV.js";import{randomUUID as V,createHash as fe}from"node:crypto";import{mkdtemp as ue,mkdir as pe,writeFile as D,rm as me}from"node:fs/promises";import he from"node:os";import E from"node:path";var ne=d(async e=>{let a=g(e.packageValue);if(e.grader.runtime!=="sandbox_process")throw new Error("Select the sandbox process runtime for a local file grader.");if(!a.taskset.graders.some(r=>n(r)===n(e.grader)))throw new Error("The private grader differs from its package.");if(!a.taskset.tasks.some(r=>n(r)===n(e.task)))throw new Error("The private case differs from its package.");await e.authorize(),e.signal?.throwIfAborted();let i=await ue(E.join(he.tmpdir(),"profile-private-grade-")),t=V();try{for(let f of a.files.filter(l=>l.asset.visibility!=="policy")){let l=f.asset.path;if(E.isAbsolute(l)||l.split(/[\\/]/).some(u=>!u||u==="."||u===".."))throw new Error("Private grader asset path invalid.");let m=E.join(i,"package",l);await pe(E.dirname(m),{recursive:!0,mode:448}),await D(m,P(f),{mode:256})}await D(E.join(i,"request.json"),JSON.stringify({task:e.task,attempt:e.evidence,input:e.task.input,output:e.evidence.output,artifacts:"artifacts"in e.evidence?e.evidence.artifacts:[],expectedOutput:e.task.expectedOutput}),{mode:256});let r=`import fs from 'node:fs/promises'; const module=await import(${JSON.stringify("./package/"+e.grader.verifierRef.path)}); const result=await module[${JSON.stringify(e.grader.exportName??"verify")}](JSON.parse(await fs.readFile('request.json','utf8'))); console.log(JSON.stringify(result));`;await D(E.join(i,"runner.mjs"),r,{mode:256});let s=await ie({authorize:d(async()=>(await e.authorize(),e.signal?.throwIfAborted(),{candidateId:t,candidateRevision:1,ownerId:t,sessionId:t,turnId:t,sourceRoot:i,writablePaths:[]}),"authorize")})({candidateId:t,sessionId:t,turnId:t,expectedRevision:1,command:"/runtime/node --max-old-space-size=512 runner.mjs",timeoutMs:e.grader.timeoutMs,maxOutputBytes:7e4,signal:e.signal});if(await e.authorize(),e.signal?.throwIfAborted(),s.code!==0||s.timedOut||s.stdoutTruncated||s.stderrTruncated)throw new Error("Private grading sandbox did not complete.");return H.parse(JSON.parse(s.stdout))}finally{await me(i,{recursive:!0,force:!0})}},"executeLocalProfileVerifier");function Me(e){return async a=>{if(!a.manifest)throw new Error("The hosted grader requires its admitted manifest.");await a.authorize(),a.signal?.throwIfAborted();let i="artifacts"in a.evidence&&Array.isArray(a.evidence.artifacts)?a.evidence.artifacts.map(({reference:l,title:m,contentType:u})=>({reference:l,title:m,contentType:u})):[],t="caseOwner"in a.evidence?a.evidence.caseOwner:null;if(!t?.sessionId||!t.turnId)throw new Error("The private grader has no sealed case owner.");let r=Buffer.from(JSON.stringify({manifest:a.manifest,packageValue:a.packageValue,graderId:a.grader.id,taskId:a.task.id,evidence:{...a.evidence,artifacts:i}}));if(r.length>2e7)throw new Error("The private grading package exceeds its transport limit.");let o={callId:V(),sessionId:t.sessionId,turnId:t.turnId,sha256:fe("sha256").update(r).digest("hex"),sizeBytes:r.length,timeoutMs:a.grader.timeoutMs},s=d((l,m=12e4)=>e.request(oe.parse({contractVersion:re,requestId:V(),operation:"profile-evaluations/grade",params:l}),m),"request");for(let l=0;l<r.length;l+=98304)await a.authorize(),a.signal?.throwIfAborted(),await s({...o,action:"upload",offset:l,contentsBase64:r.subarray(l,l+98304).toString("base64")});let f=await s({...o,action:"execute"},a.grader.timeoutMs+12e4);return await a.authorize(),a.signal?.throwIfAborted(),H.parse(f)}}d(Me,"createHostedProfileVerifier");async function ge(e,a){let i=g(e);for(let r of i.taskset.graders){if(r.kind==="model_judge"&&(!a||r.calibrationStatus!=="passed"))throw new Error("This Profile requires its current calibrated judge and bounded private provider owner.");let o="verifierRef"in r?r.verifierRef:"rubricRef"in r?r.rubricRef:null;o&&A(i,o)}let t=i.taskset.metrics?.customAggregator;if(t){let r=i.files.find(o=>o.asset.path===t.module);if(!r||r.asset.visibility==="policy"||S(P(r))!==t.contentHash)throw new Error("The authored aggregate metric is not its exact private release.");new TextDecoder("utf8",{fatal:!0}).decode(P(r))}}d(ge,"preflightProfilePrivateGrading");function A(e,a){let i=e.files.find(t=>t.asset.id===a.id);if(!i||i.asset.visibility==="policy"||n(i.asset)!==n(a))throw new Error("The exact private grader asset is unavailable.");return new TextDecoder("utf8",{fatal:!0}).decode(P(i))}d(A,"readPrivate");async function $e(e){let a=g(e.packageValue);if(a.contentHash!==e.manifest.packageHash||a.taskset.contentHash!==e.manifest.tasksetRelease.contentHash)throw new Error("The private grading package changed its frozen Run identity.");await e.authorize(),await ge(a,!!e.executeBudgetedJudge),await e.authorize();let i=d(async({grader:o,task:s,evidence:f})=>{let l=e.signal;await e.authorize(),l?.throwIfAborted();let m={manifest:e.manifest,packageValue:a,grader:o,task:s,evidence:f,signal:l,authorize:e.authorize},u=e.executeSandboxVerifier?await e.executeSandboxVerifier(m):o.runtime==="sandbox_process"?await ne(m):await te({source:A(a,o.verifierRef),exportName:o.exportName,runtime:o.runtime,timeoutMs:o.timeoutMs,signal:l,value:{task:s,attempt:f,input:s.input,output:f.output,artifacts:"artifacts"in f?f.artifacts:[],expectedOutput:s.expectedOutput,infrastructureError:f.infrastructureError??null}});return await e.authorize(),l?.throwIfAborted(),{score:u.score,passed:u.passed,rewardEligible:o.rewardEligible,failureClass:null,feedback:[u.feedback],visibleEvidenceRefs:[],privilegedEvidenceRefs:u.evidenceRefs}},"customVerifier"),t=a.taskset.metrics?.customAggregator,r=t?new TextDecoder("utf8",{fatal:!0}).decode(P(a.files.find(o=>o.asset.path===t.module))):void 0;return{authorize:e.authorize,customVerifier:i,...e.executeBudgetedJudge?{modelJudge:L({readRubric:d(async o=>{await e.authorize();let s=A(a,o);return await e.authorize(),s},"readRubric"),executeBudgeted:d(async(o,s)=>{await e.authorize(),s?.throwIfAborted();let f=await e.executeBudgetedJudge(o,s);return await e.authorize(),s?.throwIfAborted(),f},"executeBudgeted")})}:{},...r!==void 0?{metricSource:r,metricExecutor:d(async o=>{await e.authorize(),o.signal?.throwIfAborted();let s=await ae(o);return await e.authorize(),o.signal?.throwIfAborted(),s},"metricExecutor")}:{}}}d($e,"createProfilePrivateGradingOwner");import{promises as ve}from"node:fs";import ke from"node:path";async function at(e){let a=e.definition.tasksetRelease,i=await se(e.store,e.harnessRelease);if(!i)throw new Error("Evaluation Profile Harness release is unavailable.");let t=await Re({...e,runtime:i});if(t)return t;let r=await e.store.listTasksetRevisions(e.profileId);for(let o of r){if(a.id!==o.id&&a.id!==`taskset-release-${o.id}-r${o.revision}`)continue;let s=await we(e.storeDir,o);if(s.taskset.id===a.id&&s.taskset.contentHash===a.contentHash)return s}throw new Error(`Released Taskset ${a.id} is unavailable in Profile ${e.profileId}.`)}d(at,"loadLocalProfileEvaluationTaskset");async function we(e,a){let i=a.metadata.importedPackageHash;if(typeof i=="string"){let o=await Z(e,i);if(o.taskset.id!==a.id||o.taskset.revision!==a.revision)throw new Error("Imported evaluation Taskset differs from its local Profile revision.");return o}if(U(a)!==a.contentHash)throw new Error("Authored evaluation Taskset differs from its immutable revision.");let t=Q({taskset:a,adapterId:X(a)}),r=await ee({storeDir:e,taskset:a,content:{schemaVersion:"openpond.tasksetPackage.v1",taskset:t.tasksetRelease,environment:t.environmentRelease,verifierSet:t.verifierSetRelease}});return await Y(e,r),r}d(we,"loadCandidate");async function Re(e){let a=e.definition.tasksetRelease,i=e.runtime;if(i.release.harnessRelease.id!==e.harnessRelease.id||i.release.harnessRelease.contentHash!==e.harnessRelease.contentHash)throw new Error("Evaluation Taskset runtime differs from its requested release.");let t=`evals/tasksets/${a.contentHash}.json`,r=i.release.harnessRelease.files.find(o=>o.path===t);if(r){if(r.visibility!=="verifier")throw new Error("Evaluation Taskset package is not verifier-private.");let o=await ve.readFile(ke.join(i.release.bundlePath,"source",...t.split("/")));if(S(o)!==r.contentHash)throw new Error("Released evaluation Taskset package bytes differ from their source receipt.");let s=g(JSON.parse(o.toString("utf8")));if(s.taskset.id!==a.id||s.taskset.contentHash!==a.contentHash)throw new Error("Released evaluation Taskset package differs from its definition.");return s}return null}d(Re,"loadReleasedProfileEvaluationTaskset");function C(e){return{id:W(e),label:"Selected Dataset evaluation",description:"Explicit sealed external Dataset evaluation recipe.",target:e.target,tasksetRelease:{id:e.dataset.id,contentHash:e.dataset.contentHash},split:e.split,taskIds:[...new Set(e.population.map(a=>a.taskId))],seeds:[...new Set(e.population.map(a=>a.seed))],criterion:e.criterion}}d(C,"externalProfileEvaluationDefinition");async function lt(e){let a=e.manifest.profileEvaluation,i=a?.externalDatasetBinding?y(a.externalDatasetBinding):null;if(!i)return null;if(!e.resolveExternalDataset)throw new Error("This owner has no authorized external Dataset resolver.");let t=await e.resolveExternalDataset(i,e.selected);await t.authorize();let r=g(t.packageValue),o=await e.loadCatalog({ref:e.selected.profileRef,sourceRevision:e.selected.sourceRevision,harnessRelease:e.selected.harnessRelease});if(n(t.binding)!==n(i)||i.profileId!==e.selected.profileRef.profileId||i.declaredProfileCatalogHash!==o.catalogHash||r.contentHash!==i.packageHash||n(r.taskset)!==n(e.taskset)||i.environmentHash!==n(r.taskset.environment)||i.privateDatasetClosureHash!==n(r.files.filter(l=>l.asset.visibility!=="policy").map(l=>l.asset)))throw new Error("External Dataset admission changed its actual Profile, package or private closure.");let s=C(i),f={schemaVersion:"openpond.profileEvaluations.v1",definitions:[s],suites:[]};if(T(e.manifest,e.taskset,f),!a||a.catalogHash!==n(f)||a.definitionHash!==n(s)||n(a.target)!==n(i.target))throw new Error("External Dataset manifest changed its derived definition.");return await t.authorize(),{...t,packageValue:r,definition:s,catalog:f}}d(lt,"admitProfileExternalDataset");var Pe=h.object({id:R,createdAt:J,definitionId:R,externalDatasetBinding:N.optional(),profileRef:K.optional(),profileSource:h.object({sourceRevision:h.string().min(1).max(500),harnessRelease:h.object({id:R,contentHash:v}).strict()}).strict().optional(),modelRef:q,hostModelConfigurationHash:v.optional(),hostArtifactHash:v.optional(),maximumSpendUsd:h.number().positive().max(1e4).optional(),expectedManifestHash:v.optional(),hostExperiment:h.object({definition:h.object({id:R,revision:h.number().int().positive(),contentHash:v}).strict().nullable(),configurationHash:v,project:h.object({id:R,revision:h.number().int().positive(),contentHash:v,targetId:R.nullable()}).strict().optional()}).strict().optional()}).strict();function vt(e){return async(a,i)=>{let t=Pe.parse(a);if(i?.requireExpectedManifestHash&&!t.expectedManifestHash)throw new Error("Profile evaluation execution requires the reviewed manifest hash.");if(t.profileSource&&!t.profileRef)throw new Error("An exact Profile source requires its accepted Profile reference.");let r=i?.selectedWorkflows??await e.selectedWorkflows(t.profileRef,t.profileSource);if(t.profileRef&&n(t.profileRef)!==n(r.profileRef))throw new Error("Profile preparation did not resolve the explicitly selected Profile.");if(t.profileSource&&(r.sourceRevision!==t.profileSource.sourceRevision||n(r.harnessRelease)!==n(t.profileSource.harnessRelease)))throw new Error("Profile preparation changed its explicitly pinned source.");let o=t.externalDatasetBinding?y(t.externalDatasetBinding):null,s=o?await(e.resolveExternalDataset?e.resolveExternalDataset(o,r):Promise.reject(new Error("This host has not qualified external Dataset Profile execution."))):null;if(s&&(await s.authorize(),n(y(s.binding))!==n(o)))throw new Error("External Dataset admission differs from the actual authorized recipe.");let f=await e.loadCatalog({ref:r.profileRef,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease});if(o&&o.declaredProfileCatalogHash!==f.catalogHash)throw new Error("The original Profile verifier catalog changed.");let l=o?C(o):null;if(l&&t.definitionId!==l.id)throw new Error("Use the external recipe's own definition identity.");let m={schemaVersion:"openpond.profileEvaluations.v1",definitions:l?[l]:f.definitions,suites:l?[]:f.suites},u=l??f.definitions.find(c=>c.id===t.definitionId);if(!u)throw new Error(`Evaluation ${t.definitionId} is absent from the selected Profile release.`);let k=u.target,z=k.kind==="workflow"?r.workflows.find(c=>c.binding.workflowId===k.workflowId)?.binding:_.parse({schemaVersion:"openpond.profileComponentBinding.v1",profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,target:k});if(!z)throw new Error(`Evaluation workflow ${k.kind==="workflow"?k.workflowId:""} is absent from the selected Profile release.`);let w=g(s?.packageValue??await e.loadTasksetPackage(u,r.profileRef.profileId,r.harnessRelease)),p=w.taskset;if(p.id!==u.tasksetRelease.id||p.contentHash!==u.tasksetRelease.contentHash)throw new Error("Evaluation Taskset package differs from its released definition.");let le=p.environment.kind==="text"&&p.tools.length===0,M=p.environment.kind==="work"&&p.environment.entrypoint==="openpond-work-v1"&&p.tools.every(c=>["work_exec","work_save_output"].includes(c.name));if(!le&&!M)throw new Error("Profile evaluation supports text cases or Work cases with the built-in execution and output tools.");if(t.maximumSpendUsd!==void 0&&M&&!e.boundedWorkComputeAvailable)throw new Error("This host has not admitted budgeted Work compute.");if(p.tasks.some(c=>c.artifactRefs.length>b.maxAttachments||c.artifactRefs.some(x=>x.visibility!=="policy"||x.mediaType!=="application/pdf"||x.sizeBytes>b.maxAttachmentBytes)))throw new Error("Profile evaluation accepts only bounded policy-visible PDF task attachments.");if(!o&&!e.privateGradingPreflight&&(p.graders.some(c=>c.kind==="model_judge"||c.kind==="custom_verifier")||p.metrics?.aggregation==="custom"))throw new Error("Profile evaluation cannot run this Taskset's model judge, custom verifier, or custom metric in the current app-server runtime.");await e.privateGradingPreflight?.(w);let B={adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",placement:e.placement,runtimeVersion:"app-server-v1",capabilityReceipt:n({adapterId:k.kind==="workflow"?"openpond.profile-workflow":"openpond.profile-component",packageHash:w.contentHash,connectedAppScopes:p.policy.connectedAppScopes})},ce={...$({catalog:m,definitionId:u.id,profileId:r.profileRef.profileId,sourceRevision:r.sourceRevision,harnessRelease:r.harnessRelease,environmentHash:n({packageHash:w.contentHash,runtimeTarget:B})}),...o?{externalDatasetBinding:o}:{},...e.sourceCandidate?{sourceCandidate:e.sourceCandidate}:{}};if(o&&(o.packageHash!==w.contentHash||o.environmentHash!==n(p.environment)||o.privateDatasetClosureHash!==n(w.files.filter(c=>c.asset.visibility!=="policy").map(c=>c.asset))))throw new Error("External Dataset package/environment/private closure changed.");let de=j.parse({provider:t.modelRef.providerId,model:t.modelRef.modelId,revision:null,artifactHash:t.hostArtifactHash??null,tokenizerRevision:null,chatTemplateHash:null}),O=await e.modelConfigurationHash(t.modelRef,t),I=G({schemaVersion:"openpond.tasksetRunManifest.v1",id:t.id,tasksetRelease:u.tasksetRelease,packageHash:w.contentHash,execution:{kind:"harness",harnessRelease:r.harnessRelease},profileEvaluation:ce,policy:{kind:"model",model:de,configurationHash:O},gradingRole:"evaluation",metricPolicy:F(p),population:o?o.population.map(c=>({...c,receiptId:`evaluation-${n([t.id,c.taskId,c.seed,c.fixtureId]).slice(0,32)}`})):u.taskIds.flatMap(c=>u.seeds.map(x=>({receiptId:`evaluation-${n([t.id,c,x]).slice(0,32)}`,taskId:c,seed:x,fixtureId:null}))),runtimeTarget:B,limits:{maxTurns:128,timeoutMs:p.environment.defaultTimeoutMs,maxOutputBytes:25e7,maximumSpendUsd:t.maximumSpendUsd??null},createdAt:t.createdAt,metadata:{sourceTasksetId:p.metadata.sourceTasksetId??p.id,...r.profileRef.source==="openpond_git"?{profileRepositoryId:r.profileRef.repositoryId}:{},...t.hostExperiment?{experimentDefinition:t.hostExperiment.definition,experimentConfigurationHash:t.hostExperiment.configurationHash,...t.hostExperiment.project?{project:t.hostExperiment.project}:{}}:{}}});if(T(I,p,m),s&&await s.authorize(),t.expectedManifestHash&&I.contentHash!==t.expectedManifestHash)throw new Error("Profile evaluation setup changed since preview; prepare the run again.");return{manifest:I,taskset:p,profileRef:r.profileRef,binding:z,modelRef:t.modelRef,modelConfigurationHash:O}}}d(vt,"createProfileEvaluationRunPreparationService");export{ne as a,Me as b,ge as c,$e as d,at as e,Re as f,lt as g,vt as h};
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-ZJY2L43W.js";import{e as pe}from"./chunk-6JBWHR6T.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-L4BYPZ4U.js";import{p as de}from"./chunk-P653BXMY.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Te=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Te)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Y,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(xe,"fallbackProfilesFromConfig");function ae(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:D(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a($e,"normalizeHealth");function Ue(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ue,"normalizeProfile");function He(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(ze,"apiKeyHint");function Fe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let T=l(d.baseUrl),Re=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,T)),ne=c?.[F(d.handle,T)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:T,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Re?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
2
+ import{a as fe,b as me,d as he,e as q,f as L,g as ye,h as Ae,i as ge,j as Pe}from"./chunk-HA7EFTPF.js";import{e as pe}from"./chunk-XDMUD4FW.js";import{d as N,e as B}from"./chunk-Z3D4C7BG.js";import{D as oe,g as te}from"./chunk-TGIB24K4.js";import{q as de}from"./chunk-NNF6KCHD.js";import{a}from"./chunk-FTQLQJQV.js";import{randomUUID as qe}from"node:crypto";var Te=new URL(B).hostname,we=new URL(N).hostname,Ne=`${B}/opchat/v1`;function l(e){if(!e)return null;let n=e.trim();return n?n.replace(/\/+$/,""):null}a(l,"normalizeBaseUrl");function V(e){let n=l(e);if(!n)return null;try{let o=new URL(n).hostname.toLowerCase();if(o===Te)return B;if(o===we||o===`www.${we}`||o==="openpond.live"||o==="www.openpond.live")return B;if(o.startsWith("api."))return n}catch{return null}return null}a(V,"mapUiBaseToApiBase");function G(e,n){let t=l(process.env.OPENPOND_API_URL);if(t)return t;let o=l(e?.apiBaseUrl);if(o)return o;let r=l(n.apiBaseUrl);if(r)return r;let s=V(process.env.OPENPOND_BASE_URL);return s||(V(e?.baseUrl||n.baseUrl)??B)}a(G,"resolvePublicApiBaseUrl");function J(e,n,t){return Le(e,n,t)}a(J,"resolveHostedChatApiBaseUrl");function Le(e,n,t){let o=typeof process<"u"?process.env:{};return W(o.OPENPOND_OPCHAT_API_URL)??W(e?.chatApiBaseUrl??n.chatApiBaseUrl)??W(o.OPENPOND_CHAT_API_URL)??De(t)}a(Le,"resolveOpChatApiBaseUrl");function W(e){let n=l(e);if(!n)return null;try{let t=new URL(n),o=t.pathname.split("/").filter(Boolean),r=o.findIndex(i=>i.toLowerCase()==="opchat");return r>=0?(t.pathname=`/${[...o.slice(0,r+1),"v1"].join("/")}`,t.search="",t.hash="",l(t.toString())??null):o.findIndex(i=>i.toLowerCase()==="v1")>=0?(t.pathname="/opchat/v1",t.search="",t.hash="",l(t.toString())??null):(t.pathname=`${t.pathname.replace(/\/+$/,"")}/opchat/v1`.replace(/\/{2,}/g,"/"),t.search="",t.hash="",l(t.toString())??null)}catch{return null}}a(W,"normalizeOpChatApiBaseUrl");function De(e){return W(e)??Ne}a(De,"opChatBaseFromPublicApiBase");function D(e){return e?.trim()?e.trim():"production"}a(D,"deriveEnvironment");function Y(e,n=process.env){let t=[e?.apiKey,e?.session?.token,e?.token,n.OPENPOND_API_KEY];for(let o of t){let r=typeof o=="string"?o.trim():"";if(r)return r}return null}a(Y,"accountToken");function P(e,n){return!!(e&&n&&e.toLowerCase()===n.toLowerCase())}a(P,"handleEquals");function b(e,n){return l(e)===l(n)}a(b,"baseUrlEquals");function F(e,n){return`${e?.trim().toLowerCase()||""}|${l(n)??"default"}`}a(F,"profileKey");function Q(e){return l(e?.baseUrl)}a(Q,"selectorBaseUrl");function _(e){let n=l(e.baseUrl);return n?{handle:e.handle,baseUrl:n}:{handle:e.handle}}a(_,"selectorFromAccount");function A(e){let n=typeof e?.handle=="string"?e.handle.trim():"";if(!n)return null;let t=l(e?.baseUrl);return t?{handle:n,baseUrl:t}:{handle:n}}a(A,"normalizeActiveProfile");function U(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(U,"accountMatchesSelector");function re(e,n){if(!P(e.handle,n.handle))return!1;let t=Q(n);return t?b(e.baseUrl,t):!l(e.baseUrl)}a(re,"profileMatchesSelector");function Oe(e,n,t){let o=Array.isArray(e.accounts)?e.accounts:[],r=n||process.env.OPENPOND_ACCOUNT?A({handle:n||process.env.OPENPOND_ACCOUNT||"",baseUrl:t??process.env.OPENPOND_BASE_URL??null}):A(e.activeProfile);if(r){let s=o.find(c=>U(c,r));if(s)return s;let i=o.filter(c=>P(c.handle,r.handle));return i.length===1?i[0]??null:null}return o[0]?o[0]:null}a(Oe,"findActiveAccount");function xe(e){let n=Array.isArray(e.accounts)?e.accounts:[],t=A(e.activeProfile)??(n[0]?_(n[0]):null);return ae(n.map(o=>({handle:o.handle,baseUrl:l(o.baseUrl),apiBaseUrl:l(o.apiBaseUrl),chatApiBaseUrl:l(o.chatApiBaseUrl),environment:D(o.environment),isActive:t?U(o,t):!1,hasApiKey:!!o.apiKey?.trim(),hasSessionToken:!!(o.session?.token?.trim()||o.token?.trim()),sessionAppId:o.session?.appId??null,sessionConversationId:o.session?.conversationId??null})))}a(xe,"fallbackProfilesFromConfig");function ae(e){let n=new Map;for(let t of e){let o=l(t.baseUrl),r=`${t.handle.toLowerCase()}|${o??"default"}`,s={...t,baseUrl:o,apiBaseUrl:l(t.apiBaseUrl),chatApiBaseUrl:l(t.chatApiBaseUrl),environment:D(t.environment),isActive:t.isActive},i=n.get(r);(!i||s.isActive&&!i.isActive||s.hasApiKey&&!i.hasApiKey)&&n.set(r,s)}return Array.from(n.values())}a(ae,"normalizeProfiles");function be(e){return e.hasApiKey||e.hasSessionToken?"signed_in":"signed_out"}a(be,"profileAuthHealth");function $e(e,n){return e?{reachable:e.reachable,authenticated:e.authenticated,apiBase:e.apiBase||n,latencyMs:e.latencyMs,status:e.status,service:e.service,checkedAt:e.checkedAt,error:e.error??null}:null}a($e,"normalizeHealth");function Ue(e){let n=e?.account;return n?{id:n.id??null,email:n.email??null,name:n.name??null,handle:n.handle??null,image:n.image??null,timezone:n.timezone??null,isAdmin:n.isAdmin??null,isVerified:n.isVerified??null,dailyAgentAppId:n.dailyAgentAppId??null,dailyAgentDeploymentId:n.dailyAgentDeploymentId??null,credits:n.credits??null}:null}a(Ue,"normalizeProfile");function He(e){return(e??[]).map(n=>({...n,id:n.id||n.userProductId||n.openPondProductId||n.name,name:n.name,type:n.type,status:n.status,isActive:n.isActive??null,price:n.price??null,currency:n.currency??null,credits:n.credits??null}))}a(He,"normalizeProducts");function Me(e){return e.handle.trim().toLowerCase()==="default"&&!l(e.baseUrl)&&!e.hasApiKey&&!e.hasSessionToken}a(Me,"isEmptyDefaultProfile");function ze(e){let n=e?.trim();return n?n.length>=12?`\u2022\u2022\u2022\u2022\u2022\u2022${n.slice(-6)}`:"\u2022\u2022\u2022\u2022\u2022\u2022":null}a(ze,"apiKeyHint");function Fe(e){return e?.auth?.authType!=="openpond-api-key"||!e.auth.keyAccess?null:{ownerType:e.auth.keyAccess.ownerType,teamId:e.auth.keyAccess.teamId,scopes:e.auth.scopes}}a(Fe,"apiKeyAccess");function X(e){let{config:n,profiles:t,account:o,token:r,apiBaseUrl:s,accountResponse:i,accountProfiles:c,health:m,authFailed:g,error:f}=e,w=J(o,n,s),h=Ue(i??null),C=A(n.activeProfile),v=(o?_(o):null)??C,O=h?.handle||o?.handle||v?.handle||null,I=(v?t.find(d=>re(d,v)):null)??t.find(d=>d.isActive)??null,y=g?"auth_error":r?"signed_in":"signed_out",u=h?.name||h?.handle||h?.email||O||"Signed out",R=l(I?.baseUrl||o?.baseUrl||N),k=D(I?.environment||o?.environment),x=A(v)??(O?A({handle:O,baseUrl:I?.baseUrl??o?.baseUrl}):null),M=(t.length>0?t:O?[{handle:O,baseUrl:Q(x)??l(o?.baseUrl),apiBaseUrl:s,chatApiBaseUrl:w,environment:k,isActive:!0,hasApiKey:!!r,hasSessionToken:!1,sessionAppId:null,sessionConversationId:null}]:[]).filter(d=>!Me(d));return{state:y,activeProfile:x,label:u,email:h?.email??null,avatarUrl:h?.image??null,environment:k,baseUrl:R,apiBaseUrl:s,chatApiBaseUrl:w,creditsLabel:h?.credits??null,profile:h,products:He(i?.products),apiHealth:$e(m??null,s),accounts:M.map(d=>{let T=l(d.baseUrl),Re=n.accounts?.find(ue=>P(ue.handle,d.handle)&&b(ue.baseUrl,T)),ne=c?.[F(d.handle,T)]??null,z=Ue(ne?.response??null);return{handle:d.handle,baseUrl:T,apiBaseUrl:l(d.apiBaseUrl),chatApiBaseUrl:l(d.chatApiBaseUrl),environment:D(d.environment),isActive:x?re(d,x):!1,authHealth:ne?.authFailed?"auth_error":be(d),displayLabel:z?.name||z?.handle||z?.email||d.handle,email:z?.email??null,avatarUrl:z?.image??null,apiKeyHint:ze(Re?.apiKey),apiKeyAccess:Fe(ne?.response??null)}}),error:f??m?.error??null}}a(X,"toAccountState");async function je(e){try{return ae(await Ae())}catch{return xe(e)}}a(je,"loadProfiles");async function p(e,n){let t=await ye(),o=await je(t),r=Oe(t,e,n),s=Y(r),i=G(r,t),c=J(r,t,i);return{config:t,profiles:o,account:r,token:s,apiBaseUrl:i,chatApiBaseUrl:c,accountState:X({config:t,profiles:o,account:r,token:s,apiBaseUrl:i})}}a(p,"loadOpenPondAccountContext");async function Ke(e){let n=l(e.baseUrl);return await ge(e.handle,{baseUrl:n}),p(e.handle,n)}a(Ke,"switchOpenPondAccount");function $(e){return e instanceof Error?e.message:String(e)}a($,"errorMessage");var We=15e3;function Ve(e){return e===oe?"OpenPond Chat":e==="deepseek-v4-flash"?"DeepSeek V4 Flash":e.replace(/[-_/]+/g," ")}a(Ve,"displayNameForHostedModel");function Ge(e){let n=typeof e.id=="string"?e.id:null;return n?{id:n,displayName:Ve(n),ownedBy:typeof e.owned_by=="string"?e.owned_by:null,streaming:!0,raw:e}:null}a(Ge,"normalizeHostedModel");async function Je(){let e=await p();if(!e.token)return{models:[],error:"No OpenPond API key or session token is configured."};try{return{models:(await Xe({apiBaseUrl:e.chatApiBaseUrl,token:e.token})).data.map(o=>Ge(o)).filter(o=>!!o),error:null}}catch(n){return{models:[],error:$(n)}}}a(Je,"loadOpenPondHostedModels");async function Ye(){let e=await p();if(!e.token)return{catalog:null,error:"No OpenPond API key or session token is configured."};let n=new AbortController,t=setTimeout(()=>{n.abort(new Error("OpenPond provider catalog request timed out."))},We);try{return{catalog:await Ee({apiBaseUrl:e.chatApiBaseUrl,token:e.token,signal:n.signal}),error:null}}catch(o){return{catalog:null,error:$(o)}}finally{clearTimeout(t)}}a(Ye,"loadOpenPondProviderCatalog");async function*Qe(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account in Settings before using OpenPond Chat.");yield*ve({apiBaseUrl:n.chatApiBaseUrl,token:n.token,model:e.model||oe,messages:e.messages,tools:e.tools,toolChoice:e.toolChoice,requestId:e.requestId,reasoningEffort:e.reasoningEffort,maxTokens:e.maxTokens,temperature:e.temperature,topP:e.topP,signal:e.signal})}a(Qe,"streamOpenPondHostedChatTurn");async function Xe(e){let n=se(e.apiBaseUrl,"models"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat model list failed: ${t.status} ${await le(t)}`);return await t.json()}a(Xe,"listOpChatModels");async function Ee(e){let n=se(e.apiBaseUrl,"provider-catalog"),t=await fetch(n,{method:"GET",headers:ie(e.token,"application/json"),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat provider catalog failed: ${t.status} ${await le(t)}`);let o=await t.json();return!o||typeof o!="object"||!Array.isArray(o.providers)?te.parse(o):te.parse({...o,providers:o.providers.filter(r=>r!==null&&typeof r=="object"&&de.safeParse(r.id).success)})}a(Ee,"listOpChatProviderCatalog");async function*ve(e){let n=se(e.apiBaseUrl,"chat/completions"),t=await fetch(n,{method:"POST",headers:ie(e.token,"text/event-stream",e.requestId),body:JSON.stringify(rn(e,!0)),signal:e.signal});if(!t.ok)throw new Error(`OpenPond OpChat request failed: ${t.status} ${await le(t)}`);if(!t.body)throw new Error("OpenPond OpChat request failed: streaming response body is missing.");let o=new Map,r=!1,s=null,i={},c="",m=null,g=Ze(t.headers),f=t.body.getReader(),w=new TextDecoder,h="",C=[],ee=a(()=>{if(C.length===0)return[];let y=C.join(`
3
3
  `);if(C=[],y==="[DONE]")return r=!0,[];let u;try{u=JSON.parse(y)}catch{throw new Error("OpenPond OpChat request failed: malformed streaming event.")}if(u&&typeof u=="object"&&"error"in u)throw new Error(`OpenPond OpChat request failed: ${_e(u)}`);i=u;let R=u&&typeof u=="object"?u:{},k=Array.isArray(R.choices)?R.choices:[],x=k[0]&&typeof k[0]=="object"?k[0]:{},K=x.delta&&typeof x.delta=="object"?x.delta:{},M=[],d=Be(K.reasoning_content);d&&(c+=d,M.push({type:"reasoning_delta",text:d,raw:u}));let T=Be(K.content);return T&&M.push({type:"text_delta",text:T,raw:u}),tn(o,K.tool_calls),s=H(x.finish_reason)??s,m=ln(u)??m,M},"consumeEvent"),v=a(y=>{let u=y.endsWith("\r")?y.slice(0,-1):y;return u?u.startsWith(":")?[]:(u.startsWith("data:")&&C.push(u.slice(5).trimStart()),[]):ee()},"consumeLine");try{for(;;){let y=await f.read();if(y.done)break;h+=w.decode(y.value,{stream:!0});let u=h.split(`
4
4
  `);h=u.pop()??"";for(let R of u)for(let k of v(R))yield k}if(h+=w.decode(),h)for(let y of v(h))yield y;for(let y of ee())yield y}finally{f.releaseLock()}if(!r)throw new Error("OpenPond OpChat request failed: stream ended before [DONE].");let O=on(o);O.length>0&&(yield{type:"tool_call_delta",toolCalls:O,raw:i}),O.length>0&&c&&(yield{type:"continuation",continuation:{kind:"chat_completions_reasoning",reasoningContent:c},raw:i});let I=en(m,g);I&&(yield{type:"usage",usage:I,raw:i}),yield{type:"finish",finishReason:s,raw:i}}a(ve,"streamOpChatChatCompletion");function Ze(e){let n=ke(e,["fireworks-prompt-tokens","prompt-tokens"]),t=ke(e,["fireworks-cached-prompt-tokens","cached-prompt-tokens"]);return t===null?null:{...n===null?{}:{prompt_tokens:n},cached_input_tokens:t,cache_telemetry_source:"provider_response_headers"}}a(Ze,"cacheUsageFromResponseHeaders");function ke(e,n){for(let t of n){let o=e.get(t);if(o===null||!/^\d+$/.test(o.trim()))continue;let r=Number(o);if(Number.isSafeInteger(r)&&r>=0)return r}return null}a(ke,"firstHeaderTokenCount");function en(e,n){if(!n||nn(e))return e;let t={...e??{},cached_input_tokens:n.cached_input_tokens,cache_telemetry_source:"provider_response_headers"};return E(e?.prompt_tokens)===null&&n.prompt_tokens!==void 0&&(t.prompt_tokens=n.prompt_tokens),t}a(en,"usageWithResponseHeaderCache");function nn(e){return e?E(e.cached_input_tokens)!==null||E(e.cache_read_input_tokens)!==null||E(e.cache_creation_input_tokens)!==null||E(e.prompt_cache_hit_tokens)!==null||E(e.prompt_cache_miss_tokens)!==null?!0:E(e.prompt_tokens_details?.cached_tokens)!==null||E(e.input_tokens_details?.cached_tokens)!==null:!1}a(nn,"usageHasCacheTelemetry");function E(e){if(typeof e=="number"&&Number.isSafeInteger(e)&&e>=0)return e;if(typeof e!="string"||!/^\d+$/.test(e.trim()))return null;let n=Number(e);return Number.isSafeInteger(n)?n:null}a(E,"usageTokenCount");function tn(e,n){Array.isArray(n)&&n.forEach((t,o)=>{if(!t||typeof t!="object")return;let r=t,s=typeof r.index=="number"&&Number.isInteger(r.index)?r.index:o,i=e.get(s)??{arguments:""};typeof r.id=="string"&&(i.id=r.id);let c=r.function&&typeof r.function=="object"?r.function:{};typeof c.name=="string"&&(i.name=`${i.name??""}${c.name}`),typeof c.arguments=="string"&&(i.arguments+=c.arguments),e.set(s,i)})}a(tn,"mergeOpChatToolCallDeltas");function on(e){return[...e.entries()].sort(([n],[t])=>n-t).flatMap(([,n])=>n.id&&n.name?[{id:n.id,type:"function",function:{name:n.name,arguments:n.arguments}}]:[])}a(on,"completedOpChatToolCalls");function rn(e,n){let t={model:e.model,messages:e.messages.map(sn),stream:n};return e.tools&&(t.tools=e.tools),e.toolChoice!==void 0&&(t.tool_choice=e.toolChoice),typeof e.maxTokens=="number"&&(t.max_tokens=e.maxTokens),typeof e.temperature=="number"&&(t.temperature=e.temperature),typeof e.topP=="number"&&(t.top_p=e.topP),Object.assign(t,an(e.reasoningEffort)),t}a(rn,"buildOpChatBody");function an(e){return e?e==="off"?{thinking:{type:"disabled"}}:{thinking:{type:"enabled"},reasoning_effort:e}:{}}a(an,"opChatReasoningFields");function sn(e){let{continuation:n,images:t,...o}=e,r=t?.length?[...typeof e.content=="string"&&e.content.trim()?[{type:"text",text:e.content}]:[],...t.map(s=>({type:"image_url",image_url:{url:s.url,...s.detail?{detail:s.detail}:{}}}))]:e.content;return e.role==="assistant"&&n?.kind==="chat_completions_reasoning"?{...o,...r!==void 0?{content:r}:{},reasoning_content:n.reasoningContent}:{...o,...r!==void 0?{content:r}:{}}}a(sn,"opChatMessage");function se(e,n){let t=e.trim().replace(/\/+$/,"");if(!t)throw new Error("OpenPond OpChat API base URL is required.");return`${t}/${n}`}a(se,"opChatEndpointUrl");function ie(e,n,t){let o=e.trim();if(!o)throw new Error("OpenPond API key is required for OpChat.");let r=new Headers;r.set("Authorization",`Bearer ${o}`),r.set("Content-Type","application/json"),r.set("Accept",n),r.set("x-openpond-client","openpond-app");let s=t||qe();return r.set("x-openpond-request-id",s),r.set("x-request-id",s),r}a(ie,"opChatHeaders");async function le(e){let n=await e.text().catch(()=>"");if(!n)return e.statusText||`HTTP ${e.status}`;try{return _e(JSON.parse(n))}catch{return n}}a(le,"readOpChatError");function _e(e){if(!e||typeof e!="object")return String(e||"unknown_error");let n=e,t=n.error;if(t&&typeof t=="object"){let o=t;return[H(o.code),H(o.type),H(o.message)].filter(Boolean).join(": ")}return[H(n.error),H(n.message)].filter(Boolean).join(": ")||JSON.stringify(e)}a(_e,"errorMessageFromPayload");function ln(e){if(!e||typeof e!="object")return null;let n=e.usage;return!n||typeof n!="object"?null:n}a(ln,"parseUsage");function H(e){return typeof e=="string"&&e.trim()?e:null}a(H,"stringValue");function Be(e){return typeof e=="string"&&e.length>0?e:null}a(Be,"streamTextValue");import{readFileSync as cn}from"node:fs";var j;function un(){if(j!==void 0)return j??"openpond-code bundled";try{let e=new URL("../package.json",import.meta.resolve("openpond")),n=JSON.parse(cn(e,"utf8"));j=typeof n.version=="string"?`openpond-code@${n.version}`:null}catch{j=null}return j??"openpond-code bundled"}a(un,"getBundledRuntimeVersion");import{spawn as dn}from"node:child_process";function Se(e,n=process.platform){return n==="darwin"?{command:"open",args:[e]}:n==="win32"?{command:"rundll32.exe",args:["url.dll,FileProtocolHandler",e]}:{command:"xdg-open",args:[e]}}a(Se,"resolveSystemBrowserCommand");async function pn(e,n={}){let t=n.command??Se(e),o=n.handoffTimeoutMs??1500;return new Promise(r=>{let s=!1,i=null,c=a(g=>{s||(s=!0,i&&clearTimeout(i),r(g))},"finish"),m=dn(t.command,t.args,{detached:!1,shell:!1,stdio:"ignore",windowsHide:!0});m.once("error",g=>{let f=g.code;c({opened:!1,error:f?`browser launcher ${t.command} failed (${f})`:`browser launcher ${t.command} failed`})}),m.once("close",(g,f)=>{if(g===0){c({opened:!0});return}let w=f?`signal ${f}`:`code ${g??"unknown"}`;c({opened:!1,error:`browser launcher ${t.command} exited with ${w}`})}),i=setTimeout(()=>{m.unref(),c({opened:!0})},o),i.unref()})}a(pn,"openUrlWithSystemBrowser");function fn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t;if(!t||!o)return null;let r=n.latestDeployment&&typeof n.latestDeployment=="object"?n.latestDeployment:null,s=pe.safeParse(n.sandboxActionRegistry);return{id:t,name:o,description:typeof n.description=="string"?n.description:null,visibility:typeof n.visibility=="string"?n.visibility:null,gitOwner:typeof n.gitOwner=="string"?n.gitOwner:null,gitRepo:typeof n.gitRepo=="string"?n.gitRepo:null,gitHost:typeof n.gitHost=="string"?n.gitHost:null,defaultBranch:typeof n.defaultBranch=="string"?n.defaultBranch:null,sandbox:n.sandbox===!0,sandboxActionRegistry:s.success?s.data:null,sandboxManifestHash:typeof n.sandboxManifestHash=="string"?n.sandboxManifestHash:null,sandboxManifestPath:typeof n.sandboxManifestPath=="string"?n.sandboxManifestPath:null,sandboxManifestSyncedAt:typeof n.sandboxManifestSyncedAt=="string"?n.sandboxManifestSyncedAt:n.sandboxManifestSyncedAt instanceof Date?n.sandboxManifestSyncedAt.toISOString():null,sandboxManifestError:typeof n.sandboxManifestError=="string"?n.sandboxManifestError:null,updatedAt:typeof n.updatedAt=="string"?n.updatedAt:null,latestDeployment:r?{id:typeof r.id=="string"?r.id:void 0,status:typeof r.status=="string"?r.status:void 0,deploymentDomain:typeof r.deploymentDomain=="string"?r.deploymentDomain:null,createdAt:typeof r.createdAt=="string"?r.createdAt:void 0,isProduction:typeof r.isProduction=="boolean"?r.isProduction:null,gitBranch:typeof r.gitBranch=="string"?r.gitBranch:null}:null,scheduleSummary:hn(n.scheduleSummary)}}a(fn,"normalizeApp");function S(e){return typeof e=="string"?e:e instanceof Date?e.toISOString():null}a(S,"normalizeDateString");function mn(e){if(!e||typeof e!="object")return null;let n=e,t=typeof n.id=="string"?n.id:null,o=typeof n.name=="string"?n.name:t,r=typeof n.deploymentId=="string"?n.deploymentId:null;return!t||!o||!r?null:{id:t,name:o,description:typeof n.description=="string"?n.description:null,scheduleType:typeof n.scheduleType=="string"?n.scheduleType:"cron",scheduleExpression:typeof n.scheduleExpression=="string"?n.scheduleExpression:"",enabled:!!n.enabled,rawEnabled:typeof n.rawEnabled=="boolean"?n.rawEnabled:void 0,syncStatus:typeof n.syncStatus=="string"?n.syncStatus:null,syncError:typeof n.syncError=="string"?n.syncError:null,startAt:S(n.startAt),endAt:S(n.endAt),maxRuns:typeof n.maxRuns=="number"?n.maxRuns:null,executionCount:typeof n.executionCount=="number"?n.executionCount:null,lifecycleStatus:typeof n.lifecycleStatus=="string"?n.lifecycleStatus:null,lifecycleReason:typeof n.lifecycleReason=="string"?n.lifecycleReason:null,lastExecutionAt:S(n.lastExecutionAt),lastExecutionStatus:typeof n.lastExecutionStatus=="string"?n.lastExecutionStatus:null,lastRunNowAt:S(n.lastRunNowAt),lastRunNowStatus:typeof n.lastRunNowStatus=="string"?n.lastRunNowStatus:null,updatedAt:S(n.updatedAt)??new Date().toISOString(),deploymentId:r,isProduction:typeof n.isProduction=="boolean"?n.isProduction:void 0,payload:n.payload}}a(mn,"normalizeSchedule");function hn(e){if(!e||typeof e!="object")return null;let n=e,t=Array.isArray(n.schedules)?n.schedules.map(mn).filter(i=>!!i):[],o=typeof n.total=="number"?n.total:t.length,r=typeof n.active=="number"?n.active:t.filter(i=>i.enabled).length,s=typeof n.paused=="number"?n.paused:Math.max(0,o-r);return{total:o,active:r,paused:s,enabled:typeof n.enabled=="number"?n.enabled:r,disabled:typeof n.disabled=="number"?n.disabled:s,nextRunAt:S(n.nextRunAt),lastRunAt:S(n.lastRunAt),schedules:t,truncated:typeof n.truncated=="boolean"?n.truncated:void 0}}a(hn,"normalizeScheduleSummary");async function yn(e){let n=Array.isArray(e.config.accounts)?e.config.accounts:[],t=await Promise.all(n.map(async o=>{let r=F(o.handle,o.baseUrl),s=Y(o);if(!s)return[r,{response:null,authFailed:!1,error:null}];try{return[r,{response:await q(G(o,e.config),s),authFailed:!1,error:null}]}catch(i){return[r,{response:null,authFailed:!0,error:$(i)}]}}));return Object.fromEntries(t)}a(yn,"loadAccountProfileLookups");async function Ce(e){let n=await yn(e),t=e.account?n[F(e.account.handle,e.account.baseUrl)]??null:null,o=t?.response??null,r=e.token&&t?.authFailed?t.error||"OpenPond account authentication failed.":null;return{account:X({...e,accountResponse:o,accountProfiles:n,authFailed:!!r,error:r})}}a(Ce,"loadOpenPondAccountStateForContext");async function An(){return Ce(await p())}a(An,"loadOpenPondAccountState");async function Ie(e={}){let n=await p(),t=Ce(n);if(!n.token)return{...await t,apps:[],error:"No OpenPond API key or session token is configured."};let[o,r]=await Promise.allSettled([t,fe(n.apiBaseUrl,n.token,{handle:n.account?.handle,limit:e.limit??20,offset:e.offset??0,includeScheduled:e.includeScheduled??!0})]);if(o.status==="rejected")throw o.reason;return{account:o.value.account,apps:r.status==="fulfilled"?r.value.map(fn).filter(s=>!!s):[],error:r.status==="rejected"?$(r.reason):null}}a(Ie,"loadOpenPondApps");async function gn(e){let n=await p();if(!n.token)throw new Error("No OpenPond API key or session token is configured.");return{account:n,response:await me(n.apiBaseUrl,n.token,e)}}a(gn,"createOpenPondRepoApp");import{createHash as Pn}from"node:crypto";function wn(e){return`account-${Pn("sha256").update(e).digest("hex").slice(0,8)}`}a(wn,"fallbackHandleForApiKey");function Z(e){let n=e?.trim();return n?n.replace(/^@/,""):null}a(Z,"normalizeDerivedHandle");async function On(e,n){let t=Z(e.handle);if(t)return t;try{let r=(await q(n,e.apiKey)).account,s=Z(r.handle)??Z(r.email?.split("@")[0])??Z(r.id);if(s)return s}catch{}return wn(e.apiKey)}a(On,"deriveHandleForApiKey");async function xn(e){let n=e.baseUrl??N,t=l(e.apiBaseUrl)??V(n)??B,o=l(e.chatApiBaseUrl),r=await On(e,t);return await Pe({handle:r,apiKey:e.apiKey,baseUrl:n,apiBaseUrl:t,chatApiBaseUrl:o,environment:e.environment??"production",setActive:e.setActive}),p(r,n)}a(xn,"saveOpenPondAccount");function bn(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its base URL.`);return-1}a(bn,"findAccountIndex");async function Un(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");return await L(t=>{let o=(t.accounts??[]).map(m=>({...m})),r=bn(o,n,e.baseUrl);if(r===-1)throw new Error(`OpenPond account not found: ${n}`);let s=o[r],i=A(t.activeProfile),c=!!(i&&U(s,i));o.splice(r,1),t.accounts=o,(c||!i||!o.some(m=>U(m,i)))&&(o[0]?t.activeProfile=_(o[0]):delete t.activeProfile)}),p()}a(Un,"removeOpenPondAccount");async function kn(){let e;return await L(n=>{let t=A(n.activeProfile),o=(n.accounts??[]).map(s=>({...s})),r=t?o.findIndex(s=>U(s,t)):0;if(r<0||!o[r])throw new Error("No active OpenPond account to log out.");e={...o[r]},delete e.apiKey,delete e.session,o[r]=e,n.accounts=o}),p(e.handle,e.baseUrl)}a(kn,"signOutOpenPondAccount");function Bn(e,n,t){let o=l(t),r=e.findIndex(i=>P(i.handle,n)&&b(i.baseUrl,o));if(r!==-1)return r;let s=e.map((i,c)=>({account:i,index:c})).filter(({account:i})=>P(i.handle,n));if(s.length===1)return s[0].index;if(s.length>1)throw new Error(`Multiple OpenPond accounts match ${n}; select one with its current base URL.`);return-1}a(Bn,"findAccountIndex");function ce(e,n,t){if(t===void 0)return;let o=l(t);if(o){e[n]=o;return}(t===null||t.trim()==="")&&delete e[n]}a(ce,"applyOptionalUrl");async function En(e){let n=e.handle.trim();if(!n)throw new Error("OpenPond account handle is required.");let t;return await L(o=>{let r=(o.accounts??[]).map(f=>({...f})),s=Bn(r,n,e.currentBaseUrl);if(s===-1)throw new Error(`OpenPond account not found: ${n}`);let i=r[s];if(t={...i},e.apiKey!==void 0){let f=e.apiKey.trim();if(!f)throw new Error("OpenPond API key cannot be empty.");t.apiKey=f,delete t.session,delete t.token}if(ce(t,"baseUrl",e.baseUrl),ce(t,"apiBaseUrl",e.apiBaseUrl),ce(t,"chatApiBaseUrl",e.chatApiBaseUrl),e.environment===null?delete t.environment:typeof e.environment=="string"&&e.environment.trim()&&(t.environment=e.environment.trim()),r.findIndex((f,w)=>w!==s&&P(f.handle,t.handle)&&b(f.baseUrl,t.baseUrl))!==-1)throw new Error("Another OpenPond account already uses that handle and base URL.");let m=A(o.activeProfile),g=!!(m&&U(i,m));r[s]=t,o.accounts=r,o.activeProfile=e.setActive||g?_(t):o.activeProfile}),p(t.handle,t.baseUrl)}a(En,"updateOpenPondAccountConfig");async function vn(e){let n=await p();if(!n.token)throw new Error("OpenPond is signed out. Add an account before reading app config.");return he(n.apiBaseUrl,n.token,e.appId)}a(vn,"getOpenPondAppEnvironment");function _n(e,n){let t="",o=a(r=>{r.startsWith(e)&&n(JSON.parse(r.slice(e.length)))},"processLine");return{push(r){for(t+=r;;){let s=Sn(t);if(s<0)return;let i=t.slice(0,s).replace(/\r$/,""),c=t[s]==="\r"&&t[s+1]===`
5
5
  `?2:1;t=t.slice(s+c),o(i)}},flush(){let r=t.trimEnd();t="",r&&o(r)}}}a(_n,"createReadyLineParser");function Sn(e){let n=e.indexOf(`
@@ -1,2 +1,2 @@
1
1
  import { createRequire as __openpondCreateRequire } from "node:module"; var require = __openpondCreateRequire(import.meta.url);
2
- import{W as H,X as y,Y as C,_ as E,aa as S,ba as P,ca as j,ea as I}from"./chunk-HK3WGUKK.js";import{D as h,F as v,G as l,L as w,N as b}from"./chunk-5ZZM3TUN.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as f}from"./chunk-FTQLQJQV.js";var a=e.string().min(1).max(240),d=e.string().regex(/^[a-f0-9]{64}$/),g=e.string().regex(/^[a-f0-9]{40}$/),x=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateExport.v1"),actorId:a,teamId:a,candidateId:a,candidateRevision:e.number().int().positive(),projectId:a.nullable(),profileRef:e.object({source:e.literal("openpond_git"),repositoryId:a,profileId:a}).strict(),expectedCommit:g,component:y.shape.component,baseRelease:h,frozenHash:d,executableSourceHash:d,protectedClosureHash:d,compiler:e.object({workspaceId:a,name:e.string().max(500),repositoryId:a}).strict(),sourceManifest:e.object({base64:e.string().max(28e5),contentHash:d,sizeBytes:e.number().int().positive().max(2e6)}).strict(),policySource:w,qualification:e.object({kind:e.enum(["owner_attested_local","hosted_execution"]),ownerActorId:a,teamId:a,originalEvidence:h,baseline:h,candidate:h,comparisonHash:d,recipe:H}).strict(),createdAt:e.string().datetime(),contentHash:d}).strict();function J(n){let o=x.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId||o.qualification.recipe.externalDatasetBinding.profileId!==o.profileRef.profileId||o.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==o.protectedClosureHash)throw new Error("Hosted candidate owner attestation identity differs.");return b(o.policySource),o}f(J,"verifyHostedProfileCandidateExport");var O=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateAdoption.v1"),id:a,operationId:a,actorId:a,teamId:a,candidateId:a,exportHash:d,executionOrigin:e.enum(["owner_attested_local","hosted_execution"]),qualification:x.shape.qualification,testedCandidateRelease:h,activeRelease:h,expectedCommit:g,committedProfileGit:g,executableSourceHash:d,protectedClosureHash:d,createdAt:e.string().datetime(),contentHash:d}).strict();function R(n){let o=O.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.executionOrigin!==o.qualification.kind||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId)throw new Error("Hosted candidate receipt integrity differs.");return o}f(R,"verifyHostedProfileCandidateReceipt");var T=e.discriminatedUnion("operation",[e.object({operation:e.literal("adopt"),operationId:a,export:x}).strict(),e.object({operation:e.enum(["read","rollback"]),operationId:a,adoptionOperationId:a,profileRepositoryId:a}).strict()]),K=class{static{f(this,"ExperimentImprovementClient")}constructor(n){this.options=n;let o=new URL(n.baseUrl);if(!["http:","https:"].includes(o.protocol)||o.username||o.password||o.hash||o.search||!n.apiKey.trim()||!n.teamId.trim()||!n.actorId.trim())throw new Error("Select the authenticated Improve owner and API origin.");this.origin=o.toString().replace(/\/+$/,"")}options;origin;async hostedCandidate(n,o){let t=T.parse(n);if(t.operation==="adopt"&&(t.export.actorId!==this.options.actorId||t.export.teamId!==this.options.teamId))throw new Error("The hosted candidate export belongs to a different owner.");let{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:t}),signal:o},(m,u,r)=>Object.assign(new Error(r),{status:m,code:u}));if(!c.ok){let m=e.object({code:e.string(),message:e.string().optional(),error:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(m.success?m.data.message??m.data.error??m.data.code:"Hosted candidate operation failed."),{status:c.status,code:m.success?m.data.code:void 0})}let i=R(p);if(i.actorId!==this.options.actorId||i.teamId!==this.options.teamId||i.operationId!==t.operationId||t.operation==="adopt"&&(i.exportHash!==t.export.contentHash||i.candidateId!==t.export.candidateId||i.testedCandidateRelease.contentHash!==t.export.policySource.harnessRelease.contentHash))throw new Error("Hosted candidate readback differs from the exact owner request.");return i}async command(n,o){let t=S.parse(n),{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request:t}),signal:o},(r,s,q)=>Object.assign(new Error(q),{status:r,code:s}));if(!c.ok){let r=e.object({error:e.string(),code:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(r.success?r.data.error:"The Improve operation failed."),{status:c.status,code:r.success?r.data.code:void 0})}if(t.operation==="options"){let r=P.parse(p);if(r.teamId!==this.options.teamId||l(r.evidence)!==l(t.evidence))throw new Error("The Improve choices changed their exact originating evidence.");return r}if(t.operation==="humanComparisonOptions"){let r=j(p);if(r.candidateId!==t.id||r.actorId!==this.options.actorId||r.teamId!==this.options.teamId)throw new Error("Human discovery belongs to another owner or candidate.");return r}if(t.operation==="instructions"){let r=e.object({candidateId:e.string(),candidateRevision:e.number().int().positive(),path:e.string(),text:e.string().max(25e4),textHash:e.string().regex(/^[a-f0-9]{64}$/),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(p);if(r.candidateId!==t.id||v(r.text)!==r.textHash)throw new Error("The candidate instructions belong to a different revision.");return r}let i=t.operation==="list"?E.parse(p):null;if(t.operation==="list"&&i&&(i.states.length>t.limit||i.states.some((r,s)=>t.cursor&&r.id<=t.cursor||s>0&&r.id<=i.states[s-1].id)||i.nextCursor&&(t.cursor&&i.nextCursor<=t.cursor||i.states.some(r=>r.id>i.nextCursor))))throw new Error("The retained candidate page changed its scan boundary.");let u=(i?i.states:[p]).map(r=>{let s=C(r);if(s.actorId!==this.options.actorId||s.teamId!==this.options.teamId||"id"in t&&s.id!==t.id)throw new Error("The Improve response belongs to a different owner or candidate.");if(t.operation==="start"&&s.requestHash!==l(t.request))throw new Error("The Improve request identity changed.");return s});return i?{states:u,nextCursor:i.nextCursor}:u[0]}};export{J as a,K as b};
2
+ import{W as H,X as y,Y as C,_ as E,aa as S,ba as P,ca as j,ea as I}from"./chunk-IKWDL3RB.js";import{D as h,F as v,G as l,L as w,N as b}from"./chunk-QRWPEW3Z.js";import{b as e}from"./chunk-ES2ISFJC.js";import{a as f}from"./chunk-FTQLQJQV.js";var a=e.string().min(1).max(240),d=e.string().regex(/^[a-f0-9]{64}$/),g=e.string().regex(/^[a-f0-9]{40}$/),x=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateExport.v1"),actorId:a,teamId:a,candidateId:a,candidateRevision:e.number().int().positive(),projectId:a.nullable(),profileRef:e.object({source:e.literal("openpond_git"),repositoryId:a,profileId:a}).strict(),expectedCommit:g,component:y.shape.component,baseRelease:h,frozenHash:d,executableSourceHash:d,protectedClosureHash:d,compiler:e.object({workspaceId:a,name:e.string().max(500),repositoryId:a}).strict(),sourceManifest:e.object({base64:e.string().max(28e5),contentHash:d,sizeBytes:e.number().int().positive().max(2e6)}).strict(),policySource:w,qualification:e.object({kind:e.enum(["owner_attested_local","hosted_execution"]),ownerActorId:a,teamId:a,originalEvidence:h,baseline:h,candidate:h,comparisonHash:d,recipe:H}).strict(),createdAt:e.string().datetime(),contentHash:d}).strict();function J(n){let o=x.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId||o.qualification.recipe.externalDatasetBinding.profileId!==o.profileRef.profileId||o.qualification.recipe.externalDatasetBinding.protectedProfileClosureHash!==o.protectedClosureHash)throw new Error("Hosted candidate owner attestation identity differs.");return b(o.policySource),o}f(J,"verifyHostedProfileCandidateExport");var O=e.object({schemaVersion:e.literal("openpond.hostedProfileCandidateAdoption.v1"),id:a,operationId:a,actorId:a,teamId:a,candidateId:a,exportHash:d,executionOrigin:e.enum(["owner_attested_local","hosted_execution"]),qualification:x.shape.qualification,testedCandidateRelease:h,activeRelease:h,expectedCommit:g,committedProfileGit:g,executableSourceHash:d,protectedClosureHash:d,createdAt:e.string().datetime(),contentHash:d}).strict();function R(n){let o=O.parse(n),{contentHash:t,...c}=o;if(l(c)!==t||o.executionOrigin!==o.qualification.kind||o.qualification.ownerActorId!==o.actorId||o.qualification.teamId!==o.teamId)throw new Error("Hosted candidate receipt integrity differs.");return o}f(R,"verifyHostedProfileCandidateReceipt");var T=e.discriminatedUnion("operation",[e.object({operation:e.literal("adopt"),operationId:a,export:x}).strict(),e.object({operation:e.enum(["read","rollback"]),operationId:a,adoptionOperationId:a,profileRepositoryId:a}).strict()]),K=class{static{f(this,"ExperimentImprovementClient")}constructor(n){this.options=n;let o=new URL(n.baseUrl);if(!["http:","https:"].includes(o.protocol)||o.username||o.password||o.hash||o.search||!n.apiKey.trim()||!n.teamId.trim()||!n.actorId.trim())throw new Error("Select the authenticated Improve owner and API origin.");this.origin=o.toString().replace(/\/+$/,"")}options;origin;async hostedCandidate(n,o){let t=T.parse(n);if(t.operation==="adopt"&&(t.export.actorId!==this.options.actorId||t.export.teamId!==this.options.teamId))throw new Error("The hosted candidate export belongs to a different owner.");let{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/profile-candidate-adoptions`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,command:t}),signal:o},(m,u,r)=>Object.assign(new Error(r),{status:m,code:u}));if(!c.ok){let m=e.object({code:e.string(),message:e.string().optional(),error:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(m.success?m.data.message??m.data.error??m.data.code:"Hosted candidate operation failed."),{status:c.status,code:m.success?m.data.code:void 0})}let i=R(p);if(i.actorId!==this.options.actorId||i.teamId!==this.options.teamId||i.operationId!==t.operationId||t.operation==="adopt"&&(i.exportHash!==t.export.contentHash||i.candidateId!==t.export.candidateId||i.testedCandidateRelease.contentHash!==t.export.policySource.harnessRelease.contentHash))throw new Error("Hosted candidate readback differs from the exact owner request.");return i}async command(n,o){let t=S.parse(n),{response:c,value:p}=await I(this.options.fetch??fetch,`${this.origin}/v1/experiment-improvements`,{method:"POST",redirect:"error",headers:{Authorization:`Bearer ${this.options.apiKey}`,"Content-Type":"application/json","X-OpenPond-Team-Id":this.options.teamId},body:JSON.stringify({teamId:this.options.teamId,request:t}),signal:o},(r,s,q)=>Object.assign(new Error(q),{status:r,code:s}));if(!c.ok){let r=e.object({error:e.string(),code:e.string().optional()}).passthrough().safeParse(p);throw Object.assign(new Error(r.success?r.data.error:"The Improve operation failed."),{status:c.status,code:r.success?r.data.code:void 0})}if(t.operation==="options"){let r=P.parse(p);if(r.teamId!==this.options.teamId||l(r.evidence)!==l(t.evidence))throw new Error("The Improve choices changed their exact originating evidence.");return r}if(t.operation==="humanComparisonOptions"){let r=j(p);if(r.candidateId!==t.id||r.actorId!==this.options.actorId||r.teamId!==this.options.teamId)throw new Error("Human discovery belongs to another owner or candidate.");return r}if(t.operation==="instructions"){let r=e.object({candidateId:e.string(),candidateRevision:e.number().int().positive(),path:e.string(),text:e.string().max(25e4),textHash:e.string().regex(/^[a-f0-9]{64}$/),contentHash:e.string().regex(/^[a-f0-9]{64}$/)}).strict().parse(p);if(r.candidateId!==t.id||v(r.text)!==r.textHash)throw new Error("The candidate instructions belong to a different revision.");return r}let i=t.operation==="list"?E.parse(p):null;if(t.operation==="list"&&i&&(i.states.length>t.limit||i.states.some((r,s)=>t.cursor&&r.id<=t.cursor||s>0&&r.id<=i.states[s-1].id)||i.nextCursor&&(t.cursor&&i.nextCursor<=t.cursor||i.states.some(r=>r.id>i.nextCursor))))throw new Error("The retained candidate page changed its scan boundary.");let u=(i?i.states:[p]).map(r=>{let s=C(r);if(s.actorId!==this.options.actorId||s.teamId!==this.options.teamId||"id"in t&&s.id!==t.id)throw new Error("The Improve response belongs to a different owner or candidate.");if(t.operation==="start"&&s.requestHash!==l(t.request))throw new Error("The Improve request identity changed.");return s});return i?{states:u,nextCursor:i.nextCursor}:u[0]}};export{J as a,K as b};