sliccy 6.256.18 → 6.256.19

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 (153) hide show
  1. package/dist/ui/.vite/manifest.json +260 -260
  2. package/dist/ui/assets/{account-store-BzvHM2hU.js → account-store-C6um0YPW.js} +1 -1
  3. package/dist/ui/assets/{account-store-BHc5rtOw.js → account-store-DcnsleVv.js} +1 -1
  4. package/dist/ui/assets/{adobe-BncT9Q-P.js → adobe-6KkN_nv7.js} +1 -1
  5. package/dist/ui/assets/{adobe-B1tsRh6s.js → adobe-B0jHeR5S.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-RGCFTdQ6.js → agent-panels-DfgA8R43.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-DfA5Ap_1.js → almost-bash-shell-headless-C1Lf_MMS.js} +12 -12
  8. package/dist/ui/assets/{apply-layout-DquTlpjf.js → apply-layout-BGPfdSzk.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-7LNhQIPs.js → azure-openai-DmUVAG9L.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-DWSL1jW0.js → azure-openai-pWuMNG9M.js} +1 -1
  11. package/dist/ui/assets/{cdp-WO6MhUPx.js → cdp-CPSnzyRg.js} +3 -3
  12. package/dist/ui/assets/{cerebras-BO9yJPw3.js → cerebras-DFjBDkkf.js} +1 -1
  13. package/dist/ui/assets/{cerebras-DmGzyLYM.js → cerebras-orfSjH9T.js} +1 -1
  14. package/dist/ui/assets/{composer-speech-a-azq4-g.js → composer-speech-Cn9-Zzn2.js} +1 -1
  15. package/dist/ui/assets/{connect-surface-DjqA3QjM.js → connect-surface-D43D0p7K.js} +1 -1
  16. package/dist/ui/assets/{directed-approval-DRotHELU.js → directed-approval-DIP9tGOu.js} +1 -1
  17. package/dist/ui/assets/{emscripten-vfs-hook-BUvyRQlK.js → emscripten-vfs-hook-C_Yq_WAI.js} +1 -1
  18. package/dist/ui/assets/{export-spool-BuyO8FjL.js → export-spool-RoQF-YEe.js} +1 -1
  19. package/dist/ui/assets/{exporter-deps-CGJ026ro.js → exporter-deps-HQU2E9rW.js} +2 -2
  20. package/dist/ui/assets/frozen-archive-format-7wcOWvsT.js +2 -0
  21. package/dist/ui/assets/frozen-archive-writer-YCOD1fqb.js +8 -0
  22. package/dist/ui/assets/frozen-archive-writer-d8c53vzV.js +8 -0
  23. package/dist/ui/assets/{frozen-session-delete-C1yoMyb1.js → frozen-session-delete-WoQUijRl.js} +1 -1
  24. package/dist/ui/assets/{frozen-session-identity-DDiK8YKe.js → frozen-session-identity-CUJ3SGDV.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-identity-aLal2Qr5.js → frozen-session-identity-D__hHRHh.js} +1 -1
  26. package/dist/ui/assets/{gelatiere-unit-B0ewnmDN.js → gelatiere-unit-VC-Z6skV.js} +1 -1
  27. package/dist/ui/assets/{github-DoYZZwQf.js → github-BfwYBNdU.js} +1 -1
  28. package/dist/ui/assets/{github-BiaOWcrq.js → github-DjiuepHp.js} +1 -1
  29. package/dist/ui/assets/{github-copilot-DfcWJYNs.js → github-copilot-Ca3wvuMg.js} +1 -1
  30. package/dist/ui/assets/{github-copilot-CMgWyf7v.js → github-copilot-DKRsbcNT.js} +1 -1
  31. package/dist/ui/assets/{hear-DfRRZf-I.js → hear-CtfVj6JL.js} +1 -1
  32. package/dist/ui/assets/{hidden-page-input-OJcQIzB7.js → hidden-page-input-BZYPq1Fs.js} +1 -1
  33. package/dist/ui/assets/{hidden-page-input-B6EVA2Ko.js → hidden-page-input-Cp9ZPgBA.js} +1 -1
  34. package/dist/ui/assets/{js-realm-worker-BL8Fbpcw.js → js-realm-worker-D-YXyqDf.js} +2 -2
  35. package/dist/ui/assets/{jsh-executor-VmbBf-f3.js → jsh-executor-jaafnGEI.js} +3 -3
  36. package/dist/ui/assets/{kernel-worker-Dt9hDwn2.js → kernel-worker-DjefE-EG.js} +10 -10
  37. package/dist/ui/assets/{lick-ws-bridge-COp-7MAV.js → lick-ws-bridge-B5njq5fs.js} +1 -1
  38. package/dist/ui/assets/{lick-ws-bridge-DllJSdQF.js → lick-ws-bridge-jXOA4Jgg.js} +1 -1
  39. package/dist/ui/assets/{live-session-curation-B_PQTT4w.js → live-session-curation-B60pJiw_.js} +3 -3
  40. package/dist/ui/assets/{live-session-curation-BR9TUfsm.js → live-session-curation-BOrs0Nrl.js} +1 -1
  41. package/dist/ui/assets/live-session-snapshot-CApqdYaI.js +1 -0
  42. package/dist/ui/assets/{local-llm-BD5Id2dD.js → local-llm-4CuArCpN.js} +1 -1
  43. package/dist/ui/assets/{local-llm-BaVoosk9.js → local-llm-DuQTThDU.js} +1 -1
  44. package/dist/ui/assets/{main-CUlZbhkv.js → main-CILyCK1y.js} +3 -3
  45. package/dist/ui/assets/{main-cherry-CBXXSX0W.js → main-cherry-sJDvZx8w.js} +1 -1
  46. package/dist/ui/assets/{mcp-command-BTi69M97.js → mcp-command-WDwETVym.js} +10 -10
  47. package/dist/ui/assets/{memory-curation-seam-B99BaTZW.js → memory-curation-seam-_oeOmhzw.js} +1 -1
  48. package/dist/ui/assets/{memory-health-DKNQgzJb.js → memory-health-CCaMzT62.js} +1 -1
  49. package/dist/ui/assets/{memory-write-execute-OFjlRF1Q.js → memory-write-execute-89twFcQB.js} +1 -1
  50. package/dist/ui/assets/{merge-folded-cost-into-frozen-BJEahBak.js → merge-folded-cost-into-frozen-CD1e6CBw.js} +1 -1
  51. package/dist/ui/assets/{migration-BOJr1Ymq.js → migration-Bt7p5ngd.js} +1 -1
  52. package/dist/ui/assets/{new-session-C2CUN9CK.js → new-session-cSLBXZij.js} +2 -2
  53. package/dist/ui/assets/{oauth-bootstrap-kQV-ApxQ.js → oauth-bootstrap-qSJjQ69F.js} +2 -2
  54. package/dist/ui/assets/{onboarding-orchestrator-Qmi8eC_W.js → onboarding-orchestrator-yGWsMH61.js} +1 -1
  55. package/dist/ui/assets/{openai-codex-BsOQFwDF.js → openai-codex-BPLGHM-7.js} +1 -1
  56. package/dist/ui/assets/{openai-codex-CDKs8rfm.js → openai-codex-DAPUF3Ax.js} +1 -1
  57. package/dist/ui/assets/{openrouter-DaE-AR4d.js → openrouter-CNqcHmRl.js} +1 -1
  58. package/dist/ui/assets/{openrouter-BMRywMxP.js → openrouter-ChH5y4Zo.js} +1 -1
  59. package/dist/ui/assets/{openrouter-free-CJqeqy0w.js → openrouter-free-CFHWyXL_.js} +1 -1
  60. package/dist/ui/assets/{openrouter-free-D4_D193L.js → openrouter-free-mc_qudih.js} +1 -1
  61. package/dist/ui/assets/{openrouter-oauth-DQ2BZQ76.js → openrouter-oauth-CLTSbif9.js} +1 -1
  62. package/dist/ui/assets/{openrouter-oauth-VaLilPlU.js → openrouter-oauth-NGLIwflJ.js} +1 -1
  63. package/dist/ui/assets/{panel-rpc-handlers-DppQp5Ht.js → panel-rpc-handlers-CjLaorQm.js} +2 -2
  64. package/dist/ui/assets/{panelize-shell-CWnFj3HZ.js → panelize-shell-DCsOioRV.js} +1 -1
  65. package/dist/ui/assets/{pi-edit-execution-BX6jyKrY.js → pi-edit-execution-jBe0mTu2.js} +1 -1
  66. package/dist/ui/assets/{profile-directory-opfs-CZ7nD8u6.js → profile-directory-opfs-D7CMD9vG.js} +1 -1
  67. package/dist/ui/assets/{profile-export-bQ_PILZN.js → profile-export-CtsEeuL-.js} +2 -2
  68. package/dist/ui/assets/{profile-export-deps-COkLr54M.js → profile-export-deps-BE2w_fD3.js} +2 -2
  69. package/dist/ui/assets/{provider-DLFgcLvq.js → provider-Bq7cXY3H.js} +1 -1
  70. package/dist/ui/assets/{provider-CtZqLIDr.js → provider-D3Z0skyh.js} +1 -1
  71. package/dist/ui/assets/{provider-settings-CCOdU49C.js → provider-settings-cjhn5KhF.js} +1 -1
  72. package/dist/ui/assets/provider-store-access-BSyBmQnI.js +1 -0
  73. package/dist/ui/assets/provider-store-access-D34ptiy1.js +1 -0
  74. package/dist/ui/assets/{providers-BMg5lDBT.js → providers-CfB5UcQV.js} +1 -1
  75. package/dist/ui/assets/{providers-DgvjtRKn.js → providers-e7J6vyrs.js} +2 -2
  76. package/dist/ui/assets/{quick-llm-DKtELPDd.js → quick-llm-CX_4Q5lE.js} +1 -1
  77. package/dist/ui/assets/{realm-inprocess-Bg12y3AZ.js → realm-inprocess-DZqfbNHT.js} +2 -2
  78. package/dist/ui/assets/{realm-unhandled-rejections-D-NqnRBD.js → realm-unhandled-rejections-B4YL4Sx4.js} +1 -1
  79. package/dist/ui/assets/{realm-unhandled-rejections-DfSVIehf.js → realm-unhandled-rejections-BCUDtOFo.js} +1 -1
  80. package/dist/ui/assets/{remote-terminal-view-BeCVkonN.js → remote-terminal-view-YhJBG0oW.js} +2 -2
  81. package/dist/ui/assets/{restore-BY2xPKRI.js → restore-DKs4fX03.js} +1 -1
  82. package/dist/ui/assets/{run-CmO7OEqP.js → run-BbcAize7.js} +1 -1
  83. package/dist/ui/assets/{run-UGPfXsQp.js → run-BoUgBqtP.js} +2 -2
  84. package/dist/ui/assets/{run-Dj2TQibJ.js → run-Dyr1Y8Gw.js} +1 -1
  85. package/dist/ui/assets/{run-Cq5gNOGb.js → run-w8dc5QkU.js} +2 -2
  86. package/dist/ui/assets/{serve-command-Sz15Iqdt.js → serve-command-Cl0KR3JB.js} +2 -2
  87. package/dist/ui/assets/{serve-runtime-B92_QFyG.js → serve-runtime-CnjIF1Qc.js} +1 -1
  88. package/dist/ui/assets/{session-command-memory-DLiyeHi2.js → session-command-memory-Cl4cgsuB.js} +2 -2
  89. package/dist/ui/assets/{session-jsonl-Dz8_tTX3.js → session-jsonl-C3VP4h4F.js} +1 -1
  90. package/dist/ui/assets/{session-jsonl-B-bZJP2W.js → session-jsonl-CJO46TfW.js} +2 -2
  91. package/dist/ui/assets/{session-search-index-H7LQwxpq.js → session-search-index-DNLNj8Hz.js} +2 -2
  92. package/dist/ui/assets/{sessions-Cfs-Phmc.js → sessions-Bd6uu3F5.js} +1 -1
  93. package/dist/ui/assets/{setup-feature-flags-remote-COW4xMXU.js → setup-feature-flags-remote-CgfNoeec.js} +1 -1
  94. package/dist/ui/assets/{setup-model-catalog-BCBX3dQm.js → setup-model-catalog-Do44T24D.js} +1 -1
  95. package/dist/ui/assets/{silent-renew-backoff-CdEigXOa.js → silent-renew-backoff-BP12WS2t.js} +1 -1
  96. package/dist/ui/assets/slicc-version-DD-uf2ZA.js +1 -0
  97. package/dist/ui/assets/{snapshot-store-ZBIKeDuF.js → snapshot-store-DYh_oG7o.js} +2 -2
  98. package/dist/ui/assets/{soundscape-CucFrAG4.js → soundscape-OIr6kREC.js} +1 -1
  99. package/dist/ui/assets/{speak-Byxy1cxH.js → speak-BTTfyNsH.js} +1 -1
  100. package/dist/ui/assets/{sprinkle-manager-BPr0HtXO.js → sprinkle-manager-B04EiPct.js} +1 -1
  101. package/dist/ui/assets/{sprinkle-renderer-DtfJeCjW.js → sprinkle-renderer-B6BBPYnt.js} +1 -1
  102. package/dist/ui/assets/{sudo-D5G8nAEP.js → sudo-DRDS7os7.js} +1 -1
  103. package/dist/ui/assets/{supervisor-CTgcfVsj.js → supervisor-CK12CrVB.js} +1 -1
  104. package/dist/ui/assets/{sync-dialog-tK_oLsa2.js → sync-dialog-CMveyHTI.js} +1 -1
  105. package/dist/ui/assets/{transformers-env-BpD8zkhr.js → transformers-env-C0UUrX43.js} +1 -1
  106. package/dist/ui/assets/{tray-leader-C-vtUGeZ.js → tray-leader-B2jd_9hN.js} +1 -1
  107. package/dist/ui/assets/{tray-leave-runtime-ylegDAag.js → tray-leave-runtime-YA1z3_3n.js} +1 -1
  108. package/dist/ui/assets/{tray-sidecar-DketrSoJ.js → tray-sidecar-B1E5w2QN.js} +1 -1
  109. package/dist/ui/assets/{upgrade-detection-B1bWQLUI.js → upgrade-detection-DIEpI4jV.js} +1 -1
  110. package/dist/ui/assets/{upgrade-to-seven-2JzqV_NN.js → upgrade-to-seven-Ds3487bW.js} +2 -2
  111. package/dist/ui/assets/{voice-reply-BeDf1Eoj.js → voice-reply-BvNFV1p5.js} +1 -1
  112. package/dist/ui/assets/{wc-attach-DPK8qMs8.js → wc-attach-B9NheUcP.js} +2 -2
  113. package/dist/ui/assets/{wc-browser-DwGHDJpw.js → wc-browser-BWV_z0mY.js} +1 -1
  114. package/dist/ui/assets/{wc-computers-NV0xqorT.js → wc-computers-CmlAWXad.js} +1 -1
  115. package/dist/ui/assets/{wc-detached-XW9hDJWT.js → wc-detached-BG6o5rCV.js} +1 -1
  116. package/dist/ui/assets/{wc-extension-CA0Rye1M.js → wc-extension-BJG351m1.js} +2 -2
  117. package/dist/ui/assets/{wc-follower-CNSqPxwu.js → wc-follower-DK_cGVb6.js} +3 -3
  118. package/dist/ui/assets/{wc-follower-oauth-C12JevMz.js → wc-follower-oauth-Ct4vRPWy.js} +1 -1
  119. package/dist/ui/assets/{wc-gelatiere-D8_ICozF.js → wc-gelatiere-B7_JxWTc.js} +1 -1
  120. package/dist/ui/assets/wc-live-B_GjMlHU.js +248 -0
  121. package/dist/ui/assets/{wc-nav-pgC7lZ_e.js → wc-nav-BPC_rTRU.js} +2 -2
  122. package/dist/ui/assets/{wc-onboarding-B3z1VJVL.js → wc-onboarding-DZ9IecMC.js} +2 -2
  123. package/dist/ui/assets/{wc-permissions-C6ZO7GSp.js → wc-permissions-jiHmGCQE.js} +2 -2
  124. package/dist/ui/assets/{wc-placeholder-a79RdN0c.js → wc-placeholder-Bw3f1tx2.js} +2 -2
  125. package/dist/ui/assets/{wc-profile-export-3j3r-PvX.js → wc-profile-export-Dw3kIggm.js} +3 -3
  126. package/dist/ui/assets/{wc-secret-request-Dr_WBSy1.js → wc-secret-request-DhhFoxwM.js} +1 -1
  127. package/dist/ui/assets/{wc-settings-DIK5qTe6.js → wc-settings-CFVy_frk.js} +3 -3
  128. package/dist/ui/assets/{wc-shell-CtD6cEOB.js → wc-shell-uXXL8vn4.js} +3 -3
  129. package/dist/ui/assets/{wc-shortcut-config-DfWdIWZh.js → wc-shortcut-config-BsECYqW4.js} +1 -1
  130. package/dist/ui/assets/{wc-sprinkles-BbzZAziH.js → wc-sprinkles-LDObPLGU.js} +2 -2
  131. package/dist/ui/assets/{wc-transcript-export-Bsci1Ikg.js → wc-transcript-export-DCxRhw7L.js} +2 -2
  132. package/dist/ui/assets/{wc-tray-F3DuOIkg.js → wc-tray-DC2N41c4.js} +4 -4
  133. package/dist/ui/assets/{wc-unit-context-Cr0NbO_Y.js → wc-unit-context-DDyqslj4.js} +1 -1
  134. package/dist/ui/assets/welcome-detection-BA_e93OR.js +1 -0
  135. package/dist/ui/assets/{whisper-session-CJOEMXH-.js → whisper-session-VTvwtmt9.js} +2 -2
  136. package/dist/ui/assets/{xai-grok-DLaW__ye.js → xai-grok-BySWrekq.js} +1 -1
  137. package/dist/ui/assets/{xai-grok-B5ygwp6f.js → xai-grok-CAYOQXy2.js} +1 -1
  138. package/dist/ui/assets/zip-stream-DZF8sKOl.js +2 -0
  139. package/dist/ui/index.html +3 -3
  140. package/dist/ui/packages/webapp/index.html +3 -3
  141. package/dist/ui/packages/webapp/upgrade-to-seven.html +3 -3
  142. package/dist/ui/upgrade-to-seven.html +3 -3
  143. package/package.json +1 -1
  144. package/dist/ui/assets/frozen-archive-format-kVMmNEWf.js +0 -1
  145. package/dist/ui/assets/frozen-archive-writer-CzcOQ52P.js +0 -8
  146. package/dist/ui/assets/frozen-archive-writer-xPoeaUZf.js +0 -8
  147. package/dist/ui/assets/live-session-snapshot-DETIeXKF.js +0 -1
  148. package/dist/ui/assets/provider-store-access-BOyP-rro.js +0 -1
  149. package/dist/ui/assets/provider-store-access-CKv-_pwN.js +0 -1
  150. package/dist/ui/assets/slicc-version-D8dfmSwi.js +0 -1
  151. package/dist/ui/assets/wc-live-BGghnVEZ.js +0 -248
  152. package/dist/ui/assets/welcome-detection-C-OEkh_4.js +0 -1
  153. package/dist/ui/assets/zip-stream-CTG4_nCE.js +0 -1
@@ -1,5 +1,5 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/hidden-page-input-B6EVA2Ko.js","assets/logger-dqckiMJt.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./logger-dqckiMJt.js";import{t}from"./preload-helper-BLdHbfdN.js";import"./navigation-watcher-f6QKlJrS.js";import"./wc-follower-oauth-C12JevMz.js";import{c as n,o as r,s as i}from"./main-CUlZbhkv.js";import{n as a,t as o}from"./pending-request-table-k-D7ZZsL.js";var s=class extends Error{name=`HiddenPageWheelError`;constructor(){super(`The tab is hidden (or could not be checked) and focus emulation is not available, so Chrome would not answer a wheel event`)}};function c(e,t){return e===`Input.dispatchMouseEvent`?t?.type===`mouseMoved`?`move`:t?.type===`mouseWheel`?`wheel`:null:null}function l(e,t,n,r){return`(() => {
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/hidden-page-input-Cp9ZPgBA.js","assets/logger-dqckiMJt.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./logger-dqckiMJt.js";import{t}from"./preload-helper-BLdHbfdN.js";import"./navigation-watcher-f6QKlJrS.js";import"./wc-follower-oauth-Ct4vRPWy.js";import{c as n,o as r,s as i}from"./main-CILyCK1y.js";import{n as a,t as o}from"./pending-request-table-k-D7ZZsL.js";var s=class extends Error{name=`HiddenPageWheelError`;constructor(){super(`The tab is hidden (or could not be checked) and focus emulation is not available, so Chrome would not answer a wheel event`)}};function c(e,t){return e===`Input.dispatchMouseEvent`?t?.type===`mouseMoved`?`move`:t?.type===`mouseWheel`?`wheel`:null:null}function l(e,t,n,r){return`(() => {
3
3
  const dx = ${JSON.stringify(n)}, dy = ${JSON.stringify(r)};
4
4
  const canScroll = (el) => {
5
5
  const style = getComputedStyle(el);
@@ -965,4 +965,4 @@ import{t as e}from"./logger-dqckiMJt.js";import{t}from"./preload-helper-BLdHbfdN
965
965
  this.scrollIntoView({ block: 'center', inline: 'center' });
966
966
  const r = this.getBoundingClientRect();
967
967
  return { x: r.x, y: r.y, width: r.width, height: r.height };
968
- }`,returnByValue:!0})).result?.value}async resolveNodeCenter(e){let t=await this.resolveNodeObjectId(e),n=await this.nodeBox(t);if(!n||n.width===0||n.height===0)throw Error(`Element with backend node ${e} has no dimensions`);return{x:n.x+n.width/2,y:n.y+n.height/2}}async boundingBox(e){await this.send(`DOM.enable`);let t=(await this.send(`DOM.getDocument`,{depth:0})).root.nodeId,n;try{n=(await this.send(`DOM.querySelector`,{nodeId:t,selector:e})).nodeId}catch{return null}if(!n)return null;let r=(await this.send(`DOM.getBoxModel`,{nodeId:n})).model;if(!r)return null;let i=r.content;return{x:i[0],y:i[1],width:r.width,height:r.height}}};function I(e,t){if(t.push({frameId:e.frame.id,parentFrameId:e.frame.parentId,url:e.frame.url,name:e.frame.name??``,securityOrigin:e.frame.securityOrigin}),Array.isArray(e.childFrames))for(let n of e.childFrames)I(n,t)}function L(e){let t=e.exceptionDetails;return t?t.exception?.description??t.text:null}function R(e,t){let n=L(e);if(n!==null)throw Error(`${t}: ${n}`);return e.result?.value}function z(e){let t=e instanceof Error?e.message:String(e);return t.includes(`Cannot find context with specified id`)||t.includes(`Execution context was destroyed`)}function B(e){let t={role:O(e.role,`unknown`),name:O(e.name)},n=O(e.value);n!==``&&(t.value=n);let r=O(e.description);return r!==``&&(t.description=r),typeof e.ref==`string`&&/^e[0-9]+$/.test(e.ref)&&(t.ref=e.ref),typeof e.refSeq==`number`&&Number.isSafeInteger(e.refSeq)&&(t.refSeq=e.refSeq),Array.isArray(e.children)&&e.children.length>0&&(t.children=e.children.map(e=>B(e)).filter(e=>e.role!==`unknown`)),t}function V(e){let t=e??{queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0};return{queueDepth:t.queueDepth,totalWaitMs:t.tabWaitMs+t.bridgeWaitMs,tabWaitMs:t.tabWaitMs,bridgeWaitMs:t.bridgeWaitMs,acquisitions:t.acquisitions}}var H=class{tabLocks=new Map;bridgeLock=Promise.resolve();bridgeHold=null;bridgeWaiters=0;tabLockStats=new Map;getStats(e){if(e!==void 0)return V(this.tabLockStats.get(e));let t={queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0};for(let e of this.tabLockStats.values())t.queueDepth+=e.queueDepth,t.tabWaitMs+=e.tabWaitMs,t.bridgeWaitMs+=e.bridgeWaitMs,t.acquisitions+=e.acquisitions;return V(t)}countersFor(e){let t=this.tabLockStats.get(e);return t||(t={queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0},this.tabLockStats.set(e,t)),t}liveOwner(){return this.bridgeHold?.owner}reentrantOwner(e){let t=this.bridgeHold;if(t&&e!==null&&t.targetId===e)return t.owner}async holdTabLock(e,t,n){g(t,`starting a command on tab ${e}`);let r=this.countersFor(e);r.queueDepth+=1;let i;try{i=await this.acquireTabLock(e,r,t)}catch(e){throw--r.queueDepth,e}try{return await n(r)}finally{--r.queueDepth,i()}}async acquireTabLock(e,t,n){let r,i=new Promise(e=>{r=e}),a=this.tabLocks.get(e);this.tabLocks.set(e,i);let o=()=>{this.tabLocks.get(e)===i&&this.tabLocks.delete(e),r()};if(a!=null){let r=Date.now();try{await y(a,n,`queued for the lock on tab ${e}`)}catch(e){throw t.tabWaitMs+=Date.now()-r,a.then(o,o),e}t.tabWaitMs+=Date.now()-r}return o}async acquireBridgeLock(e){if(e?.owner!==void 0&&this.bridgeHold?.owner===e.owner)return()=>void 0;let t,n=new Promise(e=>{t=e}),r=this.bridgeLock,i=this.bridgeHold!==null||this.bridgeWaiters>0;if(this.bridgeLock=n,i){this.bridgeWaiters+=1;let t=Date.now();try{await r}finally{--this.bridgeWaiters}e?.counters&&(e.counters.bridgeWaitMs+=Date.now()-t)}let a={release:t,owner:Symbol(`bridge-hold`),targetId:e?.targetId??null};this.bridgeHold=a;let o=!1;return()=>{o||(o=!0,this.bridgeHold===a&&(this.bridgeHold=null),t())}}async runGlobal(e,t){let n=await this.acquireBridgeLock({owner:this.reentrantOwner(e),targetId:e});try{return await t()}finally{n()}}},U=class{overrides=new Map;get(e){return this.overrides.get(e)}set(e,t){this.overrides.set(e,t)}delete(e){this.overrides.delete(e)}has(e){return this.overrides.has(e)}get size(){return this.overrides.size}},W=e(`browser-api`),G=[`Session with given id not found`,`Target closed`,`No session with given id`,`No tab attached for sessionId`],K=class extends Error{};function q(e){let t=e instanceof Error?e.message:String(e);return G.some(e=>t.includes(e))}var J=class{inner;onApplied;route;onStateChange;constructor(e,t,n){this.inner=e,this.onApplied=t,this.route=n,e.onStateChange&&(this.onStateChange=t=>e.onStateChange(t))}get state(){return this.inner.state}get superseded(){return this.inner.superseded}get isExtensionBridge(){return this.inner.isExtensionBridge}connect(e){return this.inner.connect(e)}disconnect(){this.inner.disconnect()}async send(e,t,n,r){let i=await this.route(this.inner,e,t,n,()=>this.forward(e,t,n,r));return n&&this.onApplied(n),i}forward(e,t,n,r){return r===void 0?this.inner.send(e,t,n):this.inner.send(e,t,n,r)}on(e,t){this.inner.on(e,t)}off(e,t){this.inner.off(e,t)}once(e,t){return this.inner.once(e,t)}},oe=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;frames=new b;sessions=new ne(32,(e,t)=>{W.debug(`Evicting least-recently-used CDP session`,{targetId:e}),this.detachSession(e,t)});_listenedTransports=new Set;_sessionReplacedSubs=new Map;locks=new H;viewports=new U;hiddenPages=null;hiddenPagesLoad=null;hiddenPagePins=new Map;facadeSessions=new Map;connection=new m;_onSessionChange;handleJavaScriptDialogOpening=e=>{this.dismissJavaScriptDialog(e)};async dismissJavaScriptDialog(e){let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.transportForSession(t).send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),W.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){W.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}}handleExecutionContextCreated=e=>{let t=this.eventSessionId(e);if(!t)return;let n=e.context,r=n?.auxData?.frameId;n?.auxData?.isDefault===!0&&r&&typeof n.id==`number`&&this.frames.for(t,`main`).set(r,n.id)};handleExecutionContextDestroyed=e=>{let t=this.eventSessionId(e);if(!t)return;let n=e.executionContextId;if(typeof n!=`number`)return;let r=this.frames.peek(t,`main`);if(r)for(let[e,t]of r)t===n&&r.delete(e)};handleExecutionContextsCleared=e=>{let t=this.eventSessionId(e);t&&this.frames.peek(t,`main`)?.clear()};eventSessionId(e){let t=e.sessionId;return typeof t==`string`?t:this.sessionId}handleDetachedFromTarget=e=>{let t=e.sessionId;if(typeof t!=`string`)return;this.hiddenPages?.forgetSession(t),this.facadeSessions.delete(t);let n=this.sessions.findBySessionId(t);n&&this.forgetSession(n[0],n[1])};handleTargetDestroyed=e=>{let t=e.targetId;if(typeof t!=`string`)return;let n=this.sessions.findByTargetOrLocalId(t)[0];n&&this.forgetSession(n[0],n[1])};constructor(e){this.client=e??new f,this.localClient=this.client,this.addTransportListeners(this.client)}getTransport(){return this.accountedTransportFor(this.client)}getUnderlyingTransport(){return this.client}_accountedTransports=new WeakMap;accountedTransportFor(e){if(e instanceof J)return e;let t=this._accountedTransports.get(e);return t||(t=new J(e,e=>this.noteApplied(e),(e,t,n,r,i)=>this.routeSend(e,t,n,r,i)),this._accountedTransports.set(e,t)),t}noteApplied(e){this.sessions.noteApplied(e)}createHarRecorder(e,t){return new S(t,e)}setSessionChangeCallback(e){this._onSessionChange=e}onSessionReplaced(e,t){let n=this._sessionReplacedSubs.get(e);return n||(n=new Set,this._sessionReplacedSubs.set(e,n)),n.add(t),()=>{let n=this._sessionReplacedSubs.get(e);n&&(n.delete(t),n.size===0&&this._sessionReplacedSubs.delete(e))}}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t,n){let r=n?.signal;return this.locks.holdTabLock(e,r,async n=>{let i=this.sessions.pin(e);try{return n.acquisitions+=1,await this.runOnTab(e,t,r)}finally{i()}})}async runOnTab(e,t,n){try{return await this.attemptOnTab(e,t,n)}catch(r){if(r instanceof K||!q(r))throw r;return W.warn(`Stale CDP session — re-attaching and retrying once`,{targetId:e,error:r instanceof Error?r.message:String(r)}),this.invalidateSession(e),await this.attemptOnTab(e,t,n)}}async attemptOnTab(e,t,n){let r=await this.attachHandle(e,this.locks.reentrantOwner(e),n);g(n,`about to run a command on tab ${e}`);let i=r.sessionId,a=this.sessions.appliedCount(i);this.hiddenPagePins.set(e,(this.hiddenPagePins.get(e)??0)+1);try{return await t(r)}catch(t){if(!q(t))throw t;let n=this.sessions.appliedCount(i)-a;if(n===0)throw t;this.invalidateSession(e);let r=t instanceof Error?t.message:String(t);throw W.warn(`CDP session reset mid-command — not replaying`,{targetId:e,applied:n,reason:r}),new K(`The CDP session for tab ${e} was reset mid-command, after ${n} command(s) had already been applied, so the outcome is unknown. The tab has been re-armed: check the page state before repeating this command. (underlying error: ${r})`)}finally{await this.unpinHiddenPage(e)}}async unpinHiddenPage(e){let t=(this.hiddenPagePins.get(e)??1)-1;if(t>0){this.hiddenPagePins.set(e,t);return}this.hiddenPagePins.delete(e),await this.hiddenPages?.unpinned(e)}async routeSend(e,t,n,r,i){if(t===`Target.attachToTarget`){let e=await i(),t=e.sessionId,r=n?.targetId;return typeof t==`string`&&typeof r==`string`&&this.facadeSessions.set(t,r),e}if(r===void 0||t!==`Emulation.setFocusEmulationEnabled`&&c(t,n)===null)return i();let a=this.hiddenPages??await this.loadHiddenPages();return a?a.route(e,t,n,r,i):i()}loadHiddenPages(){return this.hiddenPagesLoad??=t(async()=>{let{HiddenPageInput:e}=await import(`./hidden-page-input-B6EVA2Ko.js`);return{HiddenPageInput:e}},__vite__mapDeps([0,1])).then(({HiddenPageInput:e})=>(this.hiddenPages=new e({targetOf:e=>this.sessions.findBySessionId(e)?.[0]??this.facadeSessions.get(e),pinned:e=>this.hiddenPagePins.has(e),isGone:q}),this.hiddenPages),e=>(W.warn(`Hidden-page input gate failed to load; pointer input goes out as is`,{error:e instanceof Error?e.message:String(e)}),this.hiddenPagesLoad=null,null)),this.hiddenPagesLoad}async attachHandle(e,t,n){let r=await this.attachToPageOwned(e,t,n),i=this.sessions.get(e);return new F(this,e,r,this.accountedTransportFor(i?.transport??this.client),n)}handleFor(e,t){return new F(this,e,t.sessionId,this.accountedTransportFor(t.transport))}getTabLockStats(e){return this.locks.getStats(e)}async runGlobal(e,t){return this.locks.runGlobal(e,t)}viewportOverride(e){return this.viewports.get(e)}recordViewportOverride(e,t){this.viewports.set(e,t)}frameContexts(e,t){return this.frames.for(e,t)}dropFrameContexts(e){this.frames.drop(e)}async reapplyViewportOverride(e,t){let n=this.viewports.get(e);if(n)try{await this.handleFor(e,t).applyViewportOverride(n)}catch(t){W.warn(`Failed to re-apply viewport override on re-attach`,{targetId:e,error:t instanceof Error?t.message:String(t)})}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:e.kind,capabilities:e.capabilities}));return[...e,...r]}async connect(e){await this.connection.connect(this.client,e)}async reconnectIfNeeded(){await this.ensureConnected(),this.client!==this.localClient&&await this.ensureLocalConnected()}primeConnectOptions(e){this.connection.primeConnectOptions(e)}setCdpSupersededHandler(e){this.connection.setSupersededHandler(e)}setCdpBridgeRejectedHandler(e){this.connection.setBridgeRejectedHandler(e)}setCdpConnectFailureClassifier(e){this.connection.setConnectFailureClassifier(e)}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async openWindow(e,t={}){await this.ensureConnected(),await this.ensureLocalConnected(),Z(t);let n=t.focus!==!1,r={url:e||`about:blank`,newWindow:!0,background:!n};t.decorated===!1&&(r.decorated=!1);let i=t.state;i&&i!==`normal`?r.windowState=i:(t.width!==void 0&&(r.width=t.width),t.height!==void 0&&(r.height=t.height),t.left!==void 0&&(r.left=t.left),t.top!==void 0&&(r.top=t.top),i&&(r.windowState=i));let a=(await this.localClient.send(`Target.createTarget`,r)).targetId;if(typeof a!=`string`||!a)throw Error(`Target.createTarget did not return a usable targetId`);return a}async getWindowBounds(e){await this.ensureConnected();let t=Q((await(await this.transportForWindowOps(e)).send(`Browser.getWindowForTarget`,{targetId:X(e)})).bounds),n=await this.readDevicePixelRatio(e);return{...t,dpr:n}}async setWindowBounds(e,t){await this.ensureConnected(),Z(t);let n=await this.transportForWindowOps(e),r=X(e),i=await n.send(`Browser.getWindowForTarget`,{targetId:r}),a=i.windowId;if(typeof a!=`number`)throw Error(`Browser.getWindowForTarget did not return a windowId`);let o=Q(i.bounds),s=t.state;(t.left!==void 0||t.top!==void 0||t.width!==void 0||t.height!==void 0)&&o.state!==`normal`&&await n.send(`Browser.setWindowBounds`,{windowId:a,bounds:{windowState:`normal`}});let c={};s&&s!==`normal`?c.windowState=s:(t.left!==void 0&&(c.left=t.left),t.top!==void 0&&(c.top=t.top),t.width!==void 0&&(c.width=t.width),t.height!==void 0&&(c.height=t.height),s&&(c.windowState=s)),await n.send(`Browser.setWindowBounds`,{windowId:a,bounds:c});let l=Q((await n.send(`Browser.getWindowBounds`,{windowId:a})).bounds),u=await this.readDevicePixelRatio(e);return{...l,dpr:u}}async readDevicePixelRatio(e){try{let t=await this.withTab(e,e=>e.evaluate(`window.devicePixelRatio`,{awaitPromise:!1,returnByValue:!0}));return typeof t==`number`&&Number.isFinite(t)&&t>0?t:1}catch{return 1}}async transportForWindowOps(e){if(this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);return this.trayTargetProvider.createRemoteTransport(n,r)}return await this.ensureLocalConnected(),this.localClient}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.viewports.delete(e),await this.dropSession(e),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let e=this.trayTargetProvider.createRemoteTransport(n,r);try{await e.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}return}}await this.localClient.send(`Target.closeTarget`,{targetId:e})}disconnect(){this.clearSessions(),this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){return this.attachToPageOwned(e,this.locks.reentrantOwner(e))}async attachToPageOwned(e,t,n){let r=await this.locks.acquireBridgeLock({owner:t,targetId:e,counters:this.locks.countersFor(e)});try{await this.ensureConnected();let t=this.sessions.get(e);return t?(this.activateSession(e,t),t.sessionId):await(this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)?this.attachRemoteTarget(e,n):this.attachLocalTarget(e,n))}finally{r()}}async selectTab(e){await this.withTab(e,async()=>void 0)}async bringTabToFront(e){await this.withTab(e,e=>e.bringToFront())}async attachRemoteTarget(e,t){let n=e.indexOf(`:`),r=e.substring(0,n),i=e.substring(n+1),a=this.trayTargetProvider?.createRemoteTransport?.(r,i);if(!a)throw Error(`No remote transport for target ${e}`);g(t,`about to attach to tray tab ${e}`);let o={sessionId:(await a.send(`Target.attachToTarget`,{targetId:i,flatten:!0})).sessionId,transport:a,remote:{runtimeId:r,localTargetId:i}};return this.rememberSession(e,o),this.activateSession(e,o),g(t,`about to enable Page on tray tab ${e}`),await a.send(`Page.enable`,{},o.sessionId),g(t,`about to restore the viewport of tray tab ${e}`),await this.reapplyViewportOverride(e,o),this.notifySessionChange(e,o),o.sessionId}async attachLocalTarget(e,t){this.useLocalTransport(),await this.ensureLocalConnected(),g(t,`about to attach to tab ${e}`);let n={sessionId:(await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0})).sessionId,transport:this.localClient};return this.rememberSession(e,n),this.activateSession(e,n),g(t,`about to enable Page on tab ${e}`),await this.localClient.send(`Page.enable`,{},n.sessionId),g(t,`about to restore the viewport of tab ${e}`),await this.reapplyViewportOverride(e,n),this.notifySessionChange(e,n),n.sessionId}async detach(){let e=this.attachedTargetId;e&&(await this.dropSession(e),this.useLocalTransport())}async wakeCapture(e,t){let n=await this.locks.acquireBridgeLock({owner:this.locks.reentrantOwner(e.targetId),targetId:e.targetId});try{return await this.wakeCaptureLocked(e,t,this.locks.liveOwner())}finally{n()}}async wakeCaptureLocked(e,t,n){let r=e.targetId,i=await this.findFocusedLocalPage(r,n).catch(()=>null),a=await this.attachHandle(r,n);try{return await a.send(`Page.bringToFront`),await a.send(`Page.captureScreenshot`,t)}finally{if(i)try{await(await this.attachHandle(i,n)).send(`Page.bringToFront`),await this.attachToPageOwned(r,n)}catch{}}}async findFocusedLocalPage(e,t){let n=await this.listPages();for(let r of n)if(r.targetId&&r.targetId!==e&&!r.targetId.includes(`:`))try{if(await(await this.attachHandle(r.targetId,t)).evaluate(`document.hasFocus()`)===!0)return r.targetId}catch{}return null}async ensureLocalConnected(){await this.connection.ensureLocalConnected(this.localClient)}async ensureConnected(){await this.connection.ensureConnected({client:this.client,restoreLocalAfterRemoteDrop:()=>{this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null)},clearSessionsForTransport:e=>this.clearSessionsForTransport(e),getClient:()=>this.client})}transportForSession(e){return this.sessions.findBySessionId(e)?.[1].transport??this.client}addTransportListeners(e){this._listenedTransports.has(e)||(this._listenedTransports.add(e),e.on(`Page.javascriptDialogOpening`,this.handleJavaScriptDialogOpening),e.on(`Runtime.executionContextCreated`,this.handleExecutionContextCreated),e.on(`Runtime.executionContextDestroyed`,this.handleExecutionContextDestroyed),e.on(`Runtime.executionContextsCleared`,this.handleExecutionContextsCleared),e.on(`Target.detachedFromTarget`,this.handleDetachedFromTarget),e.on(`Target.targetDestroyed`,this.handleTargetDestroyed))}releaseLifecycleTransport(e){e!==this.localClient&&this._listenedTransports.has(e)&&(this.sessions.anyOnTransport(e)||(this._listenedTransports.delete(e),e.off(`Page.javascriptDialogOpening`,this.handleJavaScriptDialogOpening),e.off(`Runtime.executionContextCreated`,this.handleExecutionContextCreated),e.off(`Runtime.executionContextDestroyed`,this.handleExecutionContextDestroyed),e.off(`Runtime.executionContextsCleared`,this.handleExecutionContextsCleared),e.off(`Target.detachedFromTarget`,this.handleDetachedFromTarget),e.off(`Target.targetDestroyed`,this.handleTargetDestroyed)))}setClient(e){this.addTransportListeners(e),this.client=e}useLocalTransport(){let e=this.remoteTargetInfo;this.remoteTargetInfo=null,this.setClient(this.localClient),e&&(this.sessions.anyMatchingRemote(e.runtimeId,e.localTargetId)||this.trayTargetProvider?.removeRemoteTransport?.(e.runtimeId,e.localTargetId))}rememberSession(e,t){this.addTransportListeners(t.transport),this.sessions.remember(e,t)}activateSession(e,t){t.remote?(this.setClient(t.transport),this.remoteTargetInfo={...t.remote}):this.client!==t.transport&&this.useLocalTransport(),this.sessionId=t.sessionId,this.attachedTargetId=e,this.sessions.touch(e,t)}notifySessionChange(e,t){let n=this.accountedTransportFor(t.transport);this._onSessionChange?.(t.sessionId,n,e);let r=this._sessionReplacedSubs.get(e);if(r)for(let i of[...r])try{i(t.sessionId,n,e)}catch(t){W.warn(`session-replaced subscriber threw`,{targetId:e,error:t instanceof Error?t.message:String(t)})}}forgetSession(e,t){this.unregisterSession(e),this.disposeSessionTransport(t)}unregisterSession(e){let t=this.sessions.get(e);t&&this.dropFrameContexts(t.sessionId),this.sessions.delete(e),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disposeSessionTransport(e){this.releaseLifecycleTransport(e.transport),e.remote&&(this.sessions.anyMatchingRemote(e.remote.runtimeId,e.remote.localTargetId)||this.trayTargetProvider?.removeRemoteTransport?.(e.remote.runtimeId,e.remote.localTargetId))}async detachSession(e,t){this.unregisterSession(e);try{await t.transport.send(`Target.detachFromTarget`,{sessionId:t.sessionId})}catch{}finally{this.disposeSessionTransport(t)}}async dropSession(e){let t=this.sessions.get(e);if(!t){this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null);return}await this.detachSession(e,t)}invalidateSession(e){let t=this.sessions.get(e);t&&this.forgetSession(e,t)}clearSessionsForTransport(e){for(let[t,n]of this.sessions.snapshot())n.transport===e&&this.forgetSession(t,n)}clearSessions(){for(let[e,t]of this.sessions.snapshot())this.forgetSession(e,t);this.sessions.clear(),this.sessionId=null,this.attachedTargetId=null}},Y=new Set([`normal`,`minimized`,`maximized`,`fullscreen`]);function X(e){let t=e.indexOf(`:`);return t>=0?e.substring(t+1):e}function Z(e){let t=e.state;if(t&&t!==`normal`){if(!Y.has(t))throw Error(`window state must be one of ${[...Y].join(`|`)} (got ${JSON.stringify(t)})`);if(e.left!==void 0||e.top!==void 0||e.width!==void 0||e.height!==void 0)throw Error(`window state '${t}' cannot be combined with left/top/width/height (chrome.windows + CDP both reject the mix)`)}}function se(e){return typeof e==`object`&&!!e}function Q(e){let t=se(e)?e:{},n=t.windowState??t.state,r=typeof n==`string`&&Y.has(n)?n:`normal`;return{left:$(t.left,0),top:$(t.top,0),width:$(t.width,0),height:$(t.height,0),state:r}}function $(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}export{oe as BrowserAPI,c as n,s as t};
968
+ }`,returnByValue:!0})).result?.value}async resolveNodeCenter(e){let t=await this.resolveNodeObjectId(e),n=await this.nodeBox(t);if(!n||n.width===0||n.height===0)throw Error(`Element with backend node ${e} has no dimensions`);return{x:n.x+n.width/2,y:n.y+n.height/2}}async boundingBox(e){await this.send(`DOM.enable`);let t=(await this.send(`DOM.getDocument`,{depth:0})).root.nodeId,n;try{n=(await this.send(`DOM.querySelector`,{nodeId:t,selector:e})).nodeId}catch{return null}if(!n)return null;let r=(await this.send(`DOM.getBoxModel`,{nodeId:n})).model;if(!r)return null;let i=r.content;return{x:i[0],y:i[1],width:r.width,height:r.height}}};function I(e,t){if(t.push({frameId:e.frame.id,parentFrameId:e.frame.parentId,url:e.frame.url,name:e.frame.name??``,securityOrigin:e.frame.securityOrigin}),Array.isArray(e.childFrames))for(let n of e.childFrames)I(n,t)}function L(e){let t=e.exceptionDetails;return t?t.exception?.description??t.text:null}function R(e,t){let n=L(e);if(n!==null)throw Error(`${t}: ${n}`);return e.result?.value}function z(e){let t=e instanceof Error?e.message:String(e);return t.includes(`Cannot find context with specified id`)||t.includes(`Execution context was destroyed`)}function B(e){let t={role:O(e.role,`unknown`),name:O(e.name)},n=O(e.value);n!==``&&(t.value=n);let r=O(e.description);return r!==``&&(t.description=r),typeof e.ref==`string`&&/^e[0-9]+$/.test(e.ref)&&(t.ref=e.ref),typeof e.refSeq==`number`&&Number.isSafeInteger(e.refSeq)&&(t.refSeq=e.refSeq),Array.isArray(e.children)&&e.children.length>0&&(t.children=e.children.map(e=>B(e)).filter(e=>e.role!==`unknown`)),t}function V(e){let t=e??{queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0};return{queueDepth:t.queueDepth,totalWaitMs:t.tabWaitMs+t.bridgeWaitMs,tabWaitMs:t.tabWaitMs,bridgeWaitMs:t.bridgeWaitMs,acquisitions:t.acquisitions}}var H=class{tabLocks=new Map;bridgeLock=Promise.resolve();bridgeHold=null;bridgeWaiters=0;tabLockStats=new Map;getStats(e){if(e!==void 0)return V(this.tabLockStats.get(e));let t={queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0};for(let e of this.tabLockStats.values())t.queueDepth+=e.queueDepth,t.tabWaitMs+=e.tabWaitMs,t.bridgeWaitMs+=e.bridgeWaitMs,t.acquisitions+=e.acquisitions;return V(t)}countersFor(e){let t=this.tabLockStats.get(e);return t||(t={queueDepth:0,tabWaitMs:0,bridgeWaitMs:0,acquisitions:0},this.tabLockStats.set(e,t)),t}liveOwner(){return this.bridgeHold?.owner}reentrantOwner(e){let t=this.bridgeHold;if(t&&e!==null&&t.targetId===e)return t.owner}async holdTabLock(e,t,n){g(t,`starting a command on tab ${e}`);let r=this.countersFor(e);r.queueDepth+=1;let i;try{i=await this.acquireTabLock(e,r,t)}catch(e){throw--r.queueDepth,e}try{return await n(r)}finally{--r.queueDepth,i()}}async acquireTabLock(e,t,n){let r,i=new Promise(e=>{r=e}),a=this.tabLocks.get(e);this.tabLocks.set(e,i);let o=()=>{this.tabLocks.get(e)===i&&this.tabLocks.delete(e),r()};if(a!=null){let r=Date.now();try{await y(a,n,`queued for the lock on tab ${e}`)}catch(e){throw t.tabWaitMs+=Date.now()-r,a.then(o,o),e}t.tabWaitMs+=Date.now()-r}return o}async acquireBridgeLock(e){if(e?.owner!==void 0&&this.bridgeHold?.owner===e.owner)return()=>void 0;let t,n=new Promise(e=>{t=e}),r=this.bridgeLock,i=this.bridgeHold!==null||this.bridgeWaiters>0;if(this.bridgeLock=n,i){this.bridgeWaiters+=1;let t=Date.now();try{await r}finally{--this.bridgeWaiters}e?.counters&&(e.counters.bridgeWaitMs+=Date.now()-t)}let a={release:t,owner:Symbol(`bridge-hold`),targetId:e?.targetId??null};this.bridgeHold=a;let o=!1;return()=>{o||(o=!0,this.bridgeHold===a&&(this.bridgeHold=null),t())}}async runGlobal(e,t){let n=await this.acquireBridgeLock({owner:this.reentrantOwner(e),targetId:e});try{return await t()}finally{n()}}},U=class{overrides=new Map;get(e){return this.overrides.get(e)}set(e,t){this.overrides.set(e,t)}delete(e){this.overrides.delete(e)}has(e){return this.overrides.has(e)}get size(){return this.overrides.size}},W=e(`browser-api`),G=[`Session with given id not found`,`Target closed`,`No session with given id`,`No tab attached for sessionId`],K=class extends Error{};function q(e){let t=e instanceof Error?e.message:String(e);return G.some(e=>t.includes(e))}var J=class{inner;onApplied;route;onStateChange;constructor(e,t,n){this.inner=e,this.onApplied=t,this.route=n,e.onStateChange&&(this.onStateChange=t=>e.onStateChange(t))}get state(){return this.inner.state}get superseded(){return this.inner.superseded}get isExtensionBridge(){return this.inner.isExtensionBridge}connect(e){return this.inner.connect(e)}disconnect(){this.inner.disconnect()}async send(e,t,n,r){let i=await this.route(this.inner,e,t,n,()=>this.forward(e,t,n,r));return n&&this.onApplied(n),i}forward(e,t,n,r){return r===void 0?this.inner.send(e,t,n):this.inner.send(e,t,n,r)}on(e,t){this.inner.on(e,t)}off(e,t){this.inner.off(e,t)}once(e,t){return this.inner.once(e,t)}},oe=class{client;localClient;sessionId=null;attachedTargetId=null;trayTargetProvider=null;remoteTargetInfo=null;frames=new b;sessions=new ne(32,(e,t)=>{W.debug(`Evicting least-recently-used CDP session`,{targetId:e}),this.detachSession(e,t)});_listenedTransports=new Set;_sessionReplacedSubs=new Map;locks=new H;viewports=new U;hiddenPages=null;hiddenPagesLoad=null;hiddenPagePins=new Map;facadeSessions=new Map;connection=new m;_onSessionChange;handleJavaScriptDialogOpening=e=>{this.dismissJavaScriptDialog(e)};async dismissJavaScriptDialog(e){let t=typeof e.sessionId==`string`?e.sessionId:this.sessionId;if(t)try{await this.transportForSession(t).send(`Page.handleJavaScriptDialog`,{accept:!1},t,5e3),W.warn(`Auto-dismissed unexpected JavaScript dialog`,{sessionId:t,type:e.type,message:e.message,url:e.url})}catch(e){W.warn(`Failed to auto-dismiss JavaScript dialog`,{sessionId:t,error:e instanceof Error?e.message:String(e)})}}handleExecutionContextCreated=e=>{let t=this.eventSessionId(e);if(!t)return;let n=e.context,r=n?.auxData?.frameId;n?.auxData?.isDefault===!0&&r&&typeof n.id==`number`&&this.frames.for(t,`main`).set(r,n.id)};handleExecutionContextDestroyed=e=>{let t=this.eventSessionId(e);if(!t)return;let n=e.executionContextId;if(typeof n!=`number`)return;let r=this.frames.peek(t,`main`);if(r)for(let[e,t]of r)t===n&&r.delete(e)};handleExecutionContextsCleared=e=>{let t=this.eventSessionId(e);t&&this.frames.peek(t,`main`)?.clear()};eventSessionId(e){let t=e.sessionId;return typeof t==`string`?t:this.sessionId}handleDetachedFromTarget=e=>{let t=e.sessionId;if(typeof t!=`string`)return;this.hiddenPages?.forgetSession(t),this.facadeSessions.delete(t);let n=this.sessions.findBySessionId(t);n&&this.forgetSession(n[0],n[1])};handleTargetDestroyed=e=>{let t=e.targetId;if(typeof t!=`string`)return;let n=this.sessions.findByTargetOrLocalId(t)[0];n&&this.forgetSession(n[0],n[1])};constructor(e){this.client=e??new f,this.localClient=this.client,this.addTransportListeners(this.client)}getTransport(){return this.accountedTransportFor(this.client)}getUnderlyingTransport(){return this.client}_accountedTransports=new WeakMap;accountedTransportFor(e){if(e instanceof J)return e;let t=this._accountedTransports.get(e);return t||(t=new J(e,e=>this.noteApplied(e),(e,t,n,r,i)=>this.routeSend(e,t,n,r,i)),this._accountedTransports.set(e,t)),t}noteApplied(e){this.sessions.noteApplied(e)}createHarRecorder(e,t){return new S(t,e)}setSessionChangeCallback(e){this._onSessionChange=e}onSessionReplaced(e,t){let n=this._sessionReplacedSubs.get(e);return n||(n=new Set,this._sessionReplacedSubs.set(e,n)),n.add(t),()=>{let n=this._sessionReplacedSubs.get(e);n&&(n.delete(t),n.size===0&&this._sessionReplacedSubs.delete(e))}}getSessionId(){return this.sessionId}getAttachedTargetId(){return this.attachedTargetId}async withTab(e,t,n){let r=n?.signal;return this.locks.holdTabLock(e,r,async n=>{let i=this.sessions.pin(e);try{return n.acquisitions+=1,await this.runOnTab(e,t,r)}finally{i()}})}async runOnTab(e,t,n){try{return await this.attemptOnTab(e,t,n)}catch(r){if(r instanceof K||!q(r))throw r;return W.warn(`Stale CDP session — re-attaching and retrying once`,{targetId:e,error:r instanceof Error?r.message:String(r)}),this.invalidateSession(e),await this.attemptOnTab(e,t,n)}}async attemptOnTab(e,t,n){let r=await this.attachHandle(e,this.locks.reentrantOwner(e),n);g(n,`about to run a command on tab ${e}`);let i=r.sessionId,a=this.sessions.appliedCount(i);this.hiddenPagePins.set(e,(this.hiddenPagePins.get(e)??0)+1);try{return await t(r)}catch(t){if(!q(t))throw t;let n=this.sessions.appliedCount(i)-a;if(n===0)throw t;this.invalidateSession(e);let r=t instanceof Error?t.message:String(t);throw W.warn(`CDP session reset mid-command — not replaying`,{targetId:e,applied:n,reason:r}),new K(`The CDP session for tab ${e} was reset mid-command, after ${n} command(s) had already been applied, so the outcome is unknown. The tab has been re-armed: check the page state before repeating this command. (underlying error: ${r})`)}finally{await this.unpinHiddenPage(e)}}async unpinHiddenPage(e){let t=(this.hiddenPagePins.get(e)??1)-1;if(t>0){this.hiddenPagePins.set(e,t);return}this.hiddenPagePins.delete(e),await this.hiddenPages?.unpinned(e)}async routeSend(e,t,n,r,i){if(t===`Target.attachToTarget`){let e=await i(),t=e.sessionId,r=n?.targetId;return typeof t==`string`&&typeof r==`string`&&this.facadeSessions.set(t,r),e}if(r===void 0||t!==`Emulation.setFocusEmulationEnabled`&&c(t,n)===null)return i();let a=this.hiddenPages??await this.loadHiddenPages();return a?a.route(e,t,n,r,i):i()}loadHiddenPages(){return this.hiddenPagesLoad??=t(async()=>{let{HiddenPageInput:e}=await import(`./hidden-page-input-Cp9ZPgBA.js`);return{HiddenPageInput:e}},__vite__mapDeps([0,1])).then(({HiddenPageInput:e})=>(this.hiddenPages=new e({targetOf:e=>this.sessions.findBySessionId(e)?.[0]??this.facadeSessions.get(e),pinned:e=>this.hiddenPagePins.has(e),isGone:q}),this.hiddenPages),e=>(W.warn(`Hidden-page input gate failed to load; pointer input goes out as is`,{error:e instanceof Error?e.message:String(e)}),this.hiddenPagesLoad=null,null)),this.hiddenPagesLoad}async attachHandle(e,t,n){let r=await this.attachToPageOwned(e,t,n),i=this.sessions.get(e);return new F(this,e,r,this.accountedTransportFor(i?.transport??this.client),n)}handleFor(e,t){return new F(this,e,t.sessionId,this.accountedTransportFor(t.transport))}getTabLockStats(e){return this.locks.getStats(e)}async runGlobal(e,t){return this.locks.runGlobal(e,t)}viewportOverride(e){return this.viewports.get(e)}recordViewportOverride(e,t){this.viewports.set(e,t)}frameContexts(e,t){return this.frames.for(e,t)}dropFrameContexts(e){this.frames.drop(e)}async reapplyViewportOverride(e,t){let n=this.viewports.get(e);if(n)try{await this.handleFor(e,t).applyViewportOverride(n)}catch(t){W.warn(`Failed to re-apply viewport override on re-attach`,{targetId:e,error:t instanceof Error?t.message:String(t)})}}setTrayTargetProvider(e){this.trayTargetProvider=e}async listAllTargets(){let e=await this.listPages();if(!this.trayTargetProvider)return e;let t=!this.remoteTargetInfo,n=new Set(e.map(e=>e.targetId)),r=this.trayTargetProvider.getTargets().filter(e=>!t||!(e.runtimeId===`leader`&&n.has(e.localTargetId))).map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:e.kind,capabilities:e.capabilities}));return[...e,...r]}async connect(e){await this.connection.connect(this.client,e)}async reconnectIfNeeded(){await this.ensureConnected(),this.client!==this.localClient&&await this.ensureLocalConnected()}primeConnectOptions(e){this.connection.primeConnectOptions(e)}setCdpSupersededHandler(e){this.connection.setSupersededHandler(e)}setCdpBridgeRejectedHandler(e){this.connection.setBridgeRejectedHandler(e)}setCdpConnectFailureClassifier(e){this.connection.setConnectFailureClassifier(e)}async createPage(e){return await this.ensureConnected(),await this.ensureLocalConnected(),(await this.localClient.send(`Target.createTarget`,{url:e??`about:blank`,background:!0})).targetId}async openWindow(e,t={}){await this.ensureConnected(),await this.ensureLocalConnected(),Z(t);let n=t.focus!==!1,r={url:e||`about:blank`,newWindow:!0,background:!n};t.decorated===!1&&(r.decorated=!1);let i=t.state;i&&i!==`normal`?r.windowState=i:(t.width!==void 0&&(r.width=t.width),t.height!==void 0&&(r.height=t.height),t.left!==void 0&&(r.left=t.left),t.top!==void 0&&(r.top=t.top),i&&(r.windowState=i));let a=(await this.localClient.send(`Target.createTarget`,r)).targetId;if(typeof a!=`string`||!a)throw Error(`Target.createTarget did not return a usable targetId`);return a}async getWindowBounds(e){await this.ensureConnected();let t=Q((await(await this.transportForWindowOps(e)).send(`Browser.getWindowForTarget`,{targetId:X(e)})).bounds),n=await this.readDevicePixelRatio(e);return{...t,dpr:n}}async setWindowBounds(e,t){await this.ensureConnected(),Z(t);let n=await this.transportForWindowOps(e),r=X(e),i=await n.send(`Browser.getWindowForTarget`,{targetId:r}),a=i.windowId;if(typeof a!=`number`)throw Error(`Browser.getWindowForTarget did not return a windowId`);let o=Q(i.bounds),s=t.state;(t.left!==void 0||t.top!==void 0||t.width!==void 0||t.height!==void 0)&&o.state!==`normal`&&await n.send(`Browser.setWindowBounds`,{windowId:a,bounds:{windowState:`normal`}});let c={};s&&s!==`normal`?c.windowState=s:(t.left!==void 0&&(c.left=t.left),t.top!==void 0&&(c.top=t.top),t.width!==void 0&&(c.width=t.width),t.height!==void 0&&(c.height=t.height),s&&(c.windowState=s)),await n.send(`Browser.setWindowBounds`,{windowId:a,bounds:c});let l=Q((await n.send(`Browser.getWindowBounds`,{windowId:a})).bounds),u=await this.readDevicePixelRatio(e);return{...l,dpr:u}}async readDevicePixelRatio(e){try{let t=await this.withTab(e,e=>e.evaluate(`window.devicePixelRatio`,{awaitPromise:!1,returnByValue:!0}));return typeof t==`number`&&Number.isFinite(t)&&t>0?t:1}catch{return 1}}async transportForWindowOps(e){if(this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);return this.trayTargetProvider.createRemoteTransport(n,r)}return await this.ensureLocalConnected(),this.localClient}async createRemotePage(e,t){if(!this.trayTargetProvider?.openRemoteTab)throw Error(`Remote tab opening not available (no tray target provider)`);return this.trayTargetProvider.openRemoteTab(e,t??`about:blank`)}async closePage(e){if(await this.ensureConnected(),this.viewports.delete(e),await this.dropSession(e),this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)){let t=e.indexOf(`:`),n=e.substring(0,t),r=e.substring(t+1);{let e=this.trayTargetProvider.createRemoteTransport(n,r);try{await e.send(`Target.closeTarget`,{targetId:r})}finally{this.trayTargetProvider.removeRemoteTransport&&this.trayTargetProvider.removeRemoteTransport(n,r)}return}}await this.localClient.send(`Target.closeTarget`,{targetId:e})}disconnect(){this.clearSessions(),this.client.disconnect()}async listPages(){return await this.ensureConnected(),await this.ensureLocalConnected(),((await this.localClient.send(`Target.getTargets`)).targetInfos??[]).filter(e=>e.type===`page`).map(e=>({targetId:e.targetId,title:e.title,url:e.url,...e.active?{active:!0}:{}}))}async attachToPage(e){return this.attachToPageOwned(e,this.locks.reentrantOwner(e))}async attachToPageOwned(e,t,n){let r=await this.locks.acquireBridgeLock({owner:t,targetId:e,counters:this.locks.countersFor(e)});try{await this.ensureConnected();let t=this.sessions.get(e);return t?(this.activateSession(e,t),t.sessionId):await(this.trayTargetProvider?.createRemoteTransport&&e.includes(`:`)?this.attachRemoteTarget(e,n):this.attachLocalTarget(e,n))}finally{r()}}async selectTab(e){await this.withTab(e,async()=>void 0)}async bringTabToFront(e){await this.withTab(e,e=>e.bringToFront())}async attachRemoteTarget(e,t){let n=e.indexOf(`:`),r=e.substring(0,n),i=e.substring(n+1),a=this.trayTargetProvider?.createRemoteTransport?.(r,i);if(!a)throw Error(`No remote transport for target ${e}`);g(t,`about to attach to tray tab ${e}`);let o={sessionId:(await a.send(`Target.attachToTarget`,{targetId:i,flatten:!0})).sessionId,transport:a,remote:{runtimeId:r,localTargetId:i}};return this.rememberSession(e,o),this.activateSession(e,o),g(t,`about to enable Page on tray tab ${e}`),await a.send(`Page.enable`,{},o.sessionId),g(t,`about to restore the viewport of tray tab ${e}`),await this.reapplyViewportOverride(e,o),this.notifySessionChange(e,o),o.sessionId}async attachLocalTarget(e,t){this.useLocalTransport(),await this.ensureLocalConnected(),g(t,`about to attach to tab ${e}`);let n={sessionId:(await this.localClient.send(`Target.attachToTarget`,{targetId:e,flatten:!0})).sessionId,transport:this.localClient};return this.rememberSession(e,n),this.activateSession(e,n),g(t,`about to enable Page on tab ${e}`),await this.localClient.send(`Page.enable`,{},n.sessionId),g(t,`about to restore the viewport of tab ${e}`),await this.reapplyViewportOverride(e,n),this.notifySessionChange(e,n),n.sessionId}async detach(){let e=this.attachedTargetId;e&&(await this.dropSession(e),this.useLocalTransport())}async wakeCapture(e,t){let n=await this.locks.acquireBridgeLock({owner:this.locks.reentrantOwner(e.targetId),targetId:e.targetId});try{return await this.wakeCaptureLocked(e,t,this.locks.liveOwner())}finally{n()}}async wakeCaptureLocked(e,t,n){let r=e.targetId,i=await this.findFocusedLocalPage(r,n).catch(()=>null),a=await this.attachHandle(r,n);try{return await a.send(`Page.bringToFront`),await a.send(`Page.captureScreenshot`,t)}finally{if(i)try{await(await this.attachHandle(i,n)).send(`Page.bringToFront`),await this.attachToPageOwned(r,n)}catch{}}}async findFocusedLocalPage(e,t){let n=await this.listPages();for(let r of n)if(r.targetId&&r.targetId!==e&&!r.targetId.includes(`:`))try{if(await(await this.attachHandle(r.targetId,t)).evaluate(`document.hasFocus()`)===!0)return r.targetId}catch{}return null}async ensureLocalConnected(){await this.connection.ensureLocalConnected(this.localClient)}async ensureConnected(){await this.connection.ensureConnected({client:this.client,restoreLocalAfterRemoteDrop:()=>{this.remoteTargetInfo&&this.trayTargetProvider?.removeRemoteTransport&&(this.trayTargetProvider.removeRemoteTransport(this.remoteTargetInfo.runtimeId,this.remoteTargetInfo.localTargetId),this.setClient(this.localClient),this.remoteTargetInfo=null)},clearSessionsForTransport:e=>this.clearSessionsForTransport(e),getClient:()=>this.client})}transportForSession(e){return this.sessions.findBySessionId(e)?.[1].transport??this.client}addTransportListeners(e){this._listenedTransports.has(e)||(this._listenedTransports.add(e),e.on(`Page.javascriptDialogOpening`,this.handleJavaScriptDialogOpening),e.on(`Runtime.executionContextCreated`,this.handleExecutionContextCreated),e.on(`Runtime.executionContextDestroyed`,this.handleExecutionContextDestroyed),e.on(`Runtime.executionContextsCleared`,this.handleExecutionContextsCleared),e.on(`Target.detachedFromTarget`,this.handleDetachedFromTarget),e.on(`Target.targetDestroyed`,this.handleTargetDestroyed))}releaseLifecycleTransport(e){e!==this.localClient&&this._listenedTransports.has(e)&&(this.sessions.anyOnTransport(e)||(this._listenedTransports.delete(e),e.off(`Page.javascriptDialogOpening`,this.handleJavaScriptDialogOpening),e.off(`Runtime.executionContextCreated`,this.handleExecutionContextCreated),e.off(`Runtime.executionContextDestroyed`,this.handleExecutionContextDestroyed),e.off(`Runtime.executionContextsCleared`,this.handleExecutionContextsCleared),e.off(`Target.detachedFromTarget`,this.handleDetachedFromTarget),e.off(`Target.targetDestroyed`,this.handleTargetDestroyed)))}setClient(e){this.addTransportListeners(e),this.client=e}useLocalTransport(){let e=this.remoteTargetInfo;this.remoteTargetInfo=null,this.setClient(this.localClient),e&&(this.sessions.anyMatchingRemote(e.runtimeId,e.localTargetId)||this.trayTargetProvider?.removeRemoteTransport?.(e.runtimeId,e.localTargetId))}rememberSession(e,t){this.addTransportListeners(t.transport),this.sessions.remember(e,t)}activateSession(e,t){t.remote?(this.setClient(t.transport),this.remoteTargetInfo={...t.remote}):this.client!==t.transport&&this.useLocalTransport(),this.sessionId=t.sessionId,this.attachedTargetId=e,this.sessions.touch(e,t)}notifySessionChange(e,t){let n=this.accountedTransportFor(t.transport);this._onSessionChange?.(t.sessionId,n,e);let r=this._sessionReplacedSubs.get(e);if(r)for(let i of[...r])try{i(t.sessionId,n,e)}catch(t){W.warn(`session-replaced subscriber threw`,{targetId:e,error:t instanceof Error?t.message:String(t)})}}forgetSession(e,t){this.unregisterSession(e),this.disposeSessionTransport(t)}unregisterSession(e){let t=this.sessions.get(e);t&&this.dropFrameContexts(t.sessionId),this.sessions.delete(e),this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null)}disposeSessionTransport(e){this.releaseLifecycleTransport(e.transport),e.remote&&(this.sessions.anyMatchingRemote(e.remote.runtimeId,e.remote.localTargetId)||this.trayTargetProvider?.removeRemoteTransport?.(e.remote.runtimeId,e.remote.localTargetId))}async detachSession(e,t){this.unregisterSession(e);try{await t.transport.send(`Target.detachFromTarget`,{sessionId:t.sessionId})}catch{}finally{this.disposeSessionTransport(t)}}async dropSession(e){let t=this.sessions.get(e);if(!t){this.attachedTargetId===e&&(this.sessionId=null,this.attachedTargetId=null);return}await this.detachSession(e,t)}invalidateSession(e){let t=this.sessions.get(e);t&&this.forgetSession(e,t)}clearSessionsForTransport(e){for(let[t,n]of this.sessions.snapshot())n.transport===e&&this.forgetSession(t,n)}clearSessions(){for(let[e,t]of this.sessions.snapshot())this.forgetSession(e,t);this.sessions.clear(),this.sessionId=null,this.attachedTargetId=null}},Y=new Set([`normal`,`minimized`,`maximized`,`fullscreen`]);function X(e){let t=e.indexOf(`:`);return t>=0?e.substring(t+1):e}function Z(e){let t=e.state;if(t&&t!==`normal`){if(!Y.has(t))throw Error(`window state must be one of ${[...Y].join(`|`)} (got ${JSON.stringify(t)})`);if(e.left!==void 0||e.top!==void 0||e.width!==void 0||e.height!==void 0)throw Error(`window state '${t}' cannot be combined with left/top/width/height (chrome.windows + CDP both reject the mix)`)}}function se(e){return typeof e==`object`&&!!e}function Q(e){let t=se(e)?e:{},n=t.windowState??t.state,r=typeof n==`string`&&Y.has(n)?n:`normal`;return{left:$(t.left,0),top:$(t.top,0),width:$(t.width,0),height:$(t.height,0),state:r}}function $(e,t){return typeof e==`number`&&Number.isFinite(e)?e:t}export{oe as BrowserAPI,c as n,s as t};
@@ -1 +1 @@
1
- import{$ as e,v as t}from"./core-BXRpM6QF.js";import{r as n,s as r}from"./legacy-api-aliases-yN2KDO_G.js";import{h as i}from"./account-store-BHc5rtOw.js";import{n as a}from"./pi-transcript-context-CrhAqp9b.js";var o=`cerebras`,s=`https://api.cerebras.ai/v1`,c=`openai-completions`,l=`${o}-openai`,u=`slicc-cerebras-models`,d=[],f=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function p(e){try{localStorage.setItem(u,JSON.stringify(e))}catch{}}function m(){try{let e=localStorage.getItem(u);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function h(e){let t=e.id??``,n=f.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function g(e){let t=await fetch(`${s}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(h).filter(e=>e.id.length>0);n.length>0&&(d=n,p(n))}function _(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:l,provider:o,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function v(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}var y=(t,n,r={})=>{let i=e();return b(i,t,n,r).catch(v),i};async function b(e,t,r,i){try{let o={...t,baseUrl:s,api:c},l=n(o,a(r),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}var x=(t,n,r)=>{let i=e();return S(i,t,n,r).catch(v),i};async function S(e,t,n,i){try{let o={...t,baseUrl:s,api:c},l=r(o,a(n),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}var C={id:o,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(d.length>0)return d;let e=m();return e.length>0?e:f},refreshModels:async e=>{let t=e??i(o)??``;if(t)try{await g(t)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function w(){t({api:l,stream:y,streamSimple:x})}export{C as config,w as register};
1
+ import{$ as e,v as t}from"./core-BXRpM6QF.js";import{r as n,s as r}from"./legacy-api-aliases-yN2KDO_G.js";import{h as i}from"./account-store-DcnsleVv.js";import{n as a}from"./pi-transcript-context-CrhAqp9b.js";var o=`cerebras`,s=`https://api.cerebras.ai/v1`,c=`openai-completions`,l=`${o}-openai`,u=`slicc-cerebras-models`,d=[],f=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function p(e){try{localStorage.setItem(u,JSON.stringify(e))}catch{}}function m(){try{let e=localStorage.getItem(u);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function h(e){let t=e.id??``,n=f.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function g(e){let t=await fetch(`${s}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(h).filter(e=>e.id.length>0);n.length>0&&(d=n,p(n))}function _(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:l,provider:o,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function v(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}var y=(t,n,r={})=>{let i=e();return b(i,t,n,r).catch(v),i};async function b(e,t,r,i){try{let o={...t,baseUrl:s,api:c},l=n(o,a(r),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}var x=(t,n,r)=>{let i=e();return S(i,t,n,r).catch(v),i};async function S(e,t,n,i){try{let o={...t,baseUrl:s,api:c},l=r(o,a(n),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}var C={id:o,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(d.length>0)return d;let e=m();return e.length>0?e:f},refreshModels:async e=>{let t=e??i(o)??``;if(t)try{await g(t)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function w(){t({api:l,stream:y,streamSimple:x})}export{C as config,w as register};
@@ -1 +1 @@
1
- import{a as e}from"./account-store-BzvHM2hU.js";import{a as t}from"./diagnostics-B-5VkVir.js";import{a as n}from"./compat-CuWVDYYO.js";import{r,s as i}from"./legacy-api-aliases-DcPvcesD.js";import{n as a}from"./pi-transcript-context-C6LXdArv.js";const o=`cerebras`,s=`https://api.cerebras.ai/v1`,c=`openai-completions`,l=`${o}-openai`,u=`slicc-cerebras-models`;let d=[];const f=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function p(e){try{localStorage.setItem(u,JSON.stringify(e))}catch{}}function m(){try{let e=localStorage.getItem(u);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function h(e){let t=e.id??``,n=f.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function g(e){let t=await fetch(`${s}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(h).filter(e=>e.id.length>0);n.length>0&&(d=n,p(n))}function _(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:l,provider:o,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function v(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}const y=(e,n,r={})=>{let i=t();return b(i,e,n,r).catch(v),i};async function b(e,t,n,i){try{let o={...t,baseUrl:s,api:c},l=r(o,a(n),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}const x=(e,n,r)=>{let i=t();return S(i,e,n,r).catch(v),i};async function S(e,t,n,r){try{let o={...t,baseUrl:s,api:c},l=i(o,a(n),r);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}const C={id:o,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(d.length>0)return d;let e=m();return e.length>0?e:f},refreshModels:async t=>{let n=t??e(o)??``;if(n)try{await g(n)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function w(){n({api:l,stream:y,streamSimple:x})}export{C as config,w as register};
1
+ import{a as e}from"./account-store-C6um0YPW.js";import{a as t}from"./diagnostics-B-5VkVir.js";import{a as n}from"./compat-CuWVDYYO.js";import{r,s as i}from"./legacy-api-aliases-DcPvcesD.js";import{n as a}from"./pi-transcript-context-C6LXdArv.js";const o=`cerebras`,s=`https://api.cerebras.ai/v1`,c=`openai-completions`,l=`${o}-openai`,u=`slicc-cerebras-models`;let d=[];const f=[{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai`,reasoning:!0,input:[`text`],context_window:131072,max_tokens:40960},{id:`gemma-4-31b`,name:`Gemma 4 31B`,api:`openai`,reasoning:!1,input:[`text`,`image`],context_window:131072,max_tokens:40960},{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai`,reasoning:!1,input:[`text`],context_window:131072,max_tokens:40960}];function p(e){try{localStorage.setItem(u,JSON.stringify(e))}catch{}}function m(){try{let e=localStorage.getItem(u);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)&&t.length>0?t:[]}catch{return[]}}function h(e){let t=e.id??``,n=f.find(e=>e.id===t);return{id:t,name:e.name??n?.name??t,api:`openai`,reasoning:e.capabilities?.reasoning??n?.reasoning??!1,input:e.capabilities?.vision?[`text`,`image`]:n?.input??[`text`],context_window:e.limits?.max_context_length??n?.context_window??8192,max_tokens:e.limits?.max_completion_tokens??n?.max_tokens??4096}}async function g(e){let t=await fetch(`${s}/models`,{headers:{Authorization:`Bearer ${e}`}});if(!t.ok)throw Error(`GET /v1/models → ${t.status} ${t.statusText}`);let n=((await t.json()).data??[]).map(h).filter(e=>e.id.length>0);n.length>0&&(d=n,p(n))}function _(e,t){return{type:`error`,reason:`error`,error:{role:`assistant`,content:[],api:l,provider:o,model:e.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}}function v(e){console.error(`[cerebras] Stream error:`,e instanceof Error?e.message:String(e))}const y=(e,n,r={})=>{let i=t();return b(i,e,n,r).catch(v),i};async function b(e,t,n,i){try{let o={...t,baseUrl:s,api:c},l=r(o,a(n),i);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}const x=(e,n,r)=>{let i=t();return S(i,e,n,r).catch(v),i};async function S(e,t,n,r){try{let o={...t,baseUrl:s,api:c},l=i(o,a(n),r);for await(let t of l)e.push(t);e.end()}catch(n){v(n),e.push(_(t,n)),e.end()}}const C={id:o,name:`Cerebras`,description:`Ultra-fast inference on Cerebras hardware. Get an API key at cloud.cerebras.ai.`,requiresApiKey:!0,requiresBaseUrl:!1,getModelIds:()=>{if(d.length>0)return d;let e=m();return e.length>0?e:f},refreshModels:async t=>{let n=t??e(o)??``;if(n)try{await g(n)}catch(e){console.warn(`[cerebras] Failed to refresh model list:`,e instanceof Error?e.message:String(e))}}};function w(){n({api:l,stream:y,streamSimple:x})}export{C as config,w as register};
@@ -1 +1 @@
1
- import{t as e}from"./logger-dqckiMJt.js";import{p as t}from"./api-endpoint-CNqFa-M3.js";import{t as n}from"./permissions-surface-registry-CilCRwhh.js";import{tt as r}from"./wc-shell-CtD6cEOB.js";import{t as i}from"./speech-assets-bridge-DtbOauCq.js";import{o as a}from"./transformers-env-BpD8zkhr.js";import{i as o,t as s}from"./whisper-session-CJOEMXH-.js";var c=e(`speech:composer`),l=5e3,u=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})}),d=class{#e;#t;#n;#r;#i;#a=null;#o=!1;#s={engine:`builtin`,state:`idle`};#c=a();#l=new Set;#u=null;constructor(e={}){this.#e=e.builtin??r(),this.#t=e.loadWhisper??o,this.#n=e.startSession??s,this.#r=e.getPermissionSurface??f,this.#i=e.ensureAssets??v}permission(){return this.#e.permission()}async requestPermission(){let e=this.#r();if(e)try{let t=await e.request(`microphone`);return t?(this.#p(t.stream),!0):!1}catch(e){return c.warn(`permission surface microphone request failed`,e),!1}return this.#e.requestPermission()}microphones(){return this.#e.microphones()}status(){return this.#s}onStatus(e){return this.#l.add(e),e(this.#s),()=>this.#l.delete(e)}warmup(){this.#o||(this.#o=!0,this.#c=a(),this.#_({engine:`builtin`,state:`downloading`}),this.#d().then(e=>{this.#a=e,this.#_({engine:`enhanced`,state:`ready`})},e=>{this.#o=!1,this.#_({engine:`builtin`,state:`unavailable`,message:m(e)}),c.warn(`enhanced speech engine unavailable`,e)}))}async#d(){let e=null;try{await this.#i(e=>this.#h(e))}catch(t){e=t,c.warn(`speech asset staging failed; trying already-present assets`,t)}try{return await this.#t(e=>this.#g(e))}catch(t){throw e??t}}async start(e){let t=this.#a;if(t){let n=null;try{return n=await this.#f(e.deviceId),await this.#n(t,{deviceId:e.deviceId,lang:e.lang,onPartial:e.onPartial,onError:e.onError,stream:n??void 0})}catch(e){if(n)for(let e of n.getTracks())e.stop();c.warn(`whisper session failed to start; falling back to builtin`,e)}}return this.#e.start(e)}async#f(e){let t=e&&e!=="default"?e:void 0,n=this.#m();if(n){if(!t&&p(n))return n;for(let e of n.getTracks())e.stop()}let r=this.#r();if(!r)return null;let i={audio:!t||{deviceId:{exact:t}}},a=await u(r.request(`microphone`,{constraints:i}),l,`microphone capture`);if(!a)throw Error(`microphone permission denied`);return a.stream}#p(e){if(this.#u&&this.#u!==e)for(let e of this.#u.getTracks())e.stop();this.#u=e}#m(){let e=this.#u;return this.#u=null,e}get enhancedReady(){return this.#a!==null}#h(e){if(this.#s.state!==`downloading`)return;(e.bytesTotal!=null||e.bytesLoaded!=null)&&this.#c.update(e.asset,e.bytesLoaded??0,e.bytesTotal??0);let t=this.#c.snapshot();t.total<=0||this.#_({engine:`builtin`,state:`downloading`,download:{loaded:t.loaded,total:t.total,etaSeconds:t.etaSeconds}})}#g(e){this.#s.state===`downloading`&&this.#_({engine:`builtin`,state:`downloading`,download:{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}})}#_(e){this.#s=e;for(let t of this.#l)t(e)}};function f(){let e=n();return e?{async request(t,n){let r=await e.request(t,n);return r?.kind===`microphone`?{kind:`microphone`,stream:r.stream}:null}}:null}function p(e){let t=e.getTracks();return t.length>0&&t.some(e=>e.readyState!==`ended`)}function m(e){return`Enhanced speech unavailable: ${e instanceof Error?e.message:String(e)}`}var h=t,g;function _(e){g=e}function v(e){return h()?Promise.resolve():i({instanceId:g,onProgress:e})}var y=null;function b(){return y??=new d,y}export{b as getComposerSpeech,_ as setComposerSpeechInstanceId};
1
+ import{t as e}from"./logger-dqckiMJt.js";import{p as t}from"./api-endpoint-CNqFa-M3.js";import{t as n}from"./permissions-surface-registry-CilCRwhh.js";import{tt as r}from"./wc-shell-uXXL8vn4.js";import{t as i}from"./speech-assets-bridge-DtbOauCq.js";import{o as a}from"./transformers-env-C0UUrX43.js";import{i as o,t as s}from"./whisper-session-VTvwtmt9.js";var c=e(`speech:composer`),l=5e3,u=(e,t,n)=>new Promise((r,i)=>{let a=setTimeout(()=>i(Error(`${n} timed out after ${t}ms`)),t);e.then(e=>{clearTimeout(a),r(e)},e=>{clearTimeout(a),i(e)})}),d=class{#e;#t;#n;#r;#i;#a=null;#o=!1;#s={engine:`builtin`,state:`idle`};#c=a();#l=new Set;#u=null;constructor(e={}){this.#e=e.builtin??r(),this.#t=e.loadWhisper??o,this.#n=e.startSession??s,this.#r=e.getPermissionSurface??f,this.#i=e.ensureAssets??v}permission(){return this.#e.permission()}async requestPermission(){let e=this.#r();if(e)try{let t=await e.request(`microphone`);return t?(this.#p(t.stream),!0):!1}catch(e){return c.warn(`permission surface microphone request failed`,e),!1}return this.#e.requestPermission()}microphones(){return this.#e.microphones()}status(){return this.#s}onStatus(e){return this.#l.add(e),e(this.#s),()=>this.#l.delete(e)}warmup(){this.#o||(this.#o=!0,this.#c=a(),this.#_({engine:`builtin`,state:`downloading`}),this.#d().then(e=>{this.#a=e,this.#_({engine:`enhanced`,state:`ready`})},e=>{this.#o=!1,this.#_({engine:`builtin`,state:`unavailable`,message:m(e)}),c.warn(`enhanced speech engine unavailable`,e)}))}async#d(){let e=null;try{await this.#i(e=>this.#h(e))}catch(t){e=t,c.warn(`speech asset staging failed; trying already-present assets`,t)}try{return await this.#t(e=>this.#g(e))}catch(t){throw e??t}}async start(e){let t=this.#a;if(t){let n=null;try{return n=await this.#f(e.deviceId),await this.#n(t,{deviceId:e.deviceId,lang:e.lang,onPartial:e.onPartial,onError:e.onError,stream:n??void 0})}catch(e){if(n)for(let e of n.getTracks())e.stop();c.warn(`whisper session failed to start; falling back to builtin`,e)}}return this.#e.start(e)}async#f(e){let t=e&&e!=="default"?e:void 0,n=this.#m();if(n){if(!t&&p(n))return n;for(let e of n.getTracks())e.stop()}let r=this.#r();if(!r)return null;let i={audio:!t||{deviceId:{exact:t}}},a=await u(r.request(`microphone`,{constraints:i}),l,`microphone capture`);if(!a)throw Error(`microphone permission denied`);return a.stream}#p(e){if(this.#u&&this.#u!==e)for(let e of this.#u.getTracks())e.stop();this.#u=e}#m(){let e=this.#u;return this.#u=null,e}get enhancedReady(){return this.#a!==null}#h(e){if(this.#s.state!==`downloading`)return;(e.bytesTotal!=null||e.bytesLoaded!=null)&&this.#c.update(e.asset,e.bytesLoaded??0,e.bytesTotal??0);let t=this.#c.snapshot();t.total<=0||this.#_({engine:`builtin`,state:`downloading`,download:{loaded:t.loaded,total:t.total,etaSeconds:t.etaSeconds}})}#g(e){this.#s.state===`downloading`&&this.#_({engine:`builtin`,state:`downloading`,download:{loaded:e.loaded,total:e.total,etaSeconds:e.etaSeconds}})}#_(e){this.#s=e;for(let t of this.#l)t(e)}};function f(){let e=n();return e?{async request(t,n){let r=await e.request(t,n);return r?.kind===`microphone`?{kind:`microphone`,stream:r.stream}:null}}:null}function p(e){let t=e.getTracks();return t.length>0&&t.some(e=>e.readyState!==`ended`)}function m(e){return`Enhanced speech unavailable: ${e instanceof Error?e.message:String(e)}`}var h=t,g;function _(e){g=e}function v(e){return h()?Promise.resolve():i({instanceId:g,onProgress:e})}var y=null;function b(){return y??=new d,y}export{b as getComposerSpeech,_ as setComposerSpeechInstanceId};
@@ -1,4 +1,4 @@
1
- import{B as e,T as t,d as n,u as r}from"./account-store-BHc5rtOw.js";import{n as i}from"./main-CUlZbhkv.js";var a=`slicc_cloud_model_catalog`,o=`adobe`;function s(e){if(e===o)return!1;let n=t(e);return!(n.hidden||n.onOAuthLoginIntercepted)}function c(){try{let e=n().map(e=>({providerId:e.providerId,providerName:e.providerName,models:e.models.map(e=>({id:e.id,name:e.name}))}));localStorage.setItem(a,JSON.stringify(e))}catch{}}async function l(n){for(;n.firstChild;)n.removeChild(n.firstChild);n.className=`connect-surface`;let a=document.createElement(`h1`);a.className=`connect-surface__title`,a.textContent=`Connect providers`,n.appendChild(a);let l=document.createElement(`p`);l.className=`connect-surface__desc`,l.textContent=`Log in or add API keys for the providers your cone should use, then click Done to return to the dashboard.`,n.appendChild(l);let u=document.createElement(`div`);u.className=`connect-surface__accounts`,n.appendChild(u);function d(){for(;u.firstChild;)u.removeChild(u.firstChild);let n=r().filter(e=>e.providerId!==o);if(n.length===0){let e=document.createElement(`div`);e.className=`connect-surface__empty`,e.textContent=`No providers connected yet.`,u.appendChild(e)}else{let r=document.createElement(`div`);r.className=`connect-surface__accounts-list`;for(let i of n){let n=t(i.providerId),a=document.createElement(`div`);a.className=`connect-surface__account-row`;let o=document.createElement(`div`);o.className=`connect-surface__account-info`;let s=document.createElement(`div`);s.className=`connect-surface__account-name`,s.textContent=n.name,o.appendChild(s);let l=document.createElement(`div`);l.className=`connect-surface__account-detail`,l.textContent=i.userName?i.userName:i.accessToken?`Logged in`:i.apiKey?`API key set`:`No credentials`,o.appendChild(l),a.appendChild(o);let u=document.createElement(`button`);u.className=`connect-surface__remove-btn`,u.textContent=`Remove`,u.onclick=async()=>{await e(i.providerId),c(),d()},a.appendChild(u),r.appendChild(a)}u.appendChild(r)}let a=document.createElement(`button`);a.className=`connect-surface__add-btn`,a.textContent=n.length===0?`Add provider`:`Manage providers`,a.onclick=async()=>{await i({startInAddAccount:!0,providerFilter:s})&&(c(),d())},u.appendChild(a)}d(),c();let f=document.createElement(`div`);f.className=`connect-surface__footer`;let p=document.createElement(`button`);if(p.className=`connect-surface__done-btn`,p.textContent=`Done — return to dashboard`,p.onclick=()=>{c(),window.close()},f.appendChild(p),n.appendChild(f),!document.getElementById(`connect-surface-style`)){let e=document.createElement(`style`);e.id=`connect-surface-style`,e.textContent=`
1
+ import{B as e,T as t,d as n,u as r}from"./account-store-DcnsleVv.js";import{n as i}from"./main-CILyCK1y.js";var a=`slicc_cloud_model_catalog`,o=`adobe`;function s(e){if(e===o)return!1;let n=t(e);return!(n.hidden||n.onOAuthLoginIntercepted)}function c(){try{let e=n().map(e=>({providerId:e.providerId,providerName:e.providerName,models:e.models.map(e=>({id:e.id,name:e.name}))}));localStorage.setItem(a,JSON.stringify(e))}catch{}}async function l(n){for(;n.firstChild;)n.removeChild(n.firstChild);n.className=`connect-surface`;let a=document.createElement(`h1`);a.className=`connect-surface__title`,a.textContent=`Connect providers`,n.appendChild(a);let l=document.createElement(`p`);l.className=`connect-surface__desc`,l.textContent=`Log in or add API keys for the providers your cone should use, then click Done to return to the dashboard.`,n.appendChild(l);let u=document.createElement(`div`);u.className=`connect-surface__accounts`,n.appendChild(u);function d(){for(;u.firstChild;)u.removeChild(u.firstChild);let n=r().filter(e=>e.providerId!==o);if(n.length===0){let e=document.createElement(`div`);e.className=`connect-surface__empty`,e.textContent=`No providers connected yet.`,u.appendChild(e)}else{let r=document.createElement(`div`);r.className=`connect-surface__accounts-list`;for(let i of n){let n=t(i.providerId),a=document.createElement(`div`);a.className=`connect-surface__account-row`;let o=document.createElement(`div`);o.className=`connect-surface__account-info`;let s=document.createElement(`div`);s.className=`connect-surface__account-name`,s.textContent=n.name,o.appendChild(s);let l=document.createElement(`div`);l.className=`connect-surface__account-detail`,l.textContent=i.userName?i.userName:i.accessToken?`Logged in`:i.apiKey?`API key set`:`No credentials`,o.appendChild(l),a.appendChild(o);let u=document.createElement(`button`);u.className=`connect-surface__remove-btn`,u.textContent=`Remove`,u.onclick=async()=>{await e(i.providerId),c(),d()},a.appendChild(u),r.appendChild(a)}u.appendChild(r)}let a=document.createElement(`button`);a.className=`connect-surface__add-btn`,a.textContent=n.length===0?`Add provider`:`Manage providers`,a.onclick=async()=>{await i({startInAddAccount:!0,providerFilter:s})&&(c(),d())},u.appendChild(a)}d(),c();let f=document.createElement(`div`);f.className=`connect-surface__footer`;let p=document.createElement(`button`);if(p.className=`connect-surface__done-btn`,p.textContent=`Done — return to dashboard`,p.onclick=()=>{c(),window.close()},f.appendChild(p),n.appendChild(f),!document.getElementById(`connect-surface-style`)){let e=document.createElement(`style`);e.id=`connect-surface-style`,e.textContent=`
2
2
  .connect-surface {
3
3
  padding: 2rem;
4
4
  max-width: 560px;
@@ -1 +1 @@
1
- import{t as e}from"./logger-Cx6Y120U.js";import{S as t}from"./record-DTUQtot0.js";import{s as n}from"./kernel-worker-Dt9hDwn2.js";const r=e(`directed-approval`);function i(e,n){if(e.kind===`user`)return a(`the user tier is not a directed approval`);if(e.kind===`agent`)return a(`agent approvals are not enqueued to a unit`);let r=e.unitJid;if(!n.scoops.has(r))return a(`the requesting unit is not registered`);let i=n.ownerRootOf(r);if(!i)return a(`no owning cone for the requesting unit`);let o=e.kind===`cone`?i:[...n.scoops.values()].find(t=>t.parentJid===i.jid&&(t.name===e.scoopName||t.folder===e.scoopName));return o?t(o).canResolveApprovals?{ok:!0,requesterJid:r,approver:o}:a(`the named approver cannot resolve approvals`):a(`delegated approver not found under this cone`)}function a(e){return r.warn(`Directed approval failing closed`,{reason:e}),{ok:!1,reason:e}}const o={decision:`deny`},s={decision:`deny`,reason:`unavailable`};async function c(e,t){let a=e.approver;if(a?.kind===`agent`){let i=globalThis[n];if(!i)return r.warn(`No agent bridge available for an approver agent — denying`),s;let{approverRunnerFor:c}=await import(`./approver-agent-Dd-dJT-g.js`),l=t.getSharedFs(),u=await c({spawn:e=>i.spawn(e),readSharedFile:async e=>{if(!l)return null;try{let t=await l.readFile(e,{encoding:`utf-8`});return typeof t==`string`?t:null}catch{return null}},findUnit:e=>{let n=t.scoops.get(e);return n?{workspace:t.workspaceFor(n),folder:n.folder}:void 0}})({kind:e.kind===`guest-tool`?`guest-tool`:`guest-message`,requester:e.requester??`an unidentified requester`,detail:e.detail},a.unitJid);return r.info(`Approver agent verdict`,{decision:u.decision,reason:u.reason}),u.decision===`allow`?{decision:`allow`}:o}if(a&&a.kind!==`user`){let n=i(a,t);return n.ok?t.enqueue(n.requesterJid,e,{approver:n.approver}):s}return t.approveAsUser(e)}export{c as runDirectedApproval};
1
+ import{t as e}from"./logger-Cx6Y120U.js";import{S as t}from"./record-DTUQtot0.js";import{s as n}from"./kernel-worker-DjefE-EG.js";const r=e(`directed-approval`);function i(e,n){if(e.kind===`user`)return a(`the user tier is not a directed approval`);if(e.kind===`agent`)return a(`agent approvals are not enqueued to a unit`);let r=e.unitJid;if(!n.scoops.has(r))return a(`the requesting unit is not registered`);let i=n.ownerRootOf(r);if(!i)return a(`no owning cone for the requesting unit`);let o=e.kind===`cone`?i:[...n.scoops.values()].find(t=>t.parentJid===i.jid&&(t.name===e.scoopName||t.folder===e.scoopName));return o?t(o).canResolveApprovals?{ok:!0,requesterJid:r,approver:o}:a(`the named approver cannot resolve approvals`):a(`delegated approver not found under this cone`)}function a(e){return r.warn(`Directed approval failing closed`,{reason:e}),{ok:!1,reason:e}}const o={decision:`deny`},s={decision:`deny`,reason:`unavailable`};async function c(e,t){let a=e.approver;if(a?.kind===`agent`){let i=globalThis[n];if(!i)return r.warn(`No agent bridge available for an approver agent — denying`),s;let{approverRunnerFor:c}=await import(`./approver-agent-Dd-dJT-g.js`),l=t.getSharedFs(),u=await c({spawn:e=>i.spawn(e),readSharedFile:async e=>{if(!l)return null;try{let t=await l.readFile(e,{encoding:`utf-8`});return typeof t==`string`?t:null}catch{return null}},findUnit:e=>{let n=t.scoops.get(e);return n?{workspace:t.workspaceFor(n),folder:n.folder}:void 0}})({kind:e.kind===`guest-tool`?`guest-tool`:`guest-message`,requester:e.requester??`an unidentified requester`,detail:e.detail},a.unitJid);return r.info(`Approver agent verdict`,{decision:u.decision,reason:u.reason}),u.decision===`allow`?{decision:`allow`}:o}if(a&&a.kind!==`user`){let n=i(a,t);return n.ok?t.enqueue(n.requesterJid,e,{approver:n.approver}):s}return t.approveAsUser(e)}export{c as runDirectedApproval};
@@ -1 +1 @@
1
- import{n as e}from"./js-realm-worker-BL8Fbpcw.js";const t={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},n=4095;function r(e,n){if(n?.errno!==void 0&&n instanceof e.ErrnoError)return n;let r=n?.code,i=typeof r==`string`?t[r]??29:29;return new e.ErrnoError(i)}function i(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function a(e){let t=3735928559,n=1103547991;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,2654435761),n=Math.imul(n^i,1597334677)}return t=Math.imul(t^t>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),4294967296*(2097151&n)+(t>>>0)||1}function o(e){let t=e.isSymbolicLink?40960:e.isDirectory?16384:32768,r=e.isDirectory||e.isSymbolicLink?511:438;return t|((e.mode??r)&n||r)}function s(e){if(e!=null)return e instanceof Date?e.getTime():e}function c(e,n){let a=e=>e.mount.opts.bridge;function s(t){try{return t()}catch(t){throw r(e,t)}}function c(e){try{s(e)}catch(e){if(e.errno!==t.ENOSYS)throw e}}function l(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function u(t,r,i){let a=e.createNode(t,r,o(i),0);return a.node_ops=n.node,a.stream_ops=n.stream,a.live=l(i),a}function d(e){if(e.live.orphan)return{...e.live.stat,size:e.live.len};if(!e.live.stat){let t=s(()=>a(e).lstat(i(e)));e.live.stat=t,e.mode=o(t)}return e.live.stat}function f(e,t){let n=i(e);return n===`/`?`/${t}`:`${n}/${t}`}function p(e){let t=e.live;if(t.loaded)return;let n=s(()=>a(e).readFile(i(e)));t.data=n,t.len=n.length,t.loaded=!0}function m(e,t){let n=e.live,r=n.data??/* @__PURE__ */ new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function h(e){let t=e.live;if(!t.dirty||!t.data||t.orphan)return;let n=t.data.slice(0,t.len);s(()=>a(e).writeFile(i(e),n)),t.dirty=!1,t.stat=void 0}function g(e,t){let n=e.live;if(n.openCount>0){t>0?p(e):n.loaded=!0;let r=m(e,t);t>n.len&&r.fill(0,n.len,t),n.len=t,n.dirty=!0;return}let r=i(e),o=new Uint8Array(t);if(t>0){let n=s(()=>a(e).readFile(r));o.set(n.subarray(0,Math.min(t,n.length)))}s(()=>a(e).writeFile(r,o)),n.stat=void 0}return{Fs:e,bridgeOf:a,call:s,metadataCall:c,makeNode:u,statOf:d,childPath:f,ensureLoaded:p,ensureCapacity:m,flushNode:h,truncate:g}}function l(e){let{Fs:r,bridgeOf:o,call:c,metadataCall:l,makeNode:u,statOf:d,childPath:f,flushNode:p,truncate:m}=e,{ensureLoaded:h}=e;return{getattr(e){let t=d(e),n=e.live,o=r.isDir(e.mode)?4096:n.loaded?n.len:t.size,s=new Date(t.mtimeMs??0);return{dev:1,ino:t.ino??a(i(e)),mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:o,atime:s,mtime:s,ctime:s,blksize:4096,blocks:Math.ceil(o/4096)}},setattr(e,t){if(e.live.orphan){t.mode!==void 0&&t.mode!==null&&(e.mode=e.mode&-4096|t.mode&n),t.size!==void 0&&t.size!==null&&m(e,t.size);return}let a=i(e);if(t.mode!==void 0&&t.mode!==null){let r=t.mode&n;r!==(e.mode&n)&&(l(()=>o(e).chmod(a,r)),e.mode=e.mode&-4096|r)}t.size!==void 0&&t.size!==null&&r.isFile(e.mode)&&m(e,t.size);let c=s(t.mtime)??t.timestamp;if(c!==void 0){let n=s(t.atime)??c;p(e),l(()=>o(e).utimes(a,n,c))}e.live.stat=void 0},lookup(e,t){let n=c(()=>o(e).lstat(f(e,t)));return u(e,t,n)},mknod(e,n,i){let a=f(e,n);if(r.isDir(i)){c(()=>o(e).mkdir(a));let t=i&4077;t!==493&&l(()=>o(e).chmod(a,t))}else if(r.isFile(i))c(()=>o(e).writeFile(a,/* @__PURE__ */ new Uint8Array));else throw new r.ErrnoError(t.EPERM);let s=u(e,n,{isFile:r.isFile(i),isDirectory:r.isDir(i),isSymbolicLink:!1,size:0,mode:i,mtimeMs:Date.now()});return s.live.stat=void 0,s},rename(e,t,n){let a=i(e),s=f(t,n);p(e),c(()=>o(e).rename(a,s));try{let i=r.lookupNode?.(t,n);i&&i!==e&&r.hashRemoveNode?.(i)}catch{}e.name=n,e.live.stat=void 0},unlink(e,t){let n;try{let i=r.lookupNode?.(e,t);i&&i.live?.openCount>0&&r.isFile(i.mode)&&(n=i)}catch{}n&&(d(n),h(n)),c(()=>o(e).unlink(f(e,t))),n&&(n.live.orphan=!0)},rmdir(e,t){c(()=>o(e).rmdir(f(e,t)))},readdir(e){return[`.`,`..`,...c(()=>o(e).readdir(i(e)))]},symlink(e,t,n){let r=f(e,t);return c(()=>o(e).symlink(n,r)),u(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:n.length})},readlink(e){if(!r.isLink(e.mode))throw new r.ErrnoError(t.EINVAL);return c(()=>o(e).readlink(i(e)))}}}function u(e){let{Fs:n,statOf:r,ensureLoaded:i,ensureCapacity:a,flushNode:o}=e;return{open(e){n.isFile(e.node.mode)&&e.node.live.openCount++},dup(e){n.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let t=e.node;if(!n.isFile(t.mode))return;let r=t.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(t)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(e,r,a,o,s){let c=e.node;if(n.isDir(c.mode))throw new n.ErrnoError(t.EISDIR);i(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(r.buffer,r.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(e,r,o,s,c){let l=e.node;if(n.isDir(l.mode))throw new n.ErrnoError(t.EISDIR);if(s<=0)return 0;i(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(r.buffer,r.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(e,i,a){let o=i;if(a===1)o+=e.position;else if(a===2&&n.isFile(e.node.mode)){let t=e.node.live;o+=t.loaded?t.len:r(e.node).size}if(o<0)throw new n.ErrnoError(t.EINVAL);return o},fsync(e){o(e.node)}}}function d(e){let n=/* @__PURE__ */ new Set,r={},i=c(e,r),a=l(i),o=u(i);return r.node=a,r.stream=o,{mounts:n,node_ops:a,stream_ops:o,mount(r){let a=i.call(()=>r.opts.bridge.stat(r.opts.root));if(!a.isDirectory)throw new e.ErrnoError(t.ENOTDIR);let o=i.makeNode(null,`/`,a);return n.add(r),o}}}function f(e,t){return!!t&&e.mounts.has(t.mount)}function p(e,t){for(let n of e.nameTable??[])for(let a=n;a;a=a.name_next??null)if(f(t,a)&&a.live.dirty&&a.live.data)try{let e=a.live.data.slice(0,a.live.len);a.mount.opts.bridge.writeFile(i(a),e),a.live.dirty=!1}catch(t){throw r(e,t)}}function m(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!f(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function h(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function g(e){if(e instanceof Error)return e.message;let t=e?.errno;return typeof t==`number`?`errno ${t}`:String(e)}function _(e,t,n,r){if(typeof e.filesystems!=`object`||!e.filesystems)throw Error(`the module was linked without filesystem support, so the VFS cannot be mounted (link it with -sFORCE_FILESYSTEM=1)`);let i=e.filesystems.SLICC_LIVE_FS??d(e);e.filesystems.SLICC_LIVE_FS=i;let a=[];for(let o of h(n))if(o!==`/`)try{e.mkdirTree(o),e.mount(i,{root:o,bridge:t},o),a.push(o)}catch(e){r(`live VFS mount of ${o} failed: ${g(e)}`)}return{plugin:i,mounted:a}}const v=/* @__PURE__ */ new Set([`dev`,`proc`]),y=[`/usr`,`/bin`],b=[`writeFile`,`mkdir`,`rm`,`rename`,`unlink`,`rmdir`,`symlink`,`chmod`,`utimes`];function x(t,n){let r={...t};for(let i of b){let a=t[i];r[i]=(...r)=>{n.wasUsed()&&e(n,t);try{a.apply(t,r)}finally{n.invalidate()}}}return r}function S(e,t){let n;try{n=e.readdir(`/`)}catch(e){return t(`cannot list the VFS root, nothing mounted: ${String(e)}`),[]}let r=n.filter(e=>e&&!e.includes(`/`)&&!v.has(e)).map(e=>`/${e}`);for(let e of y)r.includes(e)||r.push(e);let i=[];for(let t of r)try{e.stat(t).isDirectory&&i.push(t)}catch{}return i}function C(t,n,r={}){let{bridge:i,syncFs:a,warn:o}=n;a.wasUsed()&&e(a,i);let{plugin:s,mounted:c}=_(t,x(i,a),S(i,o),o);try{t.chdir(r.cwd??n.cwd)}catch(e){o(`cannot chdir to ${r.cwd??n.cwd}: ${String(e)}`)}return{mounted:c,flush:()=>p(t,s),invalidate:()=>m(t,s)}}export{C as mountVfsIntoEmscripten};
1
+ import{n as e}from"./js-realm-worker-D-YXyqDf.js";const t={EACCES:2,EBADF:8,EBUSY:10,EEXIST:20,EINVAL:28,EIO:29,EISDIR:31,ELOOP:32,ENAMETOOLONG:37,ENOENT:44,ENOSPC:51,ENOSYS:52,ENOTDIR:54,ENOTEMPTY:55,EPERM:63,EROFS:69,ETIMEDOUT:73,EXDEV:75},n=4095;function r(e,n){if(n?.errno!==void 0&&n instanceof e.ErrnoError)return n;let r=n?.code,i=typeof r==`string`?t[r]??29:29;return new e.ErrnoError(i)}function i(e){let t=[],n=e;for(;n!==n.mount.root;)t.push(n.name),n=n.parent;let r=e.mount.opts.root.replace(/\/+$/,``);return t.length===0?r||`/`:`${r}/${t.reverse().join(`/`)}`}function a(e){let t=3735928559,n=1103547991;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);t=Math.imul(t^i,2654435761),n=Math.imul(n^i,1597334677)}return t=Math.imul(t^t>>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),4294967296*(2097151&n)+(t>>>0)||1}function o(e){let t=e.isSymbolicLink?40960:e.isDirectory?16384:32768,r=e.isDirectory||e.isSymbolicLink?511:438;return t|((e.mode??r)&n||r)}function s(e){if(e!=null)return e instanceof Date?e.getTime():e}function c(e,n){let a=e=>e.mount.opts.bridge;function s(t){try{return t()}catch(t){throw r(e,t)}}function c(e){try{s(e)}catch(e){if(e.errno!==t.ENOSYS)throw e}}function l(e){return{...e?{stat:e}:{},len:0,loaded:!1,dirty:!1,openCount:0}}function u(t,r,i){let a=e.createNode(t,r,o(i),0);return a.node_ops=n.node,a.stream_ops=n.stream,a.live=l(i),a}function d(e){if(e.live.orphan)return{...e.live.stat,size:e.live.len};if(!e.live.stat){let t=s(()=>a(e).lstat(i(e)));e.live.stat=t,e.mode=o(t)}return e.live.stat}function f(e,t){let n=i(e);return n===`/`?`/${t}`:`${n}/${t}`}function p(e){let t=e.live;if(t.loaded)return;let n=s(()=>a(e).readFile(i(e)));t.data=n,t.len=n.length,t.loaded=!0}function m(e,t){let n=e.live,r=n.data??/* @__PURE__ */ new Uint8Array;if(r.length>=t)return r;let i=new Uint8Array(Math.max(t,r.length*2,256));return i.set(r.subarray(0,n.len)),n.data=i,i}function h(e){let t=e.live;if(!t.dirty||!t.data||t.orphan)return;let n=t.data.slice(0,t.len);s(()=>a(e).writeFile(i(e),n)),t.dirty=!1,t.stat=void 0}function g(e,t){let n=e.live;if(n.openCount>0){t>0?p(e):n.loaded=!0;let r=m(e,t);t>n.len&&r.fill(0,n.len,t),n.len=t,n.dirty=!0;return}let r=i(e),o=new Uint8Array(t);if(t>0){let n=s(()=>a(e).readFile(r));o.set(n.subarray(0,Math.min(t,n.length)))}s(()=>a(e).writeFile(r,o)),n.stat=void 0}return{Fs:e,bridgeOf:a,call:s,metadataCall:c,makeNode:u,statOf:d,childPath:f,ensureLoaded:p,ensureCapacity:m,flushNode:h,truncate:g}}function l(e){let{Fs:r,bridgeOf:o,call:c,metadataCall:l,makeNode:u,statOf:d,childPath:f,flushNode:p,truncate:m}=e,{ensureLoaded:h}=e;return{getattr(e){let t=d(e),n=e.live,o=r.isDir(e.mode)?4096:n.loaded?n.len:t.size,s=new Date(t.mtimeMs??0);return{dev:1,ino:t.ino??a(i(e)),mode:e.mode,nlink:1,uid:0,gid:0,rdev:0,size:o,atime:s,mtime:s,ctime:s,blksize:4096,blocks:Math.ceil(o/4096)}},setattr(e,t){if(e.live.orphan){t.mode!==void 0&&t.mode!==null&&(e.mode=e.mode&-4096|t.mode&n),t.size!==void 0&&t.size!==null&&m(e,t.size);return}let a=i(e);if(t.mode!==void 0&&t.mode!==null){let r=t.mode&n;r!==(e.mode&n)&&(l(()=>o(e).chmod(a,r)),e.mode=e.mode&-4096|r)}t.size!==void 0&&t.size!==null&&r.isFile(e.mode)&&m(e,t.size);let c=s(t.mtime)??t.timestamp;if(c!==void 0){let n=s(t.atime)??c;p(e),l(()=>o(e).utimes(a,n,c))}e.live.stat=void 0},lookup(e,t){let n=c(()=>o(e).lstat(f(e,t)));return u(e,t,n)},mknod(e,n,i){let a=f(e,n);if(r.isDir(i)){c(()=>o(e).mkdir(a));let t=i&4077;t!==493&&l(()=>o(e).chmod(a,t))}else if(r.isFile(i))c(()=>o(e).writeFile(a,/* @__PURE__ */ new Uint8Array));else throw new r.ErrnoError(t.EPERM);let s=u(e,n,{isFile:r.isFile(i),isDirectory:r.isDir(i),isSymbolicLink:!1,size:0,mode:i,mtimeMs:Date.now()});return s.live.stat=void 0,s},rename(e,t,n){let a=i(e),s=f(t,n);p(e),c(()=>o(e).rename(a,s));try{let i=r.lookupNode?.(t,n);i&&i!==e&&r.hashRemoveNode?.(i)}catch{}e.name=n,e.live.stat=void 0},unlink(e,t){let n;try{let i=r.lookupNode?.(e,t);i&&i.live?.openCount>0&&r.isFile(i.mode)&&(n=i)}catch{}n&&(d(n),h(n)),c(()=>o(e).unlink(f(e,t))),n&&(n.live.orphan=!0)},rmdir(e,t){c(()=>o(e).rmdir(f(e,t)))},readdir(e){return[`.`,`..`,...c(()=>o(e).readdir(i(e)))]},symlink(e,t,n){let r=f(e,t);return c(()=>o(e).symlink(n,r)),u(e,t,{isFile:!1,isDirectory:!1,isSymbolicLink:!0,size:n.length})},readlink(e){if(!r.isLink(e.mode))throw new r.ErrnoError(t.EINVAL);return c(()=>o(e).readlink(i(e)))}}}function u(e){let{Fs:n,statOf:r,ensureLoaded:i,ensureCapacity:a,flushNode:o}=e;return{open(e){n.isFile(e.node.mode)&&e.node.live.openCount++},dup(e){n.isFile(e.node.mode)&&e.node.live.openCount++},close(e){let t=e.node;if(!n.isFile(t.mode))return;let r=t.live;if(r.openCount=Math.max(0,r.openCount-1),!(r.openCount>0))try{o(t)}finally{r.data=void 0,r.len=0,r.loaded=!1}},read(e,r,a,o,s){let c=e.node;if(n.isDir(c.mode))throw new n.ErrnoError(t.EISDIR);i(c);let l=c.live;if(s>=l.len||o<=0)return 0;let u=Math.min(o,l.len-s);return new Uint8Array(r.buffer,r.byteOffset+a,u).set(l.data.subarray(s,s+u)),u},write(e,r,o,s,c){let l=e.node;if(n.isDir(l.mode))throw new n.ErrnoError(t.EISDIR);if(s<=0)return 0;i(l);let u=l.live,d=c+s,f=a(l,d);return c>u.len&&f.fill(0,u.len,c),f.set(new Uint8Array(r.buffer,r.byteOffset+o,s),c),u.len=Math.max(u.len,d),u.dirty=!0,s},llseek(e,i,a){let o=i;if(a===1)o+=e.position;else if(a===2&&n.isFile(e.node.mode)){let t=e.node.live;o+=t.loaded?t.len:r(e.node).size}if(o<0)throw new n.ErrnoError(t.EINVAL);return o},fsync(e){o(e.node)}}}function d(e){let n=/* @__PURE__ */ new Set,r={},i=c(e,r),a=l(i),o=u(i);return r.node=a,r.stream=o,{mounts:n,node_ops:a,stream_ops:o,mount(r){let a=i.call(()=>r.opts.bridge.stat(r.opts.root));if(!a.isDirectory)throw new e.ErrnoError(t.ENOTDIR);let o=i.makeNode(null,`/`,a);return n.add(r),o}}}function f(e,t){return!!t&&e.mounts.has(t.mount)}function p(e,t){for(let n of e.nameTable??[])for(let a=n;a;a=a.name_next??null)if(f(t,a)&&a.live.dirty&&a.live.data)try{let e=a.live.data.slice(0,a.live.len);a.mount.opts.bridge.writeFile(i(a),e),a.live.dirty=!1}catch(t){throw r(e,t)}}function m(e,t){let n=e.nameTable??[],r=[];for(let e of n)for(let n=e;n;n=n.name_next??null){if(!f(t,n))continue;let e=n.live;e.stat=void 0,e.openCount===0?n!==n.mount.root&&r.push(n):e.loaded&&!e.dirty&&(e.data=void 0,e.len=0,e.loaded=!1)}if(e.hashRemoveNode)for(let t of r)e.hashRemoveNode(t)}function h(e){let t=[...new Set(e.map(e=>e.replace(/\/+$/,``)||`/`))].sort();return t.filter(e=>!t.some(t=>t!==e&&(t===`/`||e.startsWith(`${t}/`))))}function g(e){if(e instanceof Error)return e.message;let t=e?.errno;return typeof t==`number`?`errno ${t}`:String(e)}function _(e,t,n,r){if(typeof e.filesystems!=`object`||!e.filesystems)throw Error(`the module was linked without filesystem support, so the VFS cannot be mounted (link it with -sFORCE_FILESYSTEM=1)`);let i=e.filesystems.SLICC_LIVE_FS??d(e);e.filesystems.SLICC_LIVE_FS=i;let a=[];for(let o of h(n))if(o!==`/`)try{e.mkdirTree(o),e.mount(i,{root:o,bridge:t},o),a.push(o)}catch(e){r(`live VFS mount of ${o} failed: ${g(e)}`)}return{plugin:i,mounted:a}}const v=/* @__PURE__ */ new Set([`dev`,`proc`]),y=[`/usr`,`/bin`],b=[`writeFile`,`mkdir`,`rm`,`rename`,`unlink`,`rmdir`,`symlink`,`chmod`,`utimes`];function x(t,n){let r={...t};for(let i of b){let a=t[i];r[i]=(...r)=>{n.wasUsed()&&e(n,t);try{a.apply(t,r)}finally{n.invalidate()}}}return r}function S(e,t){let n;try{n=e.readdir(`/`)}catch(e){return t(`cannot list the VFS root, nothing mounted: ${String(e)}`),[]}let r=n.filter(e=>e&&!e.includes(`/`)&&!v.has(e)).map(e=>`/${e}`);for(let e of y)r.includes(e)||r.push(e);let i=[];for(let t of r)try{e.stat(t).isDirectory&&i.push(t)}catch{}return i}function C(t,n,r={}){let{bridge:i,syncFs:a,warn:o}=n;a.wasUsed()&&e(a,i);let{plugin:s,mounted:c}=_(t,x(i,a),S(i,o),o);try{t.chdir(r.cwd??n.cwd)}catch(e){o(`cannot chdir to ${r.cwd??n.cwd}: ${String(e)}`)}return{mounted:c,flush:()=>p(t,s),invalidate:()=>m(t,s)}}export{C as mountVfsIntoEmscripten};
@@ -1 +1 @@
1
- import{i as e}from"./zip-stream-CTG4_nCE.js";import{n as t}from"./transcript-export-DTRO8k03.js";var n=class{parts=[];cancelled=!1;async append(e,t){if(this.cancelled)throw Error(`MemorySpool: already cancelled`);this.parts.push(e)}async finalize(n,r,i){if(this.cancelled||this.parts.length!==n)throw new t(`transfer-corrupt`);let a=0;for(let e of this.parts)a+=e.byteLength;if(a!==r)throw new t(`transfer-corrupt`);let o=e.create();for(let e of this.parts)o.update(e);if(o.hex()!==i)throw new t(`transfer-corrupt`);let s=new Blob(this.parts,{type:`application/zip`});return this.parts.length=0,s}async cancel(){this.cancelled=!0,this.parts.length=0}},r=class{tempName;writable=null;hasher=e.create();chunkCount=0;bytesWritten=0;cancelled=!1;fileHandle=null;dirHandle=null;writeChain=Promise.resolve();constructor(e){this.tempName=`export-${e}.zip.tmp`}async openWritable(){let e=await navigator.storage.getDirectory();this.dirHandle=await e.getDirectoryHandle(`.slicc-export-tmp`,{create:!0}),this.fileHandle=await this.dirHandle.getFileHandle(this.tempName,{create:!0}),this.writable=await this.fileHandle.createWritable()}async append(e,t){if(this.cancelled)throw Error(`OpfsSpool: already cancelled`);this.writable||await this.openWritable();let n=e.buffer instanceof ArrayBuffer?e:new Uint8Array(e),r=this.writeChain.then(async()=>{if(this.cancelled)throw Error(`OpfsSpool: already cancelled`);await this.writable.write(n),this.hasher.update(e),this.bytesWritten+=e.byteLength,this.chunkCount++});return this.writeChain=r.catch(()=>{}),r}async finalize(e,n,r){if(this.cancelled)throw new t(`transfer-corrupt`);if(await this.writeChain,this.chunkCount!==e||this.bytesWritten!==n||this.hasher.hex()!==r||!this.fileHandle)throw await this.cleanup(),new t(`transfer-corrupt`);try{await this.writable?.close(),this.writable=null;let e=await this.fileHandle.getFile(),t;return t=typeof e.stream==`function`?await new Response(e.stream(),{headers:{"Content-Type":`application/zip`}}).blob():new Blob([await e.arrayBuffer()],{type:`application/zip`}),await this.deleteTempFile(),t}catch{throw this.writable=null,await this.cleanup(),new t(`transfer-corrupt`)}}async cancel(){this.cancelled||(this.cancelled=!0,await this.cleanup())}async cleanup(){try{await this.writable?.close()}catch{}this.writable=null,await this.deleteTempFile()}async deleteTempFile(){try{await this.dirHandle?.removeEntry(this.tempName)}catch{}this.fileHandle=null}};function i(e){return typeof navigator<`u`&&typeof navigator.storage?.getDirectory==`function`?new r(e):new n}export{i as t};
1
+ import{i as e}from"./zip-stream-DZF8sKOl.js";import{n as t}from"./transcript-export-DTRO8k03.js";var n=class{parts=[];cancelled=!1;async append(e,t){if(this.cancelled)throw Error(`MemorySpool: already cancelled`);this.parts.push(e)}async finalize(n,r,i){if(this.cancelled||this.parts.length!==n)throw new t(`transfer-corrupt`);let a=0;for(let e of this.parts)a+=e.byteLength;if(a!==r)throw new t(`transfer-corrupt`);let o=e.create();for(let e of this.parts)o.update(e);if(o.hex()!==i)throw new t(`transfer-corrupt`);let s=new Blob(this.parts,{type:`application/zip`});return this.parts.length=0,s}async cancel(){this.cancelled=!0,this.parts.length=0}},r=class{tempName;writable=null;hasher=e.create();chunkCount=0;bytesWritten=0;cancelled=!1;fileHandle=null;dirHandle=null;writeChain=Promise.resolve();constructor(e){this.tempName=`export-${e}.zip.tmp`}async openWritable(){let e=await navigator.storage.getDirectory();this.dirHandle=await e.getDirectoryHandle(`.slicc-export-tmp`,{create:!0}),this.fileHandle=await this.dirHandle.getFileHandle(this.tempName,{create:!0}),this.writable=await this.fileHandle.createWritable()}async append(e,t){if(this.cancelled)throw Error(`OpfsSpool: already cancelled`);this.writable||await this.openWritable();let n=e.buffer instanceof ArrayBuffer?e:new Uint8Array(e),r=this.writeChain.then(async()=>{if(this.cancelled)throw Error(`OpfsSpool: already cancelled`);await this.writable.write(n),this.hasher.update(e),this.bytesWritten+=e.byteLength,this.chunkCount++});return this.writeChain=r.catch(()=>{}),r}async finalize(e,n,r){if(this.cancelled)throw new t(`transfer-corrupt`);if(await this.writeChain,this.chunkCount!==e||this.bytesWritten!==n||this.hasher.hex()!==r||!this.fileHandle)throw await this.cleanup(),new t(`transfer-corrupt`);try{await this.writable?.close(),this.writable=null;let e=await this.fileHandle.getFile(),t;return t=typeof e.stream==`function`?await new Response(e.stream(),{headers:{"Content-Type":`application/zip`}}).blob():new Blob([await e.arrayBuffer()],{type:`application/zip`}),await this.deleteTempFile(),t}catch{throw this.writable=null,await this.cleanup(),new t(`transfer-corrupt`)}}async cancel(){this.cancelled||(this.cancelled=!0,await this.cleanup())}async cleanup(){try{await this.writable?.close()}catch{}this.writable=null,await this.deleteTempFile()}async deleteTempFile(){try{await this.dirHandle?.removeEntry(this.tempName)}catch{}this.fileHandle=null}};function i(e){return typeof navigator<`u`&&typeof navigator.storage?.getDirectory==`function`?new r(e):new n}export{i as t};
@@ -1,2 +1,2 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/migration-BOJr1Ymq.js","assets/logger-dqckiMJt.js","assets/core-BXRpM6QF.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-BLdHbfdN.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/feature-flags-DDJdMcuw.js","assets/proxied-fetch-2sdz8vNB.js","assets/base64-ELzoYfwP.js","assets/api-endpoint-CNqFa-M3.js","assets/secret-topology-BuXN_6_0.js","assets/secrets-bridge-client-BD4AHTxg.js","assets/panel-rpc-accessor-B4BfPLSo.js","assets/image-markers-4eaAm9QS.js","assets/zip-stream-CTG4_nCE.js","assets/transcript-export-DTRO8k03.js","assets/renamed-providers-d0bAaa0l.js","assets/entries-ChYQ3OMf.js","assets/message-envelope-BPSSjJbW.js","assets/session-DawueMZM.js","assets/fs-BXZ_h13h.js","assets/sha256-DynDhwRL.js","assets/path-utils-DNJG-zQf.js","assets/types-D8gIX-W-.js","assets/bounded-walk-BjxKWNqp.js","assets/virtual-device-paths-D45tpPP6.js","assets/same-file-identity-DuEcSmPX.js","assets/mount-table-store-dY2IfQ5S.js","assets/db-CIXZItfi.js","assets/sessions-Cfs-Phmc.js","assets/types-CFfBWsH5.js","assets/store-DP4F8FwF.js","assets/snapshot-store-ZBIKeDuF.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-BLdHbfdN.js";import{A as t}from"./zip-stream-CTG4_nCE.js";import{t as n}from"./profile-export-deps-COkLr54M.js";var r=`slicc-fs`,i={redact:async e=>e};function a(e){let n=e.find(e=>t(e))?.jid;return e.map(e=>e.parentJid===void 0?{...e,parentJid:t(e)?null:n??null}:e)}function o(e){let t=e.units,r=t.find(e=>e.parentJid===null),a={collection:{listScoops:()=>t,isProcessing:()=>!1,getAgentMessages:()=>null,loadPersistedSessions:e.loadPersistedSessions,loadUiChatSessions:e.loadUiChatSessions,wait:e=>new Promise(t=>setTimeout(t,e))},knownSecrets:i,snapshotStore:{read:e.readSnapshot,write:async()=>{throw Error(`The upgrade exporter never writes into six.`)}},vfs:e.vfs,getActiveSessionInfo:()=>({id:r?.jid??`session`,title:r?.name??`SLICC`}),version:e.version};return{...n({serviceDeps:a,listUnits:()=>t,version:e.version}),storedSecretKinds:async()=>[]}}var s=`Some of SLICC 6's chat history couldn't be read. Nothing was moved; try again.`;async function c(t,n){let[{migrateConversations:r},{SessionStore:i},{SessionStore:a}]=await Promise.all([e(()=>import(`./migration-BOJr1Ymq.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])),e(()=>import(`./session-DawueMZM.js`).then(e=>e.t),__vite__mapDeps([20,3])),e(()=>import(`./chat-session-store-DAM8GRJ0.js`),[])]),o=new i,c=new a,l=0;try{({skipped:l}=await r({store:t,units:[...n],loadAgentSession:async e=>{let t=await o.load(e);return t?{messages:t.messages,createdAt:t.createdAt}:null},loadChatSession:async e=>{let t=await c.load(e);return t?{messages:t.messages,createdAt:t.createdAt}:null}}))}catch{throw Error(s)}if(l>0)throw Error(s)}async function l(t){let[{VirtualFS:n},i,{CanonicalSessionReader:s},{WorkUnitConversationStore:l},u]=await Promise.all([e(()=>import(`./fs-BXZ_h13h.js`).then(e=>e.t),__vite__mapDeps([21,3,1,4,22,23,24,25,26,27,28])),e(()=>import(`./db-CIXZItfi.js`).then(e=>e.n),__vite__mapDeps([29,3])),e(()=>import(`./sessions-Cfs-Phmc.js`).then(e=>e.n),__vite__mapDeps([30,3,4,15,16,17,1,31])),e(()=>import(`./store-DP4F8FwF.js`).then(e=>e.n),__vite__mapDeps([32,3,1,2,4,5,6,7,8,9,10,11,12,13,14,31,18,19])),e(()=>import(`./snapshot-store-ZBIKeDuF.js`).then(e=>e.i),__vite__mapDeps([33,3,4,22,16]))]),d=await n.create({dbName:r}),f=new l,p=a(Object.values(await i.getAllScoops()));await c(f,p);let m=new s(f);return o({vfs:d,units:p,loadPersistedSessions:()=>m.loadAgentSessions(),loadUiChatSessions:()=>m.loadChatSessions(),readSnapshot:e=>u.readSnapshot(d,e),version:t})}export{i as FRAME_KNOWN_SECRETS,s as SIX_HISTORY_UNREADABLE_ERROR,r as SIX_KERNEL_FS_DB_NAME,o as createUpgradeExportDeps,c as migrateLegacyConversations,l as openUpgradeExportDeps,a as restoredUnits};
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/migration-Bt7p5ngd.js","assets/logger-dqckiMJt.js","assets/core-BXRpM6QF.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/preload-helper-BLdHbfdN.js","assets/provider-env-CTOcDKrQ.js","assets/__vite-browser-external-5eBdwsFd.js","assets/feature-flags-DDJdMcuw.js","assets/proxied-fetch-2sdz8vNB.js","assets/base64-ELzoYfwP.js","assets/api-endpoint-CNqFa-M3.js","assets/secret-topology-BuXN_6_0.js","assets/secrets-bridge-client-BD4AHTxg.js","assets/panel-rpc-accessor-B4BfPLSo.js","assets/image-markers-4eaAm9QS.js","assets/zip-stream-DZF8sKOl.js","assets/transcript-export-DTRO8k03.js","assets/renamed-providers-d0bAaa0l.js","assets/entries-ChYQ3OMf.js","assets/message-envelope-BPSSjJbW.js","assets/session-DawueMZM.js","assets/fs-BXZ_h13h.js","assets/sha256-DynDhwRL.js","assets/path-utils-DNJG-zQf.js","assets/types-D8gIX-W-.js","assets/bounded-walk-BjxKWNqp.js","assets/virtual-device-paths-D45tpPP6.js","assets/same-file-identity-DuEcSmPX.js","assets/mount-table-store-dY2IfQ5S.js","assets/db-CIXZItfi.js","assets/sessions-Bd6uu3F5.js","assets/types-CFfBWsH5.js","assets/store-DP4F8FwF.js","assets/snapshot-store-DYh_oG7o.js"])))=>i.map(i=>d[i]);
2
+ import{t as e}from"./preload-helper-BLdHbfdN.js";import{M as t}from"./zip-stream-DZF8sKOl.js";import{t as n}from"./profile-export-deps-BE2w_fD3.js";var r=`slicc-fs`,i={redact:async e=>e};function a(e){let n=e.find(e=>t(e))?.jid;return e.map(e=>e.parentJid===void 0?{...e,parentJid:t(e)?null:n??null}:e)}function o(e){let t=e.units,r=t.find(e=>e.parentJid===null),a={collection:{listScoops:()=>t,isProcessing:()=>!1,getAgentMessages:()=>null,loadPersistedSessions:e.loadPersistedSessions,loadUiChatSessions:e.loadUiChatSessions,wait:e=>new Promise(t=>setTimeout(t,e))},knownSecrets:i,snapshotStore:{read:e.readSnapshot,write:async()=>{throw Error(`The upgrade exporter never writes into six.`)}},vfs:e.vfs,getActiveSessionInfo:()=>({id:r?.jid??`session`,title:r?.name??`SLICC`}),version:e.version};return{...n({serviceDeps:a,listUnits:()=>t,version:e.version}),storedSecretKinds:async()=>[]}}var s=`Some of SLICC 6's chat history couldn't be read. Nothing was moved; try again.`;async function c(t,n){let[{migrateConversations:r},{SessionStore:i},{SessionStore:a}]=await Promise.all([e(()=>import(`./migration-Bt7p5ngd.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19])),e(()=>import(`./session-DawueMZM.js`).then(e=>e.t),__vite__mapDeps([20,3])),e(()=>import(`./chat-session-store-DAM8GRJ0.js`),[])]),o=new i,c=new a,l=0;try{({skipped:l}=await r({store:t,units:[...n],loadAgentSession:async e=>{let t=await o.load(e);return t?{messages:t.messages,createdAt:t.createdAt}:null},loadChatSession:async e=>{let t=await c.load(e);return t?{messages:t.messages,createdAt:t.createdAt}:null}}))}catch{throw Error(s)}if(l>0)throw Error(s)}async function l(t){let[{VirtualFS:n},i,{CanonicalSessionReader:s},{WorkUnitConversationStore:l},u]=await Promise.all([e(()=>import(`./fs-BXZ_h13h.js`).then(e=>e.t),__vite__mapDeps([21,3,1,4,22,23,24,25,26,27,28])),e(()=>import(`./db-CIXZItfi.js`).then(e=>e.n),__vite__mapDeps([29,3])),e(()=>import(`./sessions-Bd6uu3F5.js`).then(e=>e.n),__vite__mapDeps([30,3,4,15,16,17,1,31])),e(()=>import(`./store-DP4F8FwF.js`).then(e=>e.n),__vite__mapDeps([32,3,1,2,4,5,6,7,8,9,10,11,12,13,14,31,18,19])),e(()=>import(`./snapshot-store-DYh_oG7o.js`).then(e=>e.i),__vite__mapDeps([33,3,4,22,16]))]),d=await n.create({dbName:r}),f=new l,p=a(Object.values(await i.getAllScoops()));await c(f,p);let m=new s(f);return o({vfs:d,units:p,loadPersistedSessions:()=>m.loadAgentSessions(),loadUiChatSessions:()=>m.loadChatSessions(),readSnapshot:e=>u.readSnapshot(d,e),version:t})}export{i as FRAME_KNOWN_SECRETS,s as SIX_HISTORY_UNREADABLE_ERROR,r as SIX_KERNEL_FS_DB_NAME,o as createUpgradeExportDeps,c as migrateLegacyConversations,l as openUpgradeExportDeps,a as restoredUnits};
@@ -0,0 +1,2 @@
1
+ import{n as e}from"./rolldown-runtime-DBVvNlSN.js";var t=/* @__PURE__ */ e({AGENT_SESSION_ARCHIVE_PREFIX:()=>i,DAMAGED_SNAPSHOT_START:()=>d,SESSIONS_DIR:()=>n,SESSIONS_INDEX_PATH:()=>r,carryCurationLedger:()=>s,frozenSessionRows:()=>o,isAgentSessionArchiveFilename:()=>a,isDamagedArchive:()=>p,parseFrozenArchive:()=>l,parseFrozenArchiveFrontmatter:()=>u,readDamagedSnapshots:()=>f,readSessionsIndex:()=>c});const n=`/sessions`,r=`/sessions/index.json`,i=`agent-`;function a(e){return e.startsWith(`agent-`)&&e.endsWith(`.md`)}function o(e){return e.filter(e=>{let t=e?.filename;return typeof t!=`string`||!a(t)})}function s(e,t={}){return e?{...e.curatedThrough?{curatedThrough:e.curatedThrough}:{},...e.memoryCuratedAt?{memoryCuratedAt:e.memoryCuratedAt}:{},...e.memoryFailed&&!t.dropFailure?{memoryFailed:e.memoryFailed}:{},...e.memorySkipped?{memorySkipped:!0}:{}}:{}}async function c(e){try{let t=await e.readFile(r,{encoding:`utf-8`}),n=typeof t==`string`?t:new TextDecoder().decode(t),i=JSON.parse(n);return Array.isArray(i)?o(i):[]}catch{return[]}}function l(e){let t=e,n=`Untitled`,r={},i=t.match(/^---\n([\s\S]*?)\n---\n+/);if(i){t=t.slice(i[0].length),Object.assign(r,m(i[1]));let e=i[1].match(/^title:\s*(.+?)\s*$/m);e&&(n=h(e[1]))}let a=t.match(/<!-- slicc:session-data\n([\s\S]*?)\n-->\n*/);if(a){try{let e=a[1].replace(/-- >/g,`-->`),t=JSON.parse(e);if(Array.isArray(t))return{title:n,messages:t,...r}}catch{}t=t.replace(/<!-- slicc:session-data\n[\s\S]*?\n-->\n*/,``)}return r.sidecar?{title:n,messages:[],...r}:(t=t.replace(/^#\s+[^\n]*\n+/,``),{title:n,messages:_(t),...r})}function u(e){let t=/^---\n([\s\S]*?)\n---\n/.exec(e)?.[1];return t===void 0?{}:m(t)}const d=`<!-- slicc:damaged-snapshot
2
+ `;function f(e){let t=[],n=/^---\n[\s\S]*?\n---\n\n/.exec(e);if(!n)return t;let r=/<!-- slicc:damaged-snapshot\n(.*)\n-->\n\n/y;r.lastIndex=n[0].length;for(let n=r.exec(e);n;n=r.exec(e))try{let e=JSON.parse(n[1]);typeof e==`string`&&t.push(e)}catch{}return t}function p(e,t=l(e)){return e.trim()===``||t.messages.length>0||t.sidecar?!1:!/<!-- slicc:session-data\n\[\]\n-->/.test(e)}function m(e){let t={},n=g(e,`cost`),r=g(e,`models`);n&&(t.cost=n),r&&(t.models=r);let i=e.match(/^cone:\s*(.+?)\s*$/m)?.[1];i&&(t.cone=i);let a=e.match(/^coneLabel:\s*(.+?)\s*$/m)?.[1];a&&(t.coneLabel=h(a)),/^memorySkipped:\s*true\s*$/m.test(e)&&(t.memorySkipped=!0),/^live:\s*true\s*$/m.test(e)&&(t.live=!0);let o=Number(e.match(/^liveThrough:\s*(\d+)\s*$/m)?.[1]);Number.isFinite(o)&&o>0&&(t.liveThrough=o);let s=Number(e.match(/^compactions:\s*(\d+)\s*$/m)?.[1]);Number.isFinite(s)&&s>0&&(t.compactions=s);let c=Number(e.match(/^curatedThrough:\s*(\d+)\s*$/m)?.[1]);Number.isFinite(c)&&c>0&&(t.curatedThrough=c);let l=e.match(/^id:\s*(\S+)\s*$/m)?.[1];l&&(t.id=l);let u=e.match(/^sessionId:\s*(\S+)\s*$/m)?.[1];u&&(t.sessionId=u);let d=e.match(/^attachmentsKey:\s*(\S+)\s*$/m)?.[1];d&&(t.attachmentsKey=d);let f=e.match(/^sidecar:\s*(\S+)\s*$/m)?.[1];return f&&(t.sidecar=f),t}function h(e){let t=e.trim();if(!t.startsWith(`"`))return t;try{let e=JSON.parse(t);if(typeof e==`string`)return e}catch{}return t.replace(/^"|"$/g,``)}function g(e,t){let n=RegExp(`^${t}:\\s*(.+?)\\s*$`,`m`).exec(e)?.[1];if(n)try{return JSON.parse(n)}catch{return}}function _(e){let t=[],n=/^## (User|Assistant)\s*\n/gm,r=[],i;for(;(i=n.exec(e))!==null;)r.push({role:i[1]===`User`?`user`:`assistant`,start:i.index,bodyStart:i.index+i[0].length});for(let n=0;n<r.length;n++){let i=n+1<r.length?r[n+1].start:e.length,a=e.slice(r[n].bodyStart,i).trim();t.push({id:`frozen-${n}`,role:r[n].role,content:a,timestamp:0})}return t}export{s as a,a as c,u as d,f,r as i,p as l,d as n,o,c as p,n as r,t as s,i as t,l as u};
@@ -0,0 +1,8 @@
1
+ import{n as e}from"./rolldown-runtime-DBVvNlSN.js";import{t}from"./logger-Cx6Y120U.js";import{t as n}from"./slugify-BYJ6QVAt.js";import{n as r,r as i,t as a}from"./archive-redaction-Bi6veJCs.js";import{c as o,d as s,i as c,n as l,o as u,r as d}from"./frozen-archive-format-7wcOWvsT.js";import{d as f}from"./kernel-worker-DjefE-EG.js";const p=/\uD83C\uDF99\uFE0F?/g,m=/\u25C1[\s\S]*?\u25B7/g;function h(e){return e.replace(m,``).replace(p,``).replace(/[ \t]+$/g,``).trimEnd()}function g(e){let t=``;for(let n of e){let e=n.role===`user`?`User`:`Assistant`,r=n.role===`user`?h(n.content):n.content;if(t+=`## ${e}\n${r}\n\n`,n.attachments?.length&&(t+=`Attachments:\n${n.attachments.map(e=>`- ${f(e)}`).join(`
2
+ `)}\n\n`),n.toolCalls)for(let e of n.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var _=/* @__PURE__ */ e({LIVE_SNAPSHOT_PREFIX:()=>b,SESSIONS_INDEX_LOCK:()=>K,ensureSessionsDir:()=>z,findLiveSnapshotEntry:()=>C,formatArchiveAsMarkdown:()=>F,heuristicTitle:()=>M,isDraftArchiveFilename:()=>x,isProvisionalSessionTitle:()=>A,liveSnapshotFilename:()=>S,readSessionsIndexForWrite:()=>B,readSessionsIndexState:()=>V,rebuildSessionsIndexFromArchives:()=>H,rewriteTranscriptPointers:()=>P,serializeIndexWrite:()=>J,sessionsIndexLockFor:()=>R,sessionsIndexPathFor:()=>L,shortId:()=>w,slugify:()=>T,stripEphemeral:()=>N,upsertSessionsIndexEntry:()=>Z,upsertSessionsIndexEntryUnlocked:()=>X,writeSessionsIndexUnlocked:()=>Y});const v=t(`frozen-archive-writer`),y=`
3
+ -->`,b=`live-`;function x(e){return e.startsWith(`pending-`)||e.startsWith(`live-`)}function S(e){return`${b}${T(e)}-${w()}.md`}function C(e,t){return e.find(e=>e.live===!0&&(e.cone??`cone`)===t)}function w(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}function T(e){return n(e,{maxLen:48,fallback:`session`})}const E=`untitled-session`,D=RegExp(`^(?:_Forwarded from .+?\\._\\s*)*(?:\\[@\\S+ (?:completed|idle|sudo-request|FAILED)\\b|\\[scoop_wait\\b|\\[(?:${[`Webhook Event`,`Sprinkle Event`,`File Watch Event`,`Session Reload`,`Navigate Event`,`Upgrade Event`,`Cherry Event`,`Workflow Event`,`Background Command`,`jshd Unit`,`Cron Event`,`Scoop Access Request`,`Preview Event`,`Preview event`,`Discovery Event`].join(`|`)})\\b|Preview tab (?:connected|disconnected) from |<context-summary\\b)`);function O(e){return e.slice(0,480).trim().replace(/\s+/g,` `).slice(0,240)}function k(e){let t=O(e);return t.length>0&&D.test(t)}function A(e){return e===E||k(e)}function j(e){return e.role!==`user`||!e.content?.trim()||e.source===`lick`||e.channel?!1:!k(e.content)}function M(e){let t=e.find(j);if(!t?.content)return E;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||E}function N(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),e.compaction&&(t.compaction=e.compaction),t})}function P(e,t,n){return!t||t===n?e:e.split(t).join(n)}function F(e){let t=a(),n={...e,title:r(e.title,t),messages:i(e.messages,t)},o=(n.cost?`cost: ${JSON.stringify(n.cost)}\n`:``)+(n.models?`models: ${JSON.stringify(n.models)}\n`:``),s=(n.cone?`cone: ${n.cone}\n`:``)+(n.coneLabel?`coneLabel: ${JSON.stringify(n.coneLabel)}\n`:``)+(n.memorySkipped?`memorySkipped: true
4
+ `:``)+(n.live?`live: true
5
+ `:``)+(n.live&&n.liveThrough?`liveThrough: ${n.liveThrough}\n`:``)+(n.live&&n.compactions?`compactions: ${n.compactions}\n`:``)+(n.curatedThrough?`curatedThrough: ${n.curatedThrough}\n`:``),c=`---\nid: ${n.id}\n`+(n.sessionId?`sessionId: ${n.sessionId}\n`:``)+(n.attachmentsKey?`attachmentsKey: ${n.attachmentsKey}\n`:``)+`title: ${JSON.stringify(n.title)}\nfrozenAt: ${n.frozenAt}\ncreatedAt: ${n.createdAt}\nupdatedAt: ${n.updatedAt}\nmessageCount: ${n.messageCount}\n`+o+s+`---
6
+
7
+ `,l=`# ${n.title}\n\n`,u=`<!-- slicc:session-data
8
+ ${JSON.stringify(N(n.messages)).replace(/-->/g,`-- >`)}${y}\n\n`;return c+I(n.damagedSnapshots,t)+u+l+g(n.messages)}function I(e,t){return e?.length?e.map(e=>{let n=JSON.stringify(r(e,t)).replace(/-->/g,`--\\u003e`);return`${l}${n}${y}\n\n`}).join(``):``}function L(e){return e===`/sessions`?c:`${e}/index.json`}function R(e){return e===`/sessions`?K:`slicc:sessions-index:${e}`}async function z(e,t=d){try{await e.mkdir(t,{recursive:!0})}catch{}}async function B(e,t=d){let n=await V(e,t);if(n.kind===`ok`)return n.entries;if(n.kind===`missing`)return[];let r=await H(e,t);return v.warn(`Sessions index corrupt; rebuilt from archives before writing`,{sessionsDir:t,archives:r.length}),r}async function V(e,t=d){let n;try{let r=await e.readFile(L(t),{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch(e){if(G(e))return{kind:`missing`};throw e}try{let e=JSON.parse(n);return Array.isArray(e)?{kind:`ok`,entries:u(e)}:{kind:`corrupt`}}catch{return{kind:`corrupt`}}}async function H(e,t=d){let n;try{n=(await e.readDir(t)).filter(e=>e.type===`file`&&e.name.endsWith(`.md`)&&!o(e.name)).map(e=>e.name)}catch(e){if(G(e))return[];throw e}let r=[];for(let i of n){let n;try{let r=await e.readFile(`${t}/${i}`,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch(e){if(G(e))continue;v.warn(`Archive unreadable during index rebuild; keeping a placeholder row`,{sessionsDir:t,filename:i,error:e instanceof Error?e.message:String(e)}),n=null}r.push(n===null?U(i):W(i,n))}return r.sort((e,t)=>t.frozenAt.localeCompare(e.frozenAt)),r}function U(e){return{filename:e,title:e,frozenAt:(/* @__PURE__ */ new Date(0)).toISOString(),messageCount:0}}function W(e,t){let n=t.slice(0,2e3),r=/^title:\s*"?(.*?)"?\s*$/m.exec(n)?.[1]??e,i=/^frozenAt:\s*"?(.*?)"?\s*$/m.exec(n)?.[1]??(/* @__PURE__ */ new Date(0)).toISOString(),a=Number(/^messageCount:\s*(\d+)\s*$/m.exec(n)?.[1]??0),o=s(t),c=e.startsWith(`pending-`)||e.startsWith(`live-`)&&!o.live;return{filename:e,title:r,frozenAt:i,messageCount:a,...o.cost?{cost:o.cost}:{},...o.models?{models:o.models}:{},...o.cone?{cone:o.cone}:{},...o.coneLabel?{coneLabel:o.coneLabel}:{},...o.memorySkipped?{memorySkipped:!0}:{},...o.live?{live:!0}:{},...o.live&&o.liveThrough?{liveThrough:o.liveThrough}:{},...o.live&&o.compactions?{compactions:o.compactions}:{},...o.curatedThrough?{curatedThrough:o.curatedThrough}:{},...o.sessionId?{sessionId:o.sessionId}:{},...c?{pendingEnrichment:!0}:{}}}function G(e){return e?.code===`ENOENT`}const K=`slicc:sessions-index`;let q=Promise.resolve();function J(e,t=K){let n=()=>{let n=globalThis.navigator?.locks;return typeof n?.request==`function`?n.request(t,()=>e()):e()},r=q.then(n,n);return q=r.then(()=>void 0,()=>void 0),r}function Y(e,t,n=d){return e.writeFile(L(n),JSON.stringify(t,null,2))}async function X(e,t,n=d,r){await Y(e,[t,...(r??await B(e,n)).filter(e=>e.filename!==t.filename)],n)}function Z(e,t){return J(()=>X(e,t))}export{M as a,S as c,R as d,X as f,_ as i,B as l,C as n,x as o,Y as p,F as r,A as s,z as t,J as u};
@@ -0,0 +1,8 @@
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{t}from"./logger-dqckiMJt.js";import{a as n,c as r}from"./dictation-priming-BHJC0hch.js";import{G as i,c as a,d as o,g as s,h as c,l,o as u,s as d,u as f,v as p}from"./zip-stream-DZF8sKOl.js";function m(e){let t=``;for(let i of e){let e=i.role===`user`?`User`:`Assistant`,a=i.role===`user`?n(i.content):i.content;if(t+=`## ${e}\n${a}\n\n`,i.attachments?.length&&(t+=`Attachments:\n${i.attachments.map(e=>`- ${r(e)}`).join(`
2
+ `)}\n\n`),i.toolCalls)for(let e of i.toolCalls)t+=`### Tool: ${e.name}\nInput: ${JSON.stringify(e.input,null,2)}\nResult: ${e.result??``}\n\n`}return t}var h=e({LIVE_SNAPSHOT_PREFIX:()=>y,SESSIONS_INDEX_LOCK:()=>G,ensureSessionsDir:()=>R,findLiveSnapshotEntry:()=>S,formatArchiveAsMarkdown:()=>P,heuristicTitle:()=>j,isDraftArchiveFilename:()=>b,isProvisionalSessionTitle:()=>k,liveSnapshotFilename:()=>x,readSessionsIndexForWrite:()=>z,readSessionsIndexState:()=>B,rebuildSessionsIndexFromArchives:()=>V,rewriteTranscriptPointers:()=>N,serializeIndexWrite:()=>q,sessionsIndexLockFor:()=>L,sessionsIndexPathFor:()=>I,shortId:()=>C,slugify:()=>w,stripEphemeral:()=>M,upsertSessionsIndexEntry:()=>X,upsertSessionsIndexEntryUnlocked:()=>Y,writeSessionsIndexUnlocked:()=>J}),g=t(`frozen-archive-writer`),_=`<!-- slicc:session-data
3
+ `,v=`
4
+ -->`,y=`live-`;function b(e){return e.startsWith(`pending-`)||e.startsWith(`live-`)}function x(e){return`${y}${w(e)}-${C()}.md`}function S(e,t){return e.find(e=>e.live===!0&&(e.cone??`cone`)===t)}function C(){return`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,6)}`}function w(e){return i(e,{maxLen:48,fallback:`session`})}var T=`untitled-session`,E=RegExp(`^(?:_Forwarded from .+?\\._\\s*)*(?:\\[@\\S+ (?:completed|idle|sudo-request|FAILED)\\b|\\[scoop_wait\\b|\\[(?:${[`Webhook Event`,`Sprinkle Event`,`File Watch Event`,`Session Reload`,`Navigate Event`,`Upgrade Event`,`Cherry Event`,`Workflow Event`,`Background Command`,`jshd Unit`,`Cron Event`,`Scoop Access Request`,`Preview Event`,`Preview event`,`Discovery Event`].join(`|`)})\\b|Preview tab (?:connected|disconnected) from |<context-summary\\b)`);function D(e){return e.slice(0,480).trim().replace(/\s+/g,` `).slice(0,240)}function O(e){let t=D(e);return t.length>0&&E.test(t)}function k(e){return e===T||O(e)}function A(e){return e.role!==`user`||!e.content?.trim()||e.source===`lick`||e.channel?!1:!O(e.content)}function j(e){let t=e.find(A);if(!t?.content)return T;let n=t.content.trim().replace(/\s+/g,` `);return n.length>60?`${n.slice(0,60)}…`:n||T}function M(e){return e.map(e=>{let t={id:e.id,role:e.role,content:e.content,timestamp:e.timestamp};return e.attachments?.length&&(t.attachments=e.attachments),e.toolCalls?.length&&(t.toolCalls=e.toolCalls.map(e=>({id:e.id,name:e.name,input:e.input,...e.result===void 0?{}:{result:e.result},...e.isError?{isError:e.isError}:{}}))),e.source&&(t.source=e.source),e.channel&&(t.channel=e.channel),e.compaction&&(t.compaction=e.compaction),t})}function N(e,t,n){return!t||t===n?e:e.split(t).join(n)}function P(e){let t=u(),n={...e,title:d(e.title,t),messages:a(e.messages,t)},r=(n.cost?`cost: ${JSON.stringify(n.cost)}\n`:``)+(n.models?`models: ${JSON.stringify(n.models)}\n`:``),i=(n.cone?`cone: ${n.cone}\n`:``)+(n.coneLabel?`coneLabel: ${JSON.stringify(n.coneLabel)}\n`:``)+(n.memorySkipped?`memorySkipped: true
5
+ `:``)+(n.live?`live: true
6
+ `:``)+(n.live&&n.liveThrough?`liveThrough: ${n.liveThrough}\n`:``)+(n.live&&n.compactions?`compactions: ${n.compactions}\n`:``)+(n.curatedThrough?`curatedThrough: ${n.curatedThrough}\n`:``),o=`---\nid: ${n.id}\n`+(n.sessionId?`sessionId: ${n.sessionId}\n`:``)+(n.attachmentsKey?`attachmentsKey: ${n.attachmentsKey}\n`:``)+`title: ${JSON.stringify(n.title)}\nfrozenAt: ${n.frozenAt}\ncreatedAt: ${n.createdAt}\nupdatedAt: ${n.updatedAt}\nmessageCount: ${n.messageCount}\n`+r+i+`---
7
+
8
+ `,s=`# ${n.title}\n\n`,c=`${_}${JSON.stringify(M(n.messages)).replace(/-->/g,`-- >`)}${v}\n\n`;return o+F(n.damagedSnapshots,t)+c+s+m(n.messages)}function F(e,t){return e?.length?e.map(e=>{let n=JSON.stringify(d(e,t)).replace(/-->/g,`--\\u003e`);return`${l}${n}${v}\n\n`}).join(``):``}function I(e){return e===`/sessions`?o:`${e}/index.json`}function L(e){return e===`/sessions`?G:`slicc:sessions-index:${e}`}async function R(e,t=f){try{await e.mkdir(t,{recursive:!0})}catch{}}async function z(e,t=f){let n=await B(e,t);if(n.kind===`ok`)return n.entries;if(n.kind===`missing`)return[];let r=await V(e,t);return g.warn(`Sessions index corrupt; rebuilt from archives before writing`,{sessionsDir:t,archives:r.length}),r}async function B(e,t=f){let n;try{let r=await e.readFile(I(t),{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch(e){if(W(e))return{kind:`missing`};throw e}try{let e=JSON.parse(n);return Array.isArray(e)?{kind:`ok`,entries:c(e)}:{kind:`corrupt`}}catch{return{kind:`corrupt`}}}async function V(e,t=f){let n;try{n=(await e.readDir(t)).filter(e=>e.type===`file`&&e.name.endsWith(`.md`)&&!s(e.name)).map(e=>e.name)}catch(e){if(W(e))return[];throw e}let r=[];for(let i of n){let n;try{let r=await e.readFile(`${t}/${i}`,{encoding:`utf-8`});n=typeof r==`string`?r:new TextDecoder().decode(r)}catch(e){if(W(e))continue;g.warn(`Archive unreadable during index rebuild; keeping a placeholder row`,{sessionsDir:t,filename:i,error:e instanceof Error?e.message:String(e)}),n=null}r.push(n===null?H(i):U(i,n))}return r.sort((e,t)=>t.frozenAt.localeCompare(e.frozenAt)),r}function H(e){return{filename:e,title:e,frozenAt:new Date(0).toISOString(),messageCount:0}}function U(e,t){let n=t.slice(0,2e3),r=/^title:\s*"?(.*?)"?\s*$/m.exec(n)?.[1]??e,i=/^frozenAt:\s*"?(.*?)"?\s*$/m.exec(n)?.[1]??new Date(0).toISOString(),a=Number(/^messageCount:\s*(\d+)\s*$/m.exec(n)?.[1]??0),o=p(t),s=e.startsWith(`pending-`)||e.startsWith(`live-`)&&!o.live;return{filename:e,title:r,frozenAt:i,messageCount:a,...o.cost?{cost:o.cost}:{},...o.models?{models:o.models}:{},...o.cone?{cone:o.cone}:{},...o.coneLabel?{coneLabel:o.coneLabel}:{},...o.memorySkipped?{memorySkipped:!0}:{},...o.live?{live:!0}:{},...o.live&&o.liveThrough?{liveThrough:o.liveThrough}:{},...o.live&&o.compactions?{compactions:o.compactions}:{},...o.curatedThrough?{curatedThrough:o.curatedThrough}:{},...o.sessionId?{sessionId:o.sessionId}:{},...s?{pendingEnrichment:!0}:{}}}function W(e){return e?.code===`ENOENT`}var G=`slicc:sessions-index`,K=Promise.resolve();function q(e,t=G){let n=()=>{let n=globalThis.navigator?.locks;return typeof n?.request==`function`?n.request(t,()=>e()):e()},r=K.then(n,n);return K=r.then(()=>void 0,()=>void 0),r}function J(e,t,n=f){return e.writeFile(I(n),JSON.stringify(t,null,2))}async function Y(e,t,n=f,r){await J(e,[t,...(r??await z(e,n)).filter(e=>e.filename!==t.filename)],n)}function X(e,t){return q(()=>Y(e,t))}export{b as a,N as c,w as d,M as f,m as h,j as i,q as l,J as m,P as n,z as o,X as p,h as r,B as s,S as t,C as u};
@@ -1 +1 @@
1
- import{t as e}from"./logger-dqckiMJt.js";import{h as t,l as n}from"./zip-stream-CTG4_nCE.js";import{l as r,m as i,o as a}from"./frozen-archive-writer-CzcOQ52P.js";import{a as o,i as s,o as c,s as l,t as u}from"./frozen-session-identity-aLal2Qr5.js";import{a as d}from"./session-jsonl-B-bZJP2W.js";import{r as f}from"./snapshot-store-ZBIKeDuF.js";import{c as p,o as m,t as h}from"./live-session-curation-B_PQTT4w.js";var g=`/sessions/.search-index.json`;async function _(e,t={}){try{await e.rm(g)}catch(e){if(t.strict&&e?.code!==`ENOENT`)throw e}}new TextEncoder;var v=e(`frozen-session-delete`),y=`${n}/attachments`,b=/^\d+-\d+\.md$/;function x(e){return e?.code===`ENOENT`}function S(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function C(e){return e.slice(0,-3)}async function w(e,t,n,r=!1){try{await e.rm(t,r?{recursive:!0}:void 0)}catch(e){x(e)||n.push(S(t,e))}}function T(e,t){return e.sessionId?l(t,e):C(e.filename)}async function E(e,t,n){let r;try{r=(await e.readDir(h)).map(e=>e.name)}catch(e){return x(e)||n.push(S(h,e)),[]}let i=`${t}-`;return r.filter(e=>e.startsWith(i)&&b.test(e.slice(i.length))).map(e=>`${h}/${e}`)}async function D(e,t,r){if(!s(t.filename))return[`unsafe archive name: ${String(t.filename)}`];let i=[],a=T(t,[...r,t]),o=a?await E(e,a,i):[];for(let t of o)await w(e,t,i);for(let r of[...o,`${n}/${t.filename}`])await w(e,p(r),i),await w(e,m(r),i,!0);return i}async function O(e,r,i){let a=new Set([`${y}/${C(r.filename)}`]),s=`${n}/${r.filename}`;try{let n=await e.readFile(s,{encoding:`utf-8`}),r=typeof n==`string`?n:new TextDecoder().decode(n),{attachmentsKey:i}=t(r);o(i)&&a.add(`${y}/${i}`)}catch(e){x(e)||i.push(S(s,e))}return[...a]}async function k(e,t,r){if(!s(t.filename))return[`unsafe archive name: ${String(t.filename)}`];let i=[],a=await O(e,t,i),o=l([...r,t],t);if(o)try{await f(e,o)}catch(e){i.push(S(`${n}/data/${o}`,e))}i.push(...await D(e,t,r));for(let t of a)await w(e,t,i,!0);return i.length>0?i:(await w(e,d(t.filename),i),await w(e,`${n}/${t.filename}`,i),i)}function A(e,t){return r(async()=>{let n=await c(e);if(n===null)return{kind:`unknown`};let r=u(n,t);return r?{kind:`present`,row:r}:{kind:`absent`,entries:n}})}function j(e,t){return r(async()=>{let n=await a(e),r=u(n,t);if(!r)return{status:`not-found`};if(r.live)return{status:`live`};if(!s(r.filename))return{status:`unsafe`};let o=n.filter(e=>e!==r),c=await k(e,r,o);try{await _(e,{strict:!0})}catch(e){c.push(S(`/sessions/.search-index.json`,e))}if(c.length>0)return v.warn(`Frozen session delete incomplete — row kept for a retry`,{filename:r.filename,errors:c}),{status:`failed`,errors:c};await i(e,o),await _(e);try{await e.flush()}catch{}return v.info(`Frozen session deleted`,{filename:r.filename}),{status:`deleted`}})}export{j as deleteFrozenSession,A as findIndexedFrozenRow,D as removeCuratorByproducts};
1
+ import{t as e}from"./logger-dqckiMJt.js";import{_ as t,u as n}from"./zip-stream-DZF8sKOl.js";import{l as r,m as i,o as a}from"./frozen-archive-writer-d8c53vzV.js";import{a as o,i as s,o as c,s as l,t as u}from"./frozen-session-identity-D__hHRHh.js";import{a as d}from"./session-jsonl-CJO46TfW.js";import{r as f}from"./snapshot-store-DYh_oG7o.js";import{c as p,o as m,t as h}from"./live-session-curation-B60pJiw_.js";var g=`/sessions/.search-index.json`;async function _(e,t={}){try{await e.rm(g)}catch(e){if(t.strict&&e?.code!==`ENOENT`)throw e}}new TextEncoder;var v=e(`frozen-session-delete`),y=`${n}/attachments`,b=/^\d+-\d+\.md$/;function x(e){return e?.code===`ENOENT`}function S(e,t){return`${e}: ${t instanceof Error?t.message:String(t)}`}function C(e){return e.slice(0,-3)}async function w(e,t,n,r=!1){try{await e.rm(t,r?{recursive:!0}:void 0)}catch(e){x(e)||n.push(S(t,e))}}function T(e,t){return e.sessionId?l(t,e):C(e.filename)}async function E(e,t,n){let r;try{r=(await e.readDir(h)).map(e=>e.name)}catch(e){return x(e)||n.push(S(h,e)),[]}let i=`${t}-`;return r.filter(e=>e.startsWith(i)&&b.test(e.slice(i.length))).map(e=>`${h}/${e}`)}async function D(e,t,r){if(!s(t.filename))return[`unsafe archive name: ${String(t.filename)}`];let i=[],a=T(t,[...r,t]),o=a?await E(e,a,i):[];for(let t of o)await w(e,t,i);for(let r of[...o,`${n}/${t.filename}`])await w(e,p(r),i),await w(e,m(r),i,!0);return i}async function O(e,r,i){let a=new Set([`${y}/${C(r.filename)}`]),s=`${n}/${r.filename}`;try{let n=await e.readFile(s,{encoding:`utf-8`}),r=typeof n==`string`?n:new TextDecoder().decode(n),{attachmentsKey:i}=t(r);o(i)&&a.add(`${y}/${i}`)}catch(e){x(e)||i.push(S(s,e))}return[...a]}async function k(e,t,r){if(!s(t.filename))return[`unsafe archive name: ${String(t.filename)}`];let i=[],a=await O(e,t,i),o=l([...r,t],t);if(o)try{await f(e,o)}catch(e){i.push(S(`${n}/data/${o}`,e))}i.push(...await D(e,t,r));for(let t of a)await w(e,t,i,!0);return i.length>0?i:(await w(e,d(t.filename),i),await w(e,`${n}/${t.filename}`,i),i)}function A(e,t){return r(async()=>{let n=await c(e);if(n===null)return{kind:`unknown`};let r=u(n,t);return r?{kind:`present`,row:r}:{kind:`absent`,entries:n}})}function j(e,t){return r(async()=>{let n=await a(e),r=u(n,t);if(!r)return{status:`not-found`};if(r.live)return{status:`live`};if(!s(r.filename))return{status:`unsafe`};let o=n.filter(e=>e!==r),c=await k(e,r,o);try{await _(e,{strict:!0})}catch(e){c.push(S(`/sessions/.search-index.json`,e))}if(c.length>0)return v.warn(`Frozen session delete incomplete — row kept for a retry`,{filename:r.filename,errors:c}),{status:`failed`,errors:c};await i(e,o),await _(e);try{await e.flush()}catch{}return v.info(`Frozen session deleted`,{filename:r.filename}),{status:`deleted`}})}export{j as deleteFrozenSession,A as findIndexedFrozenRow,D as removeCuratorByproducts};
@@ -1 +1 @@
1
- import{a as e,r as t,s as n}from"./frozen-archive-format-kVMmNEWf.js";import{o as r}from"./frozen-archive-writer-xPoeaUZf.js";const i=/^[A-Za-z0-9._-]+$/;function a(e){return typeof e==`string`&&i.test(e)&&!e.startsWith(`.`)&&!e.includes(`..`)}function o(e){return a(e)&&e.endsWith(`.md`)&&e.length>3&&!n(e)}function s(e){return a(e)}function c(e){return e.startsWith(`session-`)}function l(e,t){let n=t.sessionId;if(s(n)&&!c(n))return e.some(e=>e!==t&&e.sessionId===n)?void 0:n}function u(e,t){let n=e.find(e=>e.filename===t.filename);if(n||!t.sessionId||!r(t.filename))return n;let i=e.filter(e=>e.sessionId===t.sessionId),a=i.length===1?i[0]:void 0;return a&&l(e,a)===t.sessionId?a:void 0}async function d(n){try{let r=await n.readFile(t,{encoding:`utf-8`}),i=JSON.parse(typeof r==`string`?r:new TextDecoder().decode(r));return Array.isArray(i)?e(i):null}catch{return null}}export{u as findFrozenRow,c as isChatKeyId,o as isSafeArchiveFilename,s as isSafeSessionKey,d as readIndexForPresence,l as trustedSessionId};
1
+ import{c as e,i as t,o as n}from"./frozen-archive-format-7wcOWvsT.js";import{o as r}from"./frozen-archive-writer-YCOD1fqb.js";const i=/^[A-Za-z0-9._-]+$/;function a(e){return typeof e==`string`&&i.test(e)&&!e.startsWith(`.`)&&!e.includes(`..`)}function o(t){return a(t)&&t.endsWith(`.md`)&&t.length>3&&!e(t)}function s(e){return a(e)}function c(e){return e.startsWith(`session-`)}function l(e,t){let n=t.sessionId;if(s(n)&&!c(n))return e.some(e=>e!==t&&e.sessionId===n)?void 0:n}function u(e,t){let n=e.find(e=>e.filename===t.filename);if(n||!t.sessionId||!r(t.filename))return n;let i=e.filter(e=>e.sessionId===t.sessionId),a=i.length===1?i[0]:void 0;return a&&l(e,a)===t.sessionId?a:void 0}async function d(e){try{let r=await e.readFile(t,{encoding:`utf-8`}),i=JSON.parse(typeof r==`string`?r:new TextDecoder().decode(r));return Array.isArray(i)?n(i):null}catch{return null}}export{u as findFrozenRow,c as isChatKeyId,o as isSafeArchiveFilename,s as isSafeSessionKey,d as readIndexForPresence,l as trustedSessionId};
@@ -1 +1 @@
1
- import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{m as t,p as n,u as r}from"./zip-stream-CTG4_nCE.js";import{a as i}from"./frozen-archive-writer-CzcOQ52P.js";var a=e({findFrozenRow:()=>f,isChatKeyId:()=>u,isSafeArchiveFilename:()=>c,isSafeSessionKey:()=>l,readIndexForPresence:()=>p,trustedSessionId:()=>d}),o=/^[A-Za-z0-9._-]+$/;function s(e){return typeof e==`string`&&o.test(e)&&!e.startsWith(`.`)&&!e.includes(`..`)}function c(e){return s(e)&&e.endsWith(`.md`)&&e.length>3&&!t(e)}function l(e){return s(e)}function u(e){return e.startsWith(`session-`)}function d(e,t){let n=t.sessionId;if(l(n)&&!u(n))return e.some(e=>e!==t&&e.sessionId===n)?void 0:n}function f(e,t){let n=e.find(e=>e.filename===t.filename);if(n||!t.sessionId||!i(t.filename))return n;let r=e.filter(e=>e.sessionId===t.sessionId),a=r.length===1?r[0]:void 0;return a&&d(e,a)===t.sessionId?a:void 0}async function p(e){try{let t=await e.readFile(r,{encoding:`utf-8`}),i=JSON.parse(typeof t==`string`?t:new TextDecoder().decode(t));return Array.isArray(i)?n(i):null}catch{return null}}export{l as a,c as i,a as n,p as o,u as r,d as s,f as t};
1
+ import{n as e}from"./rolldown-runtime-Dd_uD5pT.js";import{d as t,g as n,h as r}from"./zip-stream-DZF8sKOl.js";import{a as i}from"./frozen-archive-writer-d8c53vzV.js";var a=e({findFrozenRow:()=>f,isChatKeyId:()=>u,isSafeArchiveFilename:()=>c,isSafeSessionKey:()=>l,readIndexForPresence:()=>p,trustedSessionId:()=>d}),o=/^[A-Za-z0-9._-]+$/;function s(e){return typeof e==`string`&&o.test(e)&&!e.startsWith(`.`)&&!e.includes(`..`)}function c(e){return s(e)&&e.endsWith(`.md`)&&e.length>3&&!n(e)}function l(e){return s(e)}function u(e){return e.startsWith(`session-`)}function d(e,t){let n=t.sessionId;if(l(n)&&!u(n))return e.some(e=>e!==t&&e.sessionId===n)?void 0:n}function f(e,t){let n=e.find(e=>e.filename===t.filename);if(n||!t.sessionId||!i(t.filename))return n;let r=e.filter(e=>e.sessionId===t.sessionId),a=r.length===1?r[0]:void 0;return a&&d(e,a)===t.sessionId?a:void 0}async function p(e){try{let n=await e.readFile(t,{encoding:`utf-8`}),i=JSON.parse(typeof n==`string`?n:new TextDecoder().decode(n));return Array.isArray(i)?r(i):null}catch{return null}}export{l as a,c as i,a as n,p as o,u as r,d as s,f as t};
@@ -1 +1 @@
1
- import{t as e}from"./logger-Cx6Y120U.js";import{E as t,a as n,s as r}from"./record-DTUQtot0.js";import{a as i,i as a,n as o,r as s,t as c}from"./gelatiere-constants-BYJlhm8R.js";import{o as l}from"./kernel-worker-Dt9hDwn2.js";import{GELATIERE_BASE_ALLOWED_COMMANDS as u}from"./gelatiere-store-GVNdni5w.js";const d=e(`gelatiere-unit`),f=[`You are the gelatiere: the resident advisor of this SLICC installation, a persistent scoop no cone owns. The user cannot message you directly and you never message them.`,"You act only when a lick arrives — a `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` (a session ended, or someone ran `gelatiere run`), or a direct message asking for a pass.","On every such lick: `cat /shared/GELATIERE.md` and follow it exactly. It ends with `gelatiere suggest <file>` and `gelatiere deliver`; those two commands are how your work reaches the cones. Do not install skills, do not edit memory files, do not message cones any other way.",`Reply in one short line per pass (what you looked at, how many suggestions landed). Your own history is compacted while you idle; keep durable notes in /shared/.gelatiere/notes.md, not in your replies.`].join(` `);var p=class extends Error{holder;constructor(e){super(`folder "${c}" is held by ${e.parentJid===null?`cone`:`scoop`} ${e.jid} — drop it, then run \`gelatiere init\``),this.holder=e,this.name=`GelatiereFolderTakenError`}};function m(e){return e.find(i)}function h(e){return e.listCronTasks().find(e=>e.name===`gelatiere-nightly`&&e.scoop===`gelatiere`)}function g(e){return{folder:e.folder,name:e.name,jid:e.jid}}const _=[`/sessions/`,`/shared/`,`/workspace/`,`/home/`,`/cones/`],v=[`/shared/.gelatiere/`];async function y(e,t,n){if(!n||b(t.config?.allowedCommands??[],n))return`unchanged`;if(e.getScoopTabState(t.jid)?.status===`processing`)return d.info(`gelatiere allow-list edit deferred: the unit is mid-pass`,{jid:t.jid}),`deferred`;let r={...t,config:{...t.config,allowedCommands:[...n]}};try{await e.persistScoop(r)}catch(n){throw await e.persistScoop(t).catch(()=>{}),n}return await e.reinitLiveUnit(r.jid),d.info(`gelatiere allow-list updated from GELATIERE.md`,{jid:r.jid,commands:n.length}),`updated`}function b(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}async function x(e,t){let i=e.getScoops(),a=m(i);if(a){await e.syncGelatiereModel();let n=await y(e,a,t);return{folder:a.folder,jid:a.jid,created:!1,allowList:n}}let o=i.find(e=>e.folder===c);if(o)throw new p(o);let h=n(i),g=h?r(h):void 0,b={...l({parentId:s,name:c,folder:c,notifyOnComplete:!1,config:{systemPromptAppend:f,visiblePaths:[..._],writablePaths:[...v],allowedCommands:[...t??u]}}),assistantLabel:c,...g?{model:g}:{}};return await e.registerScoop(b),d.info(`gelatiere unit registered`,{jid:b.jid}),{folder:b.folder,jid:b.jid,created:!0}}function S(e,n){return{ensureUnit:t=>x(e,t),unregisterOwned:async()=>{for(let e of n.listCronTasks())e.name===`gelatiere-nightly`&&await n.deleteCronTask(e.id);let t=e.getScoops().filter(e=>e.parentJid===s);for(let n of t)await e.unregisterScoop(n.jid);return t.map(e=>e.jid)},unit:()=>{let t=m(e.getScoops());return t?g(t):void 0},unitAllowedCommands:()=>m(e.getScoops())?.config?.allowedCommands,roots:()=>t(e.getScoops()).map(g),nightly:()=>{let e=h(n);return e?{id:e.id,cron:e.cron}:void 0},ensureNightly:async e=>{let t=h(n);if(t?.cron===e)return{id:t.id,cron:t.cron,created:!1};t&&await n.deleteCronTask(t.id);let r=await n.createCronTask(o,e,c);return{id:r.id,cron:r.cron,created:!0}},dropNightly:async()=>{let e=h(n);return e?n.deleteCronTask(e.id):!1},lick:(e,t)=>{n.emitEvent({type:`sprinkle`,sprinkleName:a,targetScoop:e,timestamp:(/* @__PURE__ */ new Date()).toISOString(),body:t})}}}function C(e,t=globalThis){t.__slicc_gelatiere=e}async function w(e,t,n){try{let r=await e.ensureUnit(n),i=await e.ensureNightly(t);d.info(`gelatiere ready`,{jid:r.jid,created:r.created,allowList:r.allowList,nightly:i.cron,nightlyCreated:i.created})}catch(e){d.warn(`gelatiere boot failed`,{error:e instanceof Error?e.message:String(e)})}}async function T(e){try{await e.dropNightly()&&d.info(`gelatiere nightly removed (memory-v2 is off)`)}catch(e){d.warn(`gelatiere halt failed`,{error:e instanceof Error?e.message:String(e)})}}export{w as bootGelatiere,S as createGelatiereSeam,T as haltGelatiere,C as publishGelatiereSeam};
1
+ import{t as e}from"./logger-Cx6Y120U.js";import{E as t,a as n,s as r}from"./record-DTUQtot0.js";import{a as i,i as a,n as o,r as s,t as c}from"./gelatiere-constants-BYJlhm8R.js";import{o as l}from"./kernel-worker-DjefE-EG.js";import{GELATIERE_BASE_ALLOWED_COMMANDS as u}from"./gelatiere-store-GVNdni5w.js";const d=e(`gelatiere-unit`),f=[`You are the gelatiere: the resident advisor of this SLICC installation, a persistent scoop no cone owns. The user cannot message you directly and you never message them.`,"You act only when a lick arrives — a `[Cron Event: gelatiere-nightly]`, a `[Sprinkle Event: gelatiere]` (a session ended, or someone ran `gelatiere run`), or a direct message asking for a pass.","On every such lick: `cat /shared/GELATIERE.md` and follow it exactly. It ends with `gelatiere suggest <file>` and `gelatiere deliver`; those two commands are how your work reaches the cones. Do not install skills, do not edit memory files, do not message cones any other way.",`Reply in one short line per pass (what you looked at, how many suggestions landed). Your own history is compacted while you idle; keep durable notes in /shared/.gelatiere/notes.md, not in your replies.`].join(` `);var p=class extends Error{holder;constructor(e){super(`folder "${c}" is held by ${e.parentJid===null?`cone`:`scoop`} ${e.jid} — drop it, then run \`gelatiere init\``),this.holder=e,this.name=`GelatiereFolderTakenError`}};function m(e){return e.find(i)}function h(e){return e.listCronTasks().find(e=>e.name===`gelatiere-nightly`&&e.scoop===`gelatiere`)}function g(e){return{folder:e.folder,name:e.name,jid:e.jid}}const _=[`/sessions/`,`/shared/`,`/workspace/`,`/home/`,`/cones/`],v=[`/shared/.gelatiere/`];async function y(e,t,n){if(!n||b(t.config?.allowedCommands??[],n))return`unchanged`;if(e.getScoopTabState(t.jid)?.status===`processing`)return d.info(`gelatiere allow-list edit deferred: the unit is mid-pass`,{jid:t.jid}),`deferred`;let r={...t,config:{...t.config,allowedCommands:[...n]}};try{await e.persistScoop(r)}catch(n){throw await e.persistScoop(t).catch(()=>{}),n}return await e.reinitLiveUnit(r.jid),d.info(`gelatiere allow-list updated from GELATIERE.md`,{jid:r.jid,commands:n.length}),`updated`}function b(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}async function x(e,t){let i=e.getScoops(),a=m(i);if(a){await e.syncGelatiereModel();let n=await y(e,a,t);return{folder:a.folder,jid:a.jid,created:!1,allowList:n}}let o=i.find(e=>e.folder===c);if(o)throw new p(o);let h=n(i),g=h?r(h):void 0,b={...l({parentId:s,name:c,folder:c,notifyOnComplete:!1,config:{systemPromptAppend:f,visiblePaths:[..._],writablePaths:[...v],allowedCommands:[...t??u]}}),assistantLabel:c,...g?{model:g}:{}};return await e.registerScoop(b),d.info(`gelatiere unit registered`,{jid:b.jid}),{folder:b.folder,jid:b.jid,created:!0}}function S(e,n){return{ensureUnit:t=>x(e,t),unregisterOwned:async()=>{for(let e of n.listCronTasks())e.name===`gelatiere-nightly`&&await n.deleteCronTask(e.id);let t=e.getScoops().filter(e=>e.parentJid===s);for(let n of t)await e.unregisterScoop(n.jid);return t.map(e=>e.jid)},unit:()=>{let t=m(e.getScoops());return t?g(t):void 0},unitAllowedCommands:()=>m(e.getScoops())?.config?.allowedCommands,roots:()=>t(e.getScoops()).map(g),nightly:()=>{let e=h(n);return e?{id:e.id,cron:e.cron}:void 0},ensureNightly:async e=>{let t=h(n);if(t?.cron===e)return{id:t.id,cron:t.cron,created:!1};t&&await n.deleteCronTask(t.id);let r=await n.createCronTask(o,e,c);return{id:r.id,cron:r.cron,created:!0}},dropNightly:async()=>{let e=h(n);return e?n.deleteCronTask(e.id):!1},lick:(e,t)=>{n.emitEvent({type:`sprinkle`,sprinkleName:a,targetScoop:e,timestamp:(/* @__PURE__ */ new Date()).toISOString(),body:t})}}}function C(e,t=globalThis){t.__slicc_gelatiere=e}async function w(e,t,n){try{let r=await e.ensureUnit(n),i=await e.ensureNightly(t);d.info(`gelatiere ready`,{jid:r.jid,created:r.created,allowList:r.allowList,nightly:i.cron,nightlyCreated:i.created})}catch(e){d.warn(`gelatiere boot failed`,{error:e instanceof Error?e.message:String(e)})}}async function T(e){try{await e.dropNightly()&&d.info(`gelatiere nightly removed (memory-v2 is off)`)}catch(e){d.warn(`gelatiere halt failed`,{error:e instanceof Error?e.message:String(e)})}}export{w as bootGelatiere,S as createGelatiereSeam,T as haltGelatiere,C as publishGelatiereSeam};
@@ -1,2 +1,2 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/fs-BXZ_h13h.js","assets/rolldown-runtime-Dd_uD5pT.js","assets/logger-dqckiMJt.js","assets/preload-helper-BLdHbfdN.js","assets/sha256-DynDhwRL.js","assets/path-utils-DNJG-zQf.js","assets/types-D8gIX-W-.js","assets/bounded-walk-BjxKWNqp.js","assets/virtual-device-paths-D45tpPP6.js","assets/same-file-identity-DuEcSmPX.js","assets/mount-table-store-dY2IfQ5S.js","assets/git-config-BcArLFNE.js"])))=>i.map(i=>d[i]);
2
- import{t as e}from"./preload-helper-BLdHbfdN.js";import"./proxied-fetch-2sdz8vNB.js";import{K as t,c as n,u as r}from"./account-store-BHc5rtOw.js";import{a as i}from"./api-endpoint-CNqFa-M3.js";import{C as a,f as o}from"./main-CUlZbhkv.js";import{r as s,t as c}from"./silent-renew-backoff-CdEigXOa.js";import{getOAuthPageOrigin as l,resolveOAuthDelegation as u}from"./oauth-service-DBNa_4eS.js";import{t as d}from"./global-db-CbuLl-zx.js";import{n as f,r as p,t as m}from"./bridge-token-required-DMk2va9k.js";var h={clientId:``,scopes:`repo,read:user,user:email`};function g(){try{let e=localStorage.getItem(a);if(e)return e.replace(/\/$/,``)}catch{}return o}function _(e){return{access_token:e.access_token,token_type:e.token_type,scope:e.scope,refresh_token:e.refresh_token,expires_in:e.expires_in}}async function v(e){let t;try{t=await e.json()}catch{throw Error(`Token exchange failed (HTTP ${e.status}): non-JSON response`)}if(!e.ok&&e.status!==200){let n=t.error_description??t.error??`Token exchange failed (HTTP ${e.status})`;throw Error(n)}if(t.error){let e=t.error_description??t.error;throw Error(e)}return _(t)}async function y(e){let t=`${g()}/oauth/token`;return v(await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}))}async function b(e){if(f())throw new m;let t=`${g()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,refresh_token:e.refreshToken})});if(n.status===403&&typeof n.clone==`function`){let e=await n.clone().text();if(p(n.status,e))throw new m}return v(n)}async function x(e){let t=`${g()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}var S=Object.assign({"/packages/webapp/providers/github-config.json":h})[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`},C=null,w=null;function T(e){let{isExtension:t,isConnectMode:n,workerBaseUrl:r,pageOrigin:i,pageHref:a,bridgeApiBaseUrl:o,extensionId:c,nonce:l}=e;if(t)return{redirectUri:`${r}/auth/callback`,state:{source:`extension`,extensionId:c,path:`/github`,nonce:l}};if(e.delegated)return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`opener`,path:`/auth/callback`,nonce:l}};if(n){let e=i??``;if(/^https?:\/\/(localhost|127\.0\.0\.1):\d+$/.test(e)){let t=parseInt(new URL(a??e).port||`8790`,10);return{redirectUri:`${r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${r}/auth/callback`,state:{source:`remote`,origin:e,path:`/auth/callback`,nonce:l}}}if(o&&a&&s(a)){let t=null;try{let e=new URL(o);(e.hostname===`localhost`||e.hostname===`127.0.0.1`)&&(t=parseInt(e.port||`5710`,10))}catch{t=null}if(t!==null&&!Number.isNaN(t))return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${e.runtimeWorkerBaseUrl??i??``}/auth/callback`,state:{port:parseInt(new URL(a??i??`http://localhost:5710`).port||`5710`,10),path:`/auth/callback`,nonce:l}}}async function E(){if(C)return C;if(D){try{let e=await fetch(`${g()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,C}}catch{}return S.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,t.trayWorkerBaseUrl&&(w=t.trayWorkerBaseUrl),C;if(t.trayWorkerBaseUrl){w=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,C}}}}catch{}return S.clientId}var D=typeof globalThis<`u`&&typeof globalThis.chrome?.runtime?.id==`string`;function O(){return r().find(e=>e.providerId===`github`)}function k(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function A(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function j(e,t){return`${e}+${t}@users.noreply.github.com`}async function M(t){try{let{VirtualFS:n}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await(await n.create({dbName:d})).writeFile(`/workspace/.git/github-token`,t),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function N(){try{let{VirtualFS:t}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await(await t.create({dbName:d})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function P(e){let t=await n(`github`);if(t.maskedValue){await M(t.maskedValue);return}e?.clearOnFailure&&await N()}async function F(t){if(t.login&&t.id!==void 0)try{let{VirtualFS:n}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),{readGlobalGitConfigValue:r,writeGlobalGitConfigValue:i}=await e(async()=>{let{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}=await import(`./git-config-BcArLFNE.js`);return{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}},__vite__mapDeps([11,6,0,1,2,3,4,5,7,8,9,10])),a=await n.create({dbName:d}),o=t.name||t.login,s=j(t.id,t.login);!await r(a,`user.name`)&&o&&await i(a,`user.name`,o),await r(a,`user.email`)||await i(a,`user.email`,s)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}var I=c();async function L(){try{let e=O();if(!e?.refreshToken)return null;let n=await b({provider:`github`,refreshToken:e.refreshToken});return await t({providerId:`github`,accessToken:n.access_token,refreshToken:n.refresh_token,tokenExpiresAt:n.expires_in?Date.now()+n.expires_in*1e3:void 0,userName:e.userName,userAvatar:e.userAvatar,scopes:n.scope??e.scopes}),await P({clearOnFailure:!0}),n.access_token}catch(e){return console.warn(`[github] Silent renewal failed:`,e instanceof Error?e.message:String(e)),null}}var R=1e4;async function z(){let e=O()?.accessToken;if(!e)return{status:`unknown`,detail:`no stored token`};try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`},signal:AbortSignal.timeout(R)});if(t.ok){let e=await t.json().catch(()=>({}));return{status:`accepted`,userName:e.name||e.login}}return B(t)}catch(e){return{status:`unknown`,detail:e instanceof Error?e.message:String(e)}}}function B(e){let t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:``}`;return e.status===401?{status:`rejected`,detail:t}:e.status===403&&V(e)?{status:`unknown`,detail:`${t} (rate limited)`}:{status:`unknown`,detail:t}}function V(e){return e.headers.get(`x-ratelimit-remaining`)===`0`||e.headers.has(`retry-after`)}async function H(){await P()}async function U(){let e=O();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);if((e.tokenExpiresAt??1/0)-Date.now()>6e4)return await H(),e.accessToken;let t=await I.run(()=>L());if(t)return t;let n=O();if((n?.tokenExpiresAt??1/0)-Date.now()>0&&n?.accessToken)return await H(),n.accessToken;throw Error(`GitHub session expired — please log in again`)}var W={id:`github`,name:`GitHub`,description:"Sign in with GitHub for git authentication (push/pull/clone) and the `oauth-token github` shell command. Does not expose LLM models — use the GitHub Copilot provider for those.",requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`],getModelIds:()=>[],onOAuthLogin:async(e,n,r)=>{let a=await E();if(!a)throw Error(`GitHub OAuth not configured — no client ID available`);let o=r?.scopes??S.scopes,s=D?null:await l(),c=!D&&await u(),d=crypto.randomUUID(),f=D?chrome.runtime.id:``,{redirectUri:p,state:m}=T({isExtension:D,isConnectMode:!!globalThis.__slicc_connect_mode,workerBaseUrl:g(),runtimeWorkerBaseUrl:w,pageOrigin:s?.origin??null,pageHref:s?.href??null,bridgeApiBaseUrl:i(),delegated:c,extensionId:f,nonce:d}),h=btoa(JSON.stringify(m)),_=d,v=new URLSearchParams({client_id:a,scope:o,redirect_uri:p});h&&v.set(`state`,h);let b=await e(`https://github.com/login/oauth/authorize?${v}`);if(!b)return;if(_)try{if(new URL(b).searchParams.get(`nonce`)!==_){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let x=k(b);if(!x){console.error(`[github] Could not extract authorization code from redirect URL`);return}let C=await y({provider:`github`,code:x,redirectUri:p}),O=await A(C.access_token);await t({providerId:`github`,accessToken:C.access_token,refreshToken:C.refresh_token,tokenExpiresAt:C.expires_in?Date.now()+C.expires_in*1e3:void 0,userName:O.name,userAvatar:O.avatar,scopes:C.scope}),await P({clearOnFailure:!0}),await F(O),n()},onSilentRenew:L,onValidateToken:z,getValidAccessToken:U,onOAuthLogout:async()=>{let e=O();e?.accessToken&&await x({provider:`github`,accessToken:e.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await N(),await t({providerId:`github`,accessToken:``})},getOAuthLogoutUrl:e=>`https://github.com/logout`};export{j as buildNoreplyEmail,W as config,k as extractCodeFromUrl,U as getValidAccessToken,T as resolveGithubOAuthRedirect,F as syncGitIdentityFromGitHub};
2
+ import{t as e}from"./preload-helper-BLdHbfdN.js";import"./proxied-fetch-2sdz8vNB.js";import{K as t,c as n,u as r}from"./account-store-DcnsleVv.js";import{a as i}from"./api-endpoint-CNqFa-M3.js";import{C as a,f as o}from"./main-CILyCK1y.js";import{r as s,t as c}from"./silent-renew-backoff-BP12WS2t.js";import{getOAuthPageOrigin as l,resolveOAuthDelegation as u}from"./oauth-service-DBNa_4eS.js";import{t as d}from"./global-db-CbuLl-zx.js";import{n as f,r as p,t as m}from"./bridge-token-required-DMk2va9k.js";var h={clientId:``,scopes:`repo,read:user,user:email`};function g(){try{let e=localStorage.getItem(a);if(e)return e.replace(/\/$/,``)}catch{}return o}function _(e){return{access_token:e.access_token,token_type:e.token_type,scope:e.scope,refresh_token:e.refresh_token,expires_in:e.expires_in}}async function v(e){let t;try{t=await e.json()}catch{throw Error(`Token exchange failed (HTTP ${e.status}): non-JSON response`)}if(!e.ok&&e.status!==200){let n=t.error_description??t.error??`Token exchange failed (HTTP ${e.status})`;throw Error(n)}if(t.error){let e=t.error_description??t.error;throw Error(e)}return _(t)}async function y(e){let t=`${g()}/oauth/token`;return v(await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}))}async function b(e){if(f())throw new m;let t=`${g()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,refresh_token:e.refreshToken})});if(n.status===403&&typeof n.clone==`function`){let e=await n.clone().text();if(p(n.status,e))throw new m}return v(n)}async function x(e){let t=`${g()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}var S=Object.assign({"/packages/webapp/providers/github-config.json":h})[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`},C=null,w=null;function T(e){let{isExtension:t,isConnectMode:n,workerBaseUrl:r,pageOrigin:i,pageHref:a,bridgeApiBaseUrl:o,extensionId:c,nonce:l}=e;if(t)return{redirectUri:`${r}/auth/callback`,state:{source:`extension`,extensionId:c,path:`/github`,nonce:l}};if(e.delegated)return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`opener`,path:`/auth/callback`,nonce:l}};if(n){let e=i??``;if(/^https?:\/\/(localhost|127\.0\.0\.1):\d+$/.test(e)){let t=parseInt(new URL(a??e).port||`8790`,10);return{redirectUri:`${r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${r}/auth/callback`,state:{source:`remote`,origin:e,path:`/auth/callback`,nonce:l}}}if(o&&a&&s(a)){let t=null;try{let e=new URL(o);(e.hostname===`localhost`||e.hostname===`127.0.0.1`)&&(t=parseInt(e.port||`5710`,10))}catch{t=null}if(t!==null&&!Number.isNaN(t))return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${e.runtimeWorkerBaseUrl??i??``}/auth/callback`,state:{port:parseInt(new URL(a??i??`http://localhost:5710`).port||`5710`,10),path:`/auth/callback`,nonce:l}}}async function E(){if(C)return C;if(D){try{let e=await fetch(`${g()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,C}}catch{}return S.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,t.trayWorkerBaseUrl&&(w=t.trayWorkerBaseUrl),C;if(t.trayWorkerBaseUrl){w=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return C=t.oauth.github,C}}}}catch{}return S.clientId}var D=typeof globalThis<`u`&&typeof globalThis.chrome?.runtime?.id==`string`;function O(){return r().find(e=>e.providerId===`github`)}function k(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function A(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function j(e,t){return`${e}+${t}@users.noreply.github.com`}async function M(t){try{let{VirtualFS:n}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await(await n.create({dbName:d})).writeFile(`/workspace/.git/github-token`,t),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function N(){try{let{VirtualFS:t}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]));await(await t.create({dbName:d})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function P(e){let t=await n(`github`);if(t.maskedValue){await M(t.maskedValue);return}e?.clearOnFailure&&await N()}async function F(t){if(t.login&&t.id!==void 0)try{let{VirtualFS:n}=await e(async()=>{let{VirtualFS:e}=await import(`./fs-BXZ_h13h.js`).then(e=>e.t);return{VirtualFS:e}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10])),{readGlobalGitConfigValue:r,writeGlobalGitConfigValue:i}=await e(async()=>{let{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}=await import(`./git-config-BcArLFNE.js`);return{readGlobalGitConfigValue:e,writeGlobalGitConfigValue:t}},__vite__mapDeps([11,6,0,1,2,3,4,5,7,8,9,10])),a=await n.create({dbName:d}),o=t.name||t.login,s=j(t.id,t.login);!await r(a,`user.name`)&&o&&await i(a,`user.name`,o),await r(a,`user.email`)||await i(a,`user.email`,s)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}var I=c();async function L(){try{let e=O();if(!e?.refreshToken)return null;let n=await b({provider:`github`,refreshToken:e.refreshToken});return await t({providerId:`github`,accessToken:n.access_token,refreshToken:n.refresh_token,tokenExpiresAt:n.expires_in?Date.now()+n.expires_in*1e3:void 0,userName:e.userName,userAvatar:e.userAvatar,scopes:n.scope??e.scopes}),await P({clearOnFailure:!0}),n.access_token}catch(e){return console.warn(`[github] Silent renewal failed:`,e instanceof Error?e.message:String(e)),null}}var R=1e4;async function z(){let e=O()?.accessToken;if(!e)return{status:`unknown`,detail:`no stored token`};try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`},signal:AbortSignal.timeout(R)});if(t.ok){let e=await t.json().catch(()=>({}));return{status:`accepted`,userName:e.name||e.login}}return B(t)}catch(e){return{status:`unknown`,detail:e instanceof Error?e.message:String(e)}}}function B(e){let t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:``}`;return e.status===401?{status:`rejected`,detail:t}:e.status===403&&V(e)?{status:`unknown`,detail:`${t} (rate limited)`}:{status:`unknown`,detail:t}}function V(e){return e.headers.get(`x-ratelimit-remaining`)===`0`||e.headers.has(`retry-after`)}async function H(){await P()}async function U(){let e=O();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);if((e.tokenExpiresAt??1/0)-Date.now()>6e4)return await H(),e.accessToken;let t=await I.run(()=>L());if(t)return t;let n=O();if((n?.tokenExpiresAt??1/0)-Date.now()>0&&n?.accessToken)return await H(),n.accessToken;throw Error(`GitHub session expired — please log in again`)}var W={id:`github`,name:`GitHub`,description:"Sign in with GitHub for git authentication (push/pull/clone) and the `oauth-token github` shell command. Does not expose LLM models — use the GitHub Copilot provider for those.",requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`],getModelIds:()=>[],onOAuthLogin:async(e,n,r)=>{let a=await E();if(!a)throw Error(`GitHub OAuth not configured — no client ID available`);let o=r?.scopes??S.scopes,s=D?null:await l(),c=!D&&await u(),d=crypto.randomUUID(),f=D?chrome.runtime.id:``,{redirectUri:p,state:m}=T({isExtension:D,isConnectMode:!!globalThis.__slicc_connect_mode,workerBaseUrl:g(),runtimeWorkerBaseUrl:w,pageOrigin:s?.origin??null,pageHref:s?.href??null,bridgeApiBaseUrl:i(),delegated:c,extensionId:f,nonce:d}),h=btoa(JSON.stringify(m)),_=d,v=new URLSearchParams({client_id:a,scope:o,redirect_uri:p});h&&v.set(`state`,h);let b=await e(`https://github.com/login/oauth/authorize?${v}`);if(!b)return;if(_)try{if(new URL(b).searchParams.get(`nonce`)!==_){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let x=k(b);if(!x){console.error(`[github] Could not extract authorization code from redirect URL`);return}let C=await y({provider:`github`,code:x,redirectUri:p}),O=await A(C.access_token);await t({providerId:`github`,accessToken:C.access_token,refreshToken:C.refresh_token,tokenExpiresAt:C.expires_in?Date.now()+C.expires_in*1e3:void 0,userName:O.name,userAvatar:O.avatar,scopes:C.scope}),await P({clearOnFailure:!0}),await F(O),n()},onSilentRenew:L,onValidateToken:z,getValidAccessToken:U,onOAuthLogout:async()=>{let e=O();e?.accessToken&&await x({provider:`github`,accessToken:e.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await N(),await t({providerId:`github`,accessToken:``})},getOAuthLogoutUrl:e=>`https://github.com/logout`};export{j as buildNoreplyEmail,W as config,k as extractCodeFromUrl,U as getValidAccessToken,T as resolveGithubOAuthRedirect,F as syncGitIdentityFromGitHub};
@@ -1 +1 @@
1
- import{_ as e,n as t,r as n}from"./account-store-BzvHM2hU.js";import"./proxied-fetch-1DfC_94U.js";import{o as r}from"./api-endpoint-D8lUKmPu.js";import{n as i}from"./tray-storage-keys-DbThbnIh.js";import{t as a}from"./tray-runtime-config-BvQtvIxB.js";import{t as o}from"./global-db-Bfy_NRtT.js";import{r as s,t as c}from"./silent-renew-backoff-Dmz3DJHb.js";import{getOAuthPageOrigin as l,resolveOAuthDelegation as u}from"./oauth-service-a7hhn6wa.js";import"./provider-settings-CCOdU49C.js";import{n as d,r as f,t as p}from"./bridge-token-required-BYgoMwr7.js";var m={clientId:``,scopes:`repo,read:user,user:email`};function h(){try{let e=localStorage.getItem(i);if(e)return e.replace(/\/$/,``)}catch{}return a}function g(e){return{access_token:e.access_token,token_type:e.token_type,scope:e.scope,refresh_token:e.refresh_token,expires_in:e.expires_in}}async function _(e){let t;try{t=await e.json()}catch{throw Error(`Token exchange failed (HTTP ${e.status}): non-JSON response`)}if(!e.ok&&e.status!==200){let n=t.error_description??t.error??`Token exchange failed (HTTP ${e.status})`;throw Error(n)}if(t.error){let e=t.error_description??t.error;throw Error(e)}return g(t)}async function v(e){let t=`${h()}/oauth/token`;return _(await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}))}async function y(e){if(d())throw new p;let t=`${h()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,refresh_token:e.refreshToken})});if(n.status===403&&typeof n.clone==`function`){let e=await n.clone().text();if(f(n.status,e))throw new p}return _(n)}async function b(e){let t=`${h()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}const x=(/* @__PURE__ */ Object.assign({"/packages/webapp/providers/github-config.json":m}))[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`};let S=null,C=null;function w(e){let{isExtension:t,isConnectMode:n,workerBaseUrl:r,pageOrigin:i,pageHref:a,bridgeApiBaseUrl:o,extensionId:c,nonce:l}=e;if(t)return{redirectUri:`${r}/auth/callback`,state:{source:`extension`,extensionId:c,path:`/github`,nonce:l}};if(e.delegated)return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`opener`,path:`/auth/callback`,nonce:l}};if(n){let e=i??``;if(/^https?:\/\/(localhost|127\.0\.0\.1):\d+$/.test(e)){let t=parseInt(new URL(a??e).port||`8790`,10);return{redirectUri:`${r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${r}/auth/callback`,state:{source:`remote`,origin:e,path:`/auth/callback`,nonce:l}}}if(o&&a&&s(a)){let t=null;try{let e=new URL(o);(e.hostname===`localhost`||e.hostname===`127.0.0.1`)&&(t=parseInt(e.port||`5710`,10))}catch{t=null}if(t!==null&&!Number.isNaN(t))return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${e.runtimeWorkerBaseUrl??i??``}/auth/callback`,state:{port:parseInt(new URL(a??i??`http://localhost:5710`).port||`5710`,10),path:`/auth/callback`,nonce:l}}}async function T(){if(S)return S;if(E){try{let e=await fetch(`${h()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,S}}catch{}return x.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,t.trayWorkerBaseUrl&&(C=t.trayWorkerBaseUrl),S;if(t.trayWorkerBaseUrl){C=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,S}}}}catch{}return x.clientId}const E=typeof globalThis<`u`&&typeof globalThis.chrome?.runtime?.id==`string`;function D(){return n().find(e=>e.providerId===`github`)}function O(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function k(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function A(e,t){return`${e}+${t}@users.noreply.github.com`}async function j(e){try{let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t);await(await t.create({dbName:o})).writeFile(`/workspace/.git/github-token`,e),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function M(){try{let{VirtualFS:e}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t);await(await e.create({dbName:o})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function N(e){let n=await t(`github`);if(n.maskedValue){await j(n.maskedValue);return}e?.clearOnFailure&&await M()}async function P(e){if(e.login&&e.id!==void 0)try{let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t),{readGlobalGitConfigValue:n,writeGlobalGitConfigValue:r}=await import(`./git-config-BGMPIzAV.js`).then(e=>e.n),i=await t.create({dbName:o}),a=e.name||e.login,s=A(e.id,e.login);!await n(i,`user.name`)&&a&&await r(i,`user.name`,a),await n(i,`user.email`)||await r(i,`user.email`,s)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}const F=c();async function I(){try{let t=D();if(!t?.refreshToken)return null;let n=await y({provider:`github`,refreshToken:t.refreshToken});return await e({providerId:`github`,accessToken:n.access_token,refreshToken:n.refresh_token,tokenExpiresAt:n.expires_in?Date.now()+n.expires_in*1e3:void 0,userName:t.userName,userAvatar:t.userAvatar,scopes:n.scope??t.scopes}),await N({clearOnFailure:!0}),n.access_token}catch(e){return console.warn(`[github] Silent renewal failed:`,e instanceof Error?e.message:String(e)),null}}async function L(){let e=D()?.accessToken;if(!e)return{status:`unknown`,detail:`no stored token`};try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`},signal:AbortSignal.timeout(1e4)});if(t.ok){let e=await t.json().catch(()=>({}));return{status:`accepted`,userName:e.name||e.login}}return R(t)}catch(e){return{status:`unknown`,detail:e instanceof Error?e.message:String(e)}}}function R(e){let t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:``}`;return e.status===401?{status:`rejected`,detail:t}:e.status===403&&z(e)?{status:`unknown`,detail:`${t} (rate limited)`}:{status:`unknown`,detail:t}}function z(e){return e.headers.get(`x-ratelimit-remaining`)===`0`||e.headers.has(`retry-after`)}async function B(){await N()}async function V(){let e=D();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);if((e.tokenExpiresAt??1/0)-Date.now()>6e4)return await B(),e.accessToken;let t=await F.run(()=>I());if(t)return t;let n=D();if((n?.tokenExpiresAt??1/0)-Date.now()>0&&n?.accessToken)return await B(),n.accessToken;throw Error(`GitHub session expired — please log in again`)}const H={id:`github`,name:`GitHub`,description:"Sign in with GitHub for git authentication (push/pull/clone) and the `oauth-token github` shell command. Does not expose LLM models — use the GitHub Copilot provider for those.",requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`],getModelIds:()=>[],onOAuthLogin:async(t,n,i)=>{let a=await T();if(!a)throw Error(`GitHub OAuth not configured — no client ID available`);let o=i?.scopes??x.scopes,s=E?null:await l(),c=!E&&await u(),d=crypto.randomUUID(),f=E?chrome.runtime.id:``,{redirectUri:p,state:m}=w({isExtension:E,isConnectMode:!!globalThis.__slicc_connect_mode,workerBaseUrl:h(),runtimeWorkerBaseUrl:C,pageOrigin:s?.origin??null,pageHref:s?.href??null,bridgeApiBaseUrl:r(),delegated:c,extensionId:f,nonce:d}),g=btoa(JSON.stringify(m)),_=d,y=new URLSearchParams({client_id:a,scope:o,redirect_uri:p});g&&y.set(`state`,g);let b=await t(`https://github.com/login/oauth/authorize?${y}`);if(!b)return;if(_)try{if(new URL(b).searchParams.get(`nonce`)!==_){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let S=O(b);if(!S){console.error(`[github] Could not extract authorization code from redirect URL`);return}let D=await v({provider:`github`,code:S,redirectUri:p}),A=await k(D.access_token);await e({providerId:`github`,accessToken:D.access_token,refreshToken:D.refresh_token,tokenExpiresAt:D.expires_in?Date.now()+D.expires_in*1e3:void 0,userName:A.name,userAvatar:A.avatar,scopes:D.scope}),await N({clearOnFailure:!0}),await P(A),n()},onSilentRenew:I,onValidateToken:L,getValidAccessToken:V,onOAuthLogout:async()=>{let t=D();t?.accessToken&&await b({provider:`github`,accessToken:t.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await M(),await e({providerId:`github`,accessToken:``})},getOAuthLogoutUrl:e=>`https://github.com/logout`};export{A as buildNoreplyEmail,H as config,O as extractCodeFromUrl,V as getValidAccessToken,w as resolveGithubOAuthRedirect,P as syncGitIdentityFromGitHub};
1
+ import{_ as e,n as t,r as n}from"./account-store-C6um0YPW.js";import"./proxied-fetch-1DfC_94U.js";import{o as r}from"./api-endpoint-D8lUKmPu.js";import{n as i}from"./tray-storage-keys-DbThbnIh.js";import{t as a}from"./tray-runtime-config-BvQtvIxB.js";import{t as o}from"./global-db-Bfy_NRtT.js";import{r as s,t as c}from"./silent-renew-backoff-Dmz3DJHb.js";import{getOAuthPageOrigin as l,resolveOAuthDelegation as u}from"./oauth-service-a7hhn6wa.js";import"./provider-settings-cjhn5KhF.js";import{n as d,r as f,t as p}from"./bridge-token-required-BYgoMwr7.js";var m={clientId:``,scopes:`repo,read:user,user:email`};function h(){try{let e=localStorage.getItem(i);if(e)return e.replace(/\/$/,``)}catch{}return a}function g(e){return{access_token:e.access_token,token_type:e.token_type,scope:e.scope,refresh_token:e.refresh_token,expires_in:e.expires_in}}async function _(e){let t;try{t=await e.json()}catch{throw Error(`Token exchange failed (HTTP ${e.status}): non-JSON response`)}if(!e.ok&&e.status!==200){let n=t.error_description??t.error??`Token exchange failed (HTTP ${e.status})`;throw Error(n)}if(t.error){let e=t.error_description??t.error;throw Error(e)}return g(t)}async function v(e){let t=`${h()}/oauth/token`;return _(await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,code:e.code,redirect_uri:e.redirectUri})}))}async function y(e){if(d())throw new p;let t=`${h()}/oauth/token`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,refresh_token:e.refreshToken})});if(n.status===403&&typeof n.clone==`function`){let e=await n.clone().text();if(f(n.status,e))throw new p}return _(n)}async function b(e){let t=`${h()}/oauth/revoke`,n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({provider:e.provider,access_token:e.accessToken})});if(!(n.status===204||n.ok)){if(n.status===400)try{if((await n.json()).error===`unsupported`)return}catch{}throw Error(`Token revocation failed (HTTP ${n.status})`)}}const x=(/* @__PURE__ */ Object.assign({"/packages/webapp/providers/github-config.json":m}))[`/packages/webapp/providers/github-config.json`]??{clientId:``,scopes:`repo,read:user,user:email`};let S=null,C=null;function w(e){let{isExtension:t,isConnectMode:n,workerBaseUrl:r,pageOrigin:i,pageHref:a,bridgeApiBaseUrl:o,extensionId:c,nonce:l}=e;if(t)return{redirectUri:`${r}/auth/callback`,state:{source:`extension`,extensionId:c,path:`/github`,nonce:l}};if(e.delegated)return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`opener`,path:`/auth/callback`,nonce:l}};if(n){let e=i??``;if(/^https?:\/\/(localhost|127\.0\.0\.1):\d+$/.test(e)){let t=parseInt(new URL(a??e).port||`8790`,10);return{redirectUri:`${r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${r}/auth/callback`,state:{source:`remote`,origin:e,path:`/auth/callback`,nonce:l}}}if(o&&a&&s(a)){let t=null;try{let e=new URL(o);(e.hostname===`localhost`||e.hostname===`127.0.0.1`)&&(t=parseInt(e.port||`5710`,10))}catch{t=null}if(t!==null&&!Number.isNaN(t))return{redirectUri:`${e.runtimeWorkerBaseUrl??r}/auth/callback`,state:{source:`local`,port:t,path:`/auth/callback`,nonce:l}}}return{redirectUri:`${e.runtimeWorkerBaseUrl??i??``}/auth/callback`,state:{port:parseInt(new URL(a??i??`http://localhost:5710`).port||`5710`,10),path:`/auth/callback`,nonce:l}}}async function T(){if(S)return S;if(E){try{let e=await fetch(`${h()}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,S}}catch{}return x.clientId}try{let e=await fetch(`/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,t.trayWorkerBaseUrl&&(C=t.trayWorkerBaseUrl),S;if(t.trayWorkerBaseUrl){C=t.trayWorkerBaseUrl;let e=await fetch(`${t.trayWorkerBaseUrl}/api/runtime-config`);if(e.ok){let t=await e.json();if(t.oauth?.github)return S=t.oauth.github,S}}}}catch{}return x.clientId}const E=typeof globalThis<`u`&&typeof globalThis.chrome?.runtime?.id==`string`;function D(){return n().find(e=>e.providerId===`github`)}function O(e){try{return new URL(e).searchParams.get(`code`)}catch{return null}}async function k(e){try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`}});if(t.ok){let e=await t.json();return{name:e.name||e.login,avatar:e.avatar_url,login:e.login,id:e.id}}}catch(e){console.warn(`[github] Failed to fetch user profile:`,e instanceof Error?e.message:String(e))}return{}}function A(e,t){return`${e}+${t}@users.noreply.github.com`}async function j(e){try{let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t);await(await t.create({dbName:o})).writeFile(`/workspace/.git/github-token`,e),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch(e){console.warn(`[github] Failed to write git token:`,e instanceof Error?e.message:String(e))}}async function M(){try{let{VirtualFS:e}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t);await(await e.create({dbName:o})).rm(`/workspace/.git/github-token`),typeof window<`u`&&window.dispatchEvent(new CustomEvent(`github-token-changed`))}catch{}}async function N(e){let n=await t(`github`);if(n.maskedValue){await j(n.maskedValue);return}e?.clearOnFailure&&await M()}async function P(e){if(e.login&&e.id!==void 0)try{let{VirtualFS:t}=await import(`./fs-BhKa6zpE.js`).then(e=>e.t),{readGlobalGitConfigValue:n,writeGlobalGitConfigValue:r}=await import(`./git-config-BGMPIzAV.js`).then(e=>e.n),i=await t.create({dbName:o}),a=e.name||e.login,s=A(e.id,e.login);!await n(i,`user.name`)&&a&&await r(i,`user.name`,a),await n(i,`user.email`)||await r(i,`user.email`,s)}catch(e){console.warn(`[github] Failed to seed git identity:`,e instanceof Error?e.message:String(e))}}const F=c();async function I(){try{let t=D();if(!t?.refreshToken)return null;let n=await y({provider:`github`,refreshToken:t.refreshToken});return await e({providerId:`github`,accessToken:n.access_token,refreshToken:n.refresh_token,tokenExpiresAt:n.expires_in?Date.now()+n.expires_in*1e3:void 0,userName:t.userName,userAvatar:t.userAvatar,scopes:n.scope??t.scopes}),await N({clearOnFailure:!0}),n.access_token}catch(e){return console.warn(`[github] Silent renewal failed:`,e instanceof Error?e.message:String(e)),null}}async function L(){let e=D()?.accessToken;if(!e)return{status:`unknown`,detail:`no stored token`};try{let t=await fetch(`https://api.github.com/user`,{headers:{Authorization:`Bearer ${e}`,Accept:`application/vnd.github+json`},signal:AbortSignal.timeout(1e4)});if(t.ok){let e=await t.json().catch(()=>({}));return{status:`accepted`,userName:e.name||e.login}}return R(t)}catch(e){return{status:`unknown`,detail:e instanceof Error?e.message:String(e)}}}function R(e){let t=`HTTP ${e.status}${e.statusText?` ${e.statusText}`:``}`;return e.status===401?{status:`rejected`,detail:t}:e.status===403&&z(e)?{status:`unknown`,detail:`${t} (rate limited)`}:{status:`unknown`,detail:t}}function z(e){return e.headers.get(`x-ratelimit-remaining`)===`0`||e.headers.has(`retry-after`)}async function B(){await N()}async function V(){let e=D();if(!e?.accessToken)throw Error(`Not logged in to GitHub — please log in first`);if((e.tokenExpiresAt??1/0)-Date.now()>6e4)return await B(),e.accessToken;let t=await F.run(()=>I());if(t)return t;let n=D();if((n?.tokenExpiresAt??1/0)-Date.now()>0&&n?.accessToken)return await B(),n.accessToken;throw Error(`GitHub session expired — please log in again`)}const H={id:`github`,name:`GitHub`,description:"Sign in with GitHub for git authentication (push/pull/clone) and the `oauth-token github` shell command. Does not expose LLM models — use the GitHub Copilot provider for those.",requiresApiKey:!1,requiresBaseUrl:!1,isOAuth:!0,oauthTokenDomains:[`github.com`,`*.github.com`,`api.github.com`,`raw.githubusercontent.com`],getModelIds:()=>[],onOAuthLogin:async(t,n,i)=>{let a=await T();if(!a)throw Error(`GitHub OAuth not configured — no client ID available`);let o=i?.scopes??x.scopes,s=E?null:await l(),c=!E&&await u(),d=crypto.randomUUID(),f=E?chrome.runtime.id:``,{redirectUri:p,state:m}=w({isExtension:E,isConnectMode:!!globalThis.__slicc_connect_mode,workerBaseUrl:h(),runtimeWorkerBaseUrl:C,pageOrigin:s?.origin??null,pageHref:s?.href??null,bridgeApiBaseUrl:r(),delegated:c,extensionId:f,nonce:d}),g=btoa(JSON.stringify(m)),_=d,y=new URLSearchParams({client_id:a,scope:o,redirect_uri:p});g&&y.set(`state`,g);let b=await t(`https://github.com/login/oauth/authorize?${y}`);if(!b)return;if(_)try{if(new URL(b).searchParams.get(`nonce`)!==_){console.error(`[github] OAuth nonce mismatch — possible CSRF`);return}}catch(e){console.warn(`[github] Nonce check skipped (URL parse failed):`,e instanceof Error?e.message:String(e))}let S=O(b);if(!S){console.error(`[github] Could not extract authorization code from redirect URL`);return}let D=await v({provider:`github`,code:S,redirectUri:p}),A=await k(D.access_token);await e({providerId:`github`,accessToken:D.access_token,refreshToken:D.refresh_token,tokenExpiresAt:D.expires_in?Date.now()+D.expires_in*1e3:void 0,userName:A.name,userAvatar:A.avatar,scopes:D.scope}),await N({clearOnFailure:!0}),await P(A),n()},onSilentRenew:I,onValidateToken:L,getValidAccessToken:V,onOAuthLogout:async()=>{let t=D();t?.accessToken&&await b({provider:`github`,accessToken:t.accessToken}).catch(e=>console.warn(`[github] Token revocation failed:`,e instanceof Error?e.message:String(e))),await M(),await e({providerId:`github`,accessToken:``})},getOAuthLogoutUrl:e=>`https://github.com/logout`};export{A as buildNoreplyEmail,H as config,O as extractCodeFromUrl,V as getValidAccessToken,w as resolveGithubOAuthRedirect,P as syncGitIdentityFromGitHub};