sliccy 6.256.19 → 6.256.21

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 (141) hide show
  1. package/dist/ui/.vite/manifest.json +191 -191
  2. package/dist/ui/assets/{account-store-C6um0YPW.js → account-store--QH_gRlz.js} +1 -1
  3. package/dist/ui/assets/{account-store-DcnsleVv.js → account-store-CbKQrU_A.js} +1 -1
  4. package/dist/ui/assets/{adobe-6KkN_nv7.js → adobe-BBZZjXPq.js} +1 -1
  5. package/dist/ui/assets/{adobe-B0jHeR5S.js → adobe-D6tf-vd0.js} +1 -1
  6. package/dist/ui/assets/{agent-panels-DfgA8R43.js → agent-panels-DwoeuEZJ.js} +1 -1
  7. package/dist/ui/assets/{almost-bash-shell-headless-C1Lf_MMS.js → almost-bash-shell-headless-IexVAylq.js} +14 -14
  8. package/dist/ui/assets/{apply-layout-BGPfdSzk.js → apply-layout-DyJWDEg0.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-DmUVAG9L.js → azure-openai-DfNYV355.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-pWuMNG9M.js → azure-openai-mzyA6ec_.js} +1 -1
  11. package/dist/ui/assets/{bunny-probe-DpXkdbYB.js → bunny-probe-cUWPQ6lW.js} +1 -1
  12. package/dist/ui/assets/{bunny-run-rzX0F1nl.js → bunny-run-B37YZhan.js} +1 -1
  13. package/dist/ui/assets/{cdp-CPSnzyRg.js → cdp-D4hCZeiK.js} +3 -3
  14. package/dist/ui/assets/{cerebras-DFjBDkkf.js → cerebras-DCpB0UlY.js} +1 -1
  15. package/dist/ui/assets/{cerebras-orfSjH9T.js → cerebras-nIWXceol.js} +1 -1
  16. package/dist/ui/assets/{codemode-tool-Bjubrh1X.js → codemode-tool-BvKukYUa.js} +1 -1
  17. package/dist/ui/assets/{composer-speech-Cn9-Zzn2.js → composer-speech-tLlsFK5D.js} +1 -1
  18. package/dist/ui/assets/{connect-surface-D43D0p7K.js → connect-surface-XwtqAfeO.js} +1 -1
  19. package/dist/ui/assets/{directed-approval-DIP9tGOu.js → directed-approval-BHC1QE2R.js} +1 -1
  20. package/dist/ui/assets/{dist-DOjgJQZM.js → dist-Cqu6P8qf.js} +1 -1
  21. package/dist/ui/assets/{emscripten-vfs-hook-C_Yq_WAI.js → emscripten-vfs-hook-D27gwwXv.js} +1 -1
  22. package/dist/ui/assets/{fast-path-6ekMOXSI.js → fast-path-BHWue2Kr.js} +1 -1
  23. package/dist/ui/assets/{frozen-archive-writer-YCOD1fqb.js → frozen-archive-writer-Cixi7_NJ.js} +1 -1
  24. package/dist/ui/assets/{frozen-session-delete-WoQUijRl.js → frozen-session-delete-2eh2Yhbl.js} +1 -1
  25. package/dist/ui/assets/{frozen-session-identity-CUJ3SGDV.js → frozen-session-identity-DoWKIEpR.js} +1 -1
  26. package/dist/ui/assets/{gelatiere-unit-VC-Z6skV.js → gelatiere-unit-BqTcFkxk.js} +1 -1
  27. package/dist/ui/assets/{github-DjiuepHp.js → github-BhZHOxKc.js} +1 -1
  28. package/dist/ui/assets/{github-BfwYBNdU.js → github-DN2OBZNS.js} +1 -1
  29. package/dist/ui/assets/{github-copilot-Ca3wvuMg.js → github-copilot-CQhrDhDZ.js} +1 -1
  30. package/dist/ui/assets/{github-copilot-DKRsbcNT.js → github-copilot-Dgi-j2_O.js} +1 -1
  31. package/dist/ui/assets/{hear-CtfVj6JL.js → hear-BDUAwa28.js} +1 -1
  32. package/dist/ui/assets/{hidden-page-input-BZYPq1Fs.js → hidden-page-input-01CnfmMB.js} +1 -1
  33. package/dist/ui/assets/{hidden-page-input-Cp9ZPgBA.js → hidden-page-input-CBbLsDx2.js} +1 -1
  34. package/dist/ui/assets/{js-realm-worker-D-YXyqDf.js → js-realm-worker-CDJhvYJx.js} +2 -2
  35. package/dist/ui/assets/{jsh-executor-jaafnGEI.js → jsh-executor-BVFFU-rP.js} +3 -3
  36. package/dist/ui/assets/{kernel-worker-DjefE-EG.js → kernel-worker-965_891X.js} +9 -9
  37. package/dist/ui/assets/{lick-ws-bridge-jXOA4Jgg.js → lick-ws-bridge-D4PsA45A.js} +1 -1
  38. package/dist/ui/assets/{lick-ws-bridge-B5njq5fs.js → lick-ws-bridge-DuAP_Xb5.js} +1 -1
  39. package/dist/ui/assets/{live-session-curation-B60pJiw_.js → live-session-curation-BB61f9E8.js} +1 -1
  40. package/dist/ui/assets/{live-session-curation-BOrs0Nrl.js → live-session-curation-CGxamyw3.js} +1 -1
  41. package/dist/ui/assets/{live-session-snapshot-CApqdYaI.js → live-session-snapshot-BDyBgtvN.js} +1 -1
  42. package/dist/ui/assets/{local-llm-DuQTThDU.js → local-llm-CEQQXhGE.js} +1 -1
  43. package/dist/ui/assets/{local-llm-4CuArCpN.js → local-llm-Cy5E3lJo.js} +1 -1
  44. package/dist/ui/assets/{main-CILyCK1y.js → main-C8hdX5_E.js} +3 -3
  45. package/dist/ui/assets/{main-cherry-sJDvZx8w.js → main-cherry-ykXNeN9-.js} +1 -1
  46. package/dist/ui/assets/{mcp-command-WDwETVym.js → mcp-command-w6OUcgfO.js} +10 -10
  47. package/dist/ui/assets/{memory-curation-seam-_oeOmhzw.js → memory-curation-seam-C4r6A-jq.js} +1 -1
  48. package/dist/ui/assets/{memory-write-execute-89twFcQB.js → memory-write-execute-C_0rryC9.js} +1 -1
  49. package/dist/ui/assets/{merge-folded-cost-into-frozen-CD1e6CBw.js → merge-folded-cost-into-frozen-C9I1ykhe.js} +1 -1
  50. package/dist/ui/assets/{new-session-cSLBXZij.js → new-session-k7LcBmG5.js} +2 -2
  51. package/dist/ui/assets/{oauth-bootstrap-qSJjQ69F.js → oauth-bootstrap-qTw880dW.js} +2 -2
  52. package/dist/ui/assets/{onboarding-orchestrator-yGWsMH61.js → onboarding-orchestrator-B5XUC4QP.js} +1 -1
  53. package/dist/ui/assets/{openai-codex-DAPUF3Ax.js → openai-codex-BpfRFQ9A.js} +1 -1
  54. package/dist/ui/assets/{openai-codex-BPLGHM-7.js → openai-codex-BtEdGRUK.js} +1 -1
  55. package/dist/ui/assets/{openrouter-ChH5y4Zo.js → openrouter-CGkUkGLm.js} +1 -1
  56. package/dist/ui/assets/{openrouter-CNqcHmRl.js → openrouter-D9PB_Wxr.js} +1 -1
  57. package/dist/ui/assets/{openrouter-free-CFHWyXL_.js → openrouter-free-BfihlWk1.js} +1 -1
  58. package/dist/ui/assets/{openrouter-free-mc_qudih.js → openrouter-free-Brc9YCWo.js} +1 -1
  59. package/dist/ui/assets/{openrouter-oauth-NGLIwflJ.js → openrouter-oauth-DIBlm_UZ.js} +1 -1
  60. package/dist/ui/assets/{openrouter-oauth-CLTSbif9.js → openrouter-oauth-DdrrVt3S.js} +1 -1
  61. package/dist/ui/assets/{panel-rpc-handlers-CjLaorQm.js → panel-rpc-handlers-BmON86n5.js} +2 -2
  62. package/dist/ui/assets/{panelize-shell-DCsOioRV.js → panelize-shell-Dt3FXNpB.js} +1 -1
  63. package/dist/ui/assets/{pi-edit-execution-jBe0mTu2.js → pi-edit-execution-iaL4Mz3u.js} +1 -1
  64. package/dist/ui/assets/{provider-D3Z0skyh.js → provider-B8I1Mys2.js} +1 -1
  65. package/dist/ui/assets/{provider-Bq7cXY3H.js → provider-CN-5jpvI.js} +1 -1
  66. package/dist/ui/assets/{provider-settings-cjhn5KhF.js → provider-settings-B5CKyKdE.js} +1 -1
  67. package/dist/ui/assets/provider-store-access-D3cir6Mf.js +1 -0
  68. package/dist/ui/assets/provider-store-access-DruVrLP2.js +1 -0
  69. package/dist/ui/assets/{providers-CfB5UcQV.js → providers-CnawElFK.js} +1 -1
  70. package/dist/ui/assets/{providers-e7J6vyrs.js → providers-s2pRjrQo.js} +2 -2
  71. package/dist/ui/assets/{quick-llm-CX_4Q5lE.js → quick-llm-DcceQmkj.js} +1 -1
  72. package/dist/ui/assets/{realm-inprocess-DZqfbNHT.js → realm-inprocess-48bEemKF.js} +2 -2
  73. package/dist/ui/assets/{realm-unhandled-rejections-B4YL4Sx4.js → realm-unhandled-rejections-BqWjiqaB.js} +1 -1
  74. package/dist/ui/assets/{realm-unhandled-rejections-BCUDtOFo.js → realm-unhandled-rejections-DpKKv_Sg.js} +1 -1
  75. package/dist/ui/assets/{remote-terminal-view-YhJBG0oW.js → remote-terminal-view-ML6zl31u.js} +2 -2
  76. package/dist/ui/assets/{restore-DKs4fX03.js → restore-Uo3FkyTn.js} +1 -1
  77. package/dist/ui/assets/{run-BoUgBqtP.js → run-7BBLWyxm.js} +2 -2
  78. package/dist/ui/assets/{run-DvLcUCCT.js → run-B-kYAFBX.js} +1 -1
  79. package/dist/ui/assets/{run-w8dc5QkU.js → run-BZUVJe9B.js} +2 -2
  80. package/dist/ui/assets/{run-ZJTWBDxE.js → run-D6q-1m-B.js} +2 -2
  81. package/dist/ui/assets/{run-Dyr1Y8Gw.js → run-tb90H7t4.js} +1 -1
  82. package/dist/ui/assets/{run-DYK7RuK3.js → run-v1OqsjEl.js} +2 -2
  83. package/dist/ui/assets/{serve-command-Cl0KR3JB.js → serve-command-C1oMKVa-.js} +2 -2
  84. package/dist/ui/assets/{serve-runtime-CnjIF1Qc.js → serve-runtime-BMkuNcbl.js} +1 -1
  85. package/dist/ui/assets/{session-command-memory-Cl4cgsuB.js → session-command-memory-lm81X-Is.js} +2 -2
  86. package/dist/ui/assets/{session-jsonl-C3VP4h4F.js → session-jsonl-eXAElh6W.js} +1 -1
  87. package/dist/ui/assets/{session-search-index-DNLNj8Hz.js → session-search-index-ByisDLR5.js} +1 -1
  88. package/dist/ui/assets/{setup-feature-flags-remote-CgfNoeec.js → setup-feature-flags-remote-z293EM8V.js} +1 -1
  89. package/dist/ui/assets/{setup-model-catalog-Do44T24D.js → setup-model-catalog-DFfU37vS.js} +1 -1
  90. package/dist/ui/assets/{silent-renew-backoff-BP12WS2t.js → silent-renew-backoff-B0lMVNh5.js} +1 -1
  91. package/dist/ui/assets/slicc-version-DGCQeyP5.js +1 -0
  92. package/dist/ui/assets/{soundscape-OIr6kREC.js → soundscape-DHszzPsM.js} +1 -1
  93. package/dist/ui/assets/{speak-BTTfyNsH.js → speak-DZZSpSqs.js} +1 -1
  94. package/dist/ui/assets/{sprinkle-manager-B04EiPct.js → sprinkle-manager-CMAEGvh9.js} +1 -1
  95. package/dist/ui/assets/{sprinkle-renderer-B6BBPYnt.js → sprinkle-renderer-DcsYmznT.js} +1 -1
  96. package/dist/ui/assets/{src-DBlBYTvU.js → src-WaWErIN6.js} +3 -3
  97. package/dist/ui/assets/{ssh-DxTaezVV.js → ssh-vPCpaauO.js} +1 -1
  98. package/dist/ui/assets/{sudo-DRDS7os7.js → sudo-YyLShRTX.js} +1 -1
  99. package/dist/ui/assets/{supervisor-CK12CrVB.js → supervisor-BJNQ0Sie.js} +1 -1
  100. package/dist/ui/assets/{sync-dialog-CMveyHTI.js → sync-dialog-OIBe84rb.js} +1 -1
  101. package/dist/ui/assets/{transformers-env-C0UUrX43.js → transformers-env-DlTQEcvy.js} +1 -1
  102. package/dist/ui/assets/{tray-leader-B2jd_9hN.js → tray-leader-x0HDgpHa.js} +1 -1
  103. package/dist/ui/assets/{tray-leave-runtime-YA1z3_3n.js → tray-leave-runtime-B6ZqjKqA.js} +1 -1
  104. package/dist/ui/assets/{tray-sidecar-B1E5w2QN.js → tray-sidecar-C08eb6rV.js} +1 -1
  105. package/dist/ui/assets/{upgrade-detection-DIEpI4jV.js → upgrade-detection-BZOEx1T3.js} +1 -1
  106. package/dist/ui/assets/{upgrade-to-seven-Ds3487bW.js → upgrade-to-seven-Pi7N3s4V.js} +1 -1
  107. package/dist/ui/assets/{voice-reply-BvNFV1p5.js → voice-reply-D0KspY5L.js} +1 -1
  108. package/dist/ui/assets/{wc-attach-B9NheUcP.js → wc-attach-C--w91hS.js} +2 -2
  109. package/dist/ui/assets/{wc-browser-BWV_z0mY.js → wc-browser-Bwwt12VY.js} +1 -1
  110. package/dist/ui/assets/{wc-computers-CmlAWXad.js → wc-computers-CEYTEbzK.js} +1 -1
  111. package/dist/ui/assets/{wc-detached-BG6o5rCV.js → wc-detached-BMfwyvTN.js} +1 -1
  112. package/dist/ui/assets/{wc-extension-BJG351m1.js → wc-extension-WVBzb68j.js} +2 -2
  113. package/dist/ui/assets/{wc-follower-DK_cGVb6.js → wc-follower-CfQXvNqW.js} +3 -3
  114. package/dist/ui/assets/{wc-follower-oauth-Ct4vRPWy.js → wc-follower-oauth-CRA3bG2x.js} +1 -1
  115. package/dist/ui/assets/{wc-gelatiere-B7_JxWTc.js → wc-gelatiere-CFupkA18.js} +1 -1
  116. package/dist/ui/assets/{wc-live-B_GjMlHU.js → wc-live-jfkgv1D5.js} +5 -5
  117. package/dist/ui/assets/{wc-nav-BPC_rTRU.js → wc-nav-CMmiK8CR.js} +2 -2
  118. package/dist/ui/assets/{wc-onboarding-DZ9IecMC.js → wc-onboarding-DwK2Xo_f.js} +2 -2
  119. package/dist/ui/assets/{wc-permissions-jiHmGCQE.js → wc-permissions-sEzYJY5L.js} +2 -2
  120. package/dist/ui/assets/{wc-placeholder-Bw3f1tx2.js → wc-placeholder-dACLWYRH.js} +2 -2
  121. package/dist/ui/assets/{wc-profile-export-Dw3kIggm.js → wc-profile-export-0_MWQlQi.js} +3 -3
  122. package/dist/ui/assets/{wc-secret-request-DhhFoxwM.js → wc-secret-request-Bj6AEfhW.js} +1 -1
  123. package/dist/ui/assets/{wc-settings-CFVy_frk.js → wc-settings-D36d5og0.js} +3 -3
  124. package/dist/ui/assets/{wc-shell-uXXL8vn4.js → wc-shell-Dviry0M3.js} +3 -3
  125. package/dist/ui/assets/{wc-shortcut-config-BsECYqW4.js → wc-shortcut-config-BEJ7hCGM.js} +1 -1
  126. package/dist/ui/assets/{wc-sprinkles-LDObPLGU.js → wc-sprinkles-CCEvPCsZ.js} +2 -2
  127. package/dist/ui/assets/{wc-transcript-export-DCxRhw7L.js → wc-transcript-export-BLZIE8ep.js} +2 -2
  128. package/dist/ui/assets/{wc-tray-DC2N41c4.js → wc-tray-Bpsl7Mew.js} +4 -4
  129. package/dist/ui/assets/welcome-detection-CWqP_ofb.js +1 -0
  130. package/dist/ui/assets/{whisper-session-VTvwtmt9.js → whisper-session-CmQR_O2N.js} +2 -2
  131. package/dist/ui/assets/{xai-grok-CAYOQXy2.js → xai-grok-BjEcnSUJ.js} +1 -1
  132. package/dist/ui/assets/{xai-grok-BySWrekq.js → xai-grok-DNyRhPcB.js} +1 -1
  133. package/dist/ui/index.html +3 -3
  134. package/dist/ui/packages/webapp/index.html +3 -3
  135. package/dist/ui/packages/webapp/upgrade-to-seven.html +1 -1
  136. package/dist/ui/upgrade-to-seven.html +1 -1
  137. package/package.json +3 -3
  138. package/dist/ui/assets/provider-store-access-BSyBmQnI.js +0 -1
  139. package/dist/ui/assets/provider-store-access-D34ptiy1.js +0 -1
  140. package/dist/ui/assets/slicc-version-DD-uf2ZA.js +0 -1
  141. package/dist/ui/assets/welcome-detection-BA_e93OR.js +0 -1
@@ -1,4 +1,4 @@
1
- import{$ as e,F as t,v as n}from"./core-BXRpM6QF.js";import{b as r,g as i}from"./account-store-DcnsleVv.js";import{r as a,t as o}from"./transform-messages-CEzvAqOO.js";import{n as s,t as c}from"./pi-transcript-context-CrhAqp9b.js";function l(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function u(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var d=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return d=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(+e^n()&15>>e/4).toString(16))};function f(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var p=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},m=class extends Error{},h=class e extends m{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new _({message:r,cause:p(n)});let a=n?.error;return t===400?new y(t,a,r,i):t===401?new b(t,a,r,i):t===403?new x(t,a,r,i):t===404?new ee(t,a,r,i):t===409?new te(t,a,r,i):t===422?new ne(t,a,r,i):t===429?new re(t,a,r,i):t>=500?new ie(t,a,r,i):new e(t,a,r,i)}},g=class extends h{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},_=class extends h{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},v=class extends _{constructor({message:e}={}){super({message:e??`Request timed out.`})}},y=class extends h{},b=class extends h{},x=class extends h{},ee=class extends h{},te=class extends h{},ne=class extends h{},re=class extends h{},ie=class extends h{},ae=class extends m{constructor(){super(`Could not parse response content as the length limit was reached`)}},oe=class extends m{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},se=class extends Error{constructor(e){super(e)}},ce=class extends h{constructor(e,t,n){let r=`OAuth2 authentication error`,i;if(t&&typeof t==`object`){let e=t;i=e.error;let n=e.error_description;n&&typeof n==`string`?r=n:i&&(r=i)}super(e,t,r,n),this.error_code=i}},le=class extends m{constructor(e,t,n){super(e),this.provider=t,this.cause=n}},ue=/^[a-z][a-z0-9+.-]*:/i,de=e=>ue.test(e),S=e=>(S=Array.isArray,S(e)),fe=S;function pe(e){return typeof e==`object`?e??{}:{}}function me(e){if(!e)return!0;for(let t in e)return!1;return!0}function he(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ge=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new m(`${e} must be an integer`);if(t<0)throw new m(`${e} must be a positive integer`);return t},_e=e=>{try{return JSON.parse(e)}catch{return}},ve=e=>new Promise(t=>setTimeout(t,e));function ye(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function be(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function xe(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return be({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Se(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ce(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var we;function w(e){let t;return(we??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Te;function Ee(e){let t;return(Te??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var De,T,E,D,O,Oe,ke,Ae=65536,je=class{constructor(){De.add(this),T.set(this,void 0),E.set(this,void 0),D.set(this,void 0),O.set(this,void 0),Oe.set(this,void 0),l(this,T,new Uint8Array,`f`),l(this,E,0,`f`),l(this,D,0,`f`),l(this,O,0,`f`),l(this,Oe,!1,`f`)}decode(e){if(e==null)return[];let t;if(t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?w(e):e,t.length===0||u(this,Oe,`f`)&&(l(this,Oe,!1,`f`),t[0]===10&&(t=t.subarray(1)),t.length===0))return[];u(this,De,`m`,ke).call(this,t);let n=[],r;for(;(r=Me(u(this,T,`f`),u(this,O,`f`),u(this,D,`f`)))!=null;){let e=Ee(u(this,T,`f`).subarray(u(this,E,`f`),r.preceding));n.push(e),l(this,E,r.index,`f`),r.carriage&&(u(this,E,`f`)<u(this,D,`f`)&&u(this,T,`f`)[u(this,E,`f`)]===10?l(this,E,u(this,E,`f`)+1,`f`):u(this,E,`f`)===u(this,D,`f`)&&l(this,Oe,!0,`f`)),l(this,O,u(this,E,`f`),`f`)}if(l(this,O,u(this,D,`f`),`f`),u(this,E,`f`)===u(this,D,`f`))l(this,E,0,`f`),l(this,D,0,`f`),l(this,O,0,`f`),u(this,T,`f`).length>Ae&&l(this,T,new Uint8Array,`f`);else if(n.length>0&&u(this,T,`f`).length>Ae){let e=u(this,D,`f`)-u(this,E,`f`);if(e<=Ae||u(this,T,`f`).length>e*4){let t=e<=Ae?Math.min(Math.max(e*2,256),Ae):e*2,n=new Uint8Array(t);n.set(u(this,T,`f`).subarray(u(this,E,`f`),u(this,D,`f`))),l(this,T,n,`f`),l(this,E,0,`f`),l(this,D,e,`f`),l(this,O,e,`f`)}}return n}flush(){return l(this,Oe,!1,`f`),u(this,E,`f`)===u(this,D,`f`)?[]:this.decode(`
1
+ import{$ as e,F as t,v as n}from"./core-BXRpM6QF.js";import{b as r,g as i}from"./account-store-CbKQrU_A.js";import{r as a,t as o}from"./transform-messages-CEzvAqOO.js";import{n as s,t as c}from"./pi-transcript-context-CrhAqp9b.js";function l(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function u(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var d=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return d=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(+e^n()&15>>e/4).toString(16))};function f(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var p=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},m=class extends Error{},h=class e extends m{constructor(t,n,r,i){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`x-request-id`),this.error=n;let a=n;this.code=a?.code,this.param=a?.param,this.type=a?.type}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new _({message:r,cause:p(n)});let a=n?.error;return t===400?new y(t,a,r,i):t===401?new b(t,a,r,i):t===403?new x(t,a,r,i):t===404?new ee(t,a,r,i):t===409?new te(t,a,r,i):t===422?new ne(t,a,r,i):t===429?new re(t,a,r,i):t>=500?new ie(t,a,r,i):new e(t,a,r,i)}},g=class extends h{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},_=class extends h{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},v=class extends _{constructor({message:e}={}){super({message:e??`Request timed out.`})}},y=class extends h{},b=class extends h{},x=class extends h{},ee=class extends h{},te=class extends h{},ne=class extends h{},re=class extends h{},ie=class extends h{},ae=class extends m{constructor(){super(`Could not parse response content as the length limit was reached`)}},oe=class extends m{constructor(){super(`Could not parse response content as the request was rejected by the content filter`)}},se=class extends Error{constructor(e){super(e)}},ce=class extends h{constructor(e,t,n){let r=`OAuth2 authentication error`,i;if(t&&typeof t==`object`){let e=t;i=e.error;let n=e.error_description;n&&typeof n==`string`?r=n:i&&(r=i)}super(e,t,r,n),this.error_code=i}},le=class extends m{constructor(e,t,n){super(e),this.provider=t,this.cause=n}},ue=/^[a-z][a-z0-9+.-]*:/i,de=e=>ue.test(e),S=e=>(S=Array.isArray,S(e)),fe=S;function pe(e){return typeof e==`object`?e??{}:{}}function me(e){if(!e)return!0;for(let t in e)return!1;return!0}function he(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}var ge=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new m(`${e} must be an integer`);if(t<0)throw new m(`${e} must be a positive integer`);return t},_e=e=>{try{return JSON.parse(e)}catch{return}},ve=e=>new Promise(t=>setTimeout(t,e));function ye(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function be(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function xe(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return be({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Se(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ce(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var we;function w(e){let t;return(we??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var Te;function Ee(e){let t;return(Te??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var De,T,E,D,O,Oe,ke,Ae=65536,je=class{constructor(){De.add(this),T.set(this,void 0),E.set(this,void 0),D.set(this,void 0),O.set(this,void 0),Oe.set(this,void 0),l(this,T,new Uint8Array,`f`),l(this,E,0,`f`),l(this,D,0,`f`),l(this,O,0,`f`),l(this,Oe,!1,`f`)}decode(e){if(e==null)return[];let t;if(t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?w(e):e,t.length===0||u(this,Oe,`f`)&&(l(this,Oe,!1,`f`),t[0]===10&&(t=t.subarray(1)),t.length===0))return[];u(this,De,`m`,ke).call(this,t);let n=[],r;for(;(r=Me(u(this,T,`f`),u(this,O,`f`),u(this,D,`f`)))!=null;){let e=Ee(u(this,T,`f`).subarray(u(this,E,`f`),r.preceding));n.push(e),l(this,E,r.index,`f`),r.carriage&&(u(this,E,`f`)<u(this,D,`f`)&&u(this,T,`f`)[u(this,E,`f`)]===10?l(this,E,u(this,E,`f`)+1,`f`):u(this,E,`f`)===u(this,D,`f`)&&l(this,Oe,!0,`f`)),l(this,O,u(this,E,`f`),`f`)}if(l(this,O,u(this,D,`f`),`f`),u(this,E,`f`)===u(this,D,`f`))l(this,E,0,`f`),l(this,D,0,`f`),l(this,O,0,`f`),u(this,T,`f`).length>Ae&&l(this,T,new Uint8Array,`f`);else if(n.length>0&&u(this,T,`f`).length>Ae){let e=u(this,D,`f`)-u(this,E,`f`);if(e<=Ae||u(this,T,`f`).length>e*4){let t=e<=Ae?Math.min(Math.max(e*2,256),Ae):e*2,n=new Uint8Array(t);n.set(u(this,T,`f`).subarray(u(this,E,`f`),u(this,D,`f`))),l(this,T,n,`f`),l(this,E,0,`f`),l(this,D,e,`f`),l(this,O,e,`f`)}}return n}flush(){return l(this,Oe,!1,`f`),u(this,E,`f`)===u(this,D,`f`)?[]:this.decode(`
2
2
  `)}};T=new WeakMap,E=new WeakMap,D=new WeakMap,O=new WeakMap,Oe=new WeakMap,De=new WeakSet,ke=function(e){if(u(this,D,`f`)+e.length>u(this,T,`f`).length){let t=u(this,D,`f`)-u(this,E,`f`);if(u(this,E,`f`)>=u(this,T,`f`).length/2&&t+e.length<=u(this,T,`f`).length)u(this,T,`f`).copyWithin(0,u(this,E,`f`),u(this,D,`f`));else{let n=Math.max(u(this,T,`f`).length*2,t+e.length,256),r=new Uint8Array(n);r.set(u(this,T,`f`).subarray(u(this,E,`f`),u(this,D,`f`))),l(this,T,r,`f`)}l(this,O,u(this,O,`f`)-u(this,E,`f`),`f`),l(this,D,t,`f`),l(this,E,0,`f`)}u(this,T,`f`).set(e,u(this,D,`f`)),l(this,D,u(this,D,`f`)+e.length,`f`)},je.NEWLINE_CHARS=new Set([`
3
3
  `,`\r`]),je.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function Me(e,t,n){for(let r=t;r<n;r++){if(e[r]===10)return{preceding:r,index:r+1,carriage:!1};if(e[r]===13)return{preceding:r,index:r+1,carriage:!0}}return null}function Ne(e){for(let t=0;t<e.length-1;t++){let n=Pe(e,t);if(n>0){let r=t+n,i=Pe(e,r);if(i>0)return r+i}}return-1}function Pe(e,t){return e[t]===10?1:e[t]===13?e[t+1]===10?2:1:0}var Fe={off:0,error:200,warn:300,info:400,debug:500},Ie=(e,t,n)=>{if(e){if(he(Fe,e))return e;k(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(Fe))}`)}};function Le(){}function Re(e,t,n){return!t||Fe[e]>Fe[n]?Le:t[e].bind(t)}var ze={error:Le,warn:Le,info:Le,debug:Le},Be=new WeakMap;function k(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return ze;let r=Be.get(t);if(r&&r[0]===n)return r[1];let i={error:Re(`error`,t,n),warn:Re(`warn`,t,n),info:Re(`info`,t,n),debug:Re(`debug`,t,n)};return Be.set(t,[n,i]),i}var Ve=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`authorization`||e.toLowerCase()===`api-key`||e.toLowerCase()===`x-api-key`||e.toLowerCase()===`x-amz-security-token`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),He,Ue=class e{constructor(e,t,n){He.set(this,void 0),this.iterator=e,this.controller=t,l(this,He,n,`f`)}static fromSSEResponse(t,n,r,i){let a=!1,o=r?k(r):console;async function*s(){if(a)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");a=!0;let e=!1,r=!1;try{for await(let e of We(t,n)){if(e.data.startsWith(`[DONE]`)){r=!0;break}if(e.event===null||!e.event.startsWith(`thread.`)){let n;try{n=JSON.parse(e.data)}catch(t){throw o.error(`Could not parse message into JSON:`,e.data),o.error(`From chunk:`,e.raw),t}if(n&&n.error)throw new h(void 0,n.error,void 0,t.headers);yield i?{event:e.event,data:n}:n}else{let t;try{t=JSON.parse(e.data)}catch(t){throw console.error(`Could not parse message into JSON:`,e.data),console.error(`From chunk:`,e.raw),t}if(e.event===`error`)throw new h(void 0,t.error,t.message,void 0);yield{event:e.event,data:t}}}e=!0}catch(e){if(r||f(e)||n.signal.aborted&&e===n.signal.reason)return;throw e}finally{e||n.abort()}}return new e(s,n,r)}static fromReadableStream(t,n,r){let i=!1;async function*a(){let e=new je,r=t.getReader(),i=!1,a,o=()=>{a??=r.cancel(),a.catch(()=>void 0)};n.signal.addEventListener(`abort`,o,{once:!0});try{if(n.signal.aborted){o();return}for(;;){let{value:t,done:a}=await r.read();if(a){i=!0;break}if(n.signal.aborted)return;for(let r of e.decode(t)){if(n.signal.aborted)return;yield r}}if(n.signal.aborted)return;for(let t of e.flush()){if(n.signal.aborted)return;yield t}}finally{n.signal.removeEventListener(`abort`,o),i||o(),r.releaseLock()}}async function*o(){if(i)throw new m("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let t of a())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(n.signal.aborted||f(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}[(He=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=[],n=[],r=this.iterator(),i=e=>({next:()=>{if(e.length===0){let e=r.next();t.push(e),n.push(e)}return e.shift()}});return[new e(()=>i(t),this.controller,u(this,He,`f`)),new e(()=>i(n),this.controller,u(this,He,`f`))]}toReadableStream(){let e;return be({start:async()=>{e=this[Symbol.asyncIterator]()},async pull(t){try{let{value:n,done:r}=await e.next();if(r)return t.close();let i=w(JSON.stringify(n)+`
4
4
  `);t.enqueue(i)}catch(e){t.error(e)}},async cancel(){await e.return?.()}})}};async function*We(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new m(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new m(`Attempted to iterate over a response with no body`);let n=new qe,r=new je,i=Se(e.body);for await(let e of Ke(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}var Ge=3;async function*Ke(e){let t=new Uint8Array,n=0,r=0,i=0;for await(let a of e){if(a==null)continue;let e;if(e=a instanceof ArrayBuffer?new Uint8Array(a):typeof a==`string`?w(a):a,r+e.length>t.length){let a=r-n;if(n>=t.length/2&&a+e.length<=t.length)t.copyWithin(0,n,r);else{let i=new Uint8Array(Math.max(t.length*2,a+e.length));i.set(t.subarray(n,r)),t=i}i-=n,n=0,r=a}t.set(e,r),r+=e.length;let o;for(;(o=Ne(t.subarray(i,r)))!==-1;)o+=i,yield t.slice(n,o),n=o,i=n;i=Math.max(n,r-Ge)}r>n&&(yield t.slice(n,r))}var qe=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.slice(0,-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
@@ -1 +1 @@
1
- import{t as e}from"./bunny-run-rzX0F1nl.js";const t={avc:`h264`,hevc:`hevc`,vp8:`vp8`,vp9:`vp9`,av1:`av1`,prores:`prores`,aac:`aac`,opus:`opus`,mp3:`mp3`,vorbis:`vorbis`,flac:`flac`,ac3:`ac3`,eac3:`eac3`,dts:`dts`,"pcm-s16":`pcm_s16le`,"pcm-s16be":`pcm_s16be`,"pcm-s24":`pcm_s24le`,"pcm-s24be":`pcm_s24be`,"pcm-s32":`pcm_s32le`,"pcm-s32be":`pcm_s32be`,"pcm-f32":`pcm_f32le`,"pcm-f32be":`pcm_f32be`,"pcm-f64":`pcm_f64le`,"pcm-f64be":`pcm_f64be`,"pcm-u8":`pcm_u8`,"pcm-s8":`pcm_s8`,ulaw:`pcm_mulaw`,alaw:`pcm_alaw`,webvtt:`webvtt`},n={"video/mp4":`mov,mp4,m4a,3gp,3g2,mj2`,"audio/mp4":`mov,mp4,m4a,3gp,3g2,mj2`,"video/quicktime":`mov,mp4,m4a,3gp,3g2,mj2`,"video/webm":`matroska,webm`,"audio/webm":`matroska,webm`,"video/x-matroska":`matroska,webm`,"audio/x-matroska":`matroska,webm`,"audio/mpeg":`mp3`,"audio/wav":`wav`,"audio/wave":`wav`,"audio/x-wav":`wav`,"audio/ogg":`ogg`,"application/ogg":`ogg`,"video/ogg":`ogg`,"audio/aac":`aac`,"audio/flac":`flac`,"video/mp2t":`mpegts`},r={1:`mono`,2:`stereo`,3:`2.1`,4:`quad`,5:`5.0`,6:`5.1`,7:`6.1`,8:`7.1`};function i(e){return e.toFixed(6)}function a(e){if(!(e>0)||!Number.isFinite(e))return`0/0`;for(let t of[24,30,60,120])if(Math.abs(e-t*1e3/1001)<.001)return`${t*1e3}/1001`;if(Number.isInteger(e))return`${e}/1`;let t=Math.round(e*1e3);return Number.isInteger(t/1e3)?`${t/1e3}/1`:`${t}/1000`}function o(e){if(e!==null)return t[e]??e}async function s(e,t){let n={index:t,codec_type:`video`,codec_name:o(e.codec)};n.width=e.displayWidth,n.height=e.displayHeight;try{let t=await e.computeFrameRateMetrics();n.r_frame_rate=a(t.underlyingFrameRate??t.bestGuessFrameRate),n.avg_frame_rate=a(t.averageFrameRate)}catch{}return n}function c(e,t){let n=e.numberOfChannels;return{index:t,codec_type:`audio`,codec_name:o(e.codec),sample_rate:String(e.sampleRate),channels:n,channel_layout:r[n]??`${n} channels`}}async function l(e,t){let n=e.isVideoTrack()?await s(e,t):e.isAudioTrack()?c(e,t):{index:t,codec_type:e.type,codec_name:o(e.codec)};try{n.duration=i(await e.computeDuration())}catch{}let r=await e.getBitrate().catch(()=>null);r!==null&&r>0&&(n.bit_rate=String(Math.round(r)));let a=e.languageCode;return a&&a!==`und`&&(n.tags={language:a}),n}function u(e){let t={};for(let[n,r]of Object.entries(e.raw??{}))typeof r==`string`&&(t[n]=r);for(let n of[`title`,`artist`,`album`,`genre`,`comment`,`description`]){let r=e[n];typeof r==`string`&&!(n in t)&&(t[n]=r)}return Object.keys(t).length>0?t:void 0}async function d(t,r){let a=await e(),o=new a.Input({source:new a.BlobSource(t),formats:a.ALL_FORMATS});try{let e;try{e=await o.getFormat()}catch{return null}let a=await o.computeDuration(),s=await o.getFirstTimestamp(),c={filename:r,format_name:n[e.mimeType]??e.name.toLowerCase(),duration:i(a),start_time:i(s)};a>0&&(c.bit_rate=String(Math.round(t.size*8/a)));let d=u(await o.getMetadataTags().catch(()=>({})));d&&(c.tags=d);let f=await o.getTracks(),p=[];for(let[e,t]of f.entries())p.push(await l(t,e));return{format:c,streams:p}}finally{o.dispose()}}export{d as probeViaMediabunny};
1
+ import{t as e}from"./bunny-run-B37YZhan.js";const t={avc:`h264`,hevc:`hevc`,vp8:`vp8`,vp9:`vp9`,av1:`av1`,prores:`prores`,aac:`aac`,opus:`opus`,mp3:`mp3`,vorbis:`vorbis`,flac:`flac`,ac3:`ac3`,eac3:`eac3`,dts:`dts`,"pcm-s16":`pcm_s16le`,"pcm-s16be":`pcm_s16be`,"pcm-s24":`pcm_s24le`,"pcm-s24be":`pcm_s24be`,"pcm-s32":`pcm_s32le`,"pcm-s32be":`pcm_s32be`,"pcm-f32":`pcm_f32le`,"pcm-f32be":`pcm_f32be`,"pcm-f64":`pcm_f64le`,"pcm-f64be":`pcm_f64be`,"pcm-u8":`pcm_u8`,"pcm-s8":`pcm_s8`,ulaw:`pcm_mulaw`,alaw:`pcm_alaw`,webvtt:`webvtt`},n={"video/mp4":`mov,mp4,m4a,3gp,3g2,mj2`,"audio/mp4":`mov,mp4,m4a,3gp,3g2,mj2`,"video/quicktime":`mov,mp4,m4a,3gp,3g2,mj2`,"video/webm":`matroska,webm`,"audio/webm":`matroska,webm`,"video/x-matroska":`matroska,webm`,"audio/x-matroska":`matroska,webm`,"audio/mpeg":`mp3`,"audio/wav":`wav`,"audio/wave":`wav`,"audio/x-wav":`wav`,"audio/ogg":`ogg`,"application/ogg":`ogg`,"video/ogg":`ogg`,"audio/aac":`aac`,"audio/flac":`flac`,"video/mp2t":`mpegts`},r={1:`mono`,2:`stereo`,3:`2.1`,4:`quad`,5:`5.0`,6:`5.1`,7:`6.1`,8:`7.1`};function i(e){return e.toFixed(6)}function a(e){if(!(e>0)||!Number.isFinite(e))return`0/0`;for(let t of[24,30,60,120])if(Math.abs(e-t*1e3/1001)<.001)return`${t*1e3}/1001`;if(Number.isInteger(e))return`${e}/1`;let t=Math.round(e*1e3);return Number.isInteger(t/1e3)?`${t/1e3}/1`:`${t}/1000`}function o(e){if(e!==null)return t[e]??e}async function s(e,t){let n={index:t,codec_type:`video`,codec_name:o(e.codec)};n.width=e.displayWidth,n.height=e.displayHeight;try{let t=await e.computeFrameRateMetrics();n.r_frame_rate=a(t.underlyingFrameRate??t.bestGuessFrameRate),n.avg_frame_rate=a(t.averageFrameRate)}catch{}return n}function c(e,t){let n=e.numberOfChannels;return{index:t,codec_type:`audio`,codec_name:o(e.codec),sample_rate:String(e.sampleRate),channels:n,channel_layout:r[n]??`${n} channels`}}async function l(e,t){let n=e.isVideoTrack()?await s(e,t):e.isAudioTrack()?c(e,t):{index:t,codec_type:e.type,codec_name:o(e.codec)};try{n.duration=i(await e.computeDuration())}catch{}let r=await e.getBitrate().catch(()=>null);r!==null&&r>0&&(n.bit_rate=String(Math.round(r)));let a=e.languageCode;return a&&a!==`und`&&(n.tags={language:a}),n}function u(e){let t={};for(let[n,r]of Object.entries(e.raw??{}))typeof r==`string`&&(t[n]=r);for(let n of[`title`,`artist`,`album`,`genre`,`comment`,`description`]){let r=e[n];typeof r==`string`&&!(n in t)&&(t[n]=r)}return Object.keys(t).length>0?t:void 0}async function d(t,r){let a=await e(),o=new a.Input({source:new a.BlobSource(t),formats:a.ALL_FORMATS});try{let e;try{e=await o.getFormat()}catch{return null}let a=await o.computeDuration(),s=await o.getFirstTimestamp(),c={filename:r,format_name:n[e.mimeType]??e.name.toLowerCase(),duration:i(a),start_time:i(s)};a>0&&(c.bit_rate=String(Math.round(t.size*8/a)));let d=u(await o.getMetadataTags().catch(()=>({})));d&&(c.tags=d);let f=await o.getTracks(),p=[];for(let[e,t]of f.entries())p.push(await l(t,e));return{format:c,streams:p}}finally{o.dispose()}}export{d as probeViaMediabunny};
@@ -1 +1 @@
1
- let e=null;function t(){return e??=import(`./src-DBlBYTvU.js`).catch(t=>{throw e=null,t}),e}function n(e,t){switch(t){case`very_low`:return e.QUALITY_VERY_LOW;case`low`:return e.QUALITY_LOW;case`medium`:return e.QUALITY_MEDIUM;case`high`:return e.QUALITY_HIGH;case`very_high`:return e.QUALITY_VERY_HIGH}}function r(e,t){switch(t.container){case`mp4`:return new e.Mp4OutputFormat({fastStart:t.fastStart});case`mov`:return new e.MovOutputFormat({fastStart:t.fastStart});case`webm`:return new e.WebMOutputFormat;case`mkv`:return new e.MkvOutputFormat;case`mp3`:return new e.Mp3OutputFormat;case`wav`:return new e.WavOutputFormat;case`ogg`:return new e.OggOutputFormat;case`flac`:return new e.FlacOutputFormat;case`adts`:return new e.AdtsOutputFormat;case`mpegts`:return new e.MpegTsOutputFormat}}function i(e,t){if(t.discard)return{discard:!0};let r={};return t.codec&&(r.codec=t.codec),t.bitrate===void 0?t.quality&&(r.bitrate=n(e,t.quality)):r.bitrate=t.bitrate,t.width!==void 0&&(r.width=t.width),t.height!==void 0&&(r.height=t.height),t.fit&&(r.fit=t.fit),t.rotate!==void 0&&(r.rotate=t.rotate),t.crop&&(r.crop=t.crop),t.frameRate!==void 0&&(r.frameRate=t.frameRate),t.keyFrameInterval!==void 0&&(r.keyFrameInterval=t.keyFrameInterval),t.forceTranscode&&(r.forceTranscode=!0),r}function a(e,t){if(t.discard)return{discard:!0};let r={};return t.codec&&(r.codec=t.codec),t.bitrate===void 0?t.quality&&(r.bitrate=n(e,t.quality)):r.bitrate=t.bitrate,t.numberOfChannels!==void 0&&(r.numberOfChannels=t.numberOfChannels),t.sampleRate!==void 0&&(r.sampleRate=t.sampleRate),t.forceTranscode&&(r.forceTranscode=!0),r}function o(e,t,n){let r=new Set(t.getSupportedCodecs()),i=[];for(let t of e.utilizedTracks){if(!(t.type===`video`?n.video.copy:t.type===`audio`&&n.audio.copy))continue;let e=t.codec;e===null?i.push(`${t.type} track ${t.id}: unknown codec cannot be stream-copied`):r.has(e)||i.push(`${t.type} track ${t.id}: ${e} cannot be stream-copied into ${n.container}`)}return i.length>0?i.join(`; `):null}function s(e){return e.map(e=>`${e.track.type} track ${e.track.id}: ${e.reason.replace(/_/g,` `)}`).join(`; `)}async function c(e){let n=await t(),c=new n.Input({source:new n.BlobSource(e.input),formats:n.ALL_FORMATS});try{let t;try{t=await c.getFormat()}catch(e){return{kind:`declined`,reason:`input is not a container mediabunny reads (${l(e)})`}}let u=new n.BufferTarget,d=new n.Output({format:r(n,e.plan),target:u}),f;try{f=await n.Conversion.init({input:c,output:d,video:i(n,e.plan.video),audio:a(n,e.plan.audio),...e.plan.trim?{trim:e.plan.trim}:{},...e.plan.tags?{tags:e.plan.tags}:{},showWarnings:!1})}catch(e){return{kind:`declined`,reason:`mediabunny rejected the conversion (${l(e)})`}}let p=f.discardedTracks.filter(e=>e.reason!==`discarded_by_user`);if(!f.isValid||p.length>0)return{kind:`declined`,reason:p.length>0?s(p):`no track can be written`};let m=o(f,d.format,e.plan);if(m)return{kind:`declined`,reason:m};let h=-1;f.onProgress=t=>{let n=Math.floor(t*100);n!==h&&(h=n,e.onLog(`progress: ${n}%`))},e.onLog(`mediabunny: ${t.name} → ${e.plan.container}, ${f.utilizedTracks.length} track(s)`);try{await f.execute()}catch(e){return{kind:`failed`,message:`mediabunny conversion failed: ${l(e)}`}}let g=u.buffer;return!g||g.byteLength===0?{kind:`failed`,message:`mediabunny produced an empty file`}:{kind:`done`,bytes:new Uint8Array(g),summary:`${f.utilizedTracks.map(e=>e.type).join(`+`)} → ${e.plan.container}`}}finally{c.dispose()}}function l(e){return e instanceof Error?e.message:String(e)}export{c as n,t};
1
+ let e=null;function t(){return e??=import(`./src-WaWErIN6.js`).catch(t=>{throw e=null,t}),e}function n(e,t){switch(t){case`very_low`:return e.QUALITY_VERY_LOW;case`low`:return e.QUALITY_LOW;case`medium`:return e.QUALITY_MEDIUM;case`high`:return e.QUALITY_HIGH;case`very_high`:return e.QUALITY_VERY_HIGH}}function r(e,t){switch(t.container){case`mp4`:return new e.Mp4OutputFormat({fastStart:t.fastStart});case`mov`:return new e.MovOutputFormat({fastStart:t.fastStart});case`webm`:return new e.WebMOutputFormat;case`mkv`:return new e.MkvOutputFormat;case`mp3`:return new e.Mp3OutputFormat;case`wav`:return new e.WavOutputFormat;case`ogg`:return new e.OggOutputFormat;case`flac`:return new e.FlacOutputFormat;case`adts`:return new e.AdtsOutputFormat;case`mpegts`:return new e.MpegTsOutputFormat}}function i(e,t){if(t.discard)return{discard:!0};let r={};return t.codec&&(r.codec=t.codec),t.bitrate===void 0?t.quality&&(r.bitrate=n(e,t.quality)):r.bitrate=t.bitrate,t.width!==void 0&&(r.width=t.width),t.height!==void 0&&(r.height=t.height),t.fit&&(r.fit=t.fit),t.rotate!==void 0&&(r.rotate=t.rotate),t.crop&&(r.crop=t.crop),t.frameRate!==void 0&&(r.frameRate=t.frameRate),t.keyFrameInterval!==void 0&&(r.keyFrameInterval=t.keyFrameInterval),t.forceTranscode&&(r.forceTranscode=!0),r}function a(e,t){if(t.discard)return{discard:!0};let r={};return t.codec&&(r.codec=t.codec),t.bitrate===void 0?t.quality&&(r.bitrate=n(e,t.quality)):r.bitrate=t.bitrate,t.numberOfChannels!==void 0&&(r.numberOfChannels=t.numberOfChannels),t.sampleRate!==void 0&&(r.sampleRate=t.sampleRate),t.forceTranscode&&(r.forceTranscode=!0),r}function o(e,t,n){let r=new Set(t.getSupportedCodecs()),i=[];for(let t of e.utilizedTracks){if(!(t.type===`video`?n.video.copy:t.type===`audio`&&n.audio.copy))continue;let e=t.codec;e===null?i.push(`${t.type} track ${t.id}: unknown codec cannot be stream-copied`):r.has(e)||i.push(`${t.type} track ${t.id}: ${e} cannot be stream-copied into ${n.container}`)}return i.length>0?i.join(`; `):null}function s(e){return e.map(e=>`${e.track.type} track ${e.track.id}: ${e.reason.replace(/_/g,` `)}`).join(`; `)}async function c(e){let n=await t(),c=new n.Input({source:new n.BlobSource(e.input),formats:n.ALL_FORMATS});try{let t;try{t=await c.getFormat()}catch(e){return{kind:`declined`,reason:`input is not a container mediabunny reads (${l(e)})`}}let u=new n.BufferTarget,d=new n.Output({format:r(n,e.plan),target:u}),f;try{f=await n.Conversion.init({input:c,output:d,video:i(n,e.plan.video),audio:a(n,e.plan.audio),...e.plan.trim?{trim:e.plan.trim}:{},...e.plan.tags?{tags:e.plan.tags}:{},showWarnings:!1})}catch(e){return{kind:`declined`,reason:`mediabunny rejected the conversion (${l(e)})`}}let p=f.discardedTracks.filter(e=>e.reason!==`discarded_by_user`);if(!f.isValid||p.length>0)return{kind:`declined`,reason:p.length>0?s(p):`no track can be written`};let m=o(f,d.format,e.plan);if(m)return{kind:`declined`,reason:m};let h=-1;f.onProgress=t=>{let n=Math.floor(t*100);n!==h&&(h=n,e.onLog(`progress: ${n}%`))},e.onLog(`mediabunny: ${t.name} → ${e.plan.container}, ${f.utilizedTracks.length} track(s)`);try{await f.execute()}catch(e){return{kind:`failed`,message:`mediabunny conversion failed: ${l(e)}`}}let g=u.buffer;return!g||g.byteLength===0?{kind:`failed`,message:`mediabunny produced an empty file`}:{kind:`done`,bytes:new Uint8Array(g),summary:`${f.utilizedTracks.map(e=>e.type).join(`+`)} → ${e.plan.container}`}}finally{c.dispose()}}function l(e){return e instanceof Error?e.message:String(e)}export{c as n,t};
@@ -1,5 +1,5 @@
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`(() => {
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/hidden-page-input-CBbLsDx2.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-CRA3bG2x.js";import{c as n,o as r,s as i}from"./main-C8hdX5_E.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-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};
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-CBbLsDx2.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-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
+ 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-CbKQrU_A.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-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
+ import{a as e}from"./account-store--QH_gRlz.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,4 +1,4 @@
1
- import{t as e}from"./logger-Cx6Y120U.js";import{mcpAgentToolName as t,resolveToolExposure as n}from"./connection-manager-Dj5JSkDt.js";const r=e(`mcp-codemode`);let i=null;async function a(){if(i)return i;let{CodemodeSandbox:e,loadQuickJSWasm:t}=await import(`./dist-DOjgJQZM.js`);o();let n=new URL(`../kernel/codemode-worker.ts`,``+import.meta.url);return i=new e({timeoutMs:3e5,memoryLimitBytes:268435456,wasm:t(),workerUrl:n}),i}function o(){typeof SharedArrayBuffer!=`function`&&(globalThis.SharedArrayBuffer=ArrayBuffer)}function s(e){let{serverName:i,tools:o,connection:s,exposure:l,toolExposure:u}=e,d=o.filter(e=>{let t=n(e.name,l,u);return t===`codemode`||t===`codemode-deferred`});if(d.length===0)return null;let f=`Run JavaScript to orchestrate MCP tool calls from server "${i}".
1
+ import{t as e}from"./logger-Cx6Y120U.js";import{mcpAgentToolName as t,resolveToolExposure as n}from"./connection-manager-Dj5JSkDt.js";const r=e(`mcp-codemode`);let i=null;async function a(){if(i)return i;let{CodemodeSandbox:e,loadQuickJSWasm:t}=await import(`./dist-Cqu6P8qf.js`);o();let n=new URL(`../kernel/codemode-worker.ts`,``+import.meta.url);return i=new e({timeoutMs:3e5,memoryLimitBytes:268435456,wasm:t(),workerUrl:n}),i}function o(){typeof SharedArrayBuffer!=`function`&&(globalThis.SharedArrayBuffer=ArrayBuffer)}function s(e){let{serverName:i,tools:o,connection:s,exposure:l,toolExposure:u}=e,d=o.filter(e=>{let t=n(e.name,l,u);return t===`codemode`||t===`codemode-deferred`});if(d.length===0)return null;let f=`Run JavaScript to orchestrate MCP tool calls from server "${i}".
2
2
  Scripts run in a QuickJS sandbox with access to the following tools via \`tools["name"](args)\`:
3
3
  ${d.map(e=>`- \`tools[${JSON.stringify(e.name)}](args)\`: ${e.description??`(no description)`}`).join(`
4
4
  `)}
@@ -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-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
+ 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-Dviry0M3.js";import{t as i}from"./speech-assets-bridge-DtbOauCq.js";import{o as a}from"./transformers-env-DlTQEcvy.js";import{i as o,t as s}from"./whisper-session-CmQR_O2N.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-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=`
1
+ import{B as e,T as t,d as n,u as r}from"./account-store-CbKQrU_A.js";import{n as i}from"./main-C8hdX5_E.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-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
+ import{t as e}from"./logger-Cx6Y120U.js";import{S as t}from"./record-DTUQtot0.js";import{s as n}from"./kernel-worker-965_891X.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,4 +1,4 @@
1
- function e(e){let t=``;for(let n of e){let e=t===``?/^[A-Za-z_$]$/.test(n):/^[A-Za-z0-9_$]$/.test(n);t+=e?n:`_`}return t===``?`_`:t}var t=class{worker;listeners=/* @__PURE__ */ new Map;exited=!1;constructor(e,t){this.worker=new globalThis.Worker(e,{type:`module`}),this.worker.onmessage=e=>{this.emit(`message`,e.data)},this.worker.onerror=e=>{let t=Error(e.message??`Worker error`);this.emit(`error`,t)},t?.workerData!==void 0&&this.worker.postMessage(t.workerData)}on(e,t){let n=this.listeners.get(e);return n||(n=/* @__PURE__ */ new Set,this.listeners.set(e,n)),n.add(t),this}postMessage(e){this.worker.postMessage(e)}async terminate(){return this.exited||(this.exited=!0,this.worker.terminate(),this.emit(`exit`,0)),0}emit(e,...t){let n=this.listeners.get(e);if(n)for(let e of n)try{e(...t)}catch{}}};let n;function r(){return n||(n=WebAssembly.compileStreaming(fetch(`https://cdn.jsdelivr.net/npm/quickjs-wasi@3.6.2/quickjs.wasm`)).catch(e=>{throw n=void 0,e}),n)}function i(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`call`||t===`output`||t===`done`||t===`crash`}const a=/^[A-Za-z_$][A-Za-z0-9_$]*$/,o=/* @__PURE__ */ new Set([`tools`,`ALL_TOOLS`,`console`,`text`,`image`,`exit`,`globalThis`,`store`,`load`]);function s(e){return e instanceof Error?e.message:String(e)}function c(e){let t={};for(let[n,r]of Object.entries(e??{})){let e=JSON.stringify(r);e!==void 0&&(t[n]=e)}return t}var l=class extends Error{};function u(e,t){try{return JSON.parse(e)}catch{throw new l(`${t} is not valid JSON`)}}function d(e){let t=u(e,`store writes`);if(!Array.isArray(t))throw new l(`store writes are not an array`);let n={set:{},delete:[]};for(let e of t){if(!Array.isArray(e)||typeof e[0]!=`string`||(e.length===2?typeof e[1]!=`string`:e.length!==1))throw new l(`store writes contain a malformed entry`);let[t,r]=e;r===void 0?n.delete.push(t):n.set[t]=u(r,`store value for ${JSON.stringify(t)}`)}return n}function f(e){let t=u(e,`script error`);if(typeof t!=`object`||!t)throw new l(`script error is not an object`);let{name:n,message:r,stack:i}=t;if(typeof r!=`string`||n!==void 0&&typeof n!=`string`||i!==void 0&&typeof i!=`string`)throw new l(`script error is malformed`);return{kind:`script`,name:n,message:r,stack:i}}function p(){return new URL(import.meta.url.endsWith(`.ts`)?`./worker.ts`:`./worker.js`,import.meta.url)}var m=class{promise;resolveResult;worker;interrupt=new SharedArrayBuffer(4);tools;globals;signal;timer;output=[];calls=[];pending=/* @__PURE__ */ new Map;finished=!1;constructor(e){this.promise=new Promise(e=>{this.resolveResult=e}),this.tools=e.tools,this.globals=e.globals,this.signal=e.signal,Number.isFinite(e.timeoutMs)&&(this.timer=setTimeout(()=>{this.finish({kind:`timeout`,message:`Execution timed out after ${e.timeoutMs} ms`})},e.timeoutMs)),e.signal&&(e.signal.aborted?this.onAbort():e.signal.addEventListener(`abort`,this.onAbort,{once:!0})),e.wasm.then(t=>this.start(e,t),e=>{this.finish({kind:`sandbox`,message:`Failed to load QuickJS: ${s(e)}`})})}abort(e){return this.finish({kind:`aborted`,message:e}),this.promise}start(n,r){if(this.finished)return;let i={code:n.code,tools:[...n.tools.values()].map(t=>({name:t.name,jsName:e(t.name),description:t.description??``})),globals:[...n.globals.values()].map(e=>({name:e.name,spread:e.spread===!0})),wasm:r,memoryLimitBytes:n.memoryLimitBytes,store:n.store,interrupt:this.interrupt},a;try{a=new t(n.workerUrl,{workerData:i})}catch(e){this.finish({kind:`sandbox`,message:`Failed to start worker: ${s(e)}`});return}this.worker=a,a.on(`message`,e=>{try{this.handleMessage(e)}catch(e){this.finish({kind:`sandbox`,message:e instanceof l?`Sandbox bridge broken: ${e.message}. The script may have modified built-ins such as a prototype's toJSON.`:`Sandbox host failed: ${s(e)}`})}}),a.on(`error`,e=>{this.finish({kind:`sandbox`,name:e instanceof Error?e.name:void 0,message:s(e)})}),a.on(`exit`,e=>{this.finish({kind:`sandbox`,message:`Worker exited with code ${e} before the script settled`})})}onAbort=()=>{let e=this.signal?.reason;this.finish({kind:`aborted`,message:e instanceof Error?e.message:`Execution aborted`})};post(e){this.worker?.postMessage(e)}handleMessage(e){if(!this.finished){if(!i(e))throw new l(`unknown message from the worker`);switch(e.type){case`output`:this.output.push(e.item);break;case`call`:if(this.pending.has(e.id))throw new l(`duplicate call id ${e.id}`);this.handleCall(e);break;case`done`:this.handleDone(e);break;case`crash`:this.finish({kind:`sandbox`,message:e.message})}}}handleDone(e){if(!e.ok){this.finish(f(e.error));return}let t=e.value===void 0?void 0:u(e.value,`return value`);this.finish(void 0,t,d(e.writes))}async handleCall(e){let{id:t,name:n}=e,r=e.target===`tool`,i=r?{name:n,status:`cancelled`,durationMs:0}:void 0;i&&this.calls.push(i);let a={record:i,startedAt:performance.now(),controller:new AbortController};this.pending.set(t,a);let o,c;try{let i=(r?this.tools:this.globals).get(n);if(!i)throw Error(`Unknown ${r?`tool`:`global`} "${n}"`);let s=e.args===void 0?void 0:JSON.parse(e.args),l=await i.execute(s,{signal:a.controller.signal});c={type:`result`,id:t,ok:!0,payload:l===void 0?void 0:JSON.stringify(l)},o=`ok`}catch(e){c={type:`result`,id:t,ok:!1,payload:s(e)},o=`error`}this.pending.delete(t)&&(i&&(i.status=o,i.durationMs=performance.now()-a.startedAt),this.post(c))}finish(e,t,n){if(this.finished)return;this.finished=!0,clearTimeout(this.timer),this.signal?.removeEventListener(`abort`,this.onAbort);let r=performance.now();for(let e of this.pending.values())e.record&&(e.record.durationMs=r-e.startedAt),e.controller.abort();this.pending.clear();let i=e?{ok:!1,error:e,output:this.output,calls:this.calls}:{ok:!0,value:t,output:this.output,calls:this.calls,storeWrites:n??{set:{},delete:[]}};if(!this.worker){this.resolveResult(i);return}Atomics.store(new Int32Array(this.interrupt),0,1),this.worker.terminate().catch(()=>void 0).then(()=>this.resolveResult(i))}},h=class{toolsByName=/* @__PURE__ */ new Map;globalsByName=/* @__PURE__ */ new Map;timeoutMs;memoryLimitBytes;wasm;workerUrl;running=/* @__PURE__ */ new Set;closed=!1;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.memoryLimitBytes=e.memoryLimitBytes,this.wasm=e.wasm,this.workerUrl=e.workerUrl??p();for(let t of e.tools??[])this.registerTool(t);let t=/* @__PURE__ */ new Set;for(let n of e.globals??[]){let e=n.name.split(`.`);if(e.length>2||!e.every(e=>a.test(e))||o.has(e[0]))throw Error(`Invalid global name "${n.name}"`);if(this.globalsByName.has(n.name))throw Error(`Global "${n.name}" is already registered`);e.length===2&&t.add(e[0]),this.globalsByName.set(n.name,n)}for(let e of t)if(this.globalsByName.has(e))throw Error(`Global "${e}" conflicts with the namespace "${e}"`)}registerTool(e){if(this.toolsByName.has(e.name))throw Error(`Tool "${e.name}" is already registered`);this.toolsByName.set(e.name,e)}unregisterTool(e){return this.toolsByName.delete(e)}get tools(){return[...this.toolsByName.values()]}get globals(){return[...this.globalsByName.values()]}execute(e,t={}){if(this.closed)return Promise.reject(/* @__PURE__ */ Error(`Sandbox is closed`));let n=new m({code:e,tools:new Map(this.toolsByName),globals:this.globalsByName,timeoutMs:t.timeoutMs??this.timeoutMs,signal:t.signal,memoryLimitBytes:this.memoryLimitBytes,store:c(t.store),wasm:this.wasm===void 0?r():Promise.resolve(this.wasm),workerUrl:this.workerUrl});return this.running.add(n),n.promise.finally(()=>this.running.delete(n))}async close(){this.closed=!0,await Promise.all([...this.running].map(e=>e.abort(`Sandbox closed`)))}};const g=`image expects a non-empty image URL string, an object with image_url, or a raw MCP image block`;`${JSON.stringify(g)}${JSON.stringify(g)}${JSON.stringify(g)}${JSON.stringify(g)}`,String.raw`
1
+ function e(e){let t=``;for(let n of e){let e=t===``?/^[A-Za-z_$]$/.test(n):/^[A-Za-z0-9_$]$/.test(n);t+=e?n:`_`}return t===``?`_`:t}var t=class{worker;listeners=/* @__PURE__ */ new Map;exited=!1;constructor(e,t){this.worker=new globalThis.Worker(e,{type:`module`}),this.worker.onmessage=e=>{this.emit(`message`,e.data)},this.worker.onerror=e=>{let t=Error(e.message??`Worker error`);this.emit(`error`,t)},t?.workerData!==void 0&&this.worker.postMessage(t.workerData)}on(e,t){let n=this.listeners.get(e);return n||(n=/* @__PURE__ */ new Set,this.listeners.set(e,n)),n.add(t),this}postMessage(e){this.worker.postMessage(e)}async terminate(){return this.exited||(this.exited=!0,this.worker.terminate(),this.emit(`exit`,0)),0}emit(e,...t){let n=this.listeners.get(e);if(n)for(let e of n)try{e(...t)}catch{}}};let n;function r(){return n||(n=WebAssembly.compileStreaming(fetch(`https://cdn.jsdelivr.net/npm/quickjs-wasi@3.6.3/quickjs.wasm`)).catch(e=>{throw n=void 0,e}),n)}function i(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`call`||t===`output`||t===`done`||t===`crash`}const a=/^[A-Za-z_$][A-Za-z0-9_$]*$/,o=/* @__PURE__ */ new Set([`tools`,`ALL_TOOLS`,`console`,`text`,`image`,`exit`,`globalThis`,`store`,`load`]);function s(e){return e instanceof Error?e.message:String(e)}function c(e){let t={};for(let[n,r]of Object.entries(e??{})){let e=JSON.stringify(r);e!==void 0&&(t[n]=e)}return t}var l=class extends Error{};function u(e,t){try{return JSON.parse(e)}catch{throw new l(`${t} is not valid JSON`)}}function d(e){let t=u(e,`store writes`);if(!Array.isArray(t))throw new l(`store writes are not an array`);let n={set:{},delete:[]};for(let e of t){if(!Array.isArray(e)||typeof e[0]!=`string`||(e.length===2?typeof e[1]!=`string`:e.length!==1))throw new l(`store writes contain a malformed entry`);let[t,r]=e;r===void 0?n.delete.push(t):n.set[t]=u(r,`store value for ${JSON.stringify(t)}`)}return n}function f(e){let t=u(e,`script error`);if(typeof t!=`object`||!t)throw new l(`script error is not an object`);let{name:n,message:r,stack:i}=t;if(typeof r!=`string`||n!==void 0&&typeof n!=`string`||i!==void 0&&typeof i!=`string`)throw new l(`script error is malformed`);return{kind:`script`,name:n,message:r,stack:i}}function p(){return new URL(import.meta.url.endsWith(`.ts`)?`./worker.ts`:`./worker.js`,import.meta.url)}var m=class{promise;resolveResult;worker;interrupt=new SharedArrayBuffer(4);tools;globals;signal;timer;output=[];calls=[];pending=/* @__PURE__ */ new Map;finished=!1;constructor(e){this.promise=new Promise(e=>{this.resolveResult=e}),this.tools=e.tools,this.globals=e.globals,this.signal=e.signal,Number.isFinite(e.timeoutMs)&&(this.timer=setTimeout(()=>{this.finish({kind:`timeout`,message:`Execution timed out after ${e.timeoutMs} ms`})},e.timeoutMs)),e.signal&&(e.signal.aborted?this.onAbort():e.signal.addEventListener(`abort`,this.onAbort,{once:!0})),e.wasm.then(t=>this.start(e,t),e=>{this.finish({kind:`sandbox`,message:`Failed to load QuickJS: ${s(e)}`})})}abort(e){return this.finish({kind:`aborted`,message:e}),this.promise}start(n,r){if(this.finished)return;let i={code:n.code,tools:[...n.tools.values()].map(t=>({name:t.name,jsName:e(t.name),description:t.description??``})),globals:[...n.globals.values()].map(e=>({name:e.name,spread:e.spread===!0})),wasm:r,memoryLimitBytes:n.memoryLimitBytes,store:n.store,interrupt:this.interrupt},a;try{a=new t(n.workerUrl,{workerData:i})}catch(e){this.finish({kind:`sandbox`,message:`Failed to start worker: ${s(e)}`});return}this.worker=a,a.on(`message`,e=>{try{this.handleMessage(e)}catch(e){this.finish({kind:`sandbox`,message:e instanceof l?`Sandbox bridge broken: ${e.message}. The script may have modified built-ins such as a prototype's toJSON.`:`Sandbox host failed: ${s(e)}`})}}),a.on(`error`,e=>{this.finish({kind:`sandbox`,name:e instanceof Error?e.name:void 0,message:s(e)})}),a.on(`exit`,e=>{this.finish({kind:`sandbox`,message:`Worker exited with code ${e} before the script settled`})})}onAbort=()=>{let e=this.signal?.reason;this.finish({kind:`aborted`,message:e instanceof Error?e.message:`Execution aborted`})};post(e){this.worker?.postMessage(e)}handleMessage(e){if(!this.finished){if(!i(e))throw new l(`unknown message from the worker`);switch(e.type){case`output`:this.output.push(e.item);break;case`call`:if(this.pending.has(e.id))throw new l(`duplicate call id ${e.id}`);this.handleCall(e);break;case`done`:this.handleDone(e);break;case`crash`:this.finish({kind:`sandbox`,message:e.message})}}}handleDone(e){if(!e.ok){this.finish(f(e.error));return}let t=e.value===void 0?void 0:u(e.value,`return value`);this.finish(void 0,t,d(e.writes))}async handleCall(e){let{id:t,name:n}=e,r=e.target===`tool`,i=r?{name:n,status:`cancelled`,durationMs:0}:void 0;i&&this.calls.push(i);let a={record:i,startedAt:performance.now(),controller:new AbortController};this.pending.set(t,a);let o,c;try{let i=(r?this.tools:this.globals).get(n);if(!i)throw Error(`Unknown ${r?`tool`:`global`} "${n}"`);let s=e.args===void 0?void 0:JSON.parse(e.args),l=await i.execute(s,{signal:a.controller.signal});c={type:`result`,id:t,ok:!0,payload:l===void 0?void 0:JSON.stringify(l)},o=`ok`}catch(e){c={type:`result`,id:t,ok:!1,payload:s(e)},o=`error`}this.pending.delete(t)&&(i&&(i.status=o,i.durationMs=performance.now()-a.startedAt),this.post(c))}finish(e,t,n){if(this.finished)return;this.finished=!0,clearTimeout(this.timer),this.signal?.removeEventListener(`abort`,this.onAbort);let r=performance.now();for(let e of this.pending.values())e.record&&(e.record.durationMs=r-e.startedAt),e.controller.abort();this.pending.clear();let i=e?{ok:!1,error:e,output:this.output,calls:this.calls}:{ok:!0,value:t,output:this.output,calls:this.calls,storeWrites:n??{set:{},delete:[]}};if(!this.worker){this.resolveResult(i);return}Atomics.store(new Int32Array(this.interrupt),0,1),this.worker.terminate().catch(()=>void 0).then(()=>this.resolveResult(i))}},h=class{toolsByName=/* @__PURE__ */ new Map;globalsByName=/* @__PURE__ */ new Map;timeoutMs;memoryLimitBytes;wasm;workerUrl;running=/* @__PURE__ */ new Set;closed=!1;constructor(e={}){this.timeoutMs=e.timeoutMs??3e5,this.memoryLimitBytes=e.memoryLimitBytes,this.wasm=e.wasm,this.workerUrl=e.workerUrl??p();for(let t of e.tools??[])this.registerTool(t);let t=/* @__PURE__ */ new Set;for(let n of e.globals??[]){let e=n.name.split(`.`);if(e.length>2||!e.every(e=>a.test(e))||o.has(e[0]))throw Error(`Invalid global name "${n.name}"`);if(this.globalsByName.has(n.name))throw Error(`Global "${n.name}" is already registered`);e.length===2&&t.add(e[0]),this.globalsByName.set(n.name,n)}for(let e of t)if(this.globalsByName.has(e))throw Error(`Global "${e}" conflicts with the namespace "${e}"`)}registerTool(e){if(this.toolsByName.has(e.name))throw Error(`Tool "${e.name}" is already registered`);this.toolsByName.set(e.name,e)}unregisterTool(e){return this.toolsByName.delete(e)}get tools(){return[...this.toolsByName.values()]}get globals(){return[...this.globalsByName.values()]}execute(e,t={}){if(this.closed)return Promise.reject(/* @__PURE__ */ Error(`Sandbox is closed`));let n=new m({code:e,tools:new Map(this.toolsByName),globals:this.globalsByName,timeoutMs:t.timeoutMs??this.timeoutMs,signal:t.signal,memoryLimitBytes:this.memoryLimitBytes,store:c(t.store),wasm:this.wasm===void 0?r():Promise.resolve(this.wasm),workerUrl:this.workerUrl});return this.running.add(n),n.promise.finally(()=>this.running.delete(n))}async close(){this.closed=!0,await Promise.all([...this.running].map(e=>e.abort(`Sandbox closed`)))}};const g=`image expects a non-empty image URL string, an object with image_url, or a raw MCP image block`;`${JSON.stringify(g)}${JSON.stringify(g)}${JSON.stringify(g)}${JSON.stringify(g)}`,String.raw`
2
2
  start: options_source | plain_source
3
3
  options_source: OPTIONS_LINE NEWLINE SOURCE
4
4
  plain_source: SOURCE
@@ -1 +1 @@
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
+ import{n as e}from"./js-realm-worker-CDJhvYJx.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,2 +1,2 @@
1
- import{n as e}from"./bunny-run-rzX0F1nl.js";var t=class extends Error{};function n(e){throw new t(e)}const r=/* @__PURE__ */ new Set([`-y`,`-n`,`-hide_banner`,`-nostats`,`-stats`,`-nostdin`,`-sn`,`-dn`,`-copyts`]),i=/* @__PURE__ */ new Set([`-loglevel`,`-v`,`-threads`,`-preset`,`-tune`,`-max_muxing_queue_size`,`-strict`,`-stats_period`,`-maxrate`,`-bufsize`,`-vsync`,`-fps_mode`,`-avoid_negative_ts`]),a={copy:`copy`,libx264:`avc`,h264:`avc`,avc:`avc`,libx265:`hevc`,hevc:`hevc`,h265:`hevc`,libvpx:`vp8`,vp8:`vp8`,"libvpx-vp9":`vp9`,vp9:`vp9`,"libaom-av1":`av1`,libsvtav1:`av1`,librav1e:`av1`,av1:`av1`},o={copy:`copy`,aac:`aac`,libfdk_aac:`aac`,libopus:`opus`,opus:`opus`,libmp3lame:`mp3`,mp3:`mp3`,libvorbis:`vorbis`,vorbis:`vorbis`,flac:`flac`,pcm_s16le:`pcm-s16`,pcm_s16be:`pcm-s16be`,pcm_s24le:`pcm-s24`,pcm_s32le:`pcm-s32`,pcm_f32le:`pcm-f32`,pcm_u8:`pcm-u8`,pcm_s8:`pcm-s8`,pcm_mulaw:`ulaw`,pcm_alaw:`alaw`},s={mp4:`mp4`,m4v:`mp4`,m4a:`mp4`,ipod:`mp4`,mov:`mov`,webm:`webm`,matroska:`mkv`,mkv:`mkv`,mka:`mkv`,mp3:`mp3`,wav:`wav`,ogg:`ogg`,oga:`ogg`,opus:`ogg`,flac:`flac`,adts:`adts`,aac:`adts`,mpegts:`mpegts`,ts:`mpegts`,m2ts:`mpegts`},c=/* @__PURE__ */ new Set([`mp4`,`mov`,`matroska`,`webm`,`mp3`,`wav`,`ogg`,`flac`,`aac`,`adts`,`mpegts`]),l=/* @__PURE__ */ new Set([`h264_mp4toannexb`,`aac_adtstoasc`]),u={title:`title`,artist:`artist`,album:`album`,album_artist:`albumArtist`,genre:`genre`,comment:`comment`,description:`description`};function d(e){let t=/^(\d+(?:\.\d+)?)ms$/.exec(e);if(t)return Number(t[1])/1e3;let r=/^(-?\d+(?:\.\d+)?)s?$/.exec(e);if(r)return Number(r[1]);let i=/^(?:(\d+):)?(\d{1,2}):(\d{1,2}(?:\.\d+)?)$/.exec(e);if(i){let[,e=`0`,t,n]=i;return Number(e)*3600+Number(t)*60+Number(n)}return n(`cannot parse time '${e}'`)}function f(e){let t=/^(\d+(?:\.\d+)?)([kKmM])?$/.exec(e);if(!t)return n(`cannot parse bitrate '${e}'`);let r=t[2]===void 0?1:/k/i.test(t[2])?1e3:1e6;return Math.round(Number(t[1])*r)}function p(e,t){return!/^\d+$/.test(e)||Number(e)<=0?n(`${t} must be a positive integer`):Number(e)}function m(e){return e<=18?`very_high`:e<=23?`high`:e<=28?`medium`:e<=35?`low`:`very_low`}function h(e){return e<=1?`very_high`:e<=3?`high`:e<=5?`medium`:e<=7?`low`:`very_low`}function g(e){return e.replace(/:\d+$/,``)}function _(e,t){let r=e.split(`:`),i={},a=[];for(let e of r){let t=e.indexOf(`=`);t>=0?i[e.slice(0,t)]=e.slice(t+1):a.push(e)}let o=i.w??i.width??a[0],s=i.h??i.height??a[1];(o===void 0||s===void 0)&&n(`scale needs both a width and a height`);let c=(e,t)=>{if(e!==`-1`&&e!==`-2`)return/^\d+$/.test(e)||n(`scale ${t} '${e}' is an expression, not a size`),Number(e)},l=c(o,`width`),u=c(s,`height`);l===void 0&&u===void 0&&n(`scale keeps both dimensions`),l!==void 0&&(t.width=l),u!==void 0&&(t.height=u),l!==void 0&&u!==void 0&&(t.fit=`fill`)}function v(e,t){let r=e.split(`:`);(r.length!==4||!r.every(e=>/^\d+$/.test(e)))&&n(`crop needs four integers (w:h:x:y); centred or expression crops stay on wasm`);let[i,a,o,s]=r.map(Number);t.crop={left:o,top:s,width:i,height:a}}function y(e,t,r){r.rotated&&n(`scale after transpose: rotation/resize order is not expressible`),_(e,t),r.resized=!0}function b(e,t,r){(r.resized||r.rotated)&&n(`crop after scale/transpose: mediabunny crops the source first`),v(e,t)}function x(e,t,r){(r.resized||t.crop)&&n(`transpose combined with scale/crop: rotation order is not expressible`),e===`1`||e===`clock`?t.rotate=90:e===`2`||e===`cclock`?t.rotate=270:n(`transpose=${e} flips as well as rotates`),r.rotated=!0}function S(e,t){t.frameRate=Number(e.replace(/^fps=/,``)),t.frameRate>0||n(`fps '${e}' is not a number`)}function C(e,t){let r={resized:!1,rotated:!1};for(let i of e.split(`,`)){let e=i.indexOf(`=`),a=(e>=0?i.slice(0,e):i).trim(),o=e>=0?i.slice(e+1):``;a===`scale`?y(o,t,r):a===`crop`?b(o,t,r):a===`transpose`?x(o,t,r):a===`fps`?S(o,t):a===`format`?o!==`yuv420p`&&n(`format=${o} has no WebCodecs equivalent`):n(`video filter '${a}' has no WebCodecs equivalent`)}}function w(e,t){for(let r of e.split(`,`)){let e=/^aresample=(?:osr=)?(\d+)$/.exec(r.trim());e||n(`audio filter '${r}' has no WebCodecs equivalent`),t.sampleRate=Number(e[1])}}function T(e,t){let r=a[t];r||n(`video codec '${t}' is not available through WebCodecs`),r===`copy`?(delete e.plan.video.codec,e.plan.video.copy=!0):(delete e.plan.video.copy,e.plan.video.codec=r)}function E(e,t){let r=o[t];r||n(`audio codec '${t}' is not available through WebCodecs`),r===`copy`?(delete e.plan.audio.codec,e.plan.audio.copy=!0):(delete e.plan.audio.copy,e.plan.audio.codec=r)}function D(e,t){for(let r of t.split(`+`).filter(Boolean))r===`faststart`?e.plan.fastStart=`in-memory`:r===`frag_keyframe`||r===`empty_moov`||r===`default_base_moof`?e.plan.fastStart=`fragmented`:n(`-movflags ${r} has no mediabunny equivalent`)}function O(e,t){let r=t.indexOf(`=`);r<0&&n(`-metadata '${t}' is not key=value`);let i=u[t.slice(0,r)];i||n(`-metadata ${t.slice(0,r)} is not a tag mediabunny writes`),e.plan.tags={...e.plan.tags,[i]:t.slice(r+1)}}function k(e,t,r){let{video:a,audio:o}=e.plan;switch(t){case`-c`:case`-codec`:return T(e,r),E(e,r),!0;case`-c:v`:case`-vcodec`:case`-codec:v`:return T(e,r),!0;case`-c:a`:case`-acodec`:case`-codec:a`:return E(e,r),!0;case`-b:v`:case`-vb`:case`-b`:return a.bitrate=f(r),!0;case`-b:a`:case`-ab`:return o.bitrate=f(r),!0;case`-crf`:return a.quality=m(Number(r)),!0;case`-q:a`:case`-qscale:a`:return o.quality=h(Number(r)),!0;case`-ac`:return o.numberOfChannels=p(r,`-ac`),!0;case`-ar`:return o.sampleRate=p(r,`-ar`),!0;case`-r`:case`-r:v`:return a.frameRate=Number(r),a.frameRate>0||n(`-r '${r}' is not a frame rate`),e.frameRateGiven=!0,!0;case`-g`:return e.gop=p(r,`-g`),!0;case`-s`:case`-s:v`:{let e=/^(\d+)x(\d+)$/.exec(r);return e?(a.width=Number(e[1]),a.height=Number(e[2]),a.fit=`fill`,!0):n(`-s '${r}' is not WxH`)}case`-vf`:case`-filter:v`:return C(r,a),!0;case`-af`:case`-filter:a`:return w(r,o),!0;case`-pix_fmt`:return r!==`yuv420p`&&n(`-pix_fmt ${r} has no WebCodecs equivalent`),!0;case`-movflags`:return D(e,r),!0;case`-f`:{let t=s[r];return t?(e.container=t,!0):n(`muxer '${r}' is not one mediabunny writes`)}case`-map`:return r!==`0`&&n(`-map ${r} selects streams; only '-map 0' is expressible`),!0;case`-metadata`:return O(e,r),!0;case`-ss`:return e.plan.trim={...e.plan.trim,start:d(r)},!0;case`-t`:{let t=e.plan.trim?.start??0;return e.plan.trim={...e.plan.trim,end:t+d(r)},!0}case`-to`:return e.plan.trim={...e.plan.trim,end:d(r)},!0;case`-bsf`:case`-bsf:v`:case`-bsf:a`:return l.has(r)||n(`bitstream filter '${r}' has no mediabunny equivalent`),!0;default:return i.has(t)}}function A(e,t){for(let i=0;i<t.length;i++){let a=t[i],o=g(a);if(r.has(o))continue;if(o===`-shortest`&&n(`-shortest ends at the shortest stream; mediabunny writes every track to its end`),o===`-an`){e.plan.audio={discard:!0};continue}if(o===`-vn`){e.plan.video={discard:!0};continue}o.startsWith(`-`)||n(`unexpected positional '${a}'`);let s=t[i+1];s===void 0&&n(`option ${a} is missing its value`),k(e,o,s)||n(`option ${a} has no WebCodecs equivalent`),i+=1}}function j(e,t){for(let a=0;a<t.length;a++){let o=t[a];if(o===`-i`){a+=1;continue}if(r.has(o))continue;let s=t[a+1];if(s===void 0&&n(`input option ${o} is missing its value`),o===`-ss`)e.plan.trim={...e.plan.trim,start:d(s)};else if(o===`-t`){let t=e.plan.trim?.start??0;e.plan.trim={...e.plan.trim,end:t+d(s)}}else o===`-to`?e.plan.trim={...e.plan.trim,end:d(s)}:o===`-f`?c.has(s)||n(`input demuxer '${s}' is not one mediabunny reads`):i.has(o)||n(`input option ${o} has no WebCodecs equivalent`);a+=1}}function M(e){let t=/\.([A-Za-z0-9]+)$/.exec(e)?.[1]?.toLowerCase();return(t?s[t]:void 0)??n(`output '${e}' is not a container mediabunny writes`)}function N(e,t){let{plan:r}=e;r.container=e.container??M(t),r.fastStart!==!1&&r.container!==`mp4`&&r.container!==`mov`&&n(`-movflags only applies to mp4/mov output`),e.gop!==void 0&&(e.frameRateGiven||n(`-g needs -r so the interval can be expressed in seconds`),r.video.keyFrameInterval=e.gop/r.video.frameRate),r.trim?.start!==void 0&&r.trim.end!==void 0&&r.trim.end<=r.trim.start&&n(`trim end is not after trim start`),!r.video.discard&&(r.video.codec||r.video.bitrate!==void 0||r.video.quality)&&(r.video.forceTranscode=!0),!r.audio.discard&&(r.audio.codec||r.audio.bitrate!==void 0||r.audio.quality)&&(r.audio.forceTranscode=!0);let i=r.video;i.copy&&(i.width!==void 0||i.height!==void 0||i.crop||i.rotate!==void 0||i.frameRate!==void 0||i.bitrate!==void 0||i.quality)&&n(`-c:v copy cannot be combined with video filters or a bitrate`);let a=r.audio;return a.copy&&(a.numberOfChannels!==void 0||a.sampleRate!==void 0||a.bitrate!==void 0||a.quality)&&n(`-c:a copy cannot be combined with -ac/-ar or a bitrate`),r.video.discard&&r.audio.discard&&n(`-an with -vn leaves nothing to write`),r}function P(e){try{if(e.inputs.length!==1)return{ok:!1,reason:`more than one input`};let[t]=e.inputs;if(t.format===`lavfi`||t.format===`concat`||t.format===`avfoundation`)return{ok:!1,reason:`-f ${t.format} inputs are synthesized by ffmpeg`};if(!e.outputPath)return{ok:!1,reason:`no output`};let n={plan:{container:`mp4`,video:{},audio:{},fastStart:!1},frameRateGiven:!1};return j(n,t.raw),A(n,e.outputOpts),{ok:!0,plan:N(n,e.outputPath)}}catch(e){if(e instanceof t)return{ok:!1,reason:e.message};throw e}}function F(e){return{result:{stdout:``,stderr:e,exitCode:1}}}async function I(t){let n=t.engine===`mediabunny`,r=P(t.parsed);if(!r.ok)return n?F(`ffmpeg: FFMPEG_ENGINE=mediabunny cannot run this: ${r.reason}\n`):{fallback:!0,note:null};let i=`ffmpeg: engine mediabunny (WebCodecs)
1
+ import{n as e}from"./bunny-run-B37YZhan.js";var t=class extends Error{};function n(e){throw new t(e)}const r=/* @__PURE__ */ new Set([`-y`,`-n`,`-hide_banner`,`-nostats`,`-stats`,`-nostdin`,`-sn`,`-dn`,`-copyts`]),i=/* @__PURE__ */ new Set([`-loglevel`,`-v`,`-threads`,`-preset`,`-tune`,`-max_muxing_queue_size`,`-strict`,`-stats_period`,`-maxrate`,`-bufsize`,`-vsync`,`-fps_mode`,`-avoid_negative_ts`]),a={copy:`copy`,libx264:`avc`,h264:`avc`,avc:`avc`,libx265:`hevc`,hevc:`hevc`,h265:`hevc`,libvpx:`vp8`,vp8:`vp8`,"libvpx-vp9":`vp9`,vp9:`vp9`,"libaom-av1":`av1`,libsvtav1:`av1`,librav1e:`av1`,av1:`av1`},o={copy:`copy`,aac:`aac`,libfdk_aac:`aac`,libopus:`opus`,opus:`opus`,libmp3lame:`mp3`,mp3:`mp3`,libvorbis:`vorbis`,vorbis:`vorbis`,flac:`flac`,pcm_s16le:`pcm-s16`,pcm_s16be:`pcm-s16be`,pcm_s24le:`pcm-s24`,pcm_s32le:`pcm-s32`,pcm_f32le:`pcm-f32`,pcm_u8:`pcm-u8`,pcm_s8:`pcm-s8`,pcm_mulaw:`ulaw`,pcm_alaw:`alaw`},s={mp4:`mp4`,m4v:`mp4`,m4a:`mp4`,ipod:`mp4`,mov:`mov`,webm:`webm`,matroska:`mkv`,mkv:`mkv`,mka:`mkv`,mp3:`mp3`,wav:`wav`,ogg:`ogg`,oga:`ogg`,opus:`ogg`,flac:`flac`,adts:`adts`,aac:`adts`,mpegts:`mpegts`,ts:`mpegts`,m2ts:`mpegts`},c=/* @__PURE__ */ new Set([`mp4`,`mov`,`matroska`,`webm`,`mp3`,`wav`,`ogg`,`flac`,`aac`,`adts`,`mpegts`]),l=/* @__PURE__ */ new Set([`h264_mp4toannexb`,`aac_adtstoasc`]),u={title:`title`,artist:`artist`,album:`album`,album_artist:`albumArtist`,genre:`genre`,comment:`comment`,description:`description`};function d(e){let t=/^(\d+(?:\.\d+)?)ms$/.exec(e);if(t)return Number(t[1])/1e3;let r=/^(-?\d+(?:\.\d+)?)s?$/.exec(e);if(r)return Number(r[1]);let i=/^(?:(\d+):)?(\d{1,2}):(\d{1,2}(?:\.\d+)?)$/.exec(e);if(i){let[,e=`0`,t,n]=i;return Number(e)*3600+Number(t)*60+Number(n)}return n(`cannot parse time '${e}'`)}function f(e){let t=/^(\d+(?:\.\d+)?)([kKmM])?$/.exec(e);if(!t)return n(`cannot parse bitrate '${e}'`);let r=t[2]===void 0?1:/k/i.test(t[2])?1e3:1e6;return Math.round(Number(t[1])*r)}function p(e,t){return!/^\d+$/.test(e)||Number(e)<=0?n(`${t} must be a positive integer`):Number(e)}function m(e){return e<=18?`very_high`:e<=23?`high`:e<=28?`medium`:e<=35?`low`:`very_low`}function h(e){return e<=1?`very_high`:e<=3?`high`:e<=5?`medium`:e<=7?`low`:`very_low`}function g(e){return e.replace(/:\d+$/,``)}function _(e,t){let r=e.split(`:`),i={},a=[];for(let e of r){let t=e.indexOf(`=`);t>=0?i[e.slice(0,t)]=e.slice(t+1):a.push(e)}let o=i.w??i.width??a[0],s=i.h??i.height??a[1];(o===void 0||s===void 0)&&n(`scale needs both a width and a height`);let c=(e,t)=>{if(e!==`-1`&&e!==`-2`)return/^\d+$/.test(e)||n(`scale ${t} '${e}' is an expression, not a size`),Number(e)},l=c(o,`width`),u=c(s,`height`);l===void 0&&u===void 0&&n(`scale keeps both dimensions`),l!==void 0&&(t.width=l),u!==void 0&&(t.height=u),l!==void 0&&u!==void 0&&(t.fit=`fill`)}function v(e,t){let r=e.split(`:`);(r.length!==4||!r.every(e=>/^\d+$/.test(e)))&&n(`crop needs four integers (w:h:x:y); centred or expression crops stay on wasm`);let[i,a,o,s]=r.map(Number);t.crop={left:o,top:s,width:i,height:a}}function y(e,t,r){r.rotated&&n(`scale after transpose: rotation/resize order is not expressible`),_(e,t),r.resized=!0}function b(e,t,r){(r.resized||r.rotated)&&n(`crop after scale/transpose: mediabunny crops the source first`),v(e,t)}function x(e,t,r){(r.resized||t.crop)&&n(`transpose combined with scale/crop: rotation order is not expressible`),e===`1`||e===`clock`?t.rotate=90:e===`2`||e===`cclock`?t.rotate=270:n(`transpose=${e} flips as well as rotates`),r.rotated=!0}function S(e,t){t.frameRate=Number(e.replace(/^fps=/,``)),t.frameRate>0||n(`fps '${e}' is not a number`)}function C(e,t){let r={resized:!1,rotated:!1};for(let i of e.split(`,`)){let e=i.indexOf(`=`),a=(e>=0?i.slice(0,e):i).trim(),o=e>=0?i.slice(e+1):``;a===`scale`?y(o,t,r):a===`crop`?b(o,t,r):a===`transpose`?x(o,t,r):a===`fps`?S(o,t):a===`format`?o!==`yuv420p`&&n(`format=${o} has no WebCodecs equivalent`):n(`video filter '${a}' has no WebCodecs equivalent`)}}function w(e,t){for(let r of e.split(`,`)){let e=/^aresample=(?:osr=)?(\d+)$/.exec(r.trim());e||n(`audio filter '${r}' has no WebCodecs equivalent`),t.sampleRate=Number(e[1])}}function T(e,t){let r=a[t];r||n(`video codec '${t}' is not available through WebCodecs`),r===`copy`?(delete e.plan.video.codec,e.plan.video.copy=!0):(delete e.plan.video.copy,e.plan.video.codec=r)}function E(e,t){let r=o[t];r||n(`audio codec '${t}' is not available through WebCodecs`),r===`copy`?(delete e.plan.audio.codec,e.plan.audio.copy=!0):(delete e.plan.audio.copy,e.plan.audio.codec=r)}function D(e,t){for(let r of t.split(`+`).filter(Boolean))r===`faststart`?e.plan.fastStart=`in-memory`:r===`frag_keyframe`||r===`empty_moov`||r===`default_base_moof`?e.plan.fastStart=`fragmented`:n(`-movflags ${r} has no mediabunny equivalent`)}function O(e,t){let r=t.indexOf(`=`);r<0&&n(`-metadata '${t}' is not key=value`);let i=u[t.slice(0,r)];i||n(`-metadata ${t.slice(0,r)} is not a tag mediabunny writes`),e.plan.tags={...e.plan.tags,[i]:t.slice(r+1)}}function k(e,t,r){let{video:a,audio:o}=e.plan;switch(t){case`-c`:case`-codec`:return T(e,r),E(e,r),!0;case`-c:v`:case`-vcodec`:case`-codec:v`:return T(e,r),!0;case`-c:a`:case`-acodec`:case`-codec:a`:return E(e,r),!0;case`-b:v`:case`-vb`:case`-b`:return a.bitrate=f(r),!0;case`-b:a`:case`-ab`:return o.bitrate=f(r),!0;case`-crf`:return a.quality=m(Number(r)),!0;case`-q:a`:case`-qscale:a`:return o.quality=h(Number(r)),!0;case`-ac`:return o.numberOfChannels=p(r,`-ac`),!0;case`-ar`:return o.sampleRate=p(r,`-ar`),!0;case`-r`:case`-r:v`:return a.frameRate=Number(r),a.frameRate>0||n(`-r '${r}' is not a frame rate`),e.frameRateGiven=!0,!0;case`-g`:return e.gop=p(r,`-g`),!0;case`-s`:case`-s:v`:{let e=/^(\d+)x(\d+)$/.exec(r);return e?(a.width=Number(e[1]),a.height=Number(e[2]),a.fit=`fill`,!0):n(`-s '${r}' is not WxH`)}case`-vf`:case`-filter:v`:return C(r,a),!0;case`-af`:case`-filter:a`:return w(r,o),!0;case`-pix_fmt`:return r!==`yuv420p`&&n(`-pix_fmt ${r} has no WebCodecs equivalent`),!0;case`-movflags`:return D(e,r),!0;case`-f`:{let t=s[r];return t?(e.container=t,!0):n(`muxer '${r}' is not one mediabunny writes`)}case`-map`:return r!==`0`&&n(`-map ${r} selects streams; only '-map 0' is expressible`),!0;case`-metadata`:return O(e,r),!0;case`-ss`:return e.plan.trim={...e.plan.trim,start:d(r)},!0;case`-t`:{let t=e.plan.trim?.start??0;return e.plan.trim={...e.plan.trim,end:t+d(r)},!0}case`-to`:return e.plan.trim={...e.plan.trim,end:d(r)},!0;case`-bsf`:case`-bsf:v`:case`-bsf:a`:return l.has(r)||n(`bitstream filter '${r}' has no mediabunny equivalent`),!0;default:return i.has(t)}}function A(e,t){for(let i=0;i<t.length;i++){let a=t[i],o=g(a);if(r.has(o))continue;if(o===`-shortest`&&n(`-shortest ends at the shortest stream; mediabunny writes every track to its end`),o===`-an`){e.plan.audio={discard:!0};continue}if(o===`-vn`){e.plan.video={discard:!0};continue}o.startsWith(`-`)||n(`unexpected positional '${a}'`);let s=t[i+1];s===void 0&&n(`option ${a} is missing its value`),k(e,o,s)||n(`option ${a} has no WebCodecs equivalent`),i+=1}}function j(e,t){for(let a=0;a<t.length;a++){let o=t[a];if(o===`-i`){a+=1;continue}if(r.has(o))continue;let s=t[a+1];if(s===void 0&&n(`input option ${o} is missing its value`),o===`-ss`)e.plan.trim={...e.plan.trim,start:d(s)};else if(o===`-t`){let t=e.plan.trim?.start??0;e.plan.trim={...e.plan.trim,end:t+d(s)}}else o===`-to`?e.plan.trim={...e.plan.trim,end:d(s)}:o===`-f`?c.has(s)||n(`input demuxer '${s}' is not one mediabunny reads`):i.has(o)||n(`input option ${o} has no WebCodecs equivalent`);a+=1}}function M(e){let t=/\.([A-Za-z0-9]+)$/.exec(e)?.[1]?.toLowerCase();return(t?s[t]:void 0)??n(`output '${e}' is not a container mediabunny writes`)}function N(e,t){let{plan:r}=e;r.container=e.container??M(t),r.fastStart!==!1&&r.container!==`mp4`&&r.container!==`mov`&&n(`-movflags only applies to mp4/mov output`),e.gop!==void 0&&(e.frameRateGiven||n(`-g needs -r so the interval can be expressed in seconds`),r.video.keyFrameInterval=e.gop/r.video.frameRate),r.trim?.start!==void 0&&r.trim.end!==void 0&&r.trim.end<=r.trim.start&&n(`trim end is not after trim start`),!r.video.discard&&(r.video.codec||r.video.bitrate!==void 0||r.video.quality)&&(r.video.forceTranscode=!0),!r.audio.discard&&(r.audio.codec||r.audio.bitrate!==void 0||r.audio.quality)&&(r.audio.forceTranscode=!0);let i=r.video;i.copy&&(i.width!==void 0||i.height!==void 0||i.crop||i.rotate!==void 0||i.frameRate!==void 0||i.bitrate!==void 0||i.quality)&&n(`-c:v copy cannot be combined with video filters or a bitrate`);let a=r.audio;return a.copy&&(a.numberOfChannels!==void 0||a.sampleRate!==void 0||a.bitrate!==void 0||a.quality)&&n(`-c:a copy cannot be combined with -ac/-ar or a bitrate`),r.video.discard&&r.audio.discard&&n(`-an with -vn leaves nothing to write`),r}function P(e){try{if(e.inputs.length!==1)return{ok:!1,reason:`more than one input`};let[t]=e.inputs;if(t.format===`lavfi`||t.format===`concat`||t.format===`avfoundation`)return{ok:!1,reason:`-f ${t.format} inputs are synthesized by ffmpeg`};if(!e.outputPath)return{ok:!1,reason:`no output`};let n={plan:{container:`mp4`,video:{},audio:{},fastStart:!1},frameRateGiven:!1};return j(n,t.raw),A(n,e.outputOpts),{ok:!0,plan:N(n,e.outputPath)}}catch(e){if(e instanceof t)return{ok:!1,reason:e.message};throw e}}function F(e){return{result:{stdout:``,stderr:e,exitCode:1}}}async function I(t){let n=t.engine===`mediabunny`,r=P(t.parsed);if(!r.ok)return n?F(`ffmpeg: FFMPEG_ENGINE=mediabunny cannot run this: ${r.reason}\n`):{fallback:!0,note:null};let i=`ffmpeg: engine mediabunny (WebCodecs)
2
2
  `,a=await e({plan:r.plan,input:t.input,onLog:e=>{i+=`${e}\n`}});if(a.kind===`declined`)return n?F(`${i}ffmpeg: mediabunny declined: ${a.reason}\n`):{fallback:!0,note:`mediabunny declined (${a.reason}); using the wasm core`};if(a.kind===`failed`)return F(`${i}ffmpeg: ${a.message}\n`);try{await t.fs.writeFile(t.outputPath,a.bytes)}catch(e){return F(`${i}ffmpeg: cannot write ${t.parsed.outputPath}: ${e instanceof Error?e.message:String(e)}\n`)}return i+=`ffmpeg: wrote ${t.parsed.outputPath} (${a.summary}, ${a.bytes.byteLength} bytes)\n`,{result:{stdout:``,stderr:i,exitCode:0}}}export{I as runFfmpegFastPath};
@@ -1,4 +1,4 @@
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(`
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-965_891X.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
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
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
4
  `:``)+(n.live?`live: true
@@ -1 +1 @@
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
+ 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-BB61f9E8.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{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
+ import{c as e,i as t,o as n}from"./frozen-archive-format-7wcOWvsT.js";import{o as r}from"./frozen-archive-writer-Cixi7_NJ.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{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
+ 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-965_891X.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 +1 @@
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};
1
+ import{_ as e,n as t,r as n}from"./account-store--QH_gRlz.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-B5CKyKdE.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};