sliccy 3.35.0 → 3.35.1
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.
- package/dist/node-server/chrome-launch.d.ts +16 -1
- package/dist/node-server/chrome-launch.js +54 -4
- package/dist/node-server/index.js +6 -3
- package/dist/ui/assets/{adobe-BRQEfz1I.js → adobe-aXLIvH9D.js} +2 -2
- package/dist/ui/assets/{adobe-DqEEV7K5.js → adobe-dF90Inf7.js} +1 -1
- package/dist/ui/assets/{agent-bridge--aoB7za4.js → agent-bridge-HevsOQu4.js} +1 -1
- package/dist/ui/assets/{agent-message-to-chat-Cf-PA3PL.js → agent-message-to-chat-LKi9XTTG.js} +1 -1
- package/dist/ui/assets/{anthropic-CP-ouum5.js → anthropic-BPquRfES.js} +1 -1
- package/dist/ui/assets/{anthropic-oHjoP5Qp.js → anthropic-j72gYC37.js} +1 -1
- package/dist/ui/assets/{apps-P8w2nNUB.js → apps-CUZ0j46Q.js} +1 -1
- package/dist/ui/assets/{azure-openai-BDajo6ba.js → azure-openai-DL9rlaYT.js} +1 -1
- package/dist/ui/assets/{azure-openai-Dgh02LJw.js → azure-openai-NIHEjuZY.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-BhEyP5io.js → azure-openai-responses-BjWD4_Qc.js} +1 -1
- package/dist/ui/assets/{azure-openai-responses-D_Emnwqm.js → azure-openai-responses-BkJiczft.js} +1 -1
- package/dist/ui/assets/{biome_wasm-Cj2t2Sqp.js → biome_wasm-CTHS5Ntm.js} +1 -1
- package/dist/ui/assets/{bsh-watchdog-BHM3lIIW.js → bsh-watchdog-DAwJmFZl.js} +1 -1
- package/dist/ui/assets/{cdp-DzsLEquc.js → cdp-CaT5TlrI.js} +3 -3
- package/dist/ui/assets/{cdp-ws-page-bridge-Cq3dnPCj.js → cdp-ws-page-bridge-_x_UcZJn.js} +1 -1
- package/dist/ui/assets/{common-Bes6Rp5g.js → common-DRAV2dJd.js} +1 -1
- package/dist/ui/assets/{connect-surface-6MDb65af.js → connect-surface-CCfSI5-c.js} +1 -1
- package/dist/ui/assets/cost-command-CW43ld_y.js +1 -0
- package/dist/ui/assets/{dist-iTrcpjMt.js → dist-Bsh8aEYP.js} +1 -1
- package/dist/ui/assets/{dist-B_L1hx85.js → dist-BvP45YUI.js} +1 -1
- package/dist/ui/assets/{dist-BvikTLzU.js → dist-D3vqQ2Yo.js} +1 -1
- package/dist/ui/assets/{dist-BR9SH6f-.js → dist-DVEQZAIT.js} +1 -1
- package/dist/ui/assets/{es-CcN0if_N.js → es-CKSMqgEY.js} +1 -1
- package/dist/ui/assets/{follower-sprinkle-bridge-BnXbVmXR.js → follower-sprinkle-bridge-s_KYng2H.js} +1 -1
- package/dist/ui/assets/{github-BVkjHtni.js → github-DlJxVVkf.js} +2 -2
- package/dist/ui/assets/{github-kxRKas0e.js → github-YDAnlxEm.js} +1 -1
- package/dist/ui/assets/{github-copilot-O8gRRubZ.js → github-copilot-B6MHst0D.js} +2 -2
- package/dist/ui/assets/{github-copilot-r5E168qG.js → github-copilot-DInoIk7O.js} +1 -1
- package/dist/ui/assets/{google-DhgTyv3k.js → google-BV3wSZBi.js} +1 -1
- package/dist/ui/assets/{google-C4UaifIA.js → google-LnWE4Aht.js} +1 -1
- package/dist/ui/assets/{google-shared-cbPEawjU.js → google-shared-BFb9WNQf.js} +1 -1
- package/dist/ui/assets/{google-shared-CfTcRL_l.js → google-shared-D3Z1fbp0.js} +1 -1
- package/dist/ui/assets/{google-vertex-DrVy9tT-.js → google-vertex-No9Wv9Rg.js} +1 -1
- package/dist/ui/assets/{google-vertex-DCwY7SpP.js → google-vertex-iVFABtTb.js} +1 -1
- package/dist/ui/assets/{hosted-config-apply-6JWS8OfU.js → hosted-config-apply-D5JlRSaz.js} +1 -1
- package/dist/ui/assets/{intercepted-oauth-BeA89evx.js → intercepted-oauth-Dn9rIi-C.js} +1 -1
- package/dist/ui/assets/{kernel-worker-CsVAcCa0.js → kernel-worker-D1ZZbDk7.js} +20 -20
- package/dist/ui/assets/{lick-ws-bridge-BeO_NfAN.js → lick-ws-bridge-FzW4E5Cd.js} +1 -1
- package/dist/ui/assets/{local-llm-BExlcRTe.js → local-llm-YQDW7uF7.js} +1 -1
- package/dist/ui/assets/{magick-wasm-52jtVvFN.js → magick-wasm-BeuHUgL1.js} +1 -1
- package/dist/ui/assets/{main-lrS_5wG0.js → main-CilZwNiT.js} +10 -10
- package/dist/ui/assets/{main-cherry-DDFIq_gA.js → main-cherry-DnPYeUe8.js} +1 -1
- package/dist/ui/assets/{migration-run-Blb3KPMp.js → migration-run-p0lR8xxV.js} +1 -1
- package/dist/ui/assets/{mistral-anetp8MW.js → mistral-BkCTqf1V.js} +1 -1
- package/dist/ui/assets/{mistral-Bml5xQsA.js → mistral-Dfoj9fXB.js} +1 -1
- package/dist/ui/assets/{nodejs-TWe3ARKT.js → nodejs-CHtcrjWl.js} +1 -1
- package/dist/ui/assets/{nuke-command-Be-RNfyH.js → nuke-command-DThbTH3f.js} +1 -1
- package/dist/ui/assets/{oauth-B68JgGW1.js → oauth-7_PcMC9m.js} +1 -1
- package/dist/ui/assets/{oauth-bootstrap-hbzMsWI8.js → oauth-bootstrap-sDEhfqCF.js} +2 -2
- package/dist/ui/assets/{oauth-service-DbPObLKr.js → oauth-service-BbWxnAZu.js} +1 -1
- package/dist/ui/assets/{oauth-service-DUrh0AYU.js → oauth-service-C_oui06z.js} +1 -1
- package/dist/ui/assets/{offscreen-client-BujqsTo-.js → offscreen-client-CPehYlEH.js} +1 -1
- package/dist/ui/assets/{onboarding-orchestrator-BD4FQQVL.js → onboarding-orchestrator-Bhtg8moO.js} +1 -1
- package/dist/ui/assets/{openai-codex-Cbrr6rGT.js → openai-codex-Cv3-dlgY.js} +1 -1
- package/dist/ui/assets/{openai-codex-CxjIoboc.js → openai-codex-DYEVNxR_.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-C9vLfgL2.js → openai-codex-responses-Dv-xW9xl.js} +1 -1
- package/dist/ui/assets/{openai-codex-responses-Ck2q17sa.js → openai-codex-responses-PCFMqZ2-.js} +1 -1
- package/dist/ui/assets/{openai-completions-wICCJVuW.js → openai-completions-Ct4ErjP6.js} +1 -1
- package/dist/ui/assets/{openai-responses-Bjsbtb8-.js → openai-responses-BXTgPJAX.js} +1 -1
- package/dist/ui/assets/{openai-responses-DxgM2J96.js → openai-responses-Bcj6Mw9f.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-COkNR-Pr.js → openai-responses-shared-BRpjzDt_.js} +1 -1
- package/dist/ui/assets/{openai-responses-shared-DfPgySbe.js → openai-responses-shared-CZjoigsd.js} +1 -1
- package/dist/ui/assets/{openrouter-DJdg9hUw.js → openrouter-DzmGsDzq.js} +1 -1
- package/dist/ui/assets/{openrouter-DJeU4Mbk.js → openrouter-PAULL0z5.js} +1 -1
- package/dist/ui/assets/{panel-rpc-handlers-CYxO9OxE.js → panel-rpc-handlers-B4grCAzw.js} +1 -1
- package/dist/ui/assets/{provider-p23r1B9g.js → provider-DQmaFemI.js} +1 -1
- package/dist/ui/assets/{provider-D1Ft0Nb8.js → provider-SQ-dF0OV.js} +2 -2
- package/dist/ui/assets/provider-store-access-BijO1ndd.js +1 -0
- package/dist/ui/assets/provider-store-access-COEfTeXB.js +1 -0
- package/dist/ui/assets/{proxied-fetch-KHVJs3Kj.js → proxied-fetch-Bznr24aY.js} +1 -1
- package/dist/ui/assets/{pyodide-BJTshnbo.js → pyodide-B5LJuYH1.js} +2 -2
- package/dist/ui/assets/{remote-terminal-view-D53aNTEz.js → remote-terminal-view-ZxR5LM7B.js} +1 -1
- package/dist/ui/assets/{remote-vfs-client-Cm2KnQKl.js → remote-vfs-client-BWeQEOy_.js} +1 -1
- package/dist/ui/assets/{secret-env-ChcPNQmy.js → secret-env-udqdNnx_.js} +1 -1
- package/dist/ui/assets/{slicc-editor-CjKFECEG.js → slicc-editor-CQAmYyAf.js} +1 -1
- package/dist/ui/assets/{spawn-BQcHMJGU.js → spawn-CvrZvu3h.js} +1 -1
- package/dist/ui/assets/{sql-wasm-C9SZBPLh.js → sql-wasm-sWUWlvZh.js} +1 -1
- package/dist/ui/assets/{src-Duh03CdO.js → src-BcMuhnBe.js} +1 -1
- package/dist/ui/assets/{store-gTLi8tdo.js → store-BOB-n5TL.js} +1 -1
- package/dist/ui/assets/{tray-leave-runtime-COlsOS8N.js → tray-leave-runtime-DxkPV4F3.js} +1 -1
- package/dist/ui/assets/{typescript-rk7H1_FE.js → typescript-BREqP46V.js} +1 -1
- package/dist/ui/assets/{upgrade-detection--HvC0q7X.js → upgrade-detection-DlwpHU2v.js} +1 -1
- package/dist/ui/assets/{web-SsRbZ_tV.js → web-BzK79jFy.js} +1 -1
- package/dist/ui/assets/{writable-vfs-client-CmIlnwCv.js → writable-vfs-client-COZzXV3K.js} +1 -1
- package/dist/ui/assets/{ws-subscribers-CVS-pepL.js → ws-subscribers-C8__TxzG.js} +1 -1
- package/dist/ui/assets/{xai-grok-BR7eM-uM.js → xai-grok-DWmdgPYg.js} +1 -1
- package/dist/ui/assets/{xai-grok-C0k59tLJ.js → xai-grok-woATmag9.js} +1 -1
- package/dist/ui/index.html +1 -1
- package/dist/ui/packages/webapp/index.html +1 -1
- package/package.json +1 -1
- package/dist/ui/assets/cost-command-BJFKPD-9.js +0 -1
- package/dist/ui/assets/provider-store-access-BIempBYx.js +0 -1
- package/dist/ui/assets/provider-store-access-D-VyHV75.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openrouter-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openrouter-PAULL0z5.js","assets/headers-DO1UzNKu.js","assets/sanitize-unicode-DmIE6hZJ.js","assets/openai-Cn5LRPCm.js","assets/anthropic-j72gYC37.js","assets/github-copilot-headers-DZtWWv8W.js","assets/azure-openai-responses-BkJiczft.js","assets/openai-prompt-cache-DXo9f3w5.js","assets/openai-responses-shared-BRpjzDt_.js","assets/hash-yQufAZII.js","assets/google-BV3wSZBi.js","assets/google-shared-D3Z1fbp0.js","assets/google-vertex-No9Wv9Rg.js","assets/mistral-BkCTqf1V.js","assets/openai-codex-responses-PCFMqZ2-.js","assets/openai-completions-Ct4ErjP6.js","assets/openai-responses-Bcj6Mw9f.js","assets/azure-openai-DL9rlaYT.js","assets/local-llm-YQDW7uF7.js","assets/adobe-aXLIvH9D.js","assets/oauth-service-BbWxnAZu.js","assets/github-DlJxVVkf.js","assets/global-db-CbuLl-zx.js","assets/xai-grok-sanitize-CR2JoOJd.js","assets/xai-grok-models-CeEBaUMC.js","assets/xai-grok-woATmag9.js","assets/xai-grok-errors-bnlIBeu-.js","assets/dist-BvP45YUI.js","assets/dist-DVEQZAIT.js","assets/slicc-editor-CQAmYyAf.js","assets/dist-k2Xmqc09.js","assets/spawn-CvrZvu3h.js","assets/offscreen-client-CPehYlEH.js","assets/main-cherry-DnPYeUe8.js","assets/cdp-CaT5TlrI.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import"./modulepreload-polyfill-Dezn_h7o.js";var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),u=(e=>typeof require<`u`?require:typeof Proxy<`u`?new Proxy(e,{get:(e,t)=>(typeof require<`u`?require:e)[t]}):e)(function(e){if(typeof require<`u`)return require.apply(this,arguments);throw Error('Calling `require` for "'+e+"\" in an environment that doesn't expose the `require` function. See https://rolldown.rs/in-depth/bundling-cjs#require-external-modules for more details.")}),d={assign:0,create:0,clone:0,discard:0,update:0};function f(e,t){return d.assign+=1,{...e,...t}}function p(e,t,n){return e>=t&&e<=n}function m(e){return p(e,127462,127487)}function h(e){return p(e,65024,65039)}function g(e){return p(e,768,879)||p(e,6832,6911)||p(e,7616,7679)||p(e,65056,65071)}function _(e){return e>65535?2:1}function v(e,t){for(;t<e.length;){let n=e.codePointAt(t);if(g(n)||h(n))t+=_(n);else break}return t}function ee(e,t){let n=e.codePointAt(t),r=t+_(n);for(r=v(e,r);r<e.length-1&&e[r]===``;){let t=e.codePointAt(r+1);r+=1+_(t),r=v(e,r)}return m(n)&&r<e.length&&m(e.codePointAt(r))&&(r+=_(e.codePointAt(r))),r}function y(e){return p(e,55296,56319)||p(e,768,879)||e===8205}function b(e,t){if(t===0)return!0;let n=0,r=0;for(;r<e.length;)if(r=ee(e,r),n++,n>=t)return!0;return!1}function te(e,t){let n=0,r=0;for(;r<e.length;)if(r=ee(e,r),n++,n>t)return!1;return!0}function ne(e,t){if(t===0)return!0;let n=0;for(;n<e.length;){if(y(e.charCodeAt(n)))return b(e,t);if(n++,n>=t)return!0}return!1}function re(e,t){let n=0;for(;n<e.length;){if(y(e.charCodeAt(n)))return te(e,t);if(n++,n>t)return!1}return!0}function x(e){return Array.isArray(e)}function ie(e){return D(e)&&Symbol.asyncIterator in e}function S(e){return A(typeof e,`bigint`)}function C(e){return A(typeof e,`boolean`)}function ae(e){if(k(e)||!oe(e))return!1;let t=Function.prototype.toString.call(e);return!!(/^class\s/.test(t)||/\[native code\]/.test(t))}function oe(e){return A(typeof e,`function`)}function se(e){return Number.isInteger(e)}function ce(e){return D(e)&&Symbol.iterator in e}function w(e){return A(e,null)}function T(e){return Number.isFinite(e)}function E(e){return D(e)&&!x(e)}function D(e){return A(typeof e,`object`)&&!w(e)}function O(e){return A(typeof e,`string`)}function le(e){return A(typeof e,`symbol`)}function k(e){return A(e,void 0)}function A(e,t){return e===t}function j(e,t){return e>t}function ue(e,t){return e<t}function de(e,t){return e<=t}function fe(e,t){return e>=t}function pe(e,t){if(S(e)||S(t))return BigInt(e)%BigInt(t)===0n;if(!T(e)||se(e)&&1/t%1==0)return!0;let n=e%t;return Math.min(Math.abs(n),Math.abs(n-t))<1e-10}function me(e){if(!D(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return w(t)?!1:A(typeof t.constructor,`function`)&&!(A(t.constructor,globalThis.Object)||A(t.constructor.name,`Object`))}function he(e){return S(e)||C(e)||w(e)||T(e)||O(e)||k(e)}function ge(e,t){return re(e,t)}function _e(e,t){return ne(e,t)}function ve(e,t,n){for(let r=t;r<e.length;r++)if(!n(e[r],r))return!1;return!0}function ye(e,t,n){let r=!0;for(let i=t;i<e.length;i++)n(e[i],i)||(r=!1);return r}function M(e,t,n){return A(e.length,0)?n():t(e[0],e.slice(1))}function be(e){return A(e,`__proto__`)||A(e,`constructor`)||A(e,`prototype`)}function N(e,t){return be(t)?Object.prototype.hasOwnProperty.call(e,t):t in e}function xe(e){return P(e).map(t=>[RegExp(`^${t}$`),e[t]])}function Se(e){return Object.entries(e)}function P(e){return Object.getOwnPropertyNames(e)}function Ce(e){return Object.getOwnPropertySymbols(e)}function we(e){return Object.values(e)}function Te(e,t){if(!D(t))return!1;let n=P(e);return A(n.length,P(t).length)&&n.every(n=>De(e[n],t[n]))}function Ee(e,t){return x(t)&&A(e.length,t.length)&&e.every((n,r)=>De(e[r],t[r]))}function De(e,t){return x(e)?Ee(e,t):D(e)?Te(e,t):A(e,t)}function Oe(e){return e instanceof Boolean}function ke(e){return e instanceof Number}function Ae(e){return e instanceof String}function je(e){return globalThis.ArrayBuffer.isView(e)}function Me(e){return e instanceof globalThis.RegExp}function Ne(e){return e instanceof globalThis.Date}function Pe(e){return e instanceof globalThis.Set}function Fe(e){return e instanceof globalThis.Map}function Ie(e){return D(e)&&N(e,`~guard`)}function Le(e){return e}function Re(e){return e.map(e=>He(e))}function ze(e){let t={},n=Object.getOwnPropertyDescriptors(e);for(let e of Object.keys(n)){let r=n[e];N(r,`value`)&&Object.defineProperty(t,e,{...r,value:He(r.value)})}return t}function Be(e){return new RegExp(e.source,e.flags)}function Ve(e){return e}function He(e){return e instanceof RegExp?Be(e):Ie(e)?Le(e):x(e)?Re(e):D(e)?ze(e):Ve(e)}function Ue(e){return d.clone+=1,He(e)}var We={immutableTypes:!1,maxErrors:8,useAcceleration:!0,exactOptionalPropertyTypes:!1,enumerableKind:!1,correctiveParse:!1};function Ge(){return We}function Ke(e,t){for(let n of Object.keys(t))Object.defineProperty(e,n,{configurable:!0,writable:!0,enumerable:!1,value:t[n]});return e}function qe(e,t){return{...e,...t}}function Je(e,t,n={}){d.create+=1;let r=Ge(),i=qe(t,n),a=r.enumerableKind?qe(i,e):Ke(i,e);return r.immutableTypes?Object.freeze(a):a}function Ye(e,t){d.discard+=1;let n={},r=Object.getOwnPropertyDescriptors(Ue(e)),i=new Set(t);for(let e of Object.keys(r))i.has(e)||Object.defineProperty(n,e,r[e]);return n}function Xe(e,t,n){d.update+=1;let r=Ge(),i=Ue(e);for(let e of Object.keys(t))Object.defineProperty(i,e,{configurable:!0,writable:!0,enumerable:r.enumerableKind,value:t[e]});for(let e of Object.keys(n))Object.defineProperty(i,e,{configurable:!0,enumerable:!0,writable:!0,value:n[e]});return i}function Ze(e,t){return D(e)&&N(e,`~kind`)&&A(e[`~kind`],t)}function Qe(e){return D(e)}function $e(e){return D(e)&&N(e,`~kind`)&&N(e,`type`)&&A(e[`~kind`],`OptionalAddAction`)&&Qe(e.type)}function et(e){return D(e)&&N(e,`~kind`)&&N(e,`type`)&&A(e[`~kind`],`OptionalRemoveAction`)&&Qe(e.type)}function tt(e){return D(e)&&N(e,`~kind`)&&N(e,`type`)&&A(e[`~kind`],`ReadonlyAddAction`)&&Qe(e.type)}function nt(e){return D(e)&&N(e,`~kind`)&&N(e,`type`)&&A(e[`~kind`],`ReadonlyRemoveAction`)&&Qe(e.type)}function rt(e,t,n){return Je({"~kind":`Deferred`},{action:e,parameters:t,options:n},{})}function it(e){return Ze(e,`Deferred`)}function at(e,t){return Je({"~kind":`Promise`},{type:`promise`,item:e},t)}function ot(e){return Ze(e,`Promise`)}function st(e){return Ye(e,[`~kind`,`type`,`item`])}function ct(e){return Xe(e,{"~immutable":!0},{})}function lt(e){return ct(e)}function ut(e){return Qe(e)&&N(e,`~immutable`)}function dt(e){return Ye(e,[`~optional`])}function ft(e){return Xe(e,{"~optional":!0},{})}function pt(e){return ft(e)}function mt(e){return Qe(e)&&N(e,`~optional`)}function ht(e){return Ye(e,[`~readonly`])}function gt(e){return Xe(e,{"~readonly":!0},{})}function eee(e){return gt(e)}function _t(e){return Qe(e)&&N(e,`~readonly`)}function vt(e){return Ze(e,`Base`)}function yt(e,t){return Je({"~kind":`Array`},{type:`array`,items:e},t)}function bt(e){return Ze(e,`Array`)}function xt(e){return Ye(e,[`~kind`,`type`,`items`])}function St(e,t){return Je({"~kind":`AsyncIterator`},{type:`asyncIterator`,iteratorItems:e},t)}function Ct(e){return Ze(e,`AsyncIterator`)}function tee(e){return Ye(e,[`~kind`,`type`,`iteratorItems`])}function wt(e,t,n={}){return Je({"~kind":`Constructor`},{type:`constructor`,parameters:e,instanceType:t},n)}function Tt(e){return Ze(e,`Constructor`)}function Et(e){return Ye(e,[`~kind`,`type`,`parameters`,`instanceType`])}function Dt(e,t,n={}){return Je({"~kind":`Function`},{type:`function`,parameters:e,returnType:t},n)}function Ot(e){return Ze(e,`Function`)}function nee(e){return Ye(e,[`~kind`,`type`,`parameters`,`returnType`])}function kt(e,t){return Je({"~kind":`Ref`},{$ref:e},t)}function At(e){return Ze(e,`Ref`)}function jt(e,t){return Je({"~kind":`Generic`},{type:`generic`,parameters:e,expression:t})}function Mt(e){return Ze(e,`Generic`)}function ree(e){return Je({"~kind":`Any`},{},e)}function Nt(e){return Ze(e,`Any`)}var iee=`(?!)`;function Pt(e){return Je({"~kind":`Never`},{not:{}},e)}function Ft(e){return Ze(e,`Never`)}function It(e){return P(e).filter(t=>!mt(e[t]))}function Lt(e){return P(e)}function Rt(e){return we(e)}function zt(e,t={}){let n=It(e);return Je({"~kind":`Object`},{type:`object`,...n.length>0?{required:n}:{},properties:e},t)}function Bt(e){return Ze(e,`Object`)}function aee(e){return Ye(e,[`~kind`,`type`,`properties`,`required`])}function Vt(e,t={}){return Je({"~kind":`Union`},{anyOf:e},t)}function Ht(e){return Ze(e,`Union`)}function oee(e){return Ye(e,[`~kind`,`anyOf`])}function Ut(e){return Je({"~kind":`Unknown`},{},e)}function Wt(e){return Ze(e,`Unknown`)}function Gt(e,t,n){return Je({"~kind":`Cyclic`},{$defs:P(e).reduce((t,n)=>({...t,[n]:Xe(e[n],{},{$id:n})}),{}),$ref:t},n)}function Kt(e){return Ze(e,`Cyclic`)}function qt(e){return E(e)&&N(e,`~unsafe`)&&w(e[`~unsafe`])}function Jt(e,t){return t[e.length]?.(...e)??(()=>{throw Error(`Invalid Arguments`)})()}function Yt(e){return Ze(e,`Infer`)}function Xt(e){return Ze(e,`Enum`)}function Zt(e,t={}){return Je({"~kind":`Intersect`},{allOf:e},t)}function Qt(e){return Ze(e,`Intersect`)}function see(e){return Ye(e,[`~kind`,`allOf`])}function $t(){throw Error(`Unreachable`)}function cee(e){let t=new Set,n=e;for(;n&&n!==Object.prototype;){for(let e of Reflect.ownKeys(n))e!==`constructor`&&typeof e!=`symbol`&&t.add(e);n=Object.getPrototypeOf(n)}return[...t]}function lee(e){return typeof e==`number`}var en;(function(e){e[e.Array=0]=`Array`,e[e.BigInt=1]=`BigInt`,e[e.Boolean=2]=`Boolean`,e[e.Date=3]=`Date`,e[e.Constructor=4]=`Constructor`,e[e.Function=5]=`Function`,e[e.Null=6]=`Null`,e[e.Number=7]=`Number`,e[e.Object=8]=`Object`,e[e.RegExp=9]=`RegExp`,e[e.String=10]=`String`,e[e.Symbol=11]=`Symbol`,e[e.TypeArray=12]=`TypeArray`,e[e.Undefined=13]=`Undefined`})(en||={});var tn=BigInt(`14695981039346656037`),[uee,nn]=[BigInt(`1099511628211`),BigInt(`18446744073709551616`)],rn=Array.from({length:256}).map((e,t)=>BigInt(t)),an=new Float64Array(1),on=new DataView(an.buffer),sn=new Uint8Array(an.buffer);function cn(e){tn^=rn[e],tn=tn*uee%nn}function ln(e){cn(en.Array);for(let t of e)vn(t)}function un(e){cn(en.BigInt),on.setBigInt64(0,e);for(let e of sn)cn(e)}function dn(e){cn(en.Boolean),cn(+!!e)}function fn(e){cn(en.Constructor),vn(e.toString())}function pn(e){cn(en.Date),vn(e.getTime())}function mn(e){cn(en.Function),vn(e.toString())}function hn(e){cn(en.Null)}function gn(e){cn(en.Number),on.setFloat64(0,e,!0);for(let e of sn)cn(e)}function dee(e){cn(en.Object);for(let t of cee(e).sort())vn(t),vn(e[t])}function fee(e){cn(en.RegExp),_n(e.toString())}var pee=new TextEncoder;function _n(e){cn(en.String);for(let t of pee.encode(e))cn(t)}function mee(e){cn(en.Symbol),vn(e.toString())}function hee(e){cn(en.TypeArray);let t=new Uint8Array(e.buffer);for(let e=0;e<t.length;e++)cn(t[e])}function gee(e){return cn(en.Undefined)}function vn(e){return je(e)?hee(e):Ne(e)?pn(e):Me(e)?fee(e):Oe(e)?dn(e.valueOf()):Ae(e)?_n(e.valueOf()):ke(e)?gn(e.valueOf()):lee(e)?gn(e):x(e)?ln(e):C(e)?dn(e):S(e)?un(e):ae(e)?fn(e):w(e)?hn(e):D(e)?dee(e):O(e)?_n(e):le(e)?mee(e):k(e)?gee(e):oe(e)?mn(e):$t()}function _ee(e){return tn=BigInt(`14695981039346656037`),vn(e),tn}function yn(e){return _ee(e).toString(16).padStart(16,`0`)}function vee(e){return Qe(e)&&N(e,`~codec`)&&D(e[`~codec`])&&N(e[`~codec`],`encode`)&&N(e[`~codec`],`decode`)}var yee=`-?(?:0|[1-9][0-9]*)n`;function bee(e){return Je({"~kind":`BigInt`},{type:`bigint`},e)}function bn(e){return Ze(e,`BigInt`)}function xn(e){return Ze(e,`Boolean`)}var Sn=`-?(?:0|[1-9][0-9]*)`;function Cn(e){return Je({"~kind":`Integer`},{type:`integer`},e)}function wn(e){return Ze(e,`Integer`)}function Tn(e,t){return Je({"~kind":`Iterator`},{type:`iterator`,iteratorItems:e},t)}function En(e){return Ze(e,`Iterator`)}function xee(e){return Ye(e,[`~kind`,`type`,`iteratorItems`])}var See=class extends Error{constructor(e){super(`Invalid Literal value`),Object.defineProperty(this,"cause",{value:{value:e},writable:!1,configurable:!1,enumerable:!1})}};function Cee(e){return S(e)?`bigint`:C(e)?`boolean`:T(e)?`number`:O(e)?`string`:(()=>{throw new See(e)})()}function Dn(e,t){return Je({"~kind":`Literal`},{type:Cee(e),const:e},t)}function On(e){return S(e)||C(e)||T(e)||O(e)}function kn(e){return Nn(e)&&S(e.const)}function An(e){return Nn(e)&&C(e.const)}function jn(e){return Nn(e)&&T(e.const)}function Mn(e){return Nn(e)&&O(e.const)}function Nn(e){return Ze(e,`Literal`)}function Pn(e){return Je({"~kind":`Null`},{type:`null`},e)}function Fn(e){return Ze(e,`Null`)}var In=`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`;function Ln(e){return Je({"~kind":`Number`},{type:`number`},e)}function Rn(e){return Ze(e,`Number`)}function zn(e){return Je({"~kind":`Symbol`},{type:`symbol`},e)}function Bn(e){return Ze(e,`Symbol`)}function Vn(e){return Je({"~kind":`String`},{type:`string`},e)}function Hn(e){return Ze(e,`String`)}function Un(e){let t=ste(e);return A(t.length,2)?t[0]:[]}function wee(e){return!0}function Wn(e){return M(e,(e,t)=>Tee(e)?Wn(t):!1,()=>!0)}function Gn(e){return A(e.length,0)?!1:Wn(e)}function Tee(e){return Ht(e)?Gn(e.anyOf):Nn(e)?wee(e.const):!1}function Kn(e){return Gn(e)}function qn(e){return Je({"~kind":`TemplateLiteral`},{type:`string`,pattern:e},{})}function Jn(e,t,n=[]){return M(e,(e,r)=>Jn(r,t,[...n,`${e}${t}`]),()=>n)}function Eee(e,t){return A(e.length,0)?[`${t}`]:Jn(e,t)}function Yn(e,t,n=[]){return M(t,(t,r)=>Yn(e,r,[...n,...Xn(e,t)]),()=>n)}function Xn(e,t){return Ht(t)?Yn(e,t.anyOf):Nn(t)?Eee(e,t.const):$t()}function Zn(e,t){return M(t,(t,n)=>Zn(Xn(e,t),n),()=>e)}function Dee(e){return e.map(e=>Dn(e))}function Oee(e){return Vt(Dee(Zn([],e)))}function kee(e){return A(e.length,0)?$t():A(e.length,1)&&Nn(e[0])?e[0]:Oee(e)}function Qn(e){let t=Un(e);return A(t.length,0)?Vn():Kn(t)?kee(t):qn(e)}function $n(e){let t=Qn(e);return Di(t)?Vn():t}function er(e,t){return Je({"~kind":`Record`},{type:`object`,patternProperties:{[e]:t}})}function Aee(e){return er(Nr,e)}function jee(e){return zt({true:e,false:e})}function Mee(e){return O(e)||T(e)?Dn(e):w(e)?Pn():Pt()}function tr(e){return e.map(e=>Mee(e))}function nr(e){return Vt(tr(e))}function rr(e){return nr(e.enum)}function Nee(e,t){return Or(nr(e),t)}function Pee(e,t){return er(jr,t)}function ir(e,t={}){let[n,r,i]=[e,e.length,!1];return Je({"~kind":`Tuple`},{type:`array`,additionalItems:i,items:n,minItems:r},t)}function ar(e){return Ze(e,`Tuple`)}function Fee(e){return Ye(e,[`~kind`,`type`,`items`,`minItems`,`additionalItems`])}function or(e){return e.reduceRight((e,t,n)=>({[n]:t,...e}),{})}function Iee(e){return zt(or(e.items))}function Lee(e,t){return _t(e)?!!_t(t):!1}function Ree(e,t){return mt(e)?!!mt(t):!1}function zee(e,t){let n=Lee(e,t),r=Ree(e,t),i=ht(dt(fr([e,t])));return n&&r?gt(ft(i)):n&&!r?gt(i):!n&&r?ft(i):i}function Bee(e,t,n){return n in e?n in t?zee(e[n],t[n]):e[n]:n in t?t[n]:Pt()}function Vee(e,t){return[...new Set([...P(t),...P(e)])].reduce((n,r)=>({...n,[r]:Bee(e,t,r)}),{})}function sr(e){return Bt(e)?e.properties:ar(e)?or(e.items):$t()}function Hee(e,t){return zt(Vee(sr(e),sr(t)))}function Uee(e,t){let n=Ma(e,t);return A(n,`left-inside`)?e:A(n,`right-inside`)||A(n,`equal`)?t:Pt()}function cr(e){return Bt(e)||ar(e)}function Wee(e,t){let n=Ht(e),r=Ht(t);return n||r}function Gee(e,t){let n=mr(e),r=mr(t),i=Wee(n,r),a=cr(n),o=cr(r);return i?fr([n,r]):a&&o?Hee(n,r):a&&!o?n:!a&&o?r:Uee(n,r)}function lr(e,t,n=[]){return M(t,(t,r)=>lr(e,r,[...n,Gee(e,t)]),()=>A(n.length,0)?[e]:n)}function ur(e,t,n=[]){return M(e,(e,r)=>ur(r,t,[...n,...dr([e],t)]),()=>n)}function dr(e,t=[]){return M(e,(e,n)=>Ht(e)?dr(n,ur(e.anyOf,t)):dr(n,lr(e,t)),()=>t)}function fr(e){return La(dr(e))}function pr(e){return La(e)}function mr(e){return Qt(e)?fr(e.allOf):Ht(e)?pr(e.anyOf):e}function hr(e){return A(e.length,1)?e[0]:A(e.length,0)?Pt():Vt(e)}function gr(e,t){return Or(fr(e),t)}function _r(e,t){return O(e)||T(e)?zt({[e]:t}):A(e,!1)?zt({false:t}):A(e,!0)?zt({true:t}):zt({})}function vr(e,t){return er(Mr,t)}function yr(e,t){return N(e,`pattern`)&&(O(e.pattern)||e.pattern instanceof RegExp)?er(e.pattern.toString(),t):er(Nr,t)}function br(e,t){return Kn(Un(e))?Or($n(e),t):er(e,t)}function xr(e){return Ht(e)?Sr(e.anyOf):[e]}function Sr(e){return e.reduce((e,t)=>[...e,...xr(t)],[])}function Cr(e){return e.some(e=>Hn(e)||Rn(e)||wn(e))}function wr(e,t){return A(Cr(e),!0)?er(Nr,t):void 0}function Tr(e,t){return e.reduce((e,n)=>Nn(n)&&(O(n.const)||T(n.const))?{...e,[n.const]:t}:e,{})}function Er(e,t){return zt(Tr(e,t))}function Dr(e,t){let n=Sr(e),r=wr(n,t);return Qe(r)?r:Er(n,t)}function Or(e,t){return Nt(e)?Aee(t):xn(e)?jee(t):Xt(e)?Nee(e.enum,t):wn(e)?Pee(e,t):Qt(e)?gr(e.allOf,t):Nn(e)?_r(e.const,t):Rn(e)?vr(e,t):Ht(e)?Dr(e.anyOf,t):Hn(e)?yr(e,t):Di(e)?br(e.pattern,t):zt({})}function kr(e,t,n){return xc([e])?Xe(Or(e,t),{},n):Pr(e,t,n)}function Ar(e,t,n,r,i){return kr(F(e,t,n),F(e,t,r),i)}var jr=`^${Sn}$`,Mr=`^${In}$`,Nr=`^.*$`;function Pr(e,t,n={}){return rt(`Record`,[e,t],n)}function Fr(e,t,n={}){return kr(e,t,n)}function Ir(e,t){return er(e,t)}function Lr(e){return P(e.patternProperties)[0]}function Rr(e){let t=Lr(e);return A(t,Nr)?Vn():A(t,jr)?Cn():A(t,Mr)?Ln():Qn(t)}function zr(e){return e.patternProperties[Lr(e)]}function Br(e){return Ze(e,`Record`)}function Vr(e){return Je({"~kind":`Rest`},{type:`rest`,items:e},{})}function Hr(e){return Ze(e,`Rest`)}function Ur(e){return Ze(e,`This`)}function Wr(e){return Je({"~kind":`Undefined`},{type:`undefined`},e)}function Gr(e){return Ze(e,`Undefined`)}function Kr(e){return Ze(e,`Void`)}function qr(e){return bee()}function Jr(e){return Vn()}function Yr(e){return Ln()}function Xr(e){return Cn()}function Zr(e){return Pt()}function Qr(e){return Dn(e)}function $r(e){return e}function ei(e){return Vt(e[1])}function ti(e){return e.length===3?[...e[0],...e[2]]:e.length===1?[...e[0]]:[]}function ni(e){return[e[0],...e[1]]}function ri(e){return e}function ii(e){return e[1]}function ai(e){return A(e.length,2)}function oi(e,t,n){return ai(e)?t(e[0],e[1]):n()}function Kee(e,t){return A(t.indexOf(e),0)?[e,t.slice(e.length)]:[]}function qee(e,t){for(let n=0;n<e.length;n++){let r=Kee(e[n],t);if(ai(r))return r}return[]}function si(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var Jee=[...si(97,122),...si(65,90)],ci=[`0`,...si(49,57)],li=`//`,ui=`/*`,Yee=`*/`;function di(e){let t=e.indexOf(Yee);return A(t,-1)?``:e.slice(t+2)}function fi(e){let t=e.indexOf(`
|
|
3
3
|
`);return A(t,-1)?``:e.slice(t)}function Xee(e){return e.replace(/^[ \t\r\f\v]+/,``)}function pi(e){let t=Xee(e);return t.startsWith(ui)?pi(di(t.slice(2))):t.startsWith(li)?pi(fi(t.slice(2))):t}function mi(e){let t=e.trimStart();return t.startsWith(ui)?mi(di(t.slice(2))):t.startsWith(li)?mi(fi(t.slice(2))):t}[...ci];function hi(e,t){return qee([e],t)}function gi(e,t){return A(e,``)?[``,t]:e.startsWith(`
|
|
4
|
-
`)?hi(e,pi(t)):e.startsWith(` `)?hi(e,t):hi(e,mi(t))}[...Jee,...ci],[...ci];function Zee(e){return A(e,``)?[]:[e.slice(0,1),e.slice(1)]}function _i(e,t){return M(e,(e,n)=>t.startsWith(e)?!0:_i(n,t),()=>!1)}function vi(e,t,n=``){return oi(Zee(t),(r,i)=>_i(e,t)?[n,t]:vi(e,i,`${n}${r}`),()=>[])}function Qee(e,t){return oi(vi(e,t),(e,t)=>A(e,``)?[]:[e,t],()=>[])}var yi=(e,t,n=()=>[])=>e.length===2?t(e):n(),$ee=e=>yi(gi(`-?(?:0|[1-9][0-9]*)n`,e),([e,t])=>[qr(e),t]),ete=e=>yi(gi(`.*`,e),([e,t])=>[Jr(e),t]),tte=e=>yi(gi(`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,e),([e,t])=>[Yr(e),t]),nte=e=>yi(gi(`-?(?:0|[1-9][0-9]*)`,e),([e,t])=>[Xr(e),t]),rte=e=>yi(gi(`(?!)`,e),([e,t])=>[Zr(e),t]),ite=e=>yi(Qee([`-?(?:0|[1-9][0-9]*)n`,`.*`,`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,`-?(?:0|[1-9][0-9]*)`,`(?!)`,`(`,`)`,`$`,`|`],e),([e,t])=>[Qr(e),t]),ate=e=>yi(yi($ee(e),([e,t])=>[e,t],()=>yi(ete(e),([e,t])=>[e,t],()=>yi(tte(e),([e,t])=>[e,t],()=>yi(nte(e),([e,t])=>[e,t],()=>yi(rte(e),([e,t])=>[e,t],()=>yi(ote(e),([e,t])=>[e,t],()=>yi(ite(e),([e,t])=>[e,t],()=>[]))))))),([e,t])=>[$r(e),t]),ote=e=>yi(yi(gi(`(`,e),([e,t])=>yi(Si(t),([t,n])=>yi(gi(`)`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ei(e),t]),bi=e=>yi(yi(yi(xi(e),([e,t])=>yi(gi(`|`,t),([t,n])=>yi(bi(n),([n,r])=>[[e,t,n],r]))),([e,t])=>[e,t],()=>yi(yi(xi(e),([e,t])=>[[e],t]),([e,t])=>[e,t],()=>yi([[],e],([e,t])=>[e,t],()=>[]))),([e,t])=>[ti(e),t]),xi=e=>yi(yi(ate(e),([e,t])=>yi(Si(t),([t,n])=>[[e,t],n])),([e,t])=>[ni(e),t]),Si=e=>yi(yi(bi(e),([e,t])=>[e,t],()=>yi(xi(e),([e,t])=>[e,t],()=>[])),([e,t])=>[ri(e),t]),ste=e=>yi(yi(gi(`^`,e),([e,t])=>yi(Si(t),([t,n])=>yi(gi(`$`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ii(e),t]);function cte(e){return e.join(`|`)}function lte(e){return e.slice(1,e.length-1)}function ute(e,t,n){return Ti(t,`${n}${e}`)}function dte(e,t){return Ti(e,`${t}${yee}`)}function fte(e,t){return Ti(e,`${t}${Sn}`)}function pte(e,t){return Ti(e,`${t}${In}`)}function mte(e,t){return wi(Vt([Dn(`false`),Dn(`true`)]),e,t)}function hte(e,t){return Ti(e,`${t}.*`)}function gte(e,t,n){return Ti(t,`${n}${lte(e)}`)}function _te(e,t,n){return wi(Ei(e,{}),t,n)}function vte(e,t,n){return Ci(tr(e),t,n)}function Ci(e,t,n,r=[]){return M(e,(e,i)=>Ci(i,t,n,[...r,wi(e,[],``)]),()=>Ti(t,`${n}(${cte(r)})`))}function wi(e,t,n){return Xt(e)?vte(e.enum,t,n):wn(e)?fte(t,n):Nn(e)?ute(e.const,t,n):bn(e)?dte(t,n):xn(e)?mte(t,n):Rn(e)?pte(t,n):Hn(e)?hte(t,n):Di(e)?gte(e.pattern,t,n):Cte(e)?_te(e.parameters[0],t,n):Ht(e)?Ci(e.anyOf,t,n):iee}function Ti(e,t){return M(e,(e,n)=>wi(e,n,t),()=>t)}function yte(e){return`^${Ti(e,``)}$`}function bte(e){return qn(yte(e))}function Ei(e,t){return xc(e)?Xe(bte(e),{},t):Ste(e,t)}function xte(e,t,n,r){return Ei(Tc(e,t,n),r)}function Ste(e,t={}){return rt(`TemplateLiteral`,[e],t)}function Cte(e){return Qe(e)&&N(e,`action`)&&A(e.action,`TemplateLiteral`)}function Di(e){return Ze(e,`TemplateLiteral`)}function wte(e){return Je({"~kind":`ExtendsUnion`},{inferred:e})}function Oi(e){return D(e)&&N(e,`~kind`)&&N(e,`inferred`)&&A(e[`~kind`],`ExtendsUnion`)&&D(e.inferred)}function ki(e){return Je({"~kind":`ExtendsTrue`},{inferred:e})}function Ai(e){return D(e)&&N(e,`~kind`)&&N(e,`inferred`)&&A(e[`~kind`],`ExtendsTrue`)&&D(e.inferred)}function ji(){return Je({"~kind":`ExtendsFalse`},{})}function Mi(e){return D(e)&&N(e,`~kind`)&&A(e[`~kind`],`ExtendsFalse`)}function Ni(e){return Oi(e)||Ai(e)}function Pi(e,t,n){return Ni(e)?t(e.inferred):n()}function Tte(e,t,n,r){return Pi(Qi(e,n,r),r=>ki(f(f(e,r),{[t]:n})),()=>ji())}function Ete(e,t){return ki(e)}function Dte(e,t,n){return Qi(e,t,nr(n))}function Fi(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>Fi(e,t,r),()=>ji()),()=>ki(e))}function Ote(e,t,n){return Qi(e,t,$n(n))}function Ii(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>ki(e),()=>Ii(e,t,r)),()=>ji())}function Li(e,t,n){return Nt(n)?Ete(e,t):Xt(n)?Dte(e,t,n.enum):Yt(n)?Tte(e,n.name,t,n.extends):Qt(n)?Fi(e,t,n.allOf):Di(n)?Ote(e,t,n.pattern):Ht(n)?Ii(e,t,n.anyOf):Wt(n)?ki(e):ji()}function kte(e,t,n){return Yt(n)?Li(e,t,n):Nt(n)||Wt(n)?ki(e):wte(e)}function Ate(e,t){let n=ut(e),r=ut(t);return n&&r||!n&&r?!0:!(n&&!r)}function jte(e,t,n,r){return bt(r)?Ate(t,r)?Qi(e,n,r.items):ji():Li(e,t,r)}function Mte(e,t,n){return Ct(n)?Qi(e,t,n.iteratorItems):Li(e,St(t),n)}function Nte(e,t,n){return bn(n)?ki(e):Li(e,t,n)}function Pte(e,t,n){return xn(n)?ki(e):Li(e,t,n)}function Fte(e,t,n,r,i){let a=Yt(r)?t:r,o=Yt(r)?r:t,s=mt(t),c=mt(r);return!s&&c?ji():Pi(Qi(e,a,o),e=>Ri(e,n,i),()=>ji())}function Ite(e,t,n,r){return M(r,(r,i)=>Fte(e,t,n,r,i),()=>mt(t)?ki(e):ji())}function Lte(e,t,n){return M(t,(t,r)=>Ite(e,t,r,n),()=>ki(e))}function Ri(e,t,n){return Lte(e,t,n)}function zi(e,t,n){return Kr(n)?ki(e):Qi(e,t,n)}function Rte(e,t,n,r){return Nt(r)||Wt(r)?ki(e):Tt(r)?Pi(Ri(e,t,r.parameters),e=>zi(e,n,r.instanceType),()=>ji()):ji()}function zte(e,t,n){return Qi(e,rr(t),n)}function Bte(e,t,n,r){return Nt(r)||Wt(r)?ki(e):Ot(r)?Pi(Ri(e,t,r.parameters),e=>zi(e,n,r.returnType),()=>ji()):ji()}function Vte(e,t,n){return wn(n)||Rn(n)?ki(e):Li(e,t,n)}function Hte(e,t,n){return Qi(e,fr(t),n)}function Ute(e,t,n){return En(n)?Qi(e,t,n.iteratorItems):Li(e,Tn(t),n)}function Bi(e,t,n){return t===n?ki(e):ji()}function Wte(e,t,n){return Nn(n)?Bi(e,t,n.const):bn(n)?ki(e):Li(e,Dn(t),n)}function Gte(e,t,n){return Nn(n)?Bi(e,t,n.const):xn(n)?ki(e):Li(e,Dn(t),n)}function Kte(e,t,n){return Nn(n)?Bi(e,t,n.const):Rn(n)?ki(e):Li(e,Dn(t),n)}function qte(e,t,n){return Nn(n)?Bi(e,t,n.const):Hn(n)?ki(e):Li(e,Dn(t),n)}function Jte(e,t,n){return S(t.const)?Wte(e,t.const,n):C(t.const)?Gte(e,t.const,n):T(t.const)?Kte(e,t.const,n):O(t.const)?qte(e,t.const,n):$t()}function Yte(e,t,n){return Yt(n)?Li(e,t,n):ki(e)}function Xte(e,t,n){return Fn(n)?ki(e):Li(e,t,n)}function Zte(e,t,n){return Rn(n)?ki(e):Li(e,t,n)}function Qte(e,t,n){return mt(t)?mt(n)?ki(e):ji():ki(e)}function $te(e,t,n){return Yt(n)&&Ft(n.extends)?ji():Pi(Qi(e,t,n),e=>Qte(e,t,n),()=>ji())}function ene(e,t){return e.reduce((e,n)=>n in t&&Ni(t[n])?{...e,...t[n].inferred}:$t(),{})}function tne(e,t,n){let r={};for(let i of P(n))r[i]=i in t?$te({},t[i],n[i]):mt(n[i])?Yt(n[i])?ki(f(e,{[n[i].name]:n[i].extends})):ki(e):ji();let i=we(r).every(e=>Ni(e)),a=i?ene(P(r),r):{};return i?ki(a):ji()}function nne(e,t,n){let r=tne(e,t,n);return Ni(r)?ki(f(e,r.inferred)):ji()}function rne(e,t,n){return nne(e,t,n)}function ine(e,t,n){return Bt(n)?rne(e,t,n.properties):Li(e,zt(t),n)}function ane(e,t,n){return ot(n)?Qi(e,t,n.item):Li(e,at(t),n)}function one(e,t,n){return Hn(n)?ki(e):Li(e,t,n)}function sne(e,t,n){return Bn(n)?ki(e):Li(e,t,n)}function cne(e,t,n){return Qi(e,$n(t),n)}function Vi(e,t){return Je({"~kind":`Inferrable`},{name:e,type:t},{})}function Hi(e){return D(e)&&N(e,`~kind`)&&N(e,`name`)&&N(e,`type`)&&A(e[`~kind`],`Inferrable`)&&O(e.name)&&D(e.type)}function Ui(e){return Hr(e)?Yt(e.items)?bt(e.items.extends)?Vi(e.items.name,e.items.extends.items):Wt(e.items.extends)?Vi(e.items.name,e.items.extends):void 0:$t():void 0}function Wi(e){return Yt(e)?Vi(e.name,e.extends):void 0}function Gi(e,t,n=[]){return M(e,(e,r)=>Pi(Qi({},e,t),()=>Gi(r,t,[...n,e]),()=>void 0),()=>n)}function lne(e,t,n,r){let i=Gi(n,r);return x(i)?ki(f(e,{[t]:ir(i)})):ji()}function Ki(e,t,n,r){let i=Gi(n,r);return x(i)?ki(f(e,{[t]:Vt(i)})):ji()}function une(e){return[...e].reverse()}function qi(e,t){return t?une(e):e}function dne(e){let t=e.length>0?e[0]:void 0;return Qe(Qe(t)?Ui(t):void 0)}function fne(e,t,n,r,i,a){return Pi(Qi(e,n,i),e=>Ji(e,t,r,a),()=>ji())}function pne(e,t,n,r,i){let a=Ui(r);return Hi(a)?lne(e,a.name,qi(n,t),a.type):M(n,(n,a)=>fne(e,t,n,a,r,i),()=>ji())}function mne(e,t,n,r){return M(r,(r,i)=>pne(e,t,n,r,i),()=>A(n.length,0)?ki(e):ji())}function Ji(e,t,n,r){return mne(e,t,n,r)}function hne(e,t,n){let r=wc(e,{callstack:[]},n),i=dne(r);return Ji(e,i,qi(t,i),qi(r,i))}function Yi(e,t,n){let r=Wi(n);return Hi(r)?Ki(e,r.name,t,r.type):M(t,(t,r)=>Pi(Qi(e,t,n),e=>Yi(e,r,n),()=>ji()),()=>ki(e))}function gne(e,t,n){let r=wc(e,{callstack:[]},t);return ar(n)?hne(e,r,n.items):bt(n)?Yi(e,r,n.items):Li(e,ir(r),n)}function _ne(e,t,n){return Kr(n)||Gr(n)?ki(e):Li(e,t,n)}function Xi(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>ki(e),()=>Xi(e,t,r)),()=>ji())}function Zi(e,t,n){return M(t,(t,r)=>Pi(Xi(e,t,n),e=>Zi(e,r,n),()=>ji()),()=>ki(e))}function vne(e,t,n){let r=Wi(n);return Hi(r)?Ki(e,r.name,t,r.type):Ht(n)?Zi(e,t,n.anyOf):Zi(e,t,[n])}function yne(e,t,n){return Yt(n)?Li(e,t,n):Nt(n)||Wt(n)?ki(e):ji()}function bne(e,t,n){return Kr(n)?ki(e):Li(e,t,n)}function Qi(e,t,n){return Nt(t)?kte(e,t,n):bt(t)?jte(e,t,t.items,n):Ct(t)?Mte(e,t.iteratorItems,n):bn(t)?Nte(e,t,n):xn(t)?Pte(e,t,n):Tt(t)?Rte(e,t.parameters,t.instanceType,n):Xt(t)?zte(e,t,n):Ot(t)?Bte(e,t.parameters,t.returnType,n):wn(t)?Vte(e,t,n):Qt(t)?Hte(e,t.allOf,n):En(t)?Ute(e,t.iteratorItems,n):Nn(t)?Jte(e,t,n):Ft(t)?Yte(e,t,n):Fn(t)?Xte(e,t,n):Rn(t)?Zte(e,t,n):Bt(t)?ine(e,t.properties,n):ot(t)?ane(e,t.item,n):Hn(t)?one(e,t,n):Bn(t)?sne(e,t,n):Di(t)?cne(e,t.pattern,n):ar(t)?gne(e,t.items,n):Gr(t)?_ne(e,t,n):Ht(t)?vne(e,t.anyOf,n):Wt(t)?yne(e,t,n):Kr(t)?bne(e,t,n):ji()}function xne(e,t){return fr([...e,zt(t)])}function $i(e,t,n){return xc(e)?Xe(xne(e,t),{},n):ta(e,t,n)}function ea(e,t,n,r,i){return $i(Tc(e,t,n),Cc(e,t,r),i)}function ta(e,t,n={}){return rt(`Interface`,[e,t],n)}function na(e){return Qe(e)&&N(e,`action`)&&A(e.action,`Interface`)}function ra(e,t,n){return e.includes(n)?!0:oa([...e,n],t,t[n])}function ia(e,t,n){return aa(e,t,Rt(n))}function aa(e,t,n){return M(n,(n,r)=>oa(e,t,n)?!0:aa(e,t,r),()=>!1)}function oa(e,t,n){return At(n)?ra(e,t,n.$ref):bt(n)?oa(e,t,n.items):Ct(n)?oa(e,t,n.iteratorItems):Tt(n)?aa(e,t,[...n.parameters,n.instanceType]):Ot(n)?aa(e,t,[...n.parameters,n.returnType]):na(n)?ia(e,t,n.parameters[1]):Qt(n)?aa(e,t,n.allOf):En(n)?oa(e,t,n.iteratorItems):Bt(n)?ia(e,t,n.properties):ot(n)?oa(e,t,n.item):Ht(n)?aa(e,t,n.anyOf):ar(n)?aa(e,t,n.items):Br(n)?oa(e,t,zr(n)):!1}function sa(e,t,n){return oa(e,t,n)}function ca(e,t){return t.reduce((t,n)=>n in e?sa([n],e,e[n])?[...t,n]:t:$t(),[])}function la(e){return ca(e,Lt(e))}function ua(e,t,n){return n.includes(t)?n:t in e?pa(e,e[t],[...n,t]):$t()}function da(e,t,n){return fa(e,Rt(t),n)}function fa(e,t,n){return t.reduce((t,n)=>pa(e,n,t),n)}function pa(e,t,n){return At(t)?ua(e,t.$ref,n):bt(t)?pa(e,t.items,n):Ct(t)?pa(e,t.iteratorItems,n):Tt(t)?fa(e,[...t.parameters,t.instanceType],n):Ot(t)?fa(e,[...t.parameters,t.returnType],n):na(t)?da(e,t.parameters[1],n):Qt(t)?fa(e,t.allOf,n):En(t)?pa(e,t.iteratorItems,n):Bt(t)?da(e,t.properties,n):ot(t)?pa(e,t.item,n):Ht(t)?fa(e,t.anyOf,n):ar(t)?fa(e,t.items,n):Br(t)?pa(e,zr(t),n):n}function ma(e,t,n){return pa(e,n,[t])}function ha(e){return ree()}function ga(e){return P(e).reduce((t,n)=>({...t,[n]:va(e[n])}),{})}function _a(e){return e.reduce((e,t)=>[...e,va(t)],[])}function va(e){return At(e)?ha(e.$ref):bt(e)?yt(va(e.items),xt(e)):Ct(e)?St(va(e.iteratorItems)):Tt(e)?wt(_a(e.parameters),va(e.instanceType)):Ot(e)?Dt(_a(e.parameters),va(e.returnType)):Qt(e)?Zt(_a(e.allOf)):En(e)?Tn(va(e.iteratorItems)):Bt(e)?zt(ga(e.properties)):ot(e)?at(va(e.item)):Br(e)?Fr(Rr(e),va(zr(e))):Ht(e)?Vt(_a(e.anyOf)):ar(e)?ir(_a(e.items)):e}function ya(e,t){return t in e?va(e[t]):Ut()}function ba(e){return ya(e.$defs,e.$ref)}function xa(e,t,n){let r=Tc(e,{callstack:[]},t),i=Cc({},{callstack:[]},n);return fr([...r,zt(i)])}function Sa(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>{let r=e[n],i=na(r)?xa(e,r.parameters[0],r.parameters[1]):r;return{...t,[n]:i}},{})}function Ca(e,t,n){return Gt(Sa(e,ma(e,t,n)),t)}function wa(e,t){return t in e?At(e[t])?wa(e,e[t].$ref):e[t]:Pt()}function Ta(e,t){return wa(e,t)}function Ea(e){return Kt(e)?ba(e):qt(e)?Ut():e}function Da(e,t,n){return Qi(e,Ea(t),Ea(n))}var Oa=`equal`,ka=`disjoint`,Aa=`left-inside`,ja=`right-inside`;function Ma(e,t){let n=[Wt(e)?ji():Da({},e,t),Wt(e)?ki({}):Da({},t,e)];return Ni(n[0])&&Ni(n[1])?Oa:Ni(n[0])&&Mi(n[1])?Aa:Mi(n[0])&&Ni(n[1])?ja:ka}function Na(e,t){return t.filter(t=>Ma(e,t)!==`right-inside`)}function Pa(e,t){return A(t.some(t=>{let n=Ma(e,t);return A(n,`left-inside`)||A(n,`equal`)}),!1)}function Fa(e,t){let n=mr(e);return Nt(n)?[n]:Pa(n,t)?[...Na(n,t),n]:t}function Ia(e){return e.reduce((e,t)=>Bt(t)?[...e,t]:Ft(t)?e:Fa(t,e),[])}function La(e){let t=Sr(Ia(e));return t.length===0?Pt():t.length===1?t[0]:Vt(t)}function Ra(e,t){return Xe(mr(e),{},t)}function za(e,t,n,r){return Ra(F(e,t,n),r)}function Ba(e,t=[]){return it(e)&&A(e.action,`Conditional`)?At(e.parameters[0])?Ba(e.parameters[2],Ba(e.parameters[3],[...t,e.parameters[0].$ref])):Ba(e.parameters[2],Ba(e.parameters[3],t)):it(e)&&A(e.action,`Mapped`)&&it(e.parameters[1])&&A(e.parameters[1].action,`KeyOf`)&&At(e.parameters[1].parameters[0])?[...t,e.parameters[1].parameters[0].$ref]:t}function Va(e,t){return e.reduce((e,n)=>[...e,t.includes(n.name)],[])}function Ha(e,t,n=[]){return M(e,(e,r)=>M(t,(t,i)=>Ha(r,i,[...n,[t,e]]),()=>n),()=>n)}function Ua(e){return Ht(e)?[...e.anyOf]:[e]}function Wa(e,t){return e.reduce((e,n)=>[...e,[...n,t]],[])}function Ga(e,t){return t.reduce((t,n)=>[...t,...Wa(e,n)],[])}function Ka(e){return e.reduce((e,t)=>A(t[0],!0)?Ga(e,Ua(t[1])):Ga(e,[t[1]]),[[]])}function qa(e,t,n){let r=Ha(t,Va(e,Ba(n)));return it(n)&&A(n.action,`Conditional`)||it(n)&&A(n.action,`Mapped`)?Ka(r):[t]}function Ja(){return[`(not-resolvable)`,Pt()]}function Ya(){return[`(not-generic)`,Pt()]}function Xa(e,t,n){return[e,jt(t,n)]}function Za(e,t,n){return t in e?Qa(e,t,e[t],n):Ja()}function Qa(e,t,n,r){return Mt(n)?Xa(t,n.parameters,n.expression):At(n)?Za(e,n.$ref,r):Ya()}function $a(e,t,n){return Qa(e,`(anonymous)`,t,n)}function eo(e,t,n){if(Yt(t)||po(t)||Ni(Da({},t,n)))return;let r={parameter:e,expect:n,actual:t};throw Error(`Argument for parameter ${e} does not satisfy constraint`,{cause:r})}function to(e,t,n,r,i){let a=F(e,t,i);return eo(n,a,r),f(e,{[n]:a})}function no(e,t,n,r,i){let a=F(e,t,n.extends),o=F(e,t,n.equals);return M(i,(i,o)=>ro(to(e,t,n.name,a,i),t,r,o),()=>ro(to(e,t,n.name,a,o),t,r,[]))}function ro(e,t,n,r){return M(n,(n,i)=>no(e,t,n,i,r),()=>e)}function io(e,t,n,r){return ro(e,t,n,r)}function ao(e){return j(e.callstack.length,0)?e.callstack[e.callstack.length-1]:``}function oo(e,t){return A(ao(e),t)}function so(e,t,n,r,i,a){return F(e,t,F(io(e,t,r,a),{callstack:[...t.callstack,n.$ref]},i))}function co(e,t,n,r,i,a){return a.reduce((a,o)=>[...a,so(e,t,n,r,i,o)],[])}function lo(e,t,n,r,i,a){let o=co(e,t,n,r,i,qa(r,a,i));return A(o.length,1)?o[0]:pr(o)}function uo(e,t,n,r){let i=Tc(e,t,r),a=$a(e,n,r),o=a[0],s=a[1];return Mt(s)?oo(t,o)?fo(kt(o),i):lo(e,t,kt(o),s.parameters,s.expression,i):fo(n,i)}function fo(e,t){return Je({"~kind":`Call`},{target:e,arguments:t},{})}function po(e){return Ze(e,`Call`)}function mo(e,t){return e(t)}function ho(e,t){return O(t)?Dn(mo(e,t)):Dn(t)}function go(e,t){return vo(e,$n(t))}function _o(e,t){return Vt(t.map(t=>vo(e,t)))}function vo(e,t){return Nn(t)?ho(e,t.const):Di(t)?go(e,t.pattern):Ht(t)?_o(e,t.anyOf):t}function yo(e,t={}){return rt(`Capitalize`,[e],t)}function bo(e,t={}){return rt(`Lowercase`,[e],t)}function xo(e,t={}){return rt(`Uncapitalize`,[e],t)}function So(e,t={}){return rt(`Uppercase`,[e],t)}var Co=e=>e[0].toUpperCase()+e.slice(1),wo=e=>e.toLowerCase(),To=e=>e[0].toLowerCase()+e.slice(1),Eo=e=>e.toUpperCase();function Do(e,t){return xc([e])?Xe(vo(Co,e),{},t):yo(e,t)}function Oo(e,t){return xc([e])?Xe(vo(wo,e),{},t):bo(e,t)}function ko(e,t){return xc([e])?Xe(vo(To,e),{},t):xo(e,t)}function Ao(e,t){return xc([e])?Xe(vo(Eo,e),{},t):So(e,t)}function jo(e,t,n,r){return Do(F(e,t,n),r)}function Mo(e,t,n,r){return Oo(F(e,t,n),r)}function No(e,t,n,r){return ko(F(e,t,n),r)}function Po(e,t,n,r){return Ao(F(e,t,n),r)}function Fo(e,t,n,r,i={}){return rt(`Conditional`,[e,t,n,r],i)}function Io(e,t,n,r,i,a){let o=Da(e,n,r);return Oi(o)?Vt([F(o.inferred,t,i),F(e,t,a)]):Ai(o)?F(o.inferred,t,i):F(e,t,a)}function Lo(e,t,n,r,i,a,o){return xc([n,r])?Xe(Io(e,t,n,r,i,a),{},o):Fo(n,r,i,a,o)}function Ro(e,t,n,r,i,a,o){return Lo(e,t,F(e,t,n),F(e,t,r),i,a,o)}function zo(e,t={}){return rt(`ConstructorParameters`,[e],t)}function Bo(e){return ir(wc({},{callstack:[]},Tt(e)?e.parameters:[]))}function Vo(e,t){return xc([e])?Xe(Bo(e),{},t):zo(e,t)}function Ho(e,t,n,r){return Vo(F(e,t,n),r)}function Uo(e,t,n={}){return rt(`Exclude`,[e,t],n)}function Wo(e,t){return e.reduce((e,n)=>[...e,...Go(n,t)],[])}function Go(e,t){return Ni(Da({},e,t))?[]:[e]}function Ko(e,t){return pr(Xt(e)?Wo(tr(e.enum),t):Ht(e)?Wo(Sr(e.anyOf),t):Go(e,t))}function qo(e,t,n){return xc([e,t])?Xe(Ko(e,t),{},n):Uo(e,t,n)}function Jo(e,t,n,r,i){return qo(F(e,t,n),F(e,t,r),i)}function Yo(e,t,n={}){return rt(`Extract`,[e,t],n)}function Xo(e,t){return e.reduce((e,n)=>[...e,...Zo(n,t)],[])}function Zo(e,t){return Ni(Da({},e,t))?[e]:[]}function Qo(e,t){return pr(Xt(e)?Xo(tr(e.enum),t):Ht(e)?Xo(Sr(e.anyOf),t):Zo(e,t))}function $o(e,t,n){return xc([e,t])?Xe(Qo(e,t),{},n):Yo(e,t,n)}function es(e,t,n,r,i){return $o(F(e,t,n),F(e,t,r),i)}function ts(e,t,n={}){return rt(`Index`,[e,t],n)}function ns(e,t){return us(Ta(e,t))}function rs(e,t){let n=P(e).filter(e=>!N(t,e)),r=P(t).filter(t=>!N(e,t)),i=P(e).filter(e=>N(t,e)),a=n.reduce((t,n)=>({...t,[n]:e[n]}),{}),o=r.reduce((e,n)=>({...e,[n]:t[n]}),{}),s=i.reduce((n,r)=>({...n,[r]:fr([e[r],t[r]])}),{});return f(f(a,o),s)}function is(e){return e.reduce((e,t)=>rs(e,us(t)),{})}function as(e){return e}function os(e){return us(Iee(ir(e)))}function ss(e,t){return P(e).filter(e=>e in t).reduce((n,r)=>({...n,[r]:pr([e[r],t[r]])}),{})}function cs(e,t){return M(e,(e,n)=>cs(n,ss(t,us(e))),()=>t)}function ls(e){return M(e,(e,t)=>cs(t,us(e)),()=>$t())}function us(e){return Kt(e)?ns(e.$defs,e.$ref):Qt(e)?is(e.allOf):Ht(e)?ls(e.anyOf):ar(e)?os(e.items):Bt(e)?as(e.properties):{}}function ds(e){return zt(us(e))}var fs=RegExp(`^(?:0|[1-9][0-9]*)$`);function ps(e){let t=`${e}`;return fs.test(t)?parseInt(t):e}function ms(e){return Dn(ps(e))}function hs(e){return e.map(e=>gs(e))}function gs(e){return Qt(e)?Zt(hs(e.allOf)):Ht(e)?Vt(hs(e.anyOf)):Nn(e)?ms(e.const):e}function _s(e,t){return Ni(Da({},gs(t),Ln()))?e:Nn(t)&&A(t.const,`length`)?Ln():Pt()}function vs(e,t){return ws(Ta(e,t))}function ys(e){return e.reduce((e,t)=>[...e,...ws(t)],[])}function bs(e){return ys(tr(e))}function xs(e){return ws(fr(e))}function Ss(e){return[`${e}`]}function Cs(e){return ws($n(e))}function ws(e){return Kt(e)?vs(e.$defs,e.$ref):Xt(e)?bs(e.enum):Qt(e)?xs(e.allOf):Nn(e)?Ss(e.const):Di(e)?Cs(e.pattern):Ht(e)?ys(e.anyOf):[]}function Ts(e){return ws(e)}function Es(e,t){return t.map(t=>Ds(e,t))}function Ds(e,t){return bt(t)?yt(Ds(e,t.items)):Ct(t)?St(Ds(e,t.iteratorItems)):Tt(t)?wt(Es(e,t.parameters),Ds(e,t.instanceType)):Ot(t)?Dt(Es(e,t.parameters),Ds(e,t.returnType)):En(t)?Tn(Ds(e,t.iteratorItems)):ot(t)?at(Ds(e,t.item)):ar(t)?ir(Es(e,t.items)):Ht(t)?Vt(Es(e,t.anyOf)):Qt(t)?Zt(Es(e,t.allOf)):Ur(t)?zt(e):t}function Os(e,t){return Ds(e,t)}function ks(e,t){return Os(e,t in e?e[t]:Pt())}function As(e,t){return t.reduce((t,n)=>[...t,ks(e,n)],[])}function js(e,t){return pr(As(e,Ts(t)))}var Ms=new RegExp(jr);function Ns(e){return e.filter(e=>Ms.test(e))}function Ps(e){return pr(As(e,Ns(Lt(e))))}function Fs(e,t){return Rn(t)?Ps(e):js(e,t)}function Is(e){return Dn(ps(e))}function Ls(e){return e.map(e=>Rs(e))}function Rs(e){return Qt(e)?Zt(Ls(e.allOf)):Ht(e)?Vt(Ls(e.anyOf)):Nn(e)?Is(e.const):e}function zs(e,t){return e.reduceRight((e,n,r)=>Ni(Da({},Dn(r),t))?[n,...e]:e,[])}function Bs(e,t){return hr(zs(e,Rs(t)))}function Vs(e){return hr(e)}function Hs(e,t){return Nn(t)&&A(t.const,`length`)?Dn(e.length):Rn(t)||wn(t)?Vs(e):Bs(e,t)}function Us(e,t){return bt(e)?_s(e.items,t):Bt(e)?Fs(e.properties,t):ar(e)?Hs(e.items,t):Pt()}function Ws(e){return Kt(e)||Qt(e)||Ht(e)?ds(e):e}function Gs(e,t,n){return xc([e,t])?Xe(Us(Ws(e),t),{},n):ts(e,t,n)}function Ks(e,t,n,r,i){return Gs(F(e,t,n),F(e,t,r),i)}function qs(e,t={}){return rt(`InstanceType`,[e],t)}function Js(e){return Tt(e)?e.instanceType:Pt()}function Ys(e,t){return xc([e])?Xe(Js(e),{},t):qs(e,t)}function Xs(e,t,n,r={}){return Ys(F(e,t,n),r)}function Zs(e,t={}){return rt(`KeyOf`,[e],t)}function Qs(){return Vt([Ln(),Vn(),zn()])}function $s(e){return Ln()}function ec(e){return e.reduce((e,t)=>On(t)?[...e,Dn(ps(t))]:$t(),[])}function tc(e){return hr(ec(P(e)))}function nc(e){return Rr(e)}function rc(e){return hr(e.map((e,t)=>Dn(t)))}function ic(e){return Nt(e)?Qs():bt(e)?$s(e.items):Bt(e)?tc(e.properties):Br(e)?nc(e):ar(e)?rc(e.items):Pt()}function ac(e){return Kt(e)||Qt(e)||Ht(e)?ds(e):e}function oc(e,t){return xc([e])?Xe(ic(ac(e)),{},t):Zs(e,t)}function sc(e,t,n,r){return oc(F(e,t,n),r)}function cc(e,t,n,r,i={}){return rt(`Mapped`,[e,t,n,r],i)}function lc(e){return fc($n(e))}function uc(e){return e.reduce((e,t)=>[...e,...fc(t)],[])}function dc(e){return T(e)?[Dn(`${e}`)]:[Dn(e)]}function fc(e){return Xt(e)?uc(tr(e.enum)):Nn(e)?dc(e.const):Di(e)?lc(e.pattern):Ht(e)?uc(e.anyOf):[e]}function pc(e){return fc(e)}function mc(e){return Di(e)?$n(e.pattern):e}function Sne(e,t,n,r,i,a){let o=f(e,{[n.name]:r}),s=mc(F(o,t,i)),c=F(o,t,a);return jn(s)||Mn(s)?{[s.const]:c}:{}}function Cne(e,t,n,r,i,a){return r.reduce((r,o)=>[...r,Sne(e,t,n,o,i,a)],[])}function wne(e){return e.reduce((e,t)=>[...e,zt(t)],[])}function Tne(e,t,n,r,i,a){return fr(wne(Cne(e,t,n,pc(r),i,a)))}function Ene(e,t,n,r,i,a,o){return xc([r])?Xe(Tne(e,t,n,r,i,a),{},o):cc(n,r,i,a,o)}function Dne(e,t,n,r,i,a,o){return Ene(e,t,n,F(e,t,r),i,a,o)}function One(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>({...t,[n]:Ca(e,n,e[n])}),{})}function kne(e,t){return P(e).filter(e=>!t.includes(e)).reduce((t,n)=>({...t,[n]:F(e,{callstack:[]},e[n])}),{})}function Ane(e,t){let n=la(e),r=One(e,n),i=kne(e,n);return Xe({...r,...i},{},t)}function jne(e,t,n,r){return Ane(f(e,n),r)}function Mne(e,t={}){return rt(`NonNullable`,[e],t)}function Nne(e){return qo(e,Vt([Pn(),Wr()]),{})}function Pne(e,t){return xc([e])?Xe(Nne(e),{},t):Mne(e,t)}function Fne(e,t,n,r){return Pne(F(e,t,n),r)}function Ine(e,t,n={}){return rt(`Omit`,[e,t],n)}function hc(e){let t=ds(e);return Bt(t)?t.properties:$t()}function Lne(e,t){return P(e).reduce((n,r)=>t.includes(r)?n:{...n,[r]:e[r]},{})}function Rne(e,t){return zt(Lne(hc(e),Ts(t)))}function zne(e,t,n){return xc([e,t])?Xe(Rne(e,t),{},n):Ine(e,t,n)}function Bne(e,t,n,r,i){return zne(F(e,t,n),F(e,t,r),i)}function Vne(e,t){return rt(`Options`,[e,t],{})}function Hne(e,t){return gc(e,t)}function gc(e,t){return xc([e])?Xe(e,{},t):Vne(e,t)}function Une(e,t,n,r){return gc(F(e,t,n),r)}function Wne(e,t={}){return rt(`Parameters`,[e],t)}function Gne(e){return ir(wc({},{callstack:[]},Ot(e)?e.parameters:[]))}function Kne(e,t){return xc([e])?Xe(Gne(e),{},t):Wne(e,t)}function qne(e,t,n,r){return Kne(F(e,t,n),r)}function Jne(e,t={}){return rt(`Partial`,[e],t)}function Yne(e,t){let n=_c(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function Xne(e){return fr(e.map(e=>_c(e)))}function Zne(e){return Vt(e.map(e=>_c(e)))}function Qne(e){return zt(P(e).reduce((t,n)=>({...t,[n]:pt(e[n])}),{}))}function _c(e){return Kt(e)?Yne(e.$defs,e.$ref):Qt(e)?Xne(e.allOf):Ht(e)?Zne(e.anyOf):Bt(e)?Qne(e.properties):zt({})}function $ne(e,t){return xc([e])?Xe(_c(e),{},t):Jne(e,t)}function ere(e,t,n,r){return $ne(F(e,t,n),r)}function tre(e,t,n={}){return rt(`Pick`,[e,t],n)}function nre(e,t){return P(e).reduce((n,r)=>t.includes(r)?f(n,{[r]:e[r]}):n,{})}function rre(e,t){return zt(nre(hc(e),Ts(t)))}function ire(e,t,n){return xc([e,t])?Xe(rre(e,t),{},n):tre(e,t,n)}function are(e,t,n,r,i){return ire(F(e,t,n),F(e,t,r),i)}function ore(e,t={}){return rt(`ReadonlyObject`,[e],t)}function sre(e){return lt(yt(e))}function cre(e,t){let n=vc(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function lre(e){return fr(e.map(e=>vc(e)))}function ure(e){return zt(P(e).reduce((t,n)=>({...t,[n]:eee(e[n])}),{}))}function dre(e){return lt(ir(e))}function fre(e){return Vt(e.map(e=>vc(e)))}function vc(e){return bt(e)?sre(e.items):Kt(e)?cre(e.$defs,e.$ref):Qt(e)?lre(e.allOf):Bt(e)?ure(e.properties):ar(e)?dre(e.items):Ht(e)?fre(e.anyOf):e}function pre(e,t){return xc([e])?Xe(vc(e),{},t):ore(e)}function mre(e,t,n,r){return pre(F(e,t,n),r)}function hre(e,t,n,r){return r in e?sa([r],e,e[r])?n:F(e,t,e[r]):n}function gre(e,t){let n=yc(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function _re(e){return fr(e.map(e=>yc(e)))}function vre(e){return Vt(e.map(e=>yc(e)))}function yre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:dt(e[n])}),{}))}function yc(e){return Kt(e)?gre(e.$defs,e.$ref):Qt(e)?_re(e.allOf):Ht(e)?vre(e.anyOf):Bt(e)?yre(e.properties):zt({})}function bre(e,t={}){return rt(`Required`,[e],t)}function xre(e,t){return xc([e])?Xe(yc(e),{},t):bre(e,t)}function Sre(e,t,n,r){return xre(F(e,t,n),r)}function Cre(e,t={}){return rt(`ReturnType`,[e],t)}function wre(e){return Ot(e)?e.returnType:Pt()}function Tre(e,t){return xc([e])?Xe(wre(e),{},t):Cre(e,t)}function Ere(e,t,n,r={}){return Tre(F(e,t,n),r)}function Dre(e){return Hr(e)?ar(e.items)?bc(e.items.items):Yt(e.items)||At(e.items)?[e]:[Pt()]:[e]}function bc(e){return e.reduce((e,t)=>[...e,...Dre(t)],[])}function xc(e){return M(e,(e,t)=>At(e)?!1:xc(t),()=>!0)}function Sc(e,t,n){return nt(e)?Sc(e.type,`remove`,n):et(e)?Sc(e.type,t,`remove`):tt(e)?Sc(e.type,`add`,n):$e(e)?Sc(e.type,t,`add`):[e,t,n]}function Ore(e,t){return A(e,`remove`)?ht(t):A(e,`add`)?gt(t):t}function kre(e,t){return A(e,`remove`)?dt(t):A(e,`add`)?ft(t):t}function Cc(e,t,n){return P(n).reduce((r,i)=>({...r,[i]:F(e,t,n[i])}),{})}function wc(e,t,n){return bc(Tc(e,t,n))}function Tc(e,t,n){return n.map(n=>F(e,t,n))}function Are(e,t,n,r,i){return A(n,`Awaited`)?Mre(e,t,r[0],i):A(n,`Capitalize`)?jo(e,t,r[0],i):A(n,`Conditional`)?Ro(e,t,r[0],r[1],r[2],r[3],i):A(n,`ConstructorParameters`)?Ho(e,t,r[0],i):A(n,`Evaluate`)?za(e,t,r[0],i):A(n,`Exclude`)?Jo(e,t,r[0],r[1],i):A(n,`Extract`)?es(e,t,r[0],r[1],i):A(n,`Index`)?Ks(e,t,r[0],r[1],i):A(n,`InstanceType`)?Xs(e,t,r[0],i):A(n,`Interface`)?ea(e,t,r[0],r[1],i):A(n,`KeyOf`)?sc(e,t,r[0],i):A(n,`Lowercase`)?Mo(e,t,r[0],i):A(n,`Mapped`)?Dne(e,t,r[0],r[1],r[2],r[3],i):A(n,`Module`)?jne(e,t,r[0],i):A(n,`NonNullable`)?Fne(e,t,r[0],i):A(n,`Pick`)?are(e,t,r[0],r[1],i):A(n,`Options`)?Une(e,t,r[0],r[1]):A(n,`Parameters`)?qne(e,t,r[0],i):A(n,`Partial`)?ere(e,t,r[0],i):A(n,`Omit`)?Bne(e,t,r[0],r[1],i):A(n,`ReadonlyObject`)?mre(e,t,r[0],i):A(n,`Record`)?Ar(e,t,r[0],r[1],i):A(n,`Required`)?Sre(e,t,r[0],i):A(n,`ReturnType`)?Ere(e,t,r[0],i):A(n,`TemplateLiteral`)?xte(e,t,r[0],i):A(n,`Uncapitalize`)?No(e,t,r[0],i):A(n,`Uppercase`)?Po(e,t,r[0],i):rt(n,r,i)}function F(e,t,n){let r=ut(n),i=Sc(n,_t(n)?`add`:`none`,mt(n)?`add`:`none`),a=vt(i[0])?i[0].Clone():i[0],o=At(a)?hre(e,t,a,a.$ref):bt(a)?yt(F(e,t,a.items),xt(a)):Ct(a)?St(F(e,t,a.iteratorItems),tee(a)):po(a)?uo(e,t,a.target,a.arguments):Tt(a)?wt(Tc(e,t,a.parameters),F(e,t,a.instanceType),Et(a)):it(a)?Are(e,t,a.action,a.parameters,a.options):Ot(a)?Dt(Tc(e,t,a.parameters),F(e,t,a.returnType),nee(a)):Qt(a)?Zt(Tc(e,t,a.allOf),see(a)):En(a)?Tn(F(e,t,a.iteratorItems),xee(a)):Bt(a)?zt(Cc(e,t,a.properties),aee(a)):ot(a)?at(F(e,t,a.item),st(a)):Br(a)?Ir(Lr(a),F(e,t,zr(a))):Hr(a)?Vr(F(e,t,a.items)):ar(a)?ir(wc(e,t,a.items),Fee(a)):Ht(a)?Vt(Tc(e,t,a.anyOf),oee(a)):a,s=r?lt(o):o;return Ore(i[1],kre(i[2],s))}function Ec(e,t){return F(e,{callstack:[]},t)}function Dc(e){return ot(e)?Dc(e.item):e}function jre(e,t){return xc([e])?Xe(Dc(e),{},t):Nre(e,t)}function Mre(e,t,n,r){return jre(F(e,t,n),r)}function Nre(e,t={}){return rt(`Awaited`,[e],t)}function Oc(e,t={}){return Ra(e,t)}var kc=new Map;function Pre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Fre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Ac(e,t){kc.set(e.api,{provider:{api:e.api,stream:Pre(e.api,e.stream),streamSimple:Fre(e.api,e.streamSimple)},sourceId:t})}function Ire(e){return kc.get(e)?.provider}var Lre=`modulepreload`,Rre=function(e){return`/`+e},jc={},I=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Rre(t,n),t in jc)return;jc[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Lre,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},zre=o(((e,t)=>{t.exports={}})),Bre=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},Mc=null,Nc=null,Pc=null,Fc=e=>I(()=>import(Bre(e)),[]);typeof process<`u`&&(process.versions?.node||process.versions?.bun)&&(Fc(`node:fs`).then(e=>{Mc=e.existsSync}),Fc(`node:os`).then(e=>{Nc=e.homedir}),Fc(`node:path`).then(e=>{Pc=e.join}));var Ic=null;function Lc(e){if(process.versions?.bun&&!(typeof process>`u`)&&!(Object.keys({}).length>0)){if(Ic===null){Ic=new Map;try{let{readFileSync:e}=zre(),t=e(`/proc/self/environ`,`utf-8`);for(let e of t.split(`\0`)){let t=e.indexOf(`=`);t>0&&Ic.set(e.slice(0,t),e.slice(t+1))}}catch{}}return Ic.get(e)}}var Rc=null;function Vre(){if(Rc===null){if(!Mc||!Nc||!Pc)return typeof process<`u`&&(process.versions?.node||process.versions?.bun)||(Rc=!1),!1;let e={}.GOOGLE_APPLICATION_CREDENTIALS||Lc(`GOOGLE_APPLICATION_CREDENTIALS`);Rc=Mc(e||Pc(Nc(),`.config`,`gcloud`,`application_default_credentials.json`))}return Rc}function Hre(e){if(e===`github-copilot`)return[`COPILOT_GITHUB_TOKEN`];if(e===`anthropic`)return[`ANTHROPIC_OAUTH_TOKEN`,`ANTHROPIC_API_KEY`];let t={openai:`OPENAI_API_KEY`,"azure-openai-responses":`AZURE_OPENAI_API_KEY`,deepseek:`DEEPSEEK_API_KEY`,google:`GEMINI_API_KEY`,"google-vertex":`GOOGLE_CLOUD_API_KEY`,groq:`GROQ_API_KEY`,cerebras:`CEREBRAS_API_KEY`,xai:`XAI_API_KEY`,openrouter:`OPENROUTER_API_KEY`,"vercel-ai-gateway":`AI_GATEWAY_API_KEY`,zai:`ZAI_API_KEY`,mistral:`MISTRAL_API_KEY`,minimax:`MINIMAX_API_KEY`,"minimax-cn":`MINIMAX_CN_API_KEY`,moonshotai:`MOONSHOT_API_KEY`,"moonshotai-cn":`MOONSHOT_API_KEY`,huggingface:`HF_TOKEN`,fireworks:`FIREWORKS_API_KEY`,together:`TOGETHER_API_KEY`,opencode:`OPENCODE_API_KEY`,"opencode-go":`OPENCODE_API_KEY`,"kimi-coding":`KIMI_API_KEY`,"cloudflare-workers-ai":`CLOUDFLARE_API_KEY`,"cloudflare-ai-gateway":`CLOUDFLARE_API_KEY`,xiaomi:`XIAOMI_API_KEY`,"xiaomi-token-plan-cn":`XIAOMI_TOKEN_PLAN_CN_API_KEY`,"xiaomi-token-plan-ams":`XIAOMI_TOKEN_PLAN_AMS_API_KEY`,"xiaomi-token-plan-sgp":`XIAOMI_TOKEN_PLAN_SGP_API_KEY`}[e];return t?[t]:void 0}function Ure(e){let t=Hre(e);if(!t)return;let n=t.filter(e=>!!{}[e]||!!Lc(e));return n.length>0?n:void 0}function Wre(e){let t=Ure(e);if(t?.[0])return{}[t[0]]||Lc(t[0]);if(e===`google-vertex`){let e=Vre(),t=!!({}.GOOGLE_CLOUD_PROJECT||{}.GCLOUD_PROJECT||Lc(`GOOGLE_CLOUD_PROJECT`)||Lc(`GCLOUD_PROJECT`)),n=!!({}.GOOGLE_CLOUD_LOCATION||Lc(`GOOGLE_CLOUD_LOCATION`));if(e&&t&&n)return`<authenticated>`}if(e===`amazon-bedrock`&&({}.AWS_PROFILE||{}.AWS_ACCESS_KEY_ID&&{}.AWS_SECRET_ACCESS_KEY||{}.AWS_BEARER_TOKEN_BEDROCK||{}.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI||{}.AWS_CONTAINER_CREDENTIALS_FULL_URI||{}.AWS_WEB_IDENTITY_TOKEN_FILE||Lc(`AWS_PROFILE`)||Lc(`AWS_ACCESS_KEY_ID`)&&Lc(`AWS_SECRET_ACCESS_KEY`)||Lc(`AWS_BEARER_TOKEN_BEDROCK`)||Lc(`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`)||Lc(`AWS_CONTAINER_CREDENTIALS_FULL_URI`)||Lc(`AWS_WEB_IDENTITY_TOKEN_FILE`)))return`<authenticated>`}var Gre={openrouter:{"black-forest-labs/flux.2-flex":{id:`black-forest-labs/flux.2-flex`,name:`Black Forest Labs: FLUX.2 Flex`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-klein-4b":{id:`black-forest-labs/flux.2-klein-4b`,name:`Black Forest Labs: FLUX.2 Klein 4B`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-max":{id:`black-forest-labs/flux.2-max`,name:`Black Forest Labs: FLUX.2 Max`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-pro":{id:`black-forest-labs/flux.2-pro`,name:`Black Forest Labs: FLUX.2 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"bytedance-seed/seedream-4.5":{id:`bytedance-seed/seedream-4.5`,name:`ByteDance Seed: Seedream 4.5`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"google/gemini-2.5-flash-image":{id:`google/gemini-2.5-flash-image`,name:`Google: Nano Banana (Gemini 2.5 Flash Image)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:.08333333333333334}},"google/gemini-3-pro-image-preview":{id:`google/gemini-3-pro-image-preview`,name:`Google: Nano Banana Pro (Gemini 3 Pro Image Preview)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375}},"google/gemini-3.1-flash-image-preview":{id:`google/gemini-3.1-flash-image-preview`,name:`Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:.5,output:3,cacheRead:0,cacheWrite:0}},"openai/gpt-5-image":{id:`openai/gpt-5-image`,name:`OpenAI: GPT-5 Image`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:10,output:10,cacheRead:1.25,cacheWrite:0}},"openai/gpt-5-image-mini":{id:`openai/gpt-5-image-mini`,name:`OpenAI: GPT-5 Image Mini`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:2.5,output:2,cacheRead:.25,cacheWrite:0}},"openai/gpt-5.4-image-2":{id:`openai/gpt-5.4-image-2`,name:`OpenAI: GPT-5.4 Image 2`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:8,output:15,cacheRead:2,cacheWrite:0}},"openrouter/auto":{id:`openrouter/auto`,name:`Auto Router`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`text`,`image`],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0}},"recraft/recraft-v3":{id:`recraft/recraft-v3`,name:`Recraft: Recraft V3`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4":{id:`recraft/recraft-v4`,name:`Recraft: Recraft V4`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro":{id:`recraft/recraft-v4-pro`,name:`Recraft: Recraft V4 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro-vector":{id:`recraft/recraft-v4-pro-vector`,name:`Recraft: Recraft V4 Pro Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-vector":{id:`recraft/recraft-v4-vector`,name:`Recraft: Recraft V4 Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1":{id:`recraft/recraft-v4.1`,name:`Recraft: Recraft V4.1`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro":{id:`recraft/recraft-v4.1-pro`,name:`Recraft: Recraft V4.1 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro-vector":{id:`recraft/recraft-v4.1-pro-vector`,name:`Recraft: Recraft V4.1 Pro Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility":{id:`recraft/recraft-v4.1-utility`,name:`Recraft: Recraft V4.1 Utility`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility-pro":{id:`recraft/recraft-v4.1-utility-pro`,name:`Recraft: Recraft V4.1 Utility Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-vector":{id:`recraft/recraft-v4.1-vector`,name:`Recraft: Recraft V4.1 Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast":{id:`sourceful/riverflow-v2-fast`,name:`Sourceful: Riverflow V2 Fast`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast-preview":{id:`sourceful/riverflow-v2-fast-preview`,name:`Sourceful: Riverflow V2 Fast Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-max-preview":{id:`sourceful/riverflow-v2-max-preview`,name:`Sourceful: Riverflow V2 Max Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-pro":{id:`sourceful/riverflow-v2-pro`,name:`Sourceful: Riverflow V2 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-standard-preview":{id:`sourceful/riverflow-v2-standard-preview`,name:`Sourceful: Riverflow V2 Standard Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"x-ai/grok-imagine-image-quality":{id:`x-ai/grok-imagine-image-quality`,name:`xAI: Grok Imagine Image Quality`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}}}},Kre=new Map;for(let[e,t]of Object.entries(Gre)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Kre.set(e,n)}var qre=new Map;function Jre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Yre(e,t){qre.set(e.api,{provider:{api:e.api,generateImages:Jre(e.api,e.generateImages)},sourceId:t})}var zc;function Xre(e,t){return{api:e.api,provider:e.provider,model:e.id,output:[],stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}function Zre(){return zc||=I(()=>import(`./openrouter-DJeU4Mbk.js`).then(e=>e),__vite__mapDeps([0,1,2,3])),zc}var Qre=async(e,t,n)=>{try{return await(await Zre()).generateImagesOpenRouter(e,t,n)}catch(t){return Xre(e,t)}};function $re(){Yre({api:`openrouter-images`,generateImages:Qre})}$re();var eie={"amazon-bedrock":{"amazon.nova-2-lite-v1:0":{id:`amazon.nova-2-lite-v1:0`,name:`Nova 2 Lite`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.33,output:2.75,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"amazon.nova-lite-v1:0":{id:`amazon.nova-lite-v1:0`,name:`Nova Lite`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.06,output:.24,cacheRead:.015,cacheWrite:0},contextWindow:3e5,maxTokens:8192},"amazon.nova-micro-v1:0":{id:`amazon.nova-micro-v1:0`,name:`Nova Micro`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.035,output:.14,cacheRead:.00875,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"amazon.nova-pro-v1:0":{id:`amazon.nova-pro-v1:0`,name:`Nova Pro`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:3e5,maxTokens:8192},"anthropic.claude-haiku-4-5-20251001-v1:0":{id:`anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-opus-4-1-20250805-v1:0":{id:`anthropic.claude-opus-4-1-20250805-v1:0`,name:`Claude Opus 4.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic.claude-opus-4-5-20251101-v1:0":{id:`anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-opus-4-6-v1":{id:`anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-opus-4-7":{id:`anthropic.claude-opus-4-7`,name:`Claude Opus 4.7`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-opus-4-8":{id:`anthropic.claude-opus-4-8`,name:`Claude Opus 4.8`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-sonnet-4-6":{id:`anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`au.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"au.anthropic.claude-opus-4-6-v1":{id:`au.anthropic.claude-opus-4-6-v1`,name:`AU Anthropic Claude Opus 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:16.5,output:82.5,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"au.anthropic.claude-opus-4-8":{id:`au.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`au.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"au.anthropic.claude-sonnet-4-6":{id:`au.anthropic.claude-sonnet-4-6`,name:`AU Anthropic Claude Sonnet 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3.3,output:16.5,cacheRead:.33,cacheWrite:4.125},contextWindow:1e6,maxTokens:128e3},"deepseek.r1-v1:0":{id:`deepseek.r1-v1:0`,name:`DeepSeek-R1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768},"deepseek.v3-v1:0":{id:`deepseek.v3-v1:0`,name:`DeepSeek-V3.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.58,output:1.68,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:81920},"deepseek.v3.2":{id:`deepseek.v3.2`,name:`DeepSeek-V3.2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.62,output:1.85,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:81920},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`eu.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{id:`eu.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-opus-4-6-v1":{id:`eu.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-opus-4-7":{id:`eu.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-opus-4-8":{id:`eu.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`eu.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-sonnet-4-6":{id:`eu.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`global.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-opus-4-5-20251101-v1:0":{id:`global.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-opus-4-6-v1":{id:`global.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-opus-4-7":{id:`global.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-opus-4-8":{id:`global.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`global.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-sonnet-4-6":{id:`global.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"google.gemma-3-27b-it":{id:`google.gemma-3-27b-it`,name:`Google Gemma 3 27B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.12,output:.2,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:8192},"google.gemma-3-4b-it":{id:`google.gemma-3-4b-it`,name:`Gemma 3 4B IT`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.04,output:.08,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"jp.anthropic.claude-opus-4-7":{id:`jp.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"jp.anthropic.claude-opus-4-8":{id:`jp.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`jp.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"jp.anthropic.claude-sonnet-4-6":{id:`jp.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"meta.llama3-1-70b-instruct-v1:0":{id:`meta.llama3-1-70b-instruct-v1:0`,name:`Llama 3.1 70B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama3-1-8b-instruct-v1:0":{id:`meta.llama3-1-8b-instruct-v1:0`,name:`Llama 3.1 8B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:.22,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama3-3-70b-instruct-v1:0":{id:`meta.llama3-3-70b-instruct-v1:0`,name:`Llama 3.3 70B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama4-maverick-17b-instruct-v1:0":{id:`meta.llama4-maverick-17b-instruct-v1:0`,name:`Llama 4 Maverick 17B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.97,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:16384},"meta.llama4-scout-17b-instruct-v1:0":{id:`meta.llama4-scout-17b-instruct-v1:0`,name:`Llama 4 Scout 17B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.17,output:.66,cacheRead:0,cacheWrite:0},contextWindow:35e5,maxTokens:16384},"minimax.minimax-m2":{id:`minimax.minimax-m2`,name:`MiniMax M2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204608,maxTokens:128e3},"minimax.minimax-m2.1":{id:`minimax.minimax-m2.1`,name:`MiniMax M2.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"minimax.minimax-m2.5":{id:`minimax.minimax-m2.5`,name:`MiniMax M2.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:196608,maxTokens:98304},"mistral.devstral-2-123b":{id:`mistral.devstral-2-123b`,name:`Devstral 2 123B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.magistral-small-2509":{id:`mistral.magistral-small-2509`,name:`Magistral Small 1.2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e4},"mistral.ministral-3-14b-instruct":{id:`mistral.ministral-3-14b-instruct`,name:`Ministral 14B 3.0`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.ministral-3-3b-instruct":{id:`mistral.ministral-3-3b-instruct`,name:`Ministral 3 3B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.ministral-3-8b-instruct":{id:`mistral.ministral-3-8b-instruct`,name:`Ministral 3 8B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.mistral-large-3-675b-instruct":{id:`mistral.mistral-large-3-675b-instruct`,name:`Mistral Large 3`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.pixtral-large-2502-v1:0":{id:`mistral.pixtral-large-2502-v1:0`,name:`Pixtral Large (25.02)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"mistral.voxtral-mini-3b-2507":{id:`mistral.voxtral-mini-3b-2507`,name:`Voxtral Mini 3B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.04,output:.04,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.voxtral-small-24b-2507":{id:`mistral.voxtral-small-24b-2507`,name:`Voxtral Small 24B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.35,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:8192},"moonshot.kimi-k2-thinking":{id:`moonshot.kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262143,maxTokens:16e3},"moonshotai.kimi-k2.5":{id:`moonshotai.kimi-k2.5`,name:`Kimi K2.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:0,cacheWrite:0},contextWindow:262143,maxTokens:16e3},"nvidia.nemotron-nano-12b-v2":{id:`nvidia.nemotron-nano-12b-v2`,name:`NVIDIA Nemotron Nano 12B v2 VL BF16`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-nano-3-30b":{id:`nvidia.nemotron-nano-3-30b`,name:`NVIDIA Nemotron Nano 3 30B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.06,output:.24,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-nano-9b-v2":{id:`nvidia.nemotron-nano-9b-v2`,name:`NVIDIA Nemotron Nano 9B v2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.06,output:.23,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-super-3-120b":{id:`nvidia.nemotron-super-3-120b`,name:`NVIDIA Nemotron 3 Super 120B A12B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.15,output:.65,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"openai.gpt-oss-120b-1:0":{id:`openai.gpt-oss-120b-1:0`,name:`gpt-oss-120b`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-20b-1:0":{id:`openai.gpt-oss-20b-1:0`,name:`gpt-oss-20b`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-safeguard-120b":{id:`openai.gpt-oss-safeguard-120b`,name:`GPT OSS Safeguard 120B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-safeguard-20b":{id:`openai.gpt-oss-safeguard-20b`,name:`GPT OSS Safeguard 20B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.07,output:.2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"qwen.qwen3-235b-a22b-2507-v1:0":{id:`qwen.qwen3-235b-a22b-2507-v1:0`,name:`Qwen3 235B A22B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:.88,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"qwen.qwen3-32b-v1:0":{id:`qwen.qwen3-32b-v1:0`,name:`Qwen3 32B (dense)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:16384,maxTokens:16384},"qwen.qwen3-coder-30b-a3b-v1:0":{id:`qwen.qwen3-coder-30b-a3b-v1:0`,name:`Qwen3 Coder 30B A3B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"qwen.qwen3-coder-480b-a35b-v1:0":{id:`qwen.qwen3-coder-480b-a35b-v1:0`,name:`Qwen3 Coder 480B A35B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:1.8,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen.qwen3-coder-next":{id:`qwen.qwen3-coder-next`,name:`Qwen3 Coder Next`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.22,output:1.8,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen.qwen3-next-80b-a3b":{id:`qwen.qwen3-next-80b-a3b`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.14,output:1.4,cacheRead:0,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"qwen.qwen3-vl-235b-a22b":{id:`qwen.qwen3-vl-235b-a22b`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`us.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-opus-4-1-20250805-v1:0":{id:`us.anthropic.claude-opus-4-1-20250805-v1:0`,name:`Claude Opus 4.1 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"us.anthropic.claude-opus-4-5-20251101-v1:0":{id:`us.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-opus-4-6-v1":{id:`us.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-opus-4-7":{id:`us.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-opus-4-8":{id:`us.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`us.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-sonnet-4-6":{id:`us.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"us.deepseek.r1-v1:0":{id:`us.deepseek.r1-v1:0`,name:`DeepSeek-R1 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768},"us.meta.llama4-maverick-17b-instruct-v1:0":{id:`us.meta.llama4-maverick-17b-instruct-v1:0`,name:`Llama 4 Maverick 17B Instruct (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.97,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:16384},"us.meta.llama4-scout-17b-instruct-v1:0":{id:`us.meta.llama4-scout-17b-instruct-v1:0`,name:`Llama 4 Scout 17B Instruct (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.17,output:.66,cacheRead:0,cacheWrite:0},contextWindow:35e5,maxTokens:16384},"writer.palmyra-x4-v1:0":{id:`writer.palmyra-x4-v1:0`,name:`Palmyra X4`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:122880,maxTokens:8192},"writer.palmyra-x5-v1:0":{id:`writer.palmyra-x5-v1:0`,name:`Palmyra X5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:6,cacheRead:0,cacheWrite:0},contextWindow:104e4,maxTokens:8192},"zai.glm-4.7":{id:`zai.glm-4.7`,name:`GLM-4.7`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"zai.glm-4.7-flash":{id:`zai.glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.07,output:.4,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"zai.glm-5":{id:`zai.glm-5`,name:`GLM-5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:101376}},anthropic:{"claude-3-5-haiku-20241022":{id:`claude-3-5-haiku-20241022`,name:`Claude Haiku 3.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-5-haiku-latest":{id:`claude-3-5-haiku-latest`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-5-sonnet-20240620":{id:`claude-3-5-sonnet-20240620`,name:`Claude Sonnet 3.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-3-5-sonnet-20241022":{id:`claude-3-5-sonnet-20241022`,name:`Claude Sonnet 3.5 v2`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-3-7-sonnet-20250219":{id:`claude-3-7-sonnet-20250219`,name:`Claude Sonnet 3.7`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-3-haiku-20240307":{id:`claude-3-haiku-20240307`,name:`Claude Haiku 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3-opus-20240229":{id:`claude-3-opus-20240229`,name:`Claude Opus 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:4096},"claude-3-sonnet-20240229":{id:`claude-3-sonnet-20240229`,name:`Claude Sonnet 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-haiku-4-5-20251001":{id:`claude-haiku-4-5-20251001`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-0":{id:`claude-opus-4-0`,name:`Claude Opus 4 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1-20250805":{id:`claude-opus-4-1-20250805`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-20250514":{id:`claude-opus-4-20250514`,name:`Claude Opus 4`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-5-20251101":{id:`claude-opus-4-5-20251101`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-8":{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4-0":{id:`claude-sonnet-4-0`,name:`Claude Sonnet 4 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-20250514":{id:`claude-sonnet-4-20250514`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5-20250929":{id:`claude-sonnet-4-5-20250929`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3}},"azure-openai-responses":{"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-mini":{id:`gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:1.6,cacheRead:.1,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-nano":{id:`gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-05-13":{id:`gpt-4o-2024-05-13`,name:`GPT-4o (2024-05-13)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o-2024-08-06":{id:`gpt-4o-2024-08-06`,name:`GPT-4o (2024-08-06)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-11-20":{id:`gpt-4o-2024-11-20`,name:`GPT-4o (2024-11-20)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-chat-latest":{id:`gpt-5-chat-latest`,name:`GPT-5 Chat Latest`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5-Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5 Mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-pro":{id:`gpt-5-pro`,name:`GPT-5 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-chat-latest":{id:`gpt-5.1-chat-latest`,name:`GPT-5.1 Chat`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-chat-latest":{id:`gpt-5.2-chat-latest`,name:`GPT-5.2 Chat`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-pro":{id:`gpt-5.2-pro`,name:`GPT-5.2 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-chat-latest":{id:`gpt-5.3-chat-latest`,name:`GPT-5.3 Chat (latest)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o1-pro":{id:`o1-pro`,name:`o1-pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:150,output:600,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-deep-research":{id:`o3-deep-research`,name:`o3-deep-research`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini-deep-research":{id:`o4-mini-deep-research`,name:`o4-mini-deep-research`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5}},cerebras:{"gpt-oss-120b":{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!0,input:[`text`],cost:{input:.25,output:.69,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"llama3.1-8b":{id:`llama3.1-8b`,name:`Llama 3.1 8B`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:8e3},"zai-glm-4.7":{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2.25,output:2.75,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4e4}},"cloudflare-ai-gateway":{"claude-3-5-haiku":{id:`claude-3-5-haiku`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-haiku":{id:`claude-3-haiku`,name:`Claude Haiku 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3-opus":{id:`claude-3-opus`,name:`Claude Opus 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:4096},"claude-3-sonnet":{id:`claude-3-sonnet`,name:`Claude Sonnet 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3.5-haiku":{id:`claude-3.5-haiku`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3.5-sonnet":{id:`claude-3.5-sonnet`,name:`Claude Sonnet 3.5 v2`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4":{id:`claude-opus-4`,name:`Claude Opus 4 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4":{id:`claude-sonnet-4`,name:`Claude Sonnet 4 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.08,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.28,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"workers-ai/@cf/moonshotai/kimi-k2.5":{id:`workers-ai/@cf/moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/moonshotai/kimi-k2.6":{id:`workers-ai/@cf/moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{id:`workers-ai/@cf/nvidia/nemotron-3-120b-a12b`,name:`Nemotron 3 Super 120B`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/zai-org/glm-4.7-flash":{id:`workers-ai/@cf/zai-org/glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.06,output:.4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072}},"cloudflare-workers-ai":{"@cf/google/gemma-4-26b-a4b-it":{id:`@cf/google/gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384},"@cf/ibm-granite/granite-4.0-h-micro":{id:`@cf/ibm-granite/granite-4.0-h-micro`,name:`Granite 4.0 H Micro`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.017,output:.112,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:131e3},"@cf/meta/llama-3.3-70b-instruct-fp8-fast":{id:`@cf/meta/llama-3.3-70b-instruct-fp8-fast`,name:`Llama 3.3 70B Instruct fp8 Fast`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.293,output:2.253,cacheRead:0,cacheWrite:0},contextWindow:24e3,maxTokens:24e3},"@cf/meta/llama-4-scout-17b-16e-instruct":{id:`@cf/meta/llama-4-scout-17b-16e-instruct`,name:`Llama 4 Scout 17B 16E Instruct`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`,`image`],cost:{input:.27,output:.85,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:16384},"@cf/mistralai/mistral-small-3.1-24b-instruct":{id:`@cf/mistralai/mistral-small-3.1-24b-instruct`,name:`Mistral Small 3.1 24B Instruct`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.351,output:.555,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"@cf/moonshotai/kimi-k2.5":{id:`@cf/moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"@cf/moonshotai/kimi-k2.6":{id:`@cf/moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:256e3},"@cf/nvidia/nemotron-3-120b-a12b":{id:`@cf/nvidia/nemotron-3-120b-a12b`,name:`Nemotron 3 Super 120B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"@cf/openai/gpt-oss-120b":{id:`@cf/openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.35,output:.75,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"@cf/openai/gpt-oss-20b":{id:`@cf/openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.2,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"@cf/qwen/qwen3-30b-a3b-fp8":{id:`@cf/qwen/qwen3-30b-a3b-fp8`,name:`Qwen3 30B A3b fp8`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.0509,output:.335,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"@cf/zai-org/glm-4.7-flash":{id:`@cf/zai-org/glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.0605,output:.4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072}},deepseek:{"deepseek-v4-flash":{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`openai-completions`,provider:`deepseek`,baseUrl:`https://api.deepseek.com`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek-v4-pro":{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`deepseek`,baseUrl:`https://api.deepseek.com`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1e6,maxTokens:384e3}},fireworks:{"accounts/fireworks/models/deepseek-v4-flash":{id:`accounts/fireworks/models/deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.14,output:.28,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/deepseek-v4-pro":{id:`accounts/fireworks/models/deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.145,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/glm-5p1":{id:`accounts/fireworks/models/glm-5p1`,name:`GLM 5.1`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202800,maxTokens:131072},"accounts/fireworks/models/gpt-oss-120b":{id:`accounts/fireworks/models/gpt-oss-120b`,name:`GPT OSS 120B`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/gpt-oss-20b":{id:`accounts/fireworks/models/gpt-oss-20b`,name:`GPT OSS 20B`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:.035,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/kimi-k2p5":{id:`accounts/fireworks/models/kimi-k2p5`,name:`Kimi K2.5`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"accounts/fireworks/models/kimi-k2p6":{id:`accounts/fireworks/models/kimi-k2p6`,name:`Kimi K2.6`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"accounts/fireworks/models/minimax-m2p5":{id:`accounts/fireworks/models/minimax-m2p5`,name:`MiniMax-M2.5`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:196608,maxTokens:196608},"accounts/fireworks/models/minimax-m2p7":{id:`accounts/fireworks/models/minimax-m2p7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:196608,maxTokens:196608},"accounts/fireworks/models/qwen3p6-plus":{id:`accounts/fireworks/models/qwen3p6-plus`,name:`Qwen 3.6 Plus`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.1,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"accounts/fireworks/routers/glm-5p1-fast":{id:`accounts/fireworks/routers/glm-5p1-fast`,name:`GLM 5.1 Fast`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:2.8,output:8.8,cacheRead:.52,cacheWrite:0},contextWindow:202800,maxTokens:131072},"accounts/fireworks/routers/kimi-k2p6-turbo":{id:`accounts/fireworks/routers/kimi-k2p6-turbo`,name:`Kimi K2.6 Turbo`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.3,cacheWrite:0},contextWindow:262e3,maxTokens:262e3}},"github-copilot":{"claude-haiku-4.5":{id:`claude-haiku-4.5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsEagerToolInputStreaming:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:32e3},"claude-opus-4.5":{id:`claude-opus-4.5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:16e4,maxTokens:32e3},"claude-opus-4.6":{id:`claude-opus-4.6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"claude-opus-4.7":{id:`claude-opus-4.7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:64e3},"claude-sonnet-4.5":{id:`claude-sonnet-4.5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsEagerToolInputStreaming:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:32e3},"claude-sonnet-4.6":{id:`claude-sonnet-4.6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:32e3},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5-mini`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:264e3,maxTokens:64e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:264e3,maxTokens:64e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2-Codex`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3-Codex`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"grok-code-fast-1":{id:`grok-code-fast-1`,name:`Grok Code Fast 1`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3}},google:{"gemini-2.0-flash":{id:`gemini-2.0-flash`,name:`Gemini 2.0 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.0-flash-lite":{id:`gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash-Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.5-flash":{id:`gemini-2.5-flash`,name:`Gemini 2.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite":{id:`gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash-Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-pro-preview":{id:`gemini-3-pro-preview`,name:`Gemini 3 Pro Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-flash-lite":{id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-flash-lite-preview":{id:`gemini-3.1-flash-lite-preview`,name:`Gemini 3.1 Flash Lite Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview-customtools":{id:`gemini-3.1-pro-preview-customtools`,name:`Gemini 3.1 Pro Preview Custom Tools`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-flash-latest":{id:`gemini-flash-latest`,name:`Gemini Flash Latest`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.075,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-flash-lite-latest":{id:`gemini-flash-lite-latest`,name:`Gemini Flash-Lite Latest`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemma-4-26b-a4b-it":{id:`gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:`MINIMAL`,low:null,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"gemma-4-31b-it":{id:`gemma-4-31b-it`,name:`Gemma 4 31B IT`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:`MINIMAL`,low:null,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768}},"google-vertex":{"gemini-1.5-flash":{id:`gemini-1.5-flash`,name:`Gemini 1.5 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.01875,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-1.5-flash-8b":{id:`gemini-1.5-flash-8b`,name:`Gemini 1.5 Flash-8B (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.0375,output:.15,cacheRead:.01,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-1.5-pro":{id:`gemini-1.5-pro`,name:`Gemini 1.5 Pro (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:5,cacheRead:.3125,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-2.0-flash":{id:`gemini-2.0-flash`,name:`Gemini 2.0 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.0-flash-lite":{id:`gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash Lite (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.01875,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash":{id:`gemini-2.5-flash`,name:`Gemini 2.5 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite":{id:`gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash Lite (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite-preview-09-2025":{id:`gemini-2.5-flash-lite-preview-09-2025`,name:`Gemini 2.5 Flash Lite Preview 09-25 (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-pro-preview":{id:`gemini-3-pro-preview`,name:`Gemini 3 Pro Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview-customtools":{id:`gemini-3.1-pro-preview-customtools`,name:`Gemini 3.1 Pro Preview Custom Tools (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536}},groq:{"deepseek-r1-distill-llama-70b":{id:`deepseek-r1-distill-llama-70b`,name:`DeepSeek R1 Distill Llama 70B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.75,output:.99,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"gemma2-9b-it":{id:`gemma2-9b-it`,name:`Gemma 2 9B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"groq/compound":{id:`groq/compound`,name:`Compound`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"groq/compound-mini":{id:`groq/compound-mini`,name:`Compound Mini`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"llama-3.1-8b-instant":{id:`llama-3.1-8b-instant`,name:`Llama 3.1 8B Instant`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.05,output:.08,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"llama-3.3-70b-versatile":{id:`llama-3.3-70b-versatile`,name:`Llama 3.3 70B Versatile`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"llama3-70b-8192":{id:`llama3-70b-8192`,name:`Llama 3 70B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"llama3-8b-8192":{id:`llama3-8b-8192`,name:`Llama 3 8B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.05,output:.08,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"meta-llama/llama-4-maverick-17b-128e-instruct":{id:`meta-llama/llama-4-maverick-17b-128e-instruct`,name:`Llama 4 Maverick 17B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"meta-llama/llama-4-scout-17b-16e-instruct":{id:`meta-llama/llama-4-scout-17b-16e-instruct`,name:`Llama 4 Scout 17B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.11,output:.34,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"mistral-saba-24b":{id:`mistral-saba-24b`,name:`Mistral Saba 24B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.79,output:.79,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"moonshotai/kimi-k2-instruct":{id:`moonshotai/kimi-k2-instruct`,name:`Kimi K2 Instruct`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"moonshotai/kimi-k2-instruct-0905":{id:`moonshotai/kimi-k2-instruct-0905`,name:`Kimi K2 Instruct 0905`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:.5,cacheWrite:0},contextWindow:262144,maxTokens:16384},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.0375,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`Safety GPT OSS 20B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen-qwq-32b":{id:`qwen-qwq-32b`,name:`Qwen QwQ 32B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.29,output:.39,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen3-32b":{id:`qwen/qwen3-32b`,name:`Qwen3 32B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`default`},input:[`text`],cost:{input:.29,output:.59,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:40960}},huggingface:{"MiniMaxAI/MiniMax-M2.1":{id:`MiniMaxAI/MiniMax-M2.1`,name:`MiniMax-M2.1`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.5":{id:`MiniMaxAI/MiniMax-M2.5`,name:`MiniMax-M2.5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.7":{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"Qwen/Qwen3-235B-A22B-Thinking-2507":{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3-235B-A22B-Thinking-2507`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3-Coder-480B-A35B-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:2,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:66536},"Qwen/Qwen3-Coder-Next":{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3-Coder-Next`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"Qwen/Qwen3-Next-80B-A3B-Instruct":{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen3-Next-80B-A3B-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:66536},"Qwen/Qwen3-Next-80B-A3B-Thinking":{id:`Qwen/Qwen3-Next-80B-A3B-Thinking`,name:`Qwen3-Next-80B-A3B-Thinking`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.3,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"Qwen/Qwen3.5-397B-A17B":{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5-397B-A17B`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"XiaomiMiMo/MiMo-V2-Flash":{id:`XiaomiMiMo/MiMo-V2-Flash`,name:`MiMo-V2-Flash`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"deepseek-ai/DeepSeek-R1-0528":{id:`deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek-R1-0528`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:3,output:5,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:163840},"deepseek-ai/DeepSeek-V3.2":{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek-V3.2`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.28,output:.4,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:65536},"deepseek-ai/DeepSeek-V4-Pro":{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1048576,maxTokens:393216},"moonshotai/Kimi-K2-Instruct":{id:`moonshotai/Kimi-K2-Instruct`,name:`Kimi-K2-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"moonshotai/Kimi-K2-Instruct-0905":{id:`moonshotai/Kimi-K2-Instruct-0905`,name:`Kimi-K2-Instruct-0905`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"moonshotai/Kimi-K2-Thinking":{id:`moonshotai/Kimi-K2-Thinking`,name:`Kimi-K2-Thinking`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.5":{id:`moonshotai/Kimi-K2.5`,name:`Kimi-K2.5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.6":{id:`moonshotai/Kimi-K2.6`,name:`Kimi-K2.6`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144},"zai-org/GLM-4.7":{id:`zai-org/GLM-4.7`,name:`GLM-4.7`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:204800,maxTokens:131072},"zai-org/GLM-4.7-Flash":{id:`zai-org/GLM-4.7-Flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"zai-org/GLM-5":{id:`zai-org/GLM-5`,name:`GLM-5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:131072},"zai-org/GLM-5.1":{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:131072}},"kimi-coding":{"kimi-for-coding":{id:`kimi-for-coding`,name:`Kimi For Coding`,api:`anthropic-messages`,provider:`kimi-coding`,baseUrl:`https://api.kimi.com/coding`,headers:{"User-Agent":`KimiCLI/1.5`},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`anthropic-messages`,provider:`kimi-coding`,baseUrl:`https://api.kimi.com/coding`,headers:{"User-Agent":`KimiCLI/1.5`},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768}},minimax:{"MiniMax-M2.7":{id:`MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`minimax`,baseUrl:`https://api.minimax.io/anthropic`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"MiniMax-M2.7-highspeed":{id:`MiniMax-M2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,api:`anthropic-messages`,provider:`minimax`,baseUrl:`https://api.minimax.io/anthropic`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}},"minimax-cn":{"MiniMax-M2.7":{id:`MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`minimax-cn`,baseUrl:`https://api.minimaxi.com/anthropic`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"MiniMax-M2.7-highspeed":{id:`MiniMax-M2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,api:`anthropic-messages`,provider:`minimax-cn`,baseUrl:`https://api.minimaxi.com/anthropic`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}},mistral:{"codestral-latest":{id:`codestral-latest`,name:`Codestral (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"devstral-2512":{id:`devstral-2512`,name:`Devstral 2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"devstral-medium-2507":{id:`devstral-medium-2507`,name:`Devstral Medium`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"devstral-medium-latest":{id:`devstral-medium-latest`,name:`Devstral 2 (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"devstral-small-2505":{id:`devstral-small-2505`,name:`Devstral Small 2505`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"devstral-small-2507":{id:`devstral-small-2507`,name:`Devstral Small`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"labs-devstral-small-2512":{id:`labs-devstral-small-2512`,name:`Devstral Small 2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"magistral-medium-latest":{id:`magistral-medium-latest`,name:`Magistral Medium (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`],cost:{input:2,output:5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"magistral-small":{id:`magistral-small`,name:`Magistral Small`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"ministral-3b-latest":{id:`ministral-3b-latest`,name:`Ministral 3B (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.04,output:.04,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"ministral-8b-latest":{id:`ministral-8b-latest`,name:`Ministral 8B (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"mistral-large-2411":{id:`mistral-large-2411`,name:`Mistral Large 2.1`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"mistral-large-2512":{id:`mistral-large-2512`,name:`Mistral Large 3`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-large-latest":{id:`mistral-large-latest`,name:`Mistral Large (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-2505":{id:`mistral-medium-2505`,name:`Mistral Medium 3`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"mistral-medium-2508":{id:`mistral-medium-2508`,name:`Mistral Medium 3.1`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-2604":{id:`mistral-medium-2604`,name:`Mistral Medium 3.5`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-3.5":{id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-latest":{id:`mistral-medium-latest`,name:`Mistral Medium (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-nemo":{id:`mistral-nemo`,name:`Mistral Nemo`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"mistral-small-2506":{id:`mistral-small-2506`,name:`Mistral Small 3.2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"mistral-small-2603":{id:`mistral-small-2603`,name:`Mistral Small 4`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral-small-latest":{id:`mistral-small-latest`,name:`Mistral Small (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"open-mistral-7b":{id:`open-mistral-7b`,name:`Mistral 7B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.25,output:.25,cacheRead:0,cacheWrite:0},contextWindow:8e3,maxTokens:8e3},"open-mixtral-8x22b":{id:`open-mixtral-8x22b`,name:`Mixtral 8x22B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:64e3,maxTokens:64e3},"open-mixtral-8x7b":{id:`open-mixtral-8x7b`,name:`Mixtral 8x7B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.7,output:.7,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:32e3},"pixtral-12b":{id:`pixtral-12b`,name:`Pixtral 12B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"pixtral-large-latest":{id:`pixtral-large-latest`,name:`Pixtral Large (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3}},moonshotai:{"kimi-k2-0711-preview":{id:`kimi-k2-0711-preview`,name:`Kimi K2 0711`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:131072,maxTokens:16384},"kimi-k2-0905-preview":{id:`kimi-k2-0905-preview`,name:`Kimi K2 0905`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking-turbo":{id:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-turbo-preview":{id:`kimi-k2-turbo-preview`,name:`Kimi K2 Turbo`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:2.4,output:10,cacheRead:.6,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144}},"moonshotai-cn":{"kimi-k2-0711-preview":{id:`kimi-k2-0711-preview`,name:`Kimi K2 0711`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:131072,maxTokens:16384},"kimi-k2-0905-preview":{id:`kimi-k2-0905-preview`,name:`Kimi K2 0905`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking-turbo":{id:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-turbo-preview":{id:`kimi-k2-turbo-preview`,name:`Kimi K2 Turbo`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:2.4,output:10,cacheRead:.6,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144}},openai:{"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-mini":{id:`gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:1.6,cacheRead:.1,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-nano":{id:`gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-05-13":{id:`gpt-4o-2024-05-13`,name:`GPT-4o (2024-05-13)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o-2024-08-06":{id:`gpt-4o-2024-08-06`,name:`GPT-4o (2024-08-06)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-11-20":{id:`gpt-4o-2024-11-20`,name:`GPT-4o (2024-11-20)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-chat-latest":{id:`gpt-5-chat-latest`,name:`GPT-5 Chat Latest`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5-Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5 Mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-pro":{id:`gpt-5-pro`,name:`GPT-5 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-chat-latest":{id:`gpt-5.1-chat-latest`,name:`GPT-5.1 Chat`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-chat-latest":{id:`gpt-5.2-chat-latest`,name:`GPT-5.2 Chat`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-pro":{id:`gpt-5.2-pro`,name:`GPT-5.2 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-chat-latest":{id:`gpt-5.3-chat-latest`,name:`GPT-5.3 Chat (latest)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o1-pro":{id:`o1-pro`,name:`o1-pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:150,output:600,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-deep-research":{id:`o3-deep-research`,name:`o3-deep-research`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini-deep-research":{id:`o4-mini-deep-research`,name:`o4-mini-deep-research`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5}},"openai-codex":{"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3}},opencode:{"big-pickle":{id:`big-pickle`,name:`Big Pickle`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:32e3},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-8":{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4":{id:`claude-sonnet-4`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"deepseek-v4-flash-free":{id:`deepseek-v4-flash-free`,name:`DeepSeek V4 Flash Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"gemini-3-flash":{id:`gemini-3-flash`,name:`Gemini 3 Flash`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro":{id:`gemini-3.1-pro`,name:`Gemini 3.1 Pro Preview`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"glm-5":{id:`glm-5`,name:`GLM-5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:204800,maxTokens:131072},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:204800,maxTokens:131072},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex Mini`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"grok-build-0.1":{id:`grok-build-0.1`,name:`Grok Build 0.1`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.2,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2.5-free":{id:`mimo-v2.5-free`,name:`MiMo V2.5 Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"minimax-m2.5":{id:`minimax-m2.5`,name:`MiniMax M2.5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"minimax-m2.7":{id:`minimax-m2.7`,name:`MiniMax M2.7`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"nemotron-3-super-free":{id:`nemotron-3-super-free`,name:`Nemotron 3 Super Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:128e3},"qwen3.5-plus":{id:`qwen3.5-plus`,name:`Qwen3.5 Plus`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:.2,output:1.2,cacheRead:.02,cacheWrite:.25},contextWindow:262144,maxTokens:65536},"qwen3.6-plus":{id:`qwen3.6-plus`,name:`Qwen3.6 Plus`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:.625},contextWindow:262144,maxTokens:65536}},"opencode-go":{"deepseek-v4-flash":{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek-v4-pro":{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.0145,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"glm-5":{id:`glm-5`,name:`GLM-5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:32768},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202752,maxTokens:32768},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`string-thinking`},reasoning:!0,thinkingLevelMap:{off:`none`},input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo V2.5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.0145,cacheWrite:0},contextWindow:1048576,maxTokens:128e3},"minimax-m2.5":{id:`minimax-m2.5`,name:`MiniMax M2.5`,api:`anthropic-messages`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:65536},"minimax-m2.7":{id:`minimax-m2.7`,name:`MiniMax M2.7`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"qwen3.5-plus":{id:`qwen3.5-plus`,name:`Qwen3.5 Plus`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`qwen`},reasoning:!0,input:[`text`,`image`],cost:{input:.2,output:1.2,cacheRead:.02,cacheWrite:.25},contextWindow:262144,maxTokens:65536},"qwen3.6-plus":{id:`qwen3.6-plus`,name:`Qwen3.6 Plus`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`qwen`},reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:.625},contextWindow:262144,maxTokens:65536},"qwen3.7-max":{id:`qwen3.7-max`,name:`Qwen3.7 Max`,api:`anthropic-messages`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go`,reasoning:!0,input:[`text`],cost:{input:2.5,output:7.5,cacheRead:.5,cacheWrite:3.125},contextWindow:1e6,maxTokens:65536}},openrouter:{"ai21/jamba-large-1.7":{id:`ai21/jamba-large-1.7`,name:`AI21: Jamba Large 1.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:8,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"amazon/nova-2-lite-v1":{id:`amazon/nova-2-lite-v1`,name:`Amazon: Nova 2 Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65535},"amazon/nova-lite-v1":{id:`amazon/nova-lite-v1`,name:`Amazon: Nova Lite 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.06,output:.24,cacheRead:0,cacheWrite:0},contextWindow:3e5,maxTokens:5120},"amazon/nova-micro-v1":{id:`amazon/nova-micro-v1`,name:`Amazon: Nova Micro 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.035,output:.14,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:5120},"amazon/nova-premier-v1":{id:`amazon/nova-premier-v1`,name:`Amazon: Nova Premier 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:12.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:32e3},"amazon/nova-pro-v1":{id:`amazon/nova-pro-v1`,name:`Amazon: Nova Pro 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:3e5,maxTokens:5120},"anthropic/claude-3-haiku":{id:`anthropic/claude-3-haiku`,name:`Anthropic: Claude 3 Haiku`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"anthropic/claude-3.5-haiku":{id:`anthropic/claude-3.5-haiku`,name:`Anthropic: Claude 3.5 Haiku`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"anthropic/claude-haiku-4.5":{id:`anthropic/claude-haiku-4.5`,name:`Anthropic: Claude Haiku 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4":{id:`anthropic/claude-opus-4`,name:`Anthropic: Claude Opus 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.1":{id:`anthropic/claude-opus-4.1`,name:`Anthropic: Claude Opus 4.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.5":{id:`anthropic/claude-opus-4.5`,name:`Anthropic: Claude Opus 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4.6":{id:`anthropic/claude-opus-4.6`,name:`Anthropic: Claude Opus 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.6-fast":{id:`anthropic/claude-opus-4.6-fast`,name:`Anthropic: Claude Opus 4.6 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:30,output:150,cacheRead:3,cacheWrite:37.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7":{id:`anthropic/claude-opus-4.7`,name:`Anthropic: Claude Opus 4.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7-fast":{id:`anthropic/claude-opus-4.7-fast`,name:`Anthropic: Claude Opus 4.7 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:150,cacheRead:3,cacheWrite:37.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8":{id:`anthropic/claude-opus-4.8`,name:`Anthropic: Claude Opus 4.8`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8-fast":{id:`anthropic/claude-opus-4.8-fast`,name:`Anthropic: Claude Opus 4.8 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:10,output:50,cacheRead:1,cacheWrite:12.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-sonnet-4":{id:`anthropic/claude-sonnet-4`,name:`Anthropic: Claude Sonnet 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.5":{id:`anthropic/claude-sonnet-4.5`,name:`Anthropic: Claude Sonnet 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.6":{id:`anthropic/claude-sonnet-4.6`,name:`Anthropic: Claude Sonnet 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"arcee-ai/trinity-large-thinking":{id:`arcee-ai/trinity-large-thinking`,name:`Arcee AI: Trinity Large Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.22,output:.85,cacheRead:.06,cacheWrite:0},contextWindow:262144,maxTokens:262144},"arcee-ai/trinity-mini":{id:`arcee-ai/trinity-mini`,name:`Arcee AI: Trinity Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.045,output:.15,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"arcee-ai/virtuoso-large":{id:`arcee-ai/virtuoso-large`,name:`Arcee AI: Virtuoso Large`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.75,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:64e3},auto:{id:`auto`,name:`Auto`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"baidu/ernie-4.5-21b-a3b":{id:`baidu/ernie-4.5-21b-a3b`,name:`Baidu: ERNIE 4.5 21B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.07,output:.28,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8e3},"baidu/ernie-4.5-vl-28b-a3b":{id:`baidu/ernie-4.5-vl-28b-a3b`,name:`Baidu: ERNIE 4.5 VL 28B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.56,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8e3},"bytedance-seed/seed-1.6":{id:`bytedance-seed/seed-1.6`,name:`ByteDance Seed: Seed 1.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"bytedance-seed/seed-1.6-flash":{id:`bytedance-seed/seed-1.6-flash`,name:`ByteDance Seed: Seed 1.6 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"bytedance-seed/seed-2.0-lite":{id:`bytedance-seed/seed-2.0-lite`,name:`ByteDance Seed: Seed-2.0-Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"bytedance-seed/seed-2.0-mini":{id:`bytedance-seed/seed-2.0-mini`,name:`ByteDance Seed: Seed-2.0-Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"cohere/command-r-08-2024":{id:`cohere/command-r-08-2024`,name:`Cohere: Command R (08-2024)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"cohere/command-r-plus-08-2024":{id:`cohere/command-r-plus-08-2024`,name:`Cohere: Command R+ (08-2024)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"deepseek/deepseek-chat":{id:`deepseek/deepseek-chat`,name:`DeepSeek: DeepSeek V3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.2288,output:.9144,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16e3},"deepseek/deepseek-chat-v3-0324":{id:`deepseek/deepseek-chat-v3-0324`,name:`DeepSeek: DeepSeek V3 0324`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.19999999999999998,output:.77,cacheRead:.135,cacheWrite:0},contextWindow:163840,maxTokens:16384},"deepseek/deepseek-chat-v3.1":{id:`deepseek/deepseek-chat-v3.1`,name:`DeepSeek: DeepSeek V3.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.21,output:.7899999999999999,cacheRead:.13,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-r1":{id:`deepseek/deepseek-r1`,name:`DeepSeek: R1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16e3},"deepseek/deepseek-r1-0528":{id:`deepseek/deepseek-r1-0528`,name:`DeepSeek: R1 0528`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.5,output:2.1500000000000004,cacheRead:.35,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-v3.1-terminus":{id:`deepseek/deepseek-v3.1-terminus`,name:`DeepSeek: DeepSeek V3.1 Terminus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27,output:.95,cacheRead:.13,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-v3.2":{id:`deepseek/deepseek-v3.2`,name:`DeepSeek: DeepSeek V3.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.252,output:.378,cacheRead:.0252,cacheWrite:0},contextWindow:131072,maxTokens:65536},"deepseek/deepseek-v3.2-exp":{id:`deepseek/deepseek-v3.2-exp`,name:`DeepSeek: DeepSeek V3.2 Exp`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27,output:.41,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:65536},"deepseek/deepseek-v4-flash":{id:`deepseek/deepseek-v4-flash`,name:`DeepSeek: DeepSeek V4 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:.09999999999999999,output:.19999999999999998,cacheRead:.02,cacheWrite:0},contextWindow:1048576,maxTokens:16384},"deepseek/deepseek-v4-flash:free":{id:`deepseek/deepseek-v4-flash:free`,name:`DeepSeek: DeepSeek V4 Flash (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:384e3},"deepseek/deepseek-v4-pro":{id:`deepseek/deepseek-v4-pro`,name:`DeepSeek: DeepSeek V4 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1048576,maxTokens:384e3},"essentialai/rnj-1-instruct":{id:`essentialai/rnj-1-instruct`,name:`EssentialAI: Rnj 1 Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:4096},"google/gemini-2.0-flash-001":{id:`google/gemini-2.0-flash-001`,name:`Google: Gemini 2.0 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1e6,maxTokens:8192},"google/gemini-2.0-flash-lite-001":{id:`google/gemini-2.0-flash-lite-001`,name:`Google: Gemini 2.0 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.5-flash":{id:`google/gemini-2.5-flash`,name:`Google: Gemini 2.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-flash-lite":{id:`google/gemini-2.5-flash-lite`,name:`Google: Gemini 2.5 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-flash-lite-preview-09-2025":{id:`google/gemini-2.5-flash-lite-preview-09-2025`,name:`Google: Gemini 2.5 Flash Lite Preview 09-2025`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-pro":{id:`google/gemini-2.5-pro`,name:`Google: Gemini 2.5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro-preview":{id:`google/gemini-2.5-pro-preview`,name:`Google: Gemini 2.5 Pro Preview 06-05`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro-preview-05-06":{id:`google/gemini-2.5-pro-preview-05-06`,name:`Google: Gemini 2.5 Pro Preview 05-06`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65535},"google/gemini-3-flash-preview":{id:`google/gemini-3-flash-preview`,name:`Google: Gemini 3 Flash Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.049999999999999996,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-flash-lite":{id:`google/gemini-3.1-flash-lite`,name:`Google: Gemini 3.1 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-flash-lite-preview":{id:`google/gemini-3.1-flash-lite-preview`,name:`Google: Gemini 3.1 Flash Lite Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-pro-preview":{id:`google/gemini-3.1-pro-preview`,name:`Google: Gemini 3.1 Pro Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-pro-preview-customtools":{id:`google/gemini-3.1-pro-preview-customtools`,name:`Google: Gemini 3.1 Pro Preview Custom Tools`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048756,maxTokens:65536},"google/gemini-3.5-flash":{id:`google/gemini-3.5-flash`,name:`Google: Gemini 3.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemma-3-12b-it":{id:`google/gemma-3-12b-it`,name:`Google: Gemma 3 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.04,output:.13,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"google/gemma-3-27b-it":{id:`google/gemma-3-27b-it`,name:`Google: Gemma 3 27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.16,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"google/gemma-4-26b-a4b-it":{id:`google/gemma-4-26b-a4b-it`,name:`Google: Gemma 4 26B A4B `,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.06,output:.33,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"google/gemma-4-26b-a4b-it:free":{id:`google/gemma-4-26b-a4b-it:free`,name:`Google: Gemma 4 26B A4B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"google/gemma-4-31b-it":{id:`google/gemma-4-31b-it`,name:`Google: Gemma 4 31B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.12,output:.37,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"google/gemma-4-31b-it:free":{id:`google/gemma-4-31b-it:free`,name:`Google: Gemma 4 31B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"ibm-granite/granite-4.1-8b":{id:`ibm-granite/granite-4.1-8b`,name:`IBM: Granite 4.1 8B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.049999999999999996,output:.09999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:131072},"inception/mercury-2":{id:`inception/mercury-2`,name:`Inception: Mercury 2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`],cost:{input:.25,output:.75,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:5e4},"inclusionai/ling-2.6-1t":{id:`inclusionai/ling-2.6-1t`,name:`inclusionAI: Ling-2.6-1T`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.075,output:.625,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:32768},"inclusionai/ling-2.6-flash":{id:`inclusionai/ling-2.6-flash`,name:`inclusionAI: Ling-2.6-flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.01,output:.03,cacheRead:.002,cacheWrite:0},contextWindow:262144,maxTokens:32768},"inclusionai/ring-2.6-1t":{id:`inclusionai/ring-2.6-1t`,name:`inclusionAI: Ring-2.6-1T`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.625,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kwaipilot/kat-coder-pro-v2":{id:`kwaipilot/kat-coder-pro-v2`,name:`Kwaipilot: KAT-Coder-Pro V2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:256e3,maxTokens:8e4},"meta-llama/llama-3.1-70b-instruct":{id:`meta-llama/llama-3.1-70b-instruct`,name:`Meta: Llama 3.1 70B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.1-8b-instruct":{id:`meta-llama/llama-3.1-8b-instruct`,name:`Meta: Llama 3.1 8B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.02,output:.049999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.3-70b-instruct":{id:`meta-llama/llama-3.3-70b-instruct`,name:`Meta: Llama 3.3 70B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.32,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.3-70b-instruct:free":{id:`meta-llama/llama-3.3-70b-instruct:free`,name:`Meta: Llama 3.3 70B Instruct (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"meta-llama/llama-4-scout":{id:`meta-llama/llama-4-scout`,name:`Meta: Llama 4 Scout`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1e7,maxTokens:16384},"minimax/minimax-m1":{id:`minimax/minimax-m1`,name:`MiniMax: MiniMax M1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.39999999999999997,output:2.2,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:4e4},"minimax/minimax-m2":{id:`minimax/minimax-m2`,name:`MiniMax: MiniMax M2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.255,output:1,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.1":{id:`minimax/minimax-m2.1`,name:`MiniMax: MiniMax M2.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.29,output:.95,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.5":{id:`minimax/minimax-m2.5`,name:`MiniMax: MiniMax M2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:1.15,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.5:free":{id:`minimax/minimax-m2.5:free`,name:`MiniMax: MiniMax M2.5 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:8192},"minimax/minimax-m2.7":{id:`minimax/minimax-m2.7`,name:`MiniMax: MiniMax M2.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27899999999999997,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"mistralai/codestral-2508":{id:`mistralai/codestral-2508`,name:`Mistral: Codestral 2508`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.3,output:.8999999999999999,cacheRead:.03,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"mistralai/devstral-2512":{id:`mistralai/devstral-2512`,name:`Mistral: Devstral 2 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/devstral-medium":{id:`mistralai/devstral-medium`,name:`Mistral: Devstral Medium`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/devstral-small":{id:`mistralai/devstral-small`,name:`Mistral: Devstral Small 1.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/ministral-14b-2512":{id:`mistralai/ministral-14b-2512`,name:`Mistral: Ministral 3 14B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.19999999999999998,cacheRead:.02,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/ministral-3b-2512":{id:`mistralai/ministral-3b-2512`,name:`Mistral: Ministral 3 3B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:.01,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/ministral-8b-2512":{id:`mistralai/ministral-8b-2512`,name:`Mistral: Ministral 3 8B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-large":{id:`mistralai/mistral-large`,name:`Mistral Large`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistralai/mistral-large-2407":{id:`mistralai/mistral-large-2407`,name:`Mistral Large 2407`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-large-2411":{id:`mistralai/mistral-large-2411`,name:`Mistral Large 2411`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-large-2512":{id:`mistralai/mistral-large-2512`,name:`Mistral: Mistral Large 3 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-medium-3":{id:`mistralai/mistral-medium-3`,name:`Mistral: Mistral Medium 3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-medium-3-5":{id:`mistralai/mistral-medium-3-5`,name:`Mistral: Mistral Medium 3.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-medium-3.1":{id:`mistralai/mistral-medium-3.1`,name:`Mistral: Mistral Medium 3.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-nemo":{id:`mistralai/mistral-nemo`,name:`Mistral: Mistral Nemo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.02,output:.03,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-saba":{id:`mistralai/mistral-saba`,name:`Mistral: Saba`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.19999999999999998,output:.6,cacheRead:.02,cacheWrite:0},contextWindow:32768,maxTokens:4096},"mistralai/mistral-small-2603":{id:`mistralai/mistral-small-2603`,name:`Mistral: Mistral Small 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-small-3.2-24b-instruct":{id:`mistralai/mistral-small-3.2-24b-instruct`,name:`Mistral: Mistral Small 3.2 24B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"mistralai/mixtral-8x22b-instruct":{id:`mistralai/mixtral-8x22b-instruct`,name:`Mistral: Mixtral 8x22B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:65536,maxTokens:4096},"mistralai/pixtral-large-2411":{id:`mistralai/pixtral-large-2411`,name:`Mistral: Pixtral Large 2411`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/voxtral-small-24b-2507":{id:`mistralai/voxtral-small-24b-2507`,name:`Mistral: Voxtral Small 24B 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:32e3,maxTokens:4096},"moonshotai/kimi-k2":{id:`moonshotai/kimi-k2`,name:`MoonshotAI: Kimi K2 0711`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.5700000000000001,output:2.3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"moonshotai/kimi-k2-0905":{id:`moonshotai/kimi-k2-0905`,name:`MoonshotAI: Kimi K2 0905`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/kimi-k2-thinking":{id:`moonshotai/kimi-k2-thinking`,name:`MoonshotAI: Kimi K2 Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/kimi-k2.5":{id:`moonshotai/kimi-k2.5`,name:`MoonshotAI: Kimi K2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.41,output:2.06,cacheRead:.07,cacheWrite:0},contextWindow:262144,maxTokens:4096},"moonshotai/kimi-k2.6":{id:`moonshotai/kimi-k2.6`,name:`MoonshotAI: Kimi K2.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.73,output:3.49,cacheRead:.25,cacheWrite:0},contextWindow:262144,maxTokens:262142},"moonshotai/kimi-k2.6:free":{id:`moonshotai/kimi-k2.6:free`,name:`MoonshotAI: Kimi K2.6 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"nex-agi/deepseek-v3.1-nex-n1":{id:`nex-agi/deepseek-v3.1-nex-n1`,name:`Nex AGI: DeepSeek V3.1 Nex N1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.135,output:.5,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:163840},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{id:`nvidia/llama-3.3-nemotron-super-49b-v1.5`,name:`NVIDIA: Llama 3.3 Nemotron Super 49B V1.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"nvidia/nemotron-3-nano-30b-a3b":{id:`nvidia/nemotron-3-nano-30b-a3b`,name:`NVIDIA: Nemotron 3 Nano 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:228e3},"nvidia/nemotron-3-nano-30b-a3b:free":{id:`nvidia/nemotron-3-nano-30b-a3b:free`,name:`NVIDIA: Nemotron 3 Nano 30B A3B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{id:`nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free`,name:`NVIDIA: Nemotron 3 Nano Omni (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536},"nvidia/nemotron-3-super-120b-a12b":{id:`nvidia/nemotron-3-super-120b-a12b`,name:`NVIDIA: Nemotron 3 Super`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:4096},"nvidia/nemotron-3-super-120b-a12b:free":{id:`nvidia/nemotron-3-super-120b-a12b:free`,name:`NVIDIA: Nemotron 3 Super (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:262144},"nvidia/nemotron-nano-12b-v2-vl:free":{id:`nvidia/nemotron-nano-12b-v2-vl:free`,name:`NVIDIA: Nemotron Nano 12B 2 VL (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"nvidia/nemotron-nano-9b-v2":{id:`nvidia/nemotron-nano-9b-v2`,name:`NVIDIA: Nemotron Nano 9B V2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.04,output:.16,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"nvidia/nemotron-nano-9b-v2:free":{id:`nvidia/nemotron-nano-9b-v2:free`,name:`NVIDIA: Nemotron Nano 9B V2 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-3.5-turbo":{id:`openai/gpt-3.5-turbo`,name:`OpenAI: GPT-3.5 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:16385,maxTokens:4096},"openai/gpt-3.5-turbo-0613":{id:`openai/gpt-3.5-turbo-0613`,name:`OpenAI: GPT-3.5 Turbo (older v0613)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:2,cacheRead:0,cacheWrite:0},contextWindow:4095,maxTokens:4096},"openai/gpt-3.5-turbo-16k":{id:`openai/gpt-3.5-turbo-16k`,name:`OpenAI: GPT-3.5 Turbo 16k`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:3,output:4,cacheRead:0,cacheWrite:0},contextWindow:16385,maxTokens:4096},"openai/gpt-4":{id:`openai/gpt-4`,name:`OpenAI: GPT-4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8191,maxTokens:4096},"openai/gpt-4-0314":{id:`openai/gpt-4-0314`,name:`OpenAI: GPT-4 (older v0314)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8191,maxTokens:4096},"openai/gpt-4-1106-preview":{id:`openai/gpt-4-1106-preview`,name:`OpenAI: GPT-4 Turbo (older v1106)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4-turbo":{id:`openai/gpt-4-turbo`,name:`OpenAI: GPT-4 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4-turbo-preview":{id:`openai/gpt-4-turbo-preview`,name:`OpenAI: GPT-4 Turbo Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4.1":{id:`openai/gpt-4.1`,name:`OpenAI: GPT-4.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:4096},"openai/gpt-4.1-mini":{id:`openai/gpt-4.1-mini`,name:`OpenAI: GPT-4.1 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:1.5999999999999999,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-nano":{id:`openai/gpt-4.1-nano`,name:`OpenAI: GPT-4.1 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4o":{id:`openai/gpt-4o`,name:`OpenAI: GPT-4o`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-2024-05-13":{id:`openai/gpt-4o-2024-05-13`,name:`OpenAI: GPT-4o (2024-05-13)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4o-2024-08-06":{id:`openai/gpt-4o-2024-08-06`,name:`OpenAI: GPT-4o (2024-08-06)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-2024-11-20":{id:`openai/gpt-4o-2024-11-20`,name:`OpenAI: GPT-4o (2024-11-20)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-audio-preview":{id:`openai/gpt-4o-audio-preview`,name:`OpenAI: GPT-4o Audio`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini":{id:`openai/gpt-4o-mini`,name:`OpenAI: GPT-4o-mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini-2024-07-18":{id:`openai/gpt-4o-mini-2024-07-18`,name:`OpenAI: GPT-4o-mini (2024-07-18)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5":{id:`openai/gpt-5`,name:`OpenAI: GPT-5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-codex":{id:`openai/gpt-5-codex`,name:`OpenAI: GPT-5 Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-mini":{id:`openai/gpt-5-mini`,name:`OpenAI: GPT-5 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-nano":{id:`openai/gpt-5-nano`,name:`OpenAI: GPT-5 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:4e5,maxTokens:4096},"openai/gpt-5-pro":{id:`openai/gpt-5-pro`,name:`OpenAI: GPT-5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1":{id:`openai/gpt-5.1`,name:`OpenAI: GPT-5.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-chat":{id:`openai/gpt-5.1-chat`,name:`OpenAI: GPT-5.1 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"openai/gpt-5.1-codex":{id:`openai/gpt-5.1-codex`,name:`OpenAI: GPT-5.1-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-max":{id:`openai/gpt-5.1-codex-max`,name:`OpenAI: GPT-5.1-Codex-Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-mini":{id:`openai/gpt-5.1-codex-mini`,name:`OpenAI: GPT-5.1-Codex-Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:1e5},"openai/gpt-5.2":{id:`openai/gpt-5.2`,name:`OpenAI: GPT-5.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-chat":{id:`openai/gpt-5.2-chat`,name:`OpenAI: GPT-5.2 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.2-codex":{id:`openai/gpt-5.2-codex`,name:`OpenAI: GPT-5.2-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-pro":{id:`openai/gpt-5.2-pro`,name:`OpenAI: GPT-5.2 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.3-chat":{id:`openai/gpt-5.3-chat`,name:`OpenAI: GPT-5.3 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.3-codex":{id:`openai/gpt-5.3-codex`,name:`OpenAI: GPT-5.3-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4":{id:`openai/gpt-5.4`,name:`OpenAI: GPT-5.4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.4-mini":{id:`openai/gpt-5.4-mini`,name:`OpenAI: GPT-5.4 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-nano":{id:`openai/gpt-5.4-nano`,name:`OpenAI: GPT-5.4 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.19999999999999998,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-pro":{id:`openai/gpt-5.4-pro`,name:`OpenAI: GPT-5.4 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5":{id:`openai/gpt-5.5`,name:`OpenAI: GPT-5.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5-pro":{id:`openai/gpt-5.5-pro`,name:`OpenAI: GPT-5.5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,off:null,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-audio":{id:`openai/gpt-audio`,name:`OpenAI: GPT Audio`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-audio-mini":{id:`openai/gpt-audio-mini`,name:`OpenAI: GPT Audio Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:2.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-chat-latest":{id:`openai/gpt-chat-latest`,name:`OpenAI: GPT Chat Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`OpenAI: gpt-oss-120b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.039,output:.18,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"openai/gpt-oss-120b:free":{id:`openai/gpt-oss-120b:free`,name:`OpenAI: gpt-oss-120b (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`OpenAI: gpt-oss-20b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.03,output:.14,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-oss-20b:free":{id:`openai/gpt-oss-20b:free`,name:`OpenAI: gpt-oss-20b (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`OpenAI: gpt-oss-safeguard-20b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/o1":{id:`openai/o1`,name:`OpenAI: o1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3":{id:`openai/o3`,name:`OpenAI: o3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-deep-research":{id:`openai/o3-deep-research`,name:`OpenAI: o3 Deep Research`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini":{id:`openai/o3-mini`,name:`OpenAI: o3 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini-high":{id:`openai/o3-mini-high`,name:`OpenAI: o3 Mini High`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-pro":{id:`openai/o3-pro`,name:`OpenAI: o3 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini":{id:`openai/o4-mini`,name:`OpenAI: o4 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini-deep-research":{id:`openai/o4-mini-deep-research`,name:`OpenAI: o4 Mini Deep Research`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini-high":{id:`openai/o4-mini-high`,name:`OpenAI: o4 Mini High`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openrouter/auto":{id:`openrouter/auto`,name:`Auto Router`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0},contextWindow:2e6,maxTokens:4096},"openrouter/free":{id:`openrouter/free`,name:`Free Models Router`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:4096},"openrouter/owl-alpha":{id:`openrouter/owl-alpha`,name:`Owl Alpha`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048756,maxTokens:262144},"poolside/laguna-m.1:free":{id:`poolside/laguna-m.1:free`,name:`Poolside: Laguna M.1 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"poolside/laguna-xs.2:free":{id:`poolside/laguna-xs.2:free`,name:`Poolside: Laguna XS.2 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"prime-intellect/intellect-3":{id:`prime-intellect/intellect-3`,name:`Prime Intellect: INTELLECT-3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.19999999999999998,output:1.1,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"qwen/qwen-2.5-72b-instruct":{id:`qwen/qwen-2.5-72b-instruct`,name:`Qwen2.5 72B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.36,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen-2.5-7b-instruct":{id:`qwen/qwen-2.5-7b-instruct`,name:`Qwen: Qwen2.5 7B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.04,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen-plus":{id:`qwen/qwen-plus`,name:`Qwen: Qwen-Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.26,output:.78,cacheRead:.052000000000000005,cacheWrite:.325},contextWindow:1e6,maxTokens:32768},"qwen/qwen-plus-2025-07-28":{id:`qwen/qwen-plus-2025-07-28`,name:`Qwen: Qwen Plus 0728`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.26,output:.78,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:32768},"qwen/qwen-plus-2025-07-28:thinking":{id:`qwen/qwen-plus-2025-07-28:thinking`,name:`Qwen: Qwen Plus 0728 (thinking)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.26,output:.78,cacheRead:0,cacheWrite:.325},contextWindow:1e6,maxTokens:32768},"qwen/qwen3-14b":{id:`qwen/qwen3-14b`,name:`Qwen: Qwen3 14B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.24,cacheRead:0,cacheWrite:0},contextWindow:131702,maxTokens:40960},"qwen/qwen3-235b-a22b":{id:`qwen/qwen3-235b-a22b`,name:`Qwen: Qwen3 235B A22B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.45499999999999996,output:1.8199999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"qwen/qwen3-235b-a22b-2507":{id:`qwen/qwen3-235b-a22b-2507`,name:`Qwen: Qwen3 235B A22B Instruct 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.071,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-235b-a22b-thinking-2507":{id:`qwen/qwen3-235b-a22b-thinking-2507`,name:`Qwen: Qwen3 235B A22B Thinking 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.14950000000000002,output:1.495,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3-30b-a3b":{id:`qwen/qwen3-30b-a3b`,name:`Qwen: Qwen3 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:2e4},"qwen/qwen3-30b-a3b-instruct-2507":{id:`qwen/qwen3-30b-a3b-instruct-2507`,name:`Qwen: Qwen3 30B A3B Instruct 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3-30b-a3b-thinking-2507":{id:`qwen/qwen3-30b-a3b-thinking-2507`,name:`Qwen: Qwen3 30B A3B Thinking 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.08,output:.39999999999999997,cacheRead:.08,cacheWrite:0},contextWindow:131072,maxTokens:131072},"qwen/qwen3-32b":{id:`qwen/qwen3-32b`,name:`Qwen: Qwen3 32B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.08,output:.28,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen3-8b":{id:`qwen/qwen3-8b`,name:`Qwen: Qwen3 8B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:8192},"qwen/qwen3-coder":{id:`qwen/qwen3-coder`,name:`Qwen: Qwen3 Coder 480B A35B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.22,output:1.7999999999999998,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"qwen/qwen3-coder-30b-a3b-instruct":{id:`qwen/qwen3-coder-30b-a3b-instruct`,name:`Qwen: Qwen3 Coder 30B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.07,output:.27,cacheRead:0,cacheWrite:0},contextWindow:16e4,maxTokens:32768},"qwen/qwen3-coder-flash":{id:`qwen/qwen3-coder-flash`,name:`Qwen: Qwen3 Coder Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.195,output:.975,cacheRead:.039,cacheWrite:.24375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3-coder-next":{id:`qwen/qwen3-coder-next`,name:`Qwen: Qwen3 Coder Next`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.11,output:.7999999999999999,cacheRead:.07,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3-coder-plus":{id:`qwen/qwen3-coder-plus`,name:`Qwen: Qwen3 Coder Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.65,output:3.25,cacheRead:.13,cacheWrite:.8125},contextWindow:1e6,maxTokens:65536},"qwen/qwen3-coder:free":{id:`qwen/qwen3-coder:free`,name:`Qwen: Qwen3 Coder 480B A35B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:262e3},"qwen/qwen3-max":{id:`qwen/qwen3-max`,name:`Qwen: Qwen3 Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.78,output:3.9,cacheRead:.156,cacheWrite:.975},contextWindow:262144,maxTokens:32768},"qwen/qwen3-max-thinking":{id:`qwen/qwen3-max-thinking`,name:`Qwen: Qwen3 Max Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.78,output:3.9,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-next-80b-a3b-instruct":{id:`qwen/qwen3-next-80b-a3b-instruct`,name:`Qwen: Qwen3 Next 80B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09,output:1.1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-next-80b-a3b-instruct:free":{id:`qwen/qwen3-next-80b-a3b-instruct:free`,name:`Qwen: Qwen3 Next 80B A3B Instruct (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3-next-80b-a3b-thinking":{id:`qwen/qwen3-next-80b-a3b-thinking`,name:`Qwen: Qwen3 Next 80B A3B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.0975,output:.78,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-235b-a22b-instruct":{id:`qwen/qwen3-vl-235b-a22b-instruct`,name:`Qwen: Qwen3 VL 235B A22B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.88,cacheRead:.11,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-vl-235b-a22b-thinking":{id:`qwen/qwen3-vl-235b-a22b-thinking`,name:`Qwen: Qwen3 VL 235B A22B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:2.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen3-vl-30b-a3b-instruct":{id:`qwen/qwen3-vl-30b-a3b-instruct`,name:`Qwen: Qwen3 VL 30B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.13,output:.52,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-30b-a3b-thinking":{id:`qwen/qwen3-vl-30b-a3b-thinking`,name:`Qwen: Qwen3 VL 30B A3B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.13,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen3-vl-32b-instruct":{id:`qwen/qwen3-vl-32b-instruct`,name:`Qwen: Qwen3 VL 32B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.10400000000000001,output:.41600000000000004,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-8b-instruct":{id:`qwen/qwen3-vl-8b-instruct`,name:`Qwen: Qwen3 VL 8B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:32768},"qwen/qwen3-vl-8b-thinking":{id:`qwen/qwen3-vl-8b-thinking`,name:`Qwen: Qwen3 VL 8B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.117,output:1.365,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:32768},"qwen/qwen3.5-122b-a10b":{id:`qwen/qwen3.5-122b-a10b`,name:`Qwen: Qwen3.5-122B-A10B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:2.08,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3.5-27b":{id:`qwen/qwen3.5-27b`,name:`Qwen: Qwen3.5-27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"qwen/qwen3.5-35b-a3b":{id:`qwen/qwen3.5-35b-a3b`,name:`Qwen: Qwen3.5-35B-A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.13899999999999998,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3.5-397b-a17b":{id:`qwen/qwen3.5-397b-a17b`,name:`Qwen: Qwen3.5 397B A17B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.39,output:2.34,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"qwen/qwen3.5-9b":{id:`qwen/qwen3.5-9b`,name:`Qwen: Qwen3.5-9B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:81920},"qwen/qwen3.5-flash-02-23":{id:`qwen/qwen3.5-flash-02-23`,name:`Qwen: Qwen3.5-Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.065,output:.26,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.5-plus-02-15":{id:`qwen/qwen3.5-plus-02-15`,name:`Qwen: Qwen3.5 Plus 2026-02-15`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.5-plus-20260420":{id:`qwen/qwen3.5-plus-20260420`,name:`Qwen: Qwen3.5 Plus 2026-04-20`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:1.7999999999999998,cacheRead:0,cacheWrite:.375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.6-27b":{id:`qwen/qwen3.6-27b`,name:`Qwen: Qwen3.6 27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.29,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262140},"qwen/qwen3.6-35b-a3b":{id:`qwen/qwen3.6-35b-a3b`,name:`Qwen: Qwen3.6 35B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262140},"qwen/qwen3.6-flash":{id:`qwen/qwen3.6-flash`,name:`Qwen: Qwen3.6 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:1.125,cacheRead:0,cacheWrite:.234375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.6-max-preview":{id:`qwen/qwen3.6-max-preview`,name:`Qwen: Qwen3.6 Max Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.04,output:6.24,cacheRead:0,cacheWrite:1.3},contextWindow:262144,maxTokens:65536},"qwen/qwen3.6-plus":{id:`qwen/qwen3.6-plus`,name:`Qwen: Qwen3.6 Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.325,output:1.95,cacheRead:0,cacheWrite:.40625},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.7-max":{id:`qwen/qwen3.7-max`,name:`Qwen: Qwen3.7 Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.25,output:3.75,cacheRead:.25,cacheWrite:1.5625},contextWindow:1e6,maxTokens:65536},"rekaai/reka-edge":{id:`rekaai/reka-edge`,name:`Reka Edge`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:16384,maxTokens:16384},"relace/relace-search":{id:`relace/relace-search`,name:`Relace: Relace Search`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:128e3},"sao10k/l3-euryale-70b":{id:`sao10k/l3-euryale-70b`,name:`Sao10k: Llama 3 Euryale 70B v2.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1.48,output:1.48,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"sao10k/l3.1-euryale-70b":{id:`sao10k/l3.1-euryale-70b`,name:`Sao10K: Llama 3.1 Euryale 70B v2.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.85,output:.85,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"stepfun/step-3.5-flash":{id:`stepfun/step-3.5-flash`,name:`StepFun: Step 3.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.3,cacheRead:.02,cacheWrite:0},contextWindow:262144,maxTokens:16384},"tencent/hy3-preview":{id:`tencent/hy3-preview`,name:`Tencent: Hy3 preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.063,output:.21,cacheRead:.020999999999999998,cacheWrite:0},contextWindow:262144,maxTokens:4096},"thedrummer/rocinante-12b":{id:`thedrummer/rocinante-12b`,name:`TheDrummer: Rocinante 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.16999999999999998,output:.43,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"thedrummer/unslopnemo-12b":{id:`thedrummer/unslopnemo-12b`,name:`TheDrummer: UnslopNemo 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"upstage/solar-pro-3":{id:`upstage/solar-pro-3`,name:`Upstage: Solar Pro 3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"x-ai/grok-4.20":{id:`x-ai/grok-4.20`,name:`xAI: Grok 4.20`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:4096},"x-ai/grok-4.3":{id:`x-ai/grok-4.3`,name:`xAI: Grok 4.3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:4096},"x-ai/grok-build-0.1":{id:`x-ai/grok-build-0.1`,name:`xAI: Grok Build 0.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"xiaomi/mimo-v2-flash":{id:`xiaomi/mimo-v2-flash`,name:`Xiaomi: MiMo-V2-Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"xiaomi/mimo-v2-omni":{id:`xiaomi/mimo-v2-omni`,name:`Xiaomi: MiMo-V2-Omni`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:65536},"xiaomi/mimo-v2-pro":{id:`xiaomi/mimo-v2-pro`,name:`Xiaomi: MiMo-V2-Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"xiaomi/mimo-v2.5":{id:`xiaomi/mimo-v2.5`,name:`Xiaomi: MiMo-V2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"xiaomi/mimo-v2.5-pro":{id:`xiaomi/mimo-v2.5-pro`,name:`Xiaomi: MiMo-V2.5-Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"z-ai/glm-4-32b":{id:`z-ai/glm-4-32b`,name:`Z.ai: GLM 4 32B `,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"z-ai/glm-4.5":{id:`z-ai/glm-4.5`,name:`Z.ai: GLM 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:131072,maxTokens:98304},"z-ai/glm-4.5-air":{id:`z-ai/glm-4.5-air`,name:`Z.ai: GLM 4.5 Air`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.125,output:.85,cacheRead:.06,cacheWrite:0},contextWindow:131072,maxTokens:131070},"z-ai/glm-4.5-air:free":{id:`z-ai/glm-4.5-air:free`,name:`Z.ai: GLM 4.5 Air (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:96e3},"z-ai/glm-4.5v":{id:`z-ai/glm-4.5v`,name:`Z.ai: GLM 4.5V`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:1.7999999999999998,cacheRead:.11,cacheWrite:0},contextWindow:65536,maxTokens:16384},"z-ai/glm-4.6":{id:`z-ai/glm-4.6`,name:`Z.ai: GLM 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.43,output:1.74,cacheRead:.08,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-4.6v":{id:`z-ai/glm-4.6v`,name:`Z.ai: GLM 4.6V`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:.8999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:24e3},"z-ai/glm-4.7":{id:`z-ai/glm-4.7`,name:`Z.ai: GLM 4.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.39999999999999997,output:1.75,cacheRead:.08,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-4.7-flash":{id:`z-ai/glm-4.7-flash`,name:`Z.ai: GLM 4.7 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.06,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:202752,maxTokens:16384},"z-ai/glm-5":{id:`z-ai/glm-5`,name:`Z.ai: GLM 5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:1.9,cacheRead:.119,cacheWrite:0},contextWindow:202752,maxTokens:4096},"z-ai/glm-5-turbo":{id:`z-ai/glm-5-turbo`,name:`Z.ai: GLM 5 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-5.1":{id:`z-ai/glm-5.1`,name:`Z.ai: GLM 5.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.98,output:3.08,cacheRead:.182,cacheWrite:0},contextWindow:202752,maxTokens:4096},"z-ai/glm-5v-turbo":{id:`z-ai/glm-5v-turbo`,name:`Z.ai: GLM 5V Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202752,maxTokens:131072},"~anthropic/claude-haiku-latest":{id:`~anthropic/claude-haiku-latest`,name:`Anthropic Claude Haiku Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"~anthropic/claude-opus-latest":{id:`~anthropic/claude-opus-latest`,name:`Anthropic: Claude Opus Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"~anthropic/claude-sonnet-latest":{id:`~anthropic/claude-sonnet-latest`,name:`Anthropic Claude Sonnet Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"~google/gemini-flash-latest":{id:`~google/gemini-flash-latest`,name:`Google Gemini Flash Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"~google/gemini-pro-latest":{id:`~google/gemini-pro-latest`,name:`Google Gemini Pro Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"~moonshotai/kimi-latest":{id:`~moonshotai/kimi-latest`,name:`MoonshotAI Kimi Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.73,output:3.49,cacheRead:.25,cacheWrite:0},contextWindow:262144,maxTokens:262142},"~openai/gpt-latest":{id:`~openai/gpt-latest`,name:`OpenAI GPT Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"~openai/gpt-mini-latest":{id:`~openai/gpt-mini-latest`,name:`OpenAI GPT Mini Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3}},together:{"MiniMaxAI/MiniMax-M2.5":{id:`MiniMaxAI/MiniMax-M2.5`,name:`MiniMax-M2.5`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:null,medium:null},input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.7":{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:null,medium:null},input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:202752,maxTokens:131072},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507 FP8`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:2,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3-Coder-Next-FP8":{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3.5-397B-A17B":{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:13e4},"Qwen/Qwen3.6-Plus":{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.5,output:3,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:5e5},"Qwen/Qwen3.7-Max":{id:`Qwen/Qwen3.7-Max`,name:`Qwen3.7 Max`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:2.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:5e5},"deepseek-ai/DeepSeek-V3":{id:`deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:1.25,output:1.25,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"deepseek-ai/DeepSeek-V3-1":{id:`deepseek-ai/DeepSeek-V3-1`,name:`DeepSeek V3.1`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.6,output:1.7,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"deepseek-ai/DeepSeek-V4-Pro":{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!0,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:null},input:[`text`],cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:0},contextWindow:512e3,maxTokens:384e3},"essentialai/Rnj-1-Instruct":{id:`essentialai/Rnj-1-Instruct`,name:`Rnj-1 Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"google/gemma-4-31B-it":{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.2,output:.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:.88,output:.88,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"moonshotai/Kimi-K2.5":{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.5,output:2.8,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.6":{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:0},contextWindow:262144,maxTokens:131e3},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!0,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`openai`},reasoning:!0,thinkingLevelMap:{off:null,minimal:null},input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"zai-org/GLM-5.1":{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:131072}},"vercel-ai-gateway":{"alibaba/qwen-3-14b":{id:`alibaba/qwen-3-14b`,name:`Qwen3-14B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.12,output:.24,cacheRead:0,cacheWrite:0},contextWindow:40960,maxTokens:16384},"alibaba/qwen-3-235b":{id:`alibaba/qwen-3-235b`,name:`Qwen3 235B A22b Instruct 2507`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.6,output:1.2,cacheRead:.6,cacheWrite:0},contextWindow:131e3,maxTokens:4e4},"alibaba/qwen-3-30b":{id:`alibaba/qwen-3-30b`,name:`Qwen3-30B-A3B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.08,output:.29,cacheRead:0,cacheWrite:0},contextWindow:40960,maxTokens:16384},"alibaba/qwen-3-32b":{id:`alibaba/qwen-3-32b`,name:`Qwen 3 32B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.16,output:.64,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"alibaba/qwen-3.6-max-preview":{id:`alibaba/qwen-3.6-max-preview`,name:`Qwen 3.6 Max Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.3,output:7.8,cacheRead:.26,cacheWrite:1.625},contextWindow:24e4,maxTokens:64e3},"alibaba/qwen3-235b-a22b-thinking":{id:`alibaba/qwen3-235b-a22b-thinking`,name:`Qwen3 VL 235B A22B Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"alibaba/qwen3-coder":{id:`alibaba/qwen3-coder`,name:`Qwen3 Coder 480B A35B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.5,output:7.5,cacheRead:.3,cacheWrite:0},contextWindow:262144,maxTokens:65536},"alibaba/qwen3-coder-30b-a3b":{id:`alibaba/qwen3-coder-30b-a3b`,name:`Qwen 3 Coder 30B A3B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:8192},"alibaba/qwen3-coder-next":{id:`alibaba/qwen3-coder-next`,name:`Qwen3 Coder Next`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"alibaba/qwen3-coder-plus":{id:`alibaba/qwen3-coder-plus`,name:`Qwen3 Coder Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1,output:5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"alibaba/qwen3-max":{id:`alibaba/qwen3-max`,name:`Qwen3 Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:262144,maxTokens:32768},"alibaba/qwen3-max-preview":{id:`alibaba/qwen3-max-preview`,name:`Qwen3 Max Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:262144,maxTokens:32768},"alibaba/qwen3-max-thinking":{id:`alibaba/qwen3-max-thinking`,name:`Qwen 3 Max Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:256e3,maxTokens:65536},"alibaba/qwen3-vl-thinking":{id:`alibaba/qwen3-vl-thinking`,name:`Qwen3 VL 235B A22B Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"alibaba/qwen3.5-flash":{id:`alibaba/qwen3.5-flash`,name:`Qwen 3.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.001,cacheWrite:.125},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.5-plus":{id:`alibaba/qwen3.5-plus`,name:`Qwen 3.5 Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:2.4,cacheRead:.04,cacheWrite:.5},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.6-27b":{id:`alibaba/qwen3.6-27b`,name:`Qwen 3.6 27B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3.5999999999999996,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"alibaba/qwen3.6-plus":{id:`alibaba/qwen3.6-plus`,name:`Qwen 3.6 Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.09999999999999999,cacheWrite:.625},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.7-max":{id:`alibaba/qwen3.7-max`,name:`Qwen 3.7 Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:3.75,cacheRead:.25,cacheWrite:1.5625},contextWindow:991e3,maxTokens:64e3},"anthropic/claude-3-haiku":{id:`anthropic/claude-3-haiku`,name:`Claude 3 Haiku`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"anthropic/claude-3.5-haiku":{id:`anthropic/claude-3.5-haiku`,name:`Claude 3.5 Haiku`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"anthropic/claude-haiku-4.5":{id:`anthropic/claude-haiku-4.5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4":{id:`anthropic/claude-opus-4`,name:`Claude Opus 4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.1":{id:`anthropic/claude-opus-4.1`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.5":{id:`anthropic/claude-opus-4.5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4.6":{id:`anthropic/claude-opus-4.6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7":{id:`anthropic/claude-opus-4.7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8":{id:`anthropic/claude-opus-4.8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-sonnet-4":{id:`anthropic/claude-sonnet-4`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.5":{id:`anthropic/claude-sonnet-4.5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.6":{id:`anthropic/claude-sonnet-4.6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"arcee-ai/trinity-large-preview":{id:`arcee-ai/trinity-large-preview`,name:`Trinity Large Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:131e3},"arcee-ai/trinity-large-thinking":{id:`arcee-ai/trinity-large-thinking`,name:`Trinity Large Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:.8999999999999999,cacheRead:0,cacheWrite:0},contextWindow:262100,maxTokens:8e4},"bytedance/seed-1.6":{id:`bytedance/seed-1.6`,name:`Seed 1.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:2,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:256e3,maxTokens:32e3},"cohere/command-a":{id:`cohere/command-a`,name:`Command A`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8e3},"deepseek/deepseek-r1":{id:`deepseek/deepseek-r1`,name:`DeepSeek-R1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"deepseek/deepseek-v3":{id:`deepseek/deepseek-v3`,name:`DeepSeek V3 0324`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.77,output:.77,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16384},"deepseek/deepseek-v3.1":{id:`deepseek/deepseek-v3.1`,name:`DeepSeek-V3.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.56,output:1.68,cacheRead:.28,cacheWrite:0},contextWindow:163840,maxTokens:8192},"deepseek/deepseek-v3.1-terminus":{id:`deepseek/deepseek-v3.1-terminus`,name:`DeepSeek V3.1 Terminus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.27,output:1,cacheRead:.135,cacheWrite:0},contextWindow:131072,maxTokens:65536},"deepseek/deepseek-v3.2":{id:`deepseek/deepseek-v3.2`,name:`DeepSeek V3.2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.28,output:.42,cacheRead:.028,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"deepseek/deepseek-v3.2-thinking":{id:`deepseek/deepseek-v3.2-thinking`,name:`DeepSeek V3.2 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.62,output:1.85,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"deepseek/deepseek-v4-flash":{id:`deepseek/deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek/deepseek-v4-pro":{id:`deepseek/deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"google/gemini-2.0-flash":{id:`google/gemini-2.0-flash`,name:`Gemini 2.0 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.0-flash-lite":{id:`google/gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.02,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.5-flash":{id:`google/gemini-2.5-flash`,name:`Gemini 2.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"google/gemini-2.5-flash-lite":{id:`google/gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro":{id:`google/gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"google/gemini-3-flash":{id:`google/gemini-3-flash`,name:`Gemini 3 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3-pro-preview":{id:`google/gemini-3-pro-preview`,name:`Gemini 3 Pro Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemini-3.1-flash-lite":{id:`google/gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3.1-flash-lite-preview":{id:`google/gemini-3.1-flash-lite-preview`,name:`Gemini 3.1 Flash Lite Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3.1-pro-preview":{id:`google/gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemini-3.5-flash":{id:`google/gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemma-4-26b-a4b-it":{id:`google/gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.13,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"google/gemma-4-31b-it":{id:`google/gemma-4-31b-it`,name:`Gemma 4 31B IT`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.14,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"inception/mercury-2":{id:`inception/mercury-2`,name:`Mercury 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:.75,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"inception/mercury-coder-small":{id:`inception/mercury-coder-small`,name:`Mercury Coder Small Beta`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:16384},"kwaipilot/kat-coder-pro-v2":{id:`kwaipilot/kat-coder-pro-v2`,name:`Kat Coder Pro V2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"meituan/longcat-flash-chat":{id:`meituan/longcat-flash-chat`,name:`LongCat Flash Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:1e5},"meta/llama-3.1-70b":{id:`meta/llama-3.1-70b`,name:`Llama 3.1 70B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.1-8b":{id:`meta/llama-3.1-8b`,name:`Llama 3.1 8B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.22,output:.22,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.2-11b":{id:`meta/llama-3.2-11b`,name:`Llama 3.2 11B Vision Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.16,output:.16,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.2-90b":{id:`meta/llama-3.2-90b`,name:`Llama 3.2 90B Vision Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.3-70b":{id:`meta/llama-3.3-70b`,name:`Llama 3.3 70B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-4-maverick":{id:`meta/llama-4-maverick`,name:`Llama 4 Maverick 17B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.9700000000000001,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-4-scout":{id:`meta/llama-4-scout`,name:`Llama 4 Scout 17B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.16999999999999998,output:.66,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"minimax/minimax-m2":{id:`minimax/minimax-m2`,name:`MiniMax M2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:205e3,maxTokens:205e3},"minimax/minimax-m2.1":{id:`minimax/minimax-m2.1`,name:`MiniMax M2.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"minimax/minimax-m2.1-lightning":{id:`minimax/minimax-m2.1-lightning`,name:`MiniMax M2.1 Lightning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:2.4,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"minimax/minimax-m2.5":{id:`minimax/minimax-m2.5`,name:`MiniMax M2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.5-highspeed":{id:`minimax/minimax-m2.5-highspeed`,name:`MiniMax M2.5 High Speed`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.7":{id:`minimax/minimax-m2.7`,name:`MiniMax M2.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.7-highspeed":{id:`minimax/minimax-m2.7-highspeed`,name:`MiniMax M2.7 High Speed`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131100},"mistral/codestral":{id:`mistral/codestral`,name:`Mistral Codestral`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.3,output:.8999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/devstral-2":{id:`mistral/devstral-2`,name:`Devstral 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/devstral-small":{id:`mistral/devstral-small`,name:`Devstral Small 1.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"mistral/devstral-small-2":{id:`mistral/devstral-small-2`,name:`Devstral Small 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/ministral-3b":{id:`mistral/ministral-3b`,name:`Ministral 3B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/ministral-8b":{id:`mistral/ministral-8b`,name:`Ministral 8B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/mistral-medium":{id:`mistral/mistral-medium`,name:`Mistral Medium 3.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"mistral/mistral-medium-3.5":{id:`mistral/mistral-medium-3.5`,name:`Mistral Medium Latest`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/mistral-small":{id:`mistral/mistral-small`,name:`Mistral Small`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:4e3},"mistral/pixtral-12b":{id:`mistral/pixtral-12b`,name:`Pixtral 12B 2409`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/pixtral-large":{id:`mistral/pixtral-large`,name:`Pixtral Large`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"moonshotai/kimi-k2":{id:`moonshotai/kimi-k2`,name:`Kimi K2 Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.5700000000000001,output:2.3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"moonshotai/kimi-k2-thinking":{id:`moonshotai/kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2-thinking-turbo":{id:`moonshotai/kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2-turbo":{id:`moonshotai/kimi-k2-turbo`,name:`Kimi K2 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:256e3,maxTokens:16384},"moonshotai/kimi-k2.5":{id:`moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2.6":{id:`moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"nvidia/nemotron-nano-12b-v2-vl":{id:`nvidia/nemotron-nano-12b-v2-vl`,name:`Nvidia Nemotron Nano 12B V2 VL`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.19999999999999998,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"nvidia/nemotron-nano-9b-v2":{id:`nvidia/nemotron-nano-9b-v2`,name:`Nvidia Nemotron Nano 9B V2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.06,output:.22999999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-4-turbo":{id:`openai/gpt-4-turbo`,name:`GPT-4 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4.1":{id:`openai/gpt-4.1`,name:`GPT-4.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-mini":{id:`openai/gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:1.5999999999999999,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-nano":{id:`openai/gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4o":{id:`openai/gpt-4o`,name:`GPT-4o`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini":{id:`openai/gpt-4o-mini`,name:`GPT-4o mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5":{id:`openai/gpt-5`,name:`GPT-5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-chat":{id:`openai/gpt-5-chat`,name:`GPT 5 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5-codex":{id:`openai/gpt-5-codex`,name:`GPT-5-Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-mini":{id:`openai/gpt-5-mini`,name:`GPT-5 mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-nano":{id:`openai/gpt-5-nano`,name:`GPT-5 nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-pro":{id:`openai/gpt-5-pro`,name:`GPT-5 pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"openai/gpt-5.1-codex":{id:`openai/gpt-5.1-codex`,name:`GPT-5.1-Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-max":{id:`openai/gpt-5.1-codex-max`,name:`GPT 5.1 Codex Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-mini":{id:`openai/gpt-5.1-codex-mini`,name:`GPT 5.1 Codex Mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-instant":{id:`openai/gpt-5.1-instant`,name:`GPT-5.1 Instant`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.1-thinking":{id:`openai/gpt-5.1-thinking`,name:`GPT 5.1 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2":{id:`openai/gpt-5.2`,name:`GPT 5.2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-chat":{id:`openai/gpt-5.2-chat`,name:`GPT 5.2 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.2-codex":{id:`openai/gpt-5.2-codex`,name:`GPT 5.2 Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-pro":{id:`openai/gpt-5.2-pro`,name:`GPT 5.2 `,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.3-chat":{id:`openai/gpt-5.3-chat`,name:`GPT-5.3 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.3-codex":{id:`openai/gpt-5.3-codex`,name:`GPT 5.3 Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4":{id:`openai/gpt-5.4`,name:`GPT 5.4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.4-mini":{id:`openai/gpt-5.4-mini`,name:`GPT 5.4 Mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-nano":{id:`openai/gpt-5.4-nano`,name:`GPT 5.4 Nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.19999999999999998,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-pro":{id:`openai/gpt-5.4-pro`,name:`GPT 5.4 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5":{id:`openai/gpt-5.5`,name:`GPT 5.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"openai/gpt-5.5-pro":{id:`openai/gpt-5.5-pro`,name:`GPT 5.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,off:null,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`GPT OSS Safeguard 20B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/o1":{id:`openai/o1`,name:`o1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3":{id:`openai/o3`,name:`o3`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-deep-research":{id:`openai/o3-deep-research`,name:`o3-deep-research`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini":{id:`openai/o3-mini`,name:`o3-mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-pro":{id:`openai/o3-pro`,name:`o3 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini":{id:`openai/o4-mini`,name:`o4-mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"perplexity/sonar":{id:`perplexity/sonar`,name:`Sonar`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:127e3,maxTokens:8e3},"perplexity/sonar-pro":{id:`perplexity/sonar-pro`,name:`Sonar Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:8e3},"xai/grok-4.1-fast-non-reasoning":{id:`xai/grok-4.1-fast-non-reasoning`,name:`Grok 4.1 Fast Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-4.1-fast-reasoning":{id:`xai/grok-4.1-fast-reasoning`,name:`Grok 4.1 Fast Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.19999999999999998,output:.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-4.20-multi-agent":{id:`xai/grok-4.20-multi-agent`,name:`Grok 4.20 Multi-Agent`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-multi-agent-beta":{id:`xai/grok-4.20-multi-agent-beta`,name:`Grok 4.20 Multi Agent Beta`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-non-reasoning":{id:`xai/grok-4.20-non-reasoning`,name:`Grok 4.20 Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-non-reasoning-beta":{id:`xai/grok-4.20-non-reasoning-beta`,name:`Grok 4.20 Beta Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-reasoning":{id:`xai/grok-4.20-reasoning`,name:`Grok 4.20 Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-reasoning-beta":{id:`xai/grok-4.20-reasoning-beta`,name:`Grok 4.20 Beta Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.3":{id:`xai/grok-4.3`,name:`Grok 4.3`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-build-0.1":{id:`xai/grok-build-0.1`,name:`Grok Build 0.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"xiaomi/mimo-v2-flash":{id:`xiaomi/mimo-v2-flash`,name:`MiMo V2 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:32e3},"xiaomi/mimo-v2-pro":{id:`xiaomi/mimo-v2-pro`,name:`MiMo V2 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"xiaomi/mimo-v2.5":{id:`xiaomi/mimo-v2.5`,name:`MiMo M2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:105e4,maxTokens:131100},"xiaomi/mimo-v2.5-pro":{id:`xiaomi/mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:105e4,maxTokens:131e3},"zai/glm-4.5":{id:`zai/glm-4.5`,name:`GLM-4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:128e3,maxTokens:96e3},"zai/glm-4.5-air":{id:`zai/glm-4.5-air`,name:`GLM 4.5 Air`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.19999999999999998,output:1.1,cacheRead:.03,cacheWrite:0},contextWindow:128e3,maxTokens:96e3},"zai/glm-4.5v":{id:`zai/glm-4.5v`,name:`GLM 4.5V`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.6,output:1.7999999999999998,cacheRead:.11,cacheWrite:0},contextWindow:66e3,maxTokens:16e3},"zai/glm-4.6":{id:`zai/glm-4.6`,name:`GLM 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:2e5,maxTokens:96e3},"zai/glm-4.6v":{id:`zai/glm-4.6v`,name:`GLM-4.6V`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:.8999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:128e3,maxTokens:24e3},"zai/glm-4.6v-flash":{id:`zai/glm-4.6v-flash`,name:`GLM-4.6V-Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:24e3},"zai/glm-4.7":{id:`zai/glm-4.7`,name:`GLM 4.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:2.25,output:2.75,cacheRead:2.25,cacheWrite:0},contextWindow:131e3,maxTokens:4e4},"zai/glm-4.7-flash":{id:`zai/glm-4.7-flash`,name:`GLM 4.7 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.07,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131e3},"zai/glm-4.7-flashx":{id:`zai/glm-4.7-flashx`,name:`GLM 4.7 FlashX`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.06,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"zai/glm-5":{id:`zai/glm-5`,name:`GLM 5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1,output:3.1999999999999997,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:202800,maxTokens:131100},"zai/glm-5-turbo":{id:`zai/glm-5-turbo`,name:`GLM 5 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202800,maxTokens:131100},"zai/glm-5.1":{id:`zai/glm-5.1`,name:`GLM 5.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202800,maxTokens:64e3},"zai/glm-5v-turbo":{id:`zai/glm-5v-turbo`,name:`GLM 5V Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:2e5,maxTokens:128e3}},xai:{"grok-3":{id:`grok-3`,name:`Grok 3`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:3,output:15,cacheRead:.75,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-3-fast":{id:`grok-3-fast`,name:`Grok 3 Fast`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:5,output:25,cacheRead:1.25,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-4.20-0309-non-reasoning":{id:`grok-4.20-0309-non-reasoning`,name:`Grok 4.20 (Non-Reasoning)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"grok-4.20-0309-reasoning":{id:`grok-4.20-0309-reasoning`,name:`Grok 4.20 (Reasoning)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"grok-4.3":{id:`grok-4.3`,name:`Grok 4.3`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:1e6,maxTokens:3e4},"grok-build-0.1":{id:`grok-build-0.1`,name:`Grok Build 0.1`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.2,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"grok-code-fast-1":{id:`grok-code-fast-1`,name:`Grok Code Fast 1`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.2,output:1.5,cacheRead:.02,cacheWrite:0},contextWindow:32768,maxTokens:8192}},xiaomi:{"mimo-v2-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:.1,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-ams":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-cn":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-sgp":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},zai:{"glm-4.5-air":{id:`glm-4.5-air`,name:`GLM-4.5-Air`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:98304},"glm-4.7":{id:`glm-4.7`,name:`GLM-4.7`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"glm-5-turbo":{id:`glm-5-turbo`,name:`GLM-5-Turbo`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"glm-5v-turbo":{id:`glm-5v-turbo`,name:`GLM-5V-Turbo`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072}}},Bc=new Map;for(let[e,t]of Object.entries(eie)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Bc.set(e,n)}function Vc(e,t){return Bc.get(e)?.get(t)}function Hc(){return Array.from(Bc.keys())}function Uc(e){let t=Bc.get(e);return t?Array.from(t.values()):[]}function Wc(e,t){return t.cost.input=e.cost.input/1e6*t.input,t.cost.output=e.cost.output/1e6*t.output,t.cost.cacheRead=e.cost.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=e.cost.cacheWrite/1e6*t.cacheWrite,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var Gc=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function Kc(e){return e.reasoning?Gc.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`?n!==void 0:!0}):[`off`]}function tie(e,t){let n=Kc(e);if(n.includes(t))return t;let r=Gc.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<Gc.length;e++){let t=Gc[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=Gc[e];if(n.includes(t))return t}return n[0]??`off`}var nie=class{queue=[];waiting=[];done=!1;finalResultPromise;resolveFinalResult;isComplete;extractResult;constructor(e,t){this.isComplete=e,this.extractResult=t,this.finalResultPromise=new Promise(e=>{this.resolveFinalResult=e})}push(e){if(this.done)return;this.isComplete(e)&&(this.done=!0,this.resolveFinalResult(this.extractResult(e)));let t=this.waiting.shift();t?t({value:e,done:!1}):this.queue.push(e)}end(e){for(this.done=!0,e!==void 0&&this.resolveFinalResult(e);this.waiting.length>0;)this.waiting.shift()({value:void 0,done:!0})}async*[Symbol.asyncIterator](){for(;;)if(this.queue.length>0)yield this.queue.shift();else if(this.done)return;else{let e=await new Promise(e=>this.waiting.push(e));if(e.done)return;yield e.value}}result(){return this.finalResultPromise}},qc=class extends nie{constructor(){super(e=>e.type===`done`||e.type===`error`,e=>{if(e.type===`done`)return e.message;if(e.type===`error`)return e.error;throw Error(`Unexpected event type for final result`)})}};function Jc(){return new qc}var rie=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},iie=e=>{let t=import.meta.url.endsWith(`.js`)?e.replace(/\.ts$/,`.js`):e;return I(()=>import(rie(t)),[])},Yc,Xc,Zc,Qc,$c,el,tl,nl,rl,il;function al(e,t){(async()=>{for await(let n of t)e.push(n);e.end()})()}function ol(e,t){return{role:`assistant`,content:[],api:e.api,provider:e.provider,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 sl(e){return(t,n,r)=>{let i=new qc;return e().then(e=>{al(i,e.stream(t,n,r))}).catch(e=>{let n=ol(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function cl(e){return(t,n,r)=>{let i=new qc;return e().then(e=>{al(i,e.streamSimple(t,n,r))}).catch(e=>{let n=ol(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function ll(){return Yc||=I(()=>import(`./anthropic-oHjoP5Qp.js`).then(e=>{let t=e;return{stream:t.streamAnthropic,streamSimple:t.streamSimpleAnthropic}}),__vite__mapDeps([4,5,1,2])),Yc}function ul(){return Xc||=I(()=>import(`./azure-openai-responses-D_Emnwqm.js`).then(e=>{let t=e;return{stream:t.streamAzureOpenAIResponses,streamSimple:t.streamSimpleAzureOpenAIResponses}}),__vite__mapDeps([6,7,8,9,2,1,3])),Xc}function dl(){return Zc||=I(()=>import(`./google-DhgTyv3k.js`).then(e=>{let t=e;return{stream:t.streamGoogle,streamSimple:t.streamSimpleGoogle}}),__vite__mapDeps([10,11,2])),Zc}function fl(){return Qc||=I(()=>import(`./google-vertex-DrVy9tT-.js`).then(e=>{let t=e;return{stream:t.streamGoogleVertex,streamSimple:t.streamSimpleGoogleVertex}}),__vite__mapDeps([12,11,2])),Qc}function pl(){return $c||=I(()=>import(`./mistral-anetp8MW.js`).then(e=>{let t=e;return{stream:t.streamMistral,streamSimple:t.streamSimpleMistral}}),__vite__mapDeps([13,9,2])),$c}function ml(){return el||=I(()=>import(`./openai-codex-responses-Ck2q17sa.js`).then(e=>{let t=e;return{stream:t.streamOpenAICodexResponses,streamSimple:t.streamSimpleOpenAICodexResponses}}),__vite__mapDeps([14,7,8,9,2,1])),el}function hl(){return tl||=I(()=>import(`./openai-completions-wICCJVuW.js`).then(e=>{let t=e;return{stream:t.streamOpenAICompletions,streamSimple:t.streamSimpleOpenAICompletions}}),__vite__mapDeps([15,5,7,1,2,3])),tl}function gl(){return nl||=I(()=>import(`./openai-responses-DxgM2J96.js`).then(e=>{let t=e;return{stream:t.streamOpenAIResponses,streamSimple:t.streamSimpleOpenAIResponses}}),__vite__mapDeps([16,5,7,8,9,2,1,3])),nl}function _l(){return rl?Promise.resolve(rl):(il||=iie(`./amazon-bedrock.ts`).then(e=>{let t=e;return{stream:t.streamBedrock,streamSimple:t.streamSimpleBedrock}}),il)}var vl=sl(ll),yl=cl(ll),aie=sl(ul),oie=cl(ul),sie=sl(dl),cie=cl(dl),lie=sl(fl),uie=cl(fl),die=sl(pl),fie=cl(pl),bl=sl(ml),xl=cl(ml),Sl=sl(hl),Cl=cl(hl),wl=sl(gl),Tl=cl(gl),pie=sl(_l),mie=cl(_l);function hie(){Ac({api:`anthropic-messages`,stream:vl,streamSimple:yl}),Ac({api:`openai-completions`,stream:Sl,streamSimple:Cl}),Ac({api:`mistral-conversations`,stream:die,streamSimple:fie}),Ac({api:`openai-responses`,stream:wl,streamSimple:Tl}),Ac({api:`azure-openai-responses`,stream:aie,streamSimple:oie}),Ac({api:`openai-codex-responses`,stream:bl,streamSimple:xl}),Ac({api:`google-generative-ai`,stream:sie,streamSimple:cie}),Ac({api:`google-vertex`,stream:lie,streamSimple:uie}),Ac({api:`bedrock-converse-stream`,stream:pie,streamSimple:mie})}hie();var El=new Set;function gie(e){return El.add(e),()=>{El.delete(e)}}function _ie(e){let t=Ire(e);if(!t)throw Error(`No API provider registered for api: ${e}`);return t}function vie(e,t,n){return _ie(e.api).streamSimple(e,t,n)}async function Dl(e,t,n){return vie(e,t,n).result()}function Ol(e){return e instanceof Error?e.message||e.name:typeof e==`string`?e:String(e)}function yie(e){if(!(e instanceof Error))return{name:`ThrownValue`,message:Ol(e)};let t=e.code;return{name:e.name||void 0,message:e.message||e.name,stack:e.stack,code:typeof t==`string`||typeof t==`number`?t:void 0}}function bie(e,t,n){return{type:e,timestamp:Date.now(),error:yie(t),details:n}}function xie(e,t){e.diagnostics=[...e.diagnostics??[],t]}var kl=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.ALL=e.COLLECTION=e.ATOM=e.SPECIAL=e.INF=e._INFINITY=e.INFINITY=e.NAN=e.BOOL=e.NULL=e.OBJ=e.ARR=e.NUM=e.STR=void 0,e.STR=1,e.NUM=2,e.ARR=4,e.OBJ=8,e.NULL=16,e.BOOL=32,e.NAN=64,e.INFINITY=128,e._INFINITY=256,e.INF=e.INFINITY|e._INFINITY,e.SPECIAL=e.NULL|e.BOOL|e.INF|e.NAN,e.ATOM=e.STR|e.NUM|e.SPECIAL,e.COLLECTION=e.ARR|e.OBJ,e.ALL=e.ATOM|e.COLLECTION,e.Allow={STR:e.STR,NUM:e.NUM,ARR:e.ARR,OBJ:e.OBJ,NULL:e.NULL,BOOL:e.BOOL,NAN:e.NAN,INFINITY:e.INFINITY,_INFINITY:e._INFINITY,INF:e.INF,SPECIAL:e.SPECIAL,ATOM:e.ATOM,COLLECTION:e.COLLECTION,ALL:e.ALL},e.default=e.Allow})),Al=o((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.MalformedJSON=e.PartialJSON=e.parseJSON=e.parse=void 0;var r=kl();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(kl(),e);var i=class extends Error{};e.PartialJSON=i;var a=class extends Error{};e.MalformedJSON=a;function o(e,t=r.Allow.ALL){if(typeof e!=`string`)throw TypeError(`expecting str, got ${typeof e}`);if(!e.trim())throw Error(`${e} is empty`);return s(e.trim(),t)}e.parseJSON=o;var s=(e,t)=>{let n=e.length,o=0,s=e=>{throw new i(`${e} at position ${o}`)},c=e=>{throw new a(`${e} at position ${o}`)},l=()=>(m(),o>=n&&s(`Unexpected end of input`),e[o]===`"`?u():e[o]===`{`?d():e[o]===`[`?f():e.substring(o,o+4)===`null`||r.Allow.NULL&t&&n-o<4&&`null`.startsWith(e.substring(o))?(o+=4,null):e.substring(o,o+4)===`true`||r.Allow.BOOL&t&&n-o<4&&`true`.startsWith(e.substring(o))?(o+=4,!0):e.substring(o,o+5)===`false`||r.Allow.BOOL&t&&n-o<5&&`false`.startsWith(e.substring(o))?(o+=5,!1):e.substring(o,o+8)===`Infinity`||r.Allow.INFINITY&t&&n-o<8&&`Infinity`.startsWith(e.substring(o))?(o+=8,1/0):e.substring(o,o+9)===`-Infinity`||r.Allow._INFINITY&t&&1<n-o&&n-o<9&&`-Infinity`.startsWith(e.substring(o))?(o+=9,-1/0):e.substring(o,o+3)===`NaN`||r.Allow.NAN&t&&n-o<3&&`NaN`.startsWith(e.substring(o))?(o+=3,NaN):p()),u=()=>{let i=o,a=!1;for(o++;o<n&&(e[o]!==`"`||a&&e[o-1]===`\\`);)a=e[o]===`\\`?!a:!1,o++;if(e.charAt(o)==`"`)try{return JSON.parse(e.substring(i,++o-Number(a)))}catch(e){c(String(e))}else if(r.Allow.STR&t)try{return JSON.parse(e.substring(i,o-Number(a))+`"`)}catch{return JSON.parse(e.substring(i,e.lastIndexOf(`\\`))+`"`)}s(`Unterminated string literal`)},d=()=>{o++,m();let i={};try{for(;e[o]!==`}`;){if(m(),o>=n&&r.Allow.OBJ&t)return i;let a=u();m(),o++;try{i[a]=l()}catch(e){if(r.Allow.OBJ&t)return i;throw e}m(),e[o]===`,`&&o++}}catch{if(r.Allow.OBJ&t)return i;s(`Expected '}' at end of object`)}return o++,i},f=()=>{o++;let n=[];try{for(;e[o]!==`]`;)n.push(l()),m(),e[o]===`,`&&o++}catch{if(r.Allow.ARR&t)return n;s(`Expected ']' at end of array`)}return o++,n},p=()=>{if(o===0){e===`-`&&c(`Not sure what '-' is`);try{return JSON.parse(e)}catch(n){if(r.Allow.NUM&t)try{return JSON.parse(e.substring(0,e.lastIndexOf(`e`)))}catch{}c(String(n))}}let i=o;for(e[o]===`-`&&o++;e[o]&&`,]}`.indexOf(e[o])===-1;)o++;o==n&&!(r.Allow.NUM&t)&&s(`Unterminated number literal`);try{return JSON.parse(e.substring(i,o))}catch{e.substring(i,o)===`-`&&s(`Not sure what '-' is`);try{return JSON.parse(e.substring(i,e.lastIndexOf(`e`)))}catch(e){c(String(e))}}},m=()=>{for(;o<n&&`
|
|
4
|
+
`)?hi(e,pi(t)):e.startsWith(` `)?hi(e,t):hi(e,mi(t))}[...Jee,...ci],[...ci];function Zee(e){return A(e,``)?[]:[e.slice(0,1),e.slice(1)]}function _i(e,t){return M(e,(e,n)=>t.startsWith(e)?!0:_i(n,t),()=>!1)}function vi(e,t,n=``){return oi(Zee(t),(r,i)=>_i(e,t)?[n,t]:vi(e,i,`${n}${r}`),()=>[])}function Qee(e,t){return oi(vi(e,t),(e,t)=>A(e,``)?[]:[e,t],()=>[])}var yi=(e,t,n=()=>[])=>e.length===2?t(e):n(),$ee=e=>yi(gi(`-?(?:0|[1-9][0-9]*)n`,e),([e,t])=>[qr(e),t]),ete=e=>yi(gi(`.*`,e),([e,t])=>[Jr(e),t]),tte=e=>yi(gi(`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,e),([e,t])=>[Yr(e),t]),nte=e=>yi(gi(`-?(?:0|[1-9][0-9]*)`,e),([e,t])=>[Xr(e),t]),rte=e=>yi(gi(`(?!)`,e),([e,t])=>[Zr(e),t]),ite=e=>yi(Qee([`-?(?:0|[1-9][0-9]*)n`,`.*`,`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,`-?(?:0|[1-9][0-9]*)`,`(?!)`,`(`,`)`,`$`,`|`],e),([e,t])=>[Qr(e),t]),ate=e=>yi(yi($ee(e),([e,t])=>[e,t],()=>yi(ete(e),([e,t])=>[e,t],()=>yi(tte(e),([e,t])=>[e,t],()=>yi(nte(e),([e,t])=>[e,t],()=>yi(rte(e),([e,t])=>[e,t],()=>yi(ote(e),([e,t])=>[e,t],()=>yi(ite(e),([e,t])=>[e,t],()=>[]))))))),([e,t])=>[$r(e),t]),ote=e=>yi(yi(gi(`(`,e),([e,t])=>yi(Si(t),([t,n])=>yi(gi(`)`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ei(e),t]),bi=e=>yi(yi(yi(xi(e),([e,t])=>yi(gi(`|`,t),([t,n])=>yi(bi(n),([n,r])=>[[e,t,n],r]))),([e,t])=>[e,t],()=>yi(yi(xi(e),([e,t])=>[[e],t]),([e,t])=>[e,t],()=>yi([[],e],([e,t])=>[e,t],()=>[]))),([e,t])=>[ti(e),t]),xi=e=>yi(yi(ate(e),([e,t])=>yi(Si(t),([t,n])=>[[e,t],n])),([e,t])=>[ni(e),t]),Si=e=>yi(yi(bi(e),([e,t])=>[e,t],()=>yi(xi(e),([e,t])=>[e,t],()=>[])),([e,t])=>[ri(e),t]),ste=e=>yi(yi(gi(`^`,e),([e,t])=>yi(Si(t),([t,n])=>yi(gi(`$`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ii(e),t]);function cte(e){return e.join(`|`)}function lte(e){return e.slice(1,e.length-1)}function ute(e,t,n){return Ti(t,`${n}${e}`)}function dte(e,t){return Ti(e,`${t}${yee}`)}function fte(e,t){return Ti(e,`${t}${Sn}`)}function pte(e,t){return Ti(e,`${t}${In}`)}function mte(e,t){return wi(Vt([Dn(`false`),Dn(`true`)]),e,t)}function hte(e,t){return Ti(e,`${t}.*`)}function gte(e,t,n){return Ti(t,`${n}${lte(e)}`)}function _te(e,t,n){return wi(Ei(e,{}),t,n)}function vte(e,t,n){return Ci(tr(e),t,n)}function Ci(e,t,n,r=[]){return M(e,(e,i)=>Ci(i,t,n,[...r,wi(e,[],``)]),()=>Ti(t,`${n}(${cte(r)})`))}function wi(e,t,n){return Xt(e)?vte(e.enum,t,n):wn(e)?fte(t,n):Nn(e)?ute(e.const,t,n):bn(e)?dte(t,n):xn(e)?mte(t,n):Rn(e)?pte(t,n):Hn(e)?hte(t,n):Di(e)?gte(e.pattern,t,n):Cte(e)?_te(e.parameters[0],t,n):Ht(e)?Ci(e.anyOf,t,n):iee}function Ti(e,t){return M(e,(e,n)=>wi(e,n,t),()=>t)}function yte(e){return`^${Ti(e,``)}$`}function bte(e){return qn(yte(e))}function Ei(e,t){return xc(e)?Xe(bte(e),{},t):Ste(e,t)}function xte(e,t,n,r){return Ei(Tc(e,t,n),r)}function Ste(e,t={}){return rt(`TemplateLiteral`,[e],t)}function Cte(e){return Qe(e)&&N(e,`action`)&&A(e.action,`TemplateLiteral`)}function Di(e){return Ze(e,`TemplateLiteral`)}function wte(e){return Je({"~kind":`ExtendsUnion`},{inferred:e})}function Oi(e){return D(e)&&N(e,`~kind`)&&N(e,`inferred`)&&A(e[`~kind`],`ExtendsUnion`)&&D(e.inferred)}function ki(e){return Je({"~kind":`ExtendsTrue`},{inferred:e})}function Ai(e){return D(e)&&N(e,`~kind`)&&N(e,`inferred`)&&A(e[`~kind`],`ExtendsTrue`)&&D(e.inferred)}function ji(){return Je({"~kind":`ExtendsFalse`},{})}function Mi(e){return D(e)&&N(e,`~kind`)&&A(e[`~kind`],`ExtendsFalse`)}function Ni(e){return Oi(e)||Ai(e)}function Pi(e,t,n){return Ni(e)?t(e.inferred):n()}function Tte(e,t,n,r){return Pi(Qi(e,n,r),r=>ki(f(f(e,r),{[t]:n})),()=>ji())}function Ete(e,t){return ki(e)}function Dte(e,t,n){return Qi(e,t,nr(n))}function Fi(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>Fi(e,t,r),()=>ji()),()=>ki(e))}function Ote(e,t,n){return Qi(e,t,$n(n))}function Ii(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>ki(e),()=>Ii(e,t,r)),()=>ji())}function Li(e,t,n){return Nt(n)?Ete(e,t):Xt(n)?Dte(e,t,n.enum):Yt(n)?Tte(e,n.name,t,n.extends):Qt(n)?Fi(e,t,n.allOf):Di(n)?Ote(e,t,n.pattern):Ht(n)?Ii(e,t,n.anyOf):Wt(n)?ki(e):ji()}function kte(e,t,n){return Yt(n)?Li(e,t,n):Nt(n)||Wt(n)?ki(e):wte(e)}function Ate(e,t){let n=ut(e),r=ut(t);return n&&r||!n&&r?!0:!(n&&!r)}function jte(e,t,n,r){return bt(r)?Ate(t,r)?Qi(e,n,r.items):ji():Li(e,t,r)}function Mte(e,t,n){return Ct(n)?Qi(e,t,n.iteratorItems):Li(e,St(t),n)}function Nte(e,t,n){return bn(n)?ki(e):Li(e,t,n)}function Pte(e,t,n){return xn(n)?ki(e):Li(e,t,n)}function Fte(e,t,n,r,i){let a=Yt(r)?t:r,o=Yt(r)?r:t,s=mt(t),c=mt(r);return!s&&c?ji():Pi(Qi(e,a,o),e=>Ri(e,n,i),()=>ji())}function Ite(e,t,n,r){return M(r,(r,i)=>Fte(e,t,n,r,i),()=>mt(t)?ki(e):ji())}function Lte(e,t,n){return M(t,(t,r)=>Ite(e,t,r,n),()=>ki(e))}function Ri(e,t,n){return Lte(e,t,n)}function zi(e,t,n){return Kr(n)?ki(e):Qi(e,t,n)}function Rte(e,t,n,r){return Nt(r)||Wt(r)?ki(e):Tt(r)?Pi(Ri(e,t,r.parameters),e=>zi(e,n,r.instanceType),()=>ji()):ji()}function zte(e,t,n){return Qi(e,rr(t),n)}function Bte(e,t,n,r){return Nt(r)||Wt(r)?ki(e):Ot(r)?Pi(Ri(e,t,r.parameters),e=>zi(e,n,r.returnType),()=>ji()):ji()}function Vte(e,t,n){return wn(n)||Rn(n)?ki(e):Li(e,t,n)}function Hte(e,t,n){return Qi(e,fr(t),n)}function Ute(e,t,n){return En(n)?Qi(e,t,n.iteratorItems):Li(e,Tn(t),n)}function Bi(e,t,n){return t===n?ki(e):ji()}function Wte(e,t,n){return Nn(n)?Bi(e,t,n.const):bn(n)?ki(e):Li(e,Dn(t),n)}function Gte(e,t,n){return Nn(n)?Bi(e,t,n.const):xn(n)?ki(e):Li(e,Dn(t),n)}function Kte(e,t,n){return Nn(n)?Bi(e,t,n.const):Rn(n)?ki(e):Li(e,Dn(t),n)}function qte(e,t,n){return Nn(n)?Bi(e,t,n.const):Hn(n)?ki(e):Li(e,Dn(t),n)}function Jte(e,t,n){return S(t.const)?Wte(e,t.const,n):C(t.const)?Gte(e,t.const,n):T(t.const)?Kte(e,t.const,n):O(t.const)?qte(e,t.const,n):$t()}function Yte(e,t,n){return Yt(n)?Li(e,t,n):ki(e)}function Xte(e,t,n){return Fn(n)?ki(e):Li(e,t,n)}function Zte(e,t,n){return Rn(n)?ki(e):Li(e,t,n)}function Qte(e,t,n){return mt(t)?mt(n)?ki(e):ji():ki(e)}function $te(e,t,n){return Yt(n)&&Ft(n.extends)?ji():Pi(Qi(e,t,n),e=>Qte(e,t,n),()=>ji())}function ene(e,t){return e.reduce((e,n)=>n in t&&Ni(t[n])?{...e,...t[n].inferred}:$t(),{})}function tne(e,t,n){let r={};for(let i of P(n))r[i]=i in t?$te({},t[i],n[i]):mt(n[i])?Yt(n[i])?ki(f(e,{[n[i].name]:n[i].extends})):ki(e):ji();let i=we(r).every(e=>Ni(e)),a=i?ene(P(r),r):{};return i?ki(a):ji()}function nne(e,t,n){let r=tne(e,t,n);return Ni(r)?ki(f(e,r.inferred)):ji()}function rne(e,t,n){return nne(e,t,n)}function ine(e,t,n){return Bt(n)?rne(e,t,n.properties):Li(e,zt(t),n)}function ane(e,t,n){return ot(n)?Qi(e,t,n.item):Li(e,at(t),n)}function one(e,t,n){return Hn(n)?ki(e):Li(e,t,n)}function sne(e,t,n){return Bn(n)?ki(e):Li(e,t,n)}function cne(e,t,n){return Qi(e,$n(t),n)}function Vi(e,t){return Je({"~kind":`Inferrable`},{name:e,type:t},{})}function Hi(e){return D(e)&&N(e,`~kind`)&&N(e,`name`)&&N(e,`type`)&&A(e[`~kind`],`Inferrable`)&&O(e.name)&&D(e.type)}function Ui(e){return Hr(e)?Yt(e.items)?bt(e.items.extends)?Vi(e.items.name,e.items.extends.items):Wt(e.items.extends)?Vi(e.items.name,e.items.extends):void 0:$t():void 0}function Wi(e){return Yt(e)?Vi(e.name,e.extends):void 0}function Gi(e,t,n=[]){return M(e,(e,r)=>Pi(Qi({},e,t),()=>Gi(r,t,[...n,e]),()=>void 0),()=>n)}function lne(e,t,n,r){let i=Gi(n,r);return x(i)?ki(f(e,{[t]:ir(i)})):ji()}function Ki(e,t,n,r){let i=Gi(n,r);return x(i)?ki(f(e,{[t]:Vt(i)})):ji()}function une(e){return[...e].reverse()}function qi(e,t){return t?une(e):e}function dne(e){let t=e.length>0?e[0]:void 0;return Qe(Qe(t)?Ui(t):void 0)}function fne(e,t,n,r,i,a){return Pi(Qi(e,n,i),e=>Ji(e,t,r,a),()=>ji())}function pne(e,t,n,r,i){let a=Ui(r);return Hi(a)?lne(e,a.name,qi(n,t),a.type):M(n,(n,a)=>fne(e,t,n,a,r,i),()=>ji())}function mne(e,t,n,r){return M(r,(r,i)=>pne(e,t,n,r,i),()=>A(n.length,0)?ki(e):ji())}function Ji(e,t,n,r){return mne(e,t,n,r)}function hne(e,t,n){let r=wc(e,{callstack:[]},n),i=dne(r);return Ji(e,i,qi(t,i),qi(r,i))}function Yi(e,t,n){let r=Wi(n);return Hi(r)?Ki(e,r.name,t,r.type):M(t,(t,r)=>Pi(Qi(e,t,n),e=>Yi(e,r,n),()=>ji()),()=>ki(e))}function gne(e,t,n){let r=wc(e,{callstack:[]},t);return ar(n)?hne(e,r,n.items):bt(n)?Yi(e,r,n.items):Li(e,ir(r),n)}function _ne(e,t,n){return Kr(n)||Gr(n)?ki(e):Li(e,t,n)}function Xi(e,t,n){return M(n,(n,r)=>Pi(Qi(e,t,n),e=>ki(e),()=>Xi(e,t,r)),()=>ji())}function Zi(e,t,n){return M(t,(t,r)=>Pi(Xi(e,t,n),e=>Zi(e,r,n),()=>ji()),()=>ki(e))}function vne(e,t,n){let r=Wi(n);return Hi(r)?Ki(e,r.name,t,r.type):Ht(n)?Zi(e,t,n.anyOf):Zi(e,t,[n])}function yne(e,t,n){return Yt(n)?Li(e,t,n):Nt(n)||Wt(n)?ki(e):ji()}function bne(e,t,n){return Kr(n)?ki(e):Li(e,t,n)}function Qi(e,t,n){return Nt(t)?kte(e,t,n):bt(t)?jte(e,t,t.items,n):Ct(t)?Mte(e,t.iteratorItems,n):bn(t)?Nte(e,t,n):xn(t)?Pte(e,t,n):Tt(t)?Rte(e,t.parameters,t.instanceType,n):Xt(t)?zte(e,t,n):Ot(t)?Bte(e,t.parameters,t.returnType,n):wn(t)?Vte(e,t,n):Qt(t)?Hte(e,t.allOf,n):En(t)?Ute(e,t.iteratorItems,n):Nn(t)?Jte(e,t,n):Ft(t)?Yte(e,t,n):Fn(t)?Xte(e,t,n):Rn(t)?Zte(e,t,n):Bt(t)?ine(e,t.properties,n):ot(t)?ane(e,t.item,n):Hn(t)?one(e,t,n):Bn(t)?sne(e,t,n):Di(t)?cne(e,t.pattern,n):ar(t)?gne(e,t.items,n):Gr(t)?_ne(e,t,n):Ht(t)?vne(e,t.anyOf,n):Wt(t)?yne(e,t,n):Kr(t)?bne(e,t,n):ji()}function xne(e,t){return fr([...e,zt(t)])}function $i(e,t,n){return xc(e)?Xe(xne(e,t),{},n):ta(e,t,n)}function ea(e,t,n,r,i){return $i(Tc(e,t,n),Cc(e,t,r),i)}function ta(e,t,n={}){return rt(`Interface`,[e,t],n)}function na(e){return Qe(e)&&N(e,`action`)&&A(e.action,`Interface`)}function ra(e,t,n){return e.includes(n)?!0:oa([...e,n],t,t[n])}function ia(e,t,n){return aa(e,t,Rt(n))}function aa(e,t,n){return M(n,(n,r)=>oa(e,t,n)?!0:aa(e,t,r),()=>!1)}function oa(e,t,n){return At(n)?ra(e,t,n.$ref):bt(n)?oa(e,t,n.items):Ct(n)?oa(e,t,n.iteratorItems):Tt(n)?aa(e,t,[...n.parameters,n.instanceType]):Ot(n)?aa(e,t,[...n.parameters,n.returnType]):na(n)?ia(e,t,n.parameters[1]):Qt(n)?aa(e,t,n.allOf):En(n)?oa(e,t,n.iteratorItems):Bt(n)?ia(e,t,n.properties):ot(n)?oa(e,t,n.item):Ht(n)?aa(e,t,n.anyOf):ar(n)?aa(e,t,n.items):Br(n)?oa(e,t,zr(n)):!1}function sa(e,t,n){return oa(e,t,n)}function ca(e,t){return t.reduce((t,n)=>n in e?sa([n],e,e[n])?[...t,n]:t:$t(),[])}function la(e){return ca(e,Lt(e))}function ua(e,t,n){return n.includes(t)?n:t in e?pa(e,e[t],[...n,t]):$t()}function da(e,t,n){return fa(e,Rt(t),n)}function fa(e,t,n){return t.reduce((t,n)=>pa(e,n,t),n)}function pa(e,t,n){return At(t)?ua(e,t.$ref,n):bt(t)?pa(e,t.items,n):Ct(t)?pa(e,t.iteratorItems,n):Tt(t)?fa(e,[...t.parameters,t.instanceType],n):Ot(t)?fa(e,[...t.parameters,t.returnType],n):na(t)?da(e,t.parameters[1],n):Qt(t)?fa(e,t.allOf,n):En(t)?pa(e,t.iteratorItems,n):Bt(t)?da(e,t.properties,n):ot(t)?pa(e,t.item,n):Ht(t)?fa(e,t.anyOf,n):ar(t)?fa(e,t.items,n):Br(t)?pa(e,zr(t),n):n}function ma(e,t,n){return pa(e,n,[t])}function ha(e){return ree()}function ga(e){return P(e).reduce((t,n)=>({...t,[n]:va(e[n])}),{})}function _a(e){return e.reduce((e,t)=>[...e,va(t)],[])}function va(e){return At(e)?ha(e.$ref):bt(e)?yt(va(e.items),xt(e)):Ct(e)?St(va(e.iteratorItems)):Tt(e)?wt(_a(e.parameters),va(e.instanceType)):Ot(e)?Dt(_a(e.parameters),va(e.returnType)):Qt(e)?Zt(_a(e.allOf)):En(e)?Tn(va(e.iteratorItems)):Bt(e)?zt(ga(e.properties)):ot(e)?at(va(e.item)):Br(e)?Fr(Rr(e),va(zr(e))):Ht(e)?Vt(_a(e.anyOf)):ar(e)?ir(_a(e.items)):e}function ya(e,t){return t in e?va(e[t]):Ut()}function ba(e){return ya(e.$defs,e.$ref)}function xa(e,t,n){let r=Tc(e,{callstack:[]},t),i=Cc({},{callstack:[]},n);return fr([...r,zt(i)])}function Sa(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>{let r=e[n],i=na(r)?xa(e,r.parameters[0],r.parameters[1]):r;return{...t,[n]:i}},{})}function Ca(e,t,n){return Gt(Sa(e,ma(e,t,n)),t)}function wa(e,t){return t in e?At(e[t])?wa(e,e[t].$ref):e[t]:Pt()}function Ta(e,t){return wa(e,t)}function Ea(e){return Kt(e)?ba(e):qt(e)?Ut():e}function Da(e,t,n){return Qi(e,Ea(t),Ea(n))}var Oa=`equal`,ka=`disjoint`,Aa=`left-inside`,ja=`right-inside`;function Ma(e,t){let n=[Wt(e)?ji():Da({},e,t),Wt(e)?ki({}):Da({},t,e)];return Ni(n[0])&&Ni(n[1])?Oa:Ni(n[0])&&Mi(n[1])?Aa:Mi(n[0])&&Ni(n[1])?ja:ka}function Na(e,t){return t.filter(t=>Ma(e,t)!==`right-inside`)}function Pa(e,t){return A(t.some(t=>{let n=Ma(e,t);return A(n,`left-inside`)||A(n,`equal`)}),!1)}function Fa(e,t){let n=mr(e);return Nt(n)?[n]:Pa(n,t)?[...Na(n,t),n]:t}function Ia(e){return e.reduce((e,t)=>Bt(t)?[...e,t]:Ft(t)?e:Fa(t,e),[])}function La(e){let t=Sr(Ia(e));return t.length===0?Pt():t.length===1?t[0]:Vt(t)}function Ra(e,t){return Xe(mr(e),{},t)}function za(e,t,n,r){return Ra(F(e,t,n),r)}function Ba(e,t=[]){return it(e)&&A(e.action,`Conditional`)?At(e.parameters[0])?Ba(e.parameters[2],Ba(e.parameters[3],[...t,e.parameters[0].$ref])):Ba(e.parameters[2],Ba(e.parameters[3],t)):it(e)&&A(e.action,`Mapped`)&&it(e.parameters[1])&&A(e.parameters[1].action,`KeyOf`)&&At(e.parameters[1].parameters[0])?[...t,e.parameters[1].parameters[0].$ref]:t}function Va(e,t){return e.reduce((e,n)=>[...e,t.includes(n.name)],[])}function Ha(e,t,n=[]){return M(e,(e,r)=>M(t,(t,i)=>Ha(r,i,[...n,[t,e]]),()=>n),()=>n)}function Ua(e){return Ht(e)?[...e.anyOf]:[e]}function Wa(e,t){return e.reduce((e,n)=>[...e,[...n,t]],[])}function Ga(e,t){return t.reduce((t,n)=>[...t,...Wa(e,n)],[])}function Ka(e){return e.reduce((e,t)=>A(t[0],!0)?Ga(e,Ua(t[1])):Ga(e,[t[1]]),[[]])}function qa(e,t,n){let r=Ha(t,Va(e,Ba(n)));return it(n)&&A(n.action,`Conditional`)||it(n)&&A(n.action,`Mapped`)?Ka(r):[t]}function Ja(){return[`(not-resolvable)`,Pt()]}function Ya(){return[`(not-generic)`,Pt()]}function Xa(e,t,n){return[e,jt(t,n)]}function Za(e,t,n){return t in e?Qa(e,t,e[t],n):Ja()}function Qa(e,t,n,r){return Mt(n)?Xa(t,n.parameters,n.expression):At(n)?Za(e,n.$ref,r):Ya()}function $a(e,t,n){return Qa(e,`(anonymous)`,t,n)}function eo(e,t,n){if(Yt(t)||po(t)||Ni(Da({},t,n)))return;let r={parameter:e,expect:n,actual:t};throw Error(`Argument for parameter ${e} does not satisfy constraint`,{cause:r})}function to(e,t,n,r,i){let a=F(e,t,i);return eo(n,a,r),f(e,{[n]:a})}function no(e,t,n,r,i){let a=F(e,t,n.extends),o=F(e,t,n.equals);return M(i,(i,o)=>ro(to(e,t,n.name,a,i),t,r,o),()=>ro(to(e,t,n.name,a,o),t,r,[]))}function ro(e,t,n,r){return M(n,(n,i)=>no(e,t,n,i,r),()=>e)}function io(e,t,n,r){return ro(e,t,n,r)}function ao(e){return j(e.callstack.length,0)?e.callstack[e.callstack.length-1]:``}function oo(e,t){return A(ao(e),t)}function so(e,t,n,r,i,a){return F(e,t,F(io(e,t,r,a),{callstack:[...t.callstack,n.$ref]},i))}function co(e,t,n,r,i,a){return a.reduce((a,o)=>[...a,so(e,t,n,r,i,o)],[])}function lo(e,t,n,r,i,a){let o=co(e,t,n,r,i,qa(r,a,i));return A(o.length,1)?o[0]:pr(o)}function uo(e,t,n,r){let i=Tc(e,t,r),a=$a(e,n,r),o=a[0],s=a[1];return Mt(s)?oo(t,o)?fo(kt(o),i):lo(e,t,kt(o),s.parameters,s.expression,i):fo(n,i)}function fo(e,t){return Je({"~kind":`Call`},{target:e,arguments:t},{})}function po(e){return Ze(e,`Call`)}function mo(e,t){return e(t)}function ho(e,t){return O(t)?Dn(mo(e,t)):Dn(t)}function go(e,t){return vo(e,$n(t))}function _o(e,t){return Vt(t.map(t=>vo(e,t)))}function vo(e,t){return Nn(t)?ho(e,t.const):Di(t)?go(e,t.pattern):Ht(t)?_o(e,t.anyOf):t}function yo(e,t={}){return rt(`Capitalize`,[e],t)}function bo(e,t={}){return rt(`Lowercase`,[e],t)}function xo(e,t={}){return rt(`Uncapitalize`,[e],t)}function So(e,t={}){return rt(`Uppercase`,[e],t)}var Co=e=>e[0].toUpperCase()+e.slice(1),wo=e=>e.toLowerCase(),To=e=>e[0].toLowerCase()+e.slice(1),Eo=e=>e.toUpperCase();function Do(e,t){return xc([e])?Xe(vo(Co,e),{},t):yo(e,t)}function Oo(e,t){return xc([e])?Xe(vo(wo,e),{},t):bo(e,t)}function ko(e,t){return xc([e])?Xe(vo(To,e),{},t):xo(e,t)}function Ao(e,t){return xc([e])?Xe(vo(Eo,e),{},t):So(e,t)}function jo(e,t,n,r){return Do(F(e,t,n),r)}function Mo(e,t,n,r){return Oo(F(e,t,n),r)}function No(e,t,n,r){return ko(F(e,t,n),r)}function Po(e,t,n,r){return Ao(F(e,t,n),r)}function Fo(e,t,n,r,i={}){return rt(`Conditional`,[e,t,n,r],i)}function Io(e,t,n,r,i,a){let o=Da(e,n,r);return Oi(o)?Vt([F(o.inferred,t,i),F(e,t,a)]):Ai(o)?F(o.inferred,t,i):F(e,t,a)}function Lo(e,t,n,r,i,a,o){return xc([n,r])?Xe(Io(e,t,n,r,i,a),{},o):Fo(n,r,i,a,o)}function Ro(e,t,n,r,i,a,o){return Lo(e,t,F(e,t,n),F(e,t,r),i,a,o)}function zo(e,t={}){return rt(`ConstructorParameters`,[e],t)}function Bo(e){return ir(wc({},{callstack:[]},Tt(e)?e.parameters:[]))}function Vo(e,t){return xc([e])?Xe(Bo(e),{},t):zo(e,t)}function Ho(e,t,n,r){return Vo(F(e,t,n),r)}function Uo(e,t,n={}){return rt(`Exclude`,[e,t],n)}function Wo(e,t){return e.reduce((e,n)=>[...e,...Go(n,t)],[])}function Go(e,t){return Ni(Da({},e,t))?[]:[e]}function Ko(e,t){return pr(Xt(e)?Wo(tr(e.enum),t):Ht(e)?Wo(Sr(e.anyOf),t):Go(e,t))}function qo(e,t,n){return xc([e,t])?Xe(Ko(e,t),{},n):Uo(e,t,n)}function Jo(e,t,n,r,i){return qo(F(e,t,n),F(e,t,r),i)}function Yo(e,t,n={}){return rt(`Extract`,[e,t],n)}function Xo(e,t){return e.reduce((e,n)=>[...e,...Zo(n,t)],[])}function Zo(e,t){return Ni(Da({},e,t))?[e]:[]}function Qo(e,t){return pr(Xt(e)?Xo(tr(e.enum),t):Ht(e)?Xo(Sr(e.anyOf),t):Zo(e,t))}function $o(e,t,n){return xc([e,t])?Xe(Qo(e,t),{},n):Yo(e,t,n)}function es(e,t,n,r,i){return $o(F(e,t,n),F(e,t,r),i)}function ts(e,t,n={}){return rt(`Index`,[e,t],n)}function ns(e,t){return us(Ta(e,t))}function rs(e,t){let n=P(e).filter(e=>!N(t,e)),r=P(t).filter(t=>!N(e,t)),i=P(e).filter(e=>N(t,e)),a=n.reduce((t,n)=>({...t,[n]:e[n]}),{}),o=r.reduce((e,n)=>({...e,[n]:t[n]}),{}),s=i.reduce((n,r)=>({...n,[r]:fr([e[r],t[r]])}),{});return f(f(a,o),s)}function is(e){return e.reduce((e,t)=>rs(e,us(t)),{})}function as(e){return e}function os(e){return us(Iee(ir(e)))}function ss(e,t){return P(e).filter(e=>e in t).reduce((n,r)=>({...n,[r]:pr([e[r],t[r]])}),{})}function cs(e,t){return M(e,(e,n)=>cs(n,ss(t,us(e))),()=>t)}function ls(e){return M(e,(e,t)=>cs(t,us(e)),()=>$t())}function us(e){return Kt(e)?ns(e.$defs,e.$ref):Qt(e)?is(e.allOf):Ht(e)?ls(e.anyOf):ar(e)?os(e.items):Bt(e)?as(e.properties):{}}function ds(e){return zt(us(e))}var fs=RegExp(`^(?:0|[1-9][0-9]*)$`);function ps(e){let t=`${e}`;return fs.test(t)?parseInt(t):e}function ms(e){return Dn(ps(e))}function hs(e){return e.map(e=>gs(e))}function gs(e){return Qt(e)?Zt(hs(e.allOf)):Ht(e)?Vt(hs(e.anyOf)):Nn(e)?ms(e.const):e}function _s(e,t){return Ni(Da({},gs(t),Ln()))?e:Nn(t)&&A(t.const,`length`)?Ln():Pt()}function vs(e,t){return ws(Ta(e,t))}function ys(e){return e.reduce((e,t)=>[...e,...ws(t)],[])}function bs(e){return ys(tr(e))}function xs(e){return ws(fr(e))}function Ss(e){return[`${e}`]}function Cs(e){return ws($n(e))}function ws(e){return Kt(e)?vs(e.$defs,e.$ref):Xt(e)?bs(e.enum):Qt(e)?xs(e.allOf):Nn(e)?Ss(e.const):Di(e)?Cs(e.pattern):Ht(e)?ys(e.anyOf):[]}function Ts(e){return ws(e)}function Es(e,t){return t.map(t=>Ds(e,t))}function Ds(e,t){return bt(t)?yt(Ds(e,t.items)):Ct(t)?St(Ds(e,t.iteratorItems)):Tt(t)?wt(Es(e,t.parameters),Ds(e,t.instanceType)):Ot(t)?Dt(Es(e,t.parameters),Ds(e,t.returnType)):En(t)?Tn(Ds(e,t.iteratorItems)):ot(t)?at(Ds(e,t.item)):ar(t)?ir(Es(e,t.items)):Ht(t)?Vt(Es(e,t.anyOf)):Qt(t)?Zt(Es(e,t.allOf)):Ur(t)?zt(e):t}function Os(e,t){return Ds(e,t)}function ks(e,t){return Os(e,t in e?e[t]:Pt())}function As(e,t){return t.reduce((t,n)=>[...t,ks(e,n)],[])}function js(e,t){return pr(As(e,Ts(t)))}var Ms=new RegExp(jr);function Ns(e){return e.filter(e=>Ms.test(e))}function Ps(e){return pr(As(e,Ns(Lt(e))))}function Fs(e,t){return Rn(t)?Ps(e):js(e,t)}function Is(e){return Dn(ps(e))}function Ls(e){return e.map(e=>Rs(e))}function Rs(e){return Qt(e)?Zt(Ls(e.allOf)):Ht(e)?Vt(Ls(e.anyOf)):Nn(e)?Is(e.const):e}function zs(e,t){return e.reduceRight((e,n,r)=>Ni(Da({},Dn(r),t))?[n,...e]:e,[])}function Bs(e,t){return hr(zs(e,Rs(t)))}function Vs(e){return hr(e)}function Hs(e,t){return Nn(t)&&A(t.const,`length`)?Dn(e.length):Rn(t)||wn(t)?Vs(e):Bs(e,t)}function Us(e,t){return bt(e)?_s(e.items,t):Bt(e)?Fs(e.properties,t):ar(e)?Hs(e.items,t):Pt()}function Ws(e){return Kt(e)||Qt(e)||Ht(e)?ds(e):e}function Gs(e,t,n){return xc([e,t])?Xe(Us(Ws(e),t),{},n):ts(e,t,n)}function Ks(e,t,n,r,i){return Gs(F(e,t,n),F(e,t,r),i)}function qs(e,t={}){return rt(`InstanceType`,[e],t)}function Js(e){return Tt(e)?e.instanceType:Pt()}function Ys(e,t){return xc([e])?Xe(Js(e),{},t):qs(e,t)}function Xs(e,t,n,r={}){return Ys(F(e,t,n),r)}function Zs(e,t={}){return rt(`KeyOf`,[e],t)}function Qs(){return Vt([Ln(),Vn(),zn()])}function $s(e){return Ln()}function ec(e){return e.reduce((e,t)=>On(t)?[...e,Dn(ps(t))]:$t(),[])}function tc(e){return hr(ec(P(e)))}function nc(e){return Rr(e)}function rc(e){return hr(e.map((e,t)=>Dn(t)))}function ic(e){return Nt(e)?Qs():bt(e)?$s(e.items):Bt(e)?tc(e.properties):Br(e)?nc(e):ar(e)?rc(e.items):Pt()}function ac(e){return Kt(e)||Qt(e)||Ht(e)?ds(e):e}function oc(e,t){return xc([e])?Xe(ic(ac(e)),{},t):Zs(e,t)}function sc(e,t,n,r){return oc(F(e,t,n),r)}function cc(e,t,n,r,i={}){return rt(`Mapped`,[e,t,n,r],i)}function lc(e){return fc($n(e))}function uc(e){return e.reduce((e,t)=>[...e,...fc(t)],[])}function dc(e){return T(e)?[Dn(`${e}`)]:[Dn(e)]}function fc(e){return Xt(e)?uc(tr(e.enum)):Nn(e)?dc(e.const):Di(e)?lc(e.pattern):Ht(e)?uc(e.anyOf):[e]}function pc(e){return fc(e)}function mc(e){return Di(e)?$n(e.pattern):e}function Sne(e,t,n,r,i,a){let o=f(e,{[n.name]:r}),s=mc(F(o,t,i)),c=F(o,t,a);return jn(s)||Mn(s)?{[s.const]:c}:{}}function Cne(e,t,n,r,i,a){return r.reduce((r,o)=>[...r,Sne(e,t,n,o,i,a)],[])}function wne(e){return e.reduce((e,t)=>[...e,zt(t)],[])}function Tne(e,t,n,r,i,a){return fr(wne(Cne(e,t,n,pc(r),i,a)))}function Ene(e,t,n,r,i,a,o){return xc([r])?Xe(Tne(e,t,n,r,i,a),{},o):cc(n,r,i,a,o)}function Dne(e,t,n,r,i,a,o){return Ene(e,t,n,F(e,t,r),i,a,o)}function One(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>({...t,[n]:Ca(e,n,e[n])}),{})}function kne(e,t){return P(e).filter(e=>!t.includes(e)).reduce((t,n)=>({...t,[n]:F(e,{callstack:[]},e[n])}),{})}function Ane(e,t){let n=la(e),r=One(e,n),i=kne(e,n);return Xe({...r,...i},{},t)}function jne(e,t,n,r){return Ane(f(e,n),r)}function Mne(e,t={}){return rt(`NonNullable`,[e],t)}function Nne(e){return qo(e,Vt([Pn(),Wr()]),{})}function Pne(e,t){return xc([e])?Xe(Nne(e),{},t):Mne(e,t)}function Fne(e,t,n,r){return Pne(F(e,t,n),r)}function Ine(e,t,n={}){return rt(`Omit`,[e,t],n)}function hc(e){let t=ds(e);return Bt(t)?t.properties:$t()}function Lne(e,t){return P(e).reduce((n,r)=>t.includes(r)?n:{...n,[r]:e[r]},{})}function Rne(e,t){return zt(Lne(hc(e),Ts(t)))}function zne(e,t,n){return xc([e,t])?Xe(Rne(e,t),{},n):Ine(e,t,n)}function Bne(e,t,n,r,i){return zne(F(e,t,n),F(e,t,r),i)}function Vne(e,t){return rt(`Options`,[e,t],{})}function Hne(e,t){return gc(e,t)}function gc(e,t){return xc([e])?Xe(e,{},t):Vne(e,t)}function Une(e,t,n,r){return gc(F(e,t,n),r)}function Wne(e,t={}){return rt(`Parameters`,[e],t)}function Gne(e){return ir(wc({},{callstack:[]},Ot(e)?e.parameters:[]))}function Kne(e,t){return xc([e])?Xe(Gne(e),{},t):Wne(e,t)}function qne(e,t,n,r){return Kne(F(e,t,n),r)}function Jne(e,t={}){return rt(`Partial`,[e],t)}function Yne(e,t){let n=_c(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function Xne(e){return fr(e.map(e=>_c(e)))}function Zne(e){return Vt(e.map(e=>_c(e)))}function Qne(e){return zt(P(e).reduce((t,n)=>({...t,[n]:pt(e[n])}),{}))}function _c(e){return Kt(e)?Yne(e.$defs,e.$ref):Qt(e)?Xne(e.allOf):Ht(e)?Zne(e.anyOf):Bt(e)?Qne(e.properties):zt({})}function $ne(e,t){return xc([e])?Xe(_c(e),{},t):Jne(e,t)}function ere(e,t,n,r){return $ne(F(e,t,n),r)}function tre(e,t,n={}){return rt(`Pick`,[e,t],n)}function nre(e,t){return P(e).reduce((n,r)=>t.includes(r)?f(n,{[r]:e[r]}):n,{})}function rre(e,t){return zt(nre(hc(e),Ts(t)))}function ire(e,t,n){return xc([e,t])?Xe(rre(e,t),{},n):tre(e,t,n)}function are(e,t,n,r,i){return ire(F(e,t,n),F(e,t,r),i)}function ore(e,t={}){return rt(`ReadonlyObject`,[e],t)}function sre(e){return lt(yt(e))}function cre(e,t){let n=vc(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function lre(e){return fr(e.map(e=>vc(e)))}function ure(e){return zt(P(e).reduce((t,n)=>({...t,[n]:eee(e[n])}),{}))}function dre(e){return lt(ir(e))}function fre(e){return Vt(e.map(e=>vc(e)))}function vc(e){return bt(e)?sre(e.items):Kt(e)?cre(e.$defs,e.$ref):Qt(e)?lre(e.allOf):Bt(e)?ure(e.properties):ar(e)?dre(e.items):Ht(e)?fre(e.anyOf):e}function pre(e,t){return xc([e])?Xe(vc(e),{},t):ore(e)}function mre(e,t,n,r){return pre(F(e,t,n),r)}function hre(e,t,n,r){return r in e?sa([r],e,e[r])?n:F(e,t,e[r]):n}function gre(e,t){let n=yc(Ta(e,t));return Gt(f(e,{[t]:n}),t)}function _re(e){return fr(e.map(e=>yc(e)))}function vre(e){return Vt(e.map(e=>yc(e)))}function yre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:dt(e[n])}),{}))}function yc(e){return Kt(e)?gre(e.$defs,e.$ref):Qt(e)?_re(e.allOf):Ht(e)?vre(e.anyOf):Bt(e)?yre(e.properties):zt({})}function bre(e,t={}){return rt(`Required`,[e],t)}function xre(e,t){return xc([e])?Xe(yc(e),{},t):bre(e,t)}function Sre(e,t,n,r){return xre(F(e,t,n),r)}function Cre(e,t={}){return rt(`ReturnType`,[e],t)}function wre(e){return Ot(e)?e.returnType:Pt()}function Tre(e,t){return xc([e])?Xe(wre(e),{},t):Cre(e,t)}function Ere(e,t,n,r={}){return Tre(F(e,t,n),r)}function Dre(e){return Hr(e)?ar(e.items)?bc(e.items.items):Yt(e.items)||At(e.items)?[e]:[Pt()]:[e]}function bc(e){return e.reduce((e,t)=>[...e,...Dre(t)],[])}function xc(e){return M(e,(e,t)=>At(e)?!1:xc(t),()=>!0)}function Sc(e,t,n){return nt(e)?Sc(e.type,`remove`,n):et(e)?Sc(e.type,t,`remove`):tt(e)?Sc(e.type,`add`,n):$e(e)?Sc(e.type,t,`add`):[e,t,n]}function Ore(e,t){return A(e,`remove`)?ht(t):A(e,`add`)?gt(t):t}function kre(e,t){return A(e,`remove`)?dt(t):A(e,`add`)?ft(t):t}function Cc(e,t,n){return P(n).reduce((r,i)=>({...r,[i]:F(e,t,n[i])}),{})}function wc(e,t,n){return bc(Tc(e,t,n))}function Tc(e,t,n){return n.map(n=>F(e,t,n))}function Are(e,t,n,r,i){return A(n,`Awaited`)?Mre(e,t,r[0],i):A(n,`Capitalize`)?jo(e,t,r[0],i):A(n,`Conditional`)?Ro(e,t,r[0],r[1],r[2],r[3],i):A(n,`ConstructorParameters`)?Ho(e,t,r[0],i):A(n,`Evaluate`)?za(e,t,r[0],i):A(n,`Exclude`)?Jo(e,t,r[0],r[1],i):A(n,`Extract`)?es(e,t,r[0],r[1],i):A(n,`Index`)?Ks(e,t,r[0],r[1],i):A(n,`InstanceType`)?Xs(e,t,r[0],i):A(n,`Interface`)?ea(e,t,r[0],r[1],i):A(n,`KeyOf`)?sc(e,t,r[0],i):A(n,`Lowercase`)?Mo(e,t,r[0],i):A(n,`Mapped`)?Dne(e,t,r[0],r[1],r[2],r[3],i):A(n,`Module`)?jne(e,t,r[0],i):A(n,`NonNullable`)?Fne(e,t,r[0],i):A(n,`Pick`)?are(e,t,r[0],r[1],i):A(n,`Options`)?Une(e,t,r[0],r[1]):A(n,`Parameters`)?qne(e,t,r[0],i):A(n,`Partial`)?ere(e,t,r[0],i):A(n,`Omit`)?Bne(e,t,r[0],r[1],i):A(n,`ReadonlyObject`)?mre(e,t,r[0],i):A(n,`Record`)?Ar(e,t,r[0],r[1],i):A(n,`Required`)?Sre(e,t,r[0],i):A(n,`ReturnType`)?Ere(e,t,r[0],i):A(n,`TemplateLiteral`)?xte(e,t,r[0],i):A(n,`Uncapitalize`)?No(e,t,r[0],i):A(n,`Uppercase`)?Po(e,t,r[0],i):rt(n,r,i)}function F(e,t,n){let r=ut(n),i=Sc(n,_t(n)?`add`:`none`,mt(n)?`add`:`none`),a=vt(i[0])?i[0].Clone():i[0],o=At(a)?hre(e,t,a,a.$ref):bt(a)?yt(F(e,t,a.items),xt(a)):Ct(a)?St(F(e,t,a.iteratorItems),tee(a)):po(a)?uo(e,t,a.target,a.arguments):Tt(a)?wt(Tc(e,t,a.parameters),F(e,t,a.instanceType),Et(a)):it(a)?Are(e,t,a.action,a.parameters,a.options):Ot(a)?Dt(Tc(e,t,a.parameters),F(e,t,a.returnType),nee(a)):Qt(a)?Zt(Tc(e,t,a.allOf),see(a)):En(a)?Tn(F(e,t,a.iteratorItems),xee(a)):Bt(a)?zt(Cc(e,t,a.properties),aee(a)):ot(a)?at(F(e,t,a.item),st(a)):Br(a)?Ir(Lr(a),F(e,t,zr(a))):Hr(a)?Vr(F(e,t,a.items)):ar(a)?ir(wc(e,t,a.items),Fee(a)):Ht(a)?Vt(Tc(e,t,a.anyOf),oee(a)):a,s=r?lt(o):o;return Ore(i[1],kre(i[2],s))}function Ec(e,t){return F(e,{callstack:[]},t)}function Dc(e){return ot(e)?Dc(e.item):e}function jre(e,t){return xc([e])?Xe(Dc(e),{},t):Nre(e,t)}function Mre(e,t,n,r){return jre(F(e,t,n),r)}function Nre(e,t={}){return rt(`Awaited`,[e],t)}function Oc(e,t={}){return Ra(e,t)}var kc=new Map;function Pre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Fre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Ac(e,t){kc.set(e.api,{provider:{api:e.api,stream:Pre(e.api,e.stream),streamSimple:Fre(e.api,e.streamSimple)},sourceId:t})}function Ire(e){return kc.get(e)?.provider}var Lre=`modulepreload`,Rre=function(e){return`/`+e},jc={},I=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Rre(t,n),t in jc)return;jc[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Lre,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},zre=o(((e,t)=>{t.exports={}})),Bre=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},Mc=null,Nc=null,Pc=null,Fc=e=>I(()=>import(Bre(e)),[]);typeof process<`u`&&(process.versions?.node||process.versions?.bun)&&(Fc(`node:fs`).then(e=>{Mc=e.existsSync}),Fc(`node:os`).then(e=>{Nc=e.homedir}),Fc(`node:path`).then(e=>{Pc=e.join}));var Ic=null;function Lc(e){if(process.versions?.bun&&!(typeof process>`u`)&&!(Object.keys({}).length>0)){if(Ic===null){Ic=new Map;try{let{readFileSync:e}=zre(),t=e(`/proc/self/environ`,`utf-8`);for(let e of t.split(`\0`)){let t=e.indexOf(`=`);t>0&&Ic.set(e.slice(0,t),e.slice(t+1))}}catch{}}return Ic.get(e)}}var Rc=null;function Vre(){if(Rc===null){if(!Mc||!Nc||!Pc)return typeof process<`u`&&(process.versions?.node||process.versions?.bun)||(Rc=!1),!1;let e={}.GOOGLE_APPLICATION_CREDENTIALS||Lc(`GOOGLE_APPLICATION_CREDENTIALS`);Rc=Mc(e||Pc(Nc(),`.config`,`gcloud`,`application_default_credentials.json`))}return Rc}function Hre(e){if(e===`github-copilot`)return[`COPILOT_GITHUB_TOKEN`];if(e===`anthropic`)return[`ANTHROPIC_OAUTH_TOKEN`,`ANTHROPIC_API_KEY`];let t={openai:`OPENAI_API_KEY`,"azure-openai-responses":`AZURE_OPENAI_API_KEY`,deepseek:`DEEPSEEK_API_KEY`,google:`GEMINI_API_KEY`,"google-vertex":`GOOGLE_CLOUD_API_KEY`,groq:`GROQ_API_KEY`,cerebras:`CEREBRAS_API_KEY`,xai:`XAI_API_KEY`,openrouter:`OPENROUTER_API_KEY`,"vercel-ai-gateway":`AI_GATEWAY_API_KEY`,zai:`ZAI_API_KEY`,mistral:`MISTRAL_API_KEY`,minimax:`MINIMAX_API_KEY`,"minimax-cn":`MINIMAX_CN_API_KEY`,moonshotai:`MOONSHOT_API_KEY`,"moonshotai-cn":`MOONSHOT_API_KEY`,huggingface:`HF_TOKEN`,fireworks:`FIREWORKS_API_KEY`,together:`TOGETHER_API_KEY`,opencode:`OPENCODE_API_KEY`,"opencode-go":`OPENCODE_API_KEY`,"kimi-coding":`KIMI_API_KEY`,"cloudflare-workers-ai":`CLOUDFLARE_API_KEY`,"cloudflare-ai-gateway":`CLOUDFLARE_API_KEY`,xiaomi:`XIAOMI_API_KEY`,"xiaomi-token-plan-cn":`XIAOMI_TOKEN_PLAN_CN_API_KEY`,"xiaomi-token-plan-ams":`XIAOMI_TOKEN_PLAN_AMS_API_KEY`,"xiaomi-token-plan-sgp":`XIAOMI_TOKEN_PLAN_SGP_API_KEY`}[e];return t?[t]:void 0}function Ure(e){let t=Hre(e);if(!t)return;let n=t.filter(e=>!!{}[e]||!!Lc(e));return n.length>0?n:void 0}function Wre(e){let t=Ure(e);if(t?.[0])return{}[t[0]]||Lc(t[0]);if(e===`google-vertex`){let e=Vre(),t=!!({}.GOOGLE_CLOUD_PROJECT||{}.GCLOUD_PROJECT||Lc(`GOOGLE_CLOUD_PROJECT`)||Lc(`GCLOUD_PROJECT`)),n=!!({}.GOOGLE_CLOUD_LOCATION||Lc(`GOOGLE_CLOUD_LOCATION`));if(e&&t&&n)return`<authenticated>`}if(e===`amazon-bedrock`&&({}.AWS_PROFILE||{}.AWS_ACCESS_KEY_ID&&{}.AWS_SECRET_ACCESS_KEY||{}.AWS_BEARER_TOKEN_BEDROCK||{}.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI||{}.AWS_CONTAINER_CREDENTIALS_FULL_URI||{}.AWS_WEB_IDENTITY_TOKEN_FILE||Lc(`AWS_PROFILE`)||Lc(`AWS_ACCESS_KEY_ID`)&&Lc(`AWS_SECRET_ACCESS_KEY`)||Lc(`AWS_BEARER_TOKEN_BEDROCK`)||Lc(`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`)||Lc(`AWS_CONTAINER_CREDENTIALS_FULL_URI`)||Lc(`AWS_WEB_IDENTITY_TOKEN_FILE`)))return`<authenticated>`}var Gre={openrouter:{"black-forest-labs/flux.2-flex":{id:`black-forest-labs/flux.2-flex`,name:`Black Forest Labs: FLUX.2 Flex`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-klein-4b":{id:`black-forest-labs/flux.2-klein-4b`,name:`Black Forest Labs: FLUX.2 Klein 4B`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-max":{id:`black-forest-labs/flux.2-max`,name:`Black Forest Labs: FLUX.2 Max`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"black-forest-labs/flux.2-pro":{id:`black-forest-labs/flux.2-pro`,name:`Black Forest Labs: FLUX.2 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"bytedance-seed/seedream-4.5":{id:`bytedance-seed/seedream-4.5`,name:`ByteDance Seed: Seedream 4.5`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"google/gemini-2.5-flash-image":{id:`google/gemini-2.5-flash-image`,name:`Google: Nano Banana (Gemini 2.5 Flash Image)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:.08333333333333334}},"google/gemini-3-pro-image-preview":{id:`google/gemini-3-pro-image-preview`,name:`Google: Nano Banana Pro (Gemini 3 Pro Image Preview)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375}},"google/gemini-3.1-flash-image-preview":{id:`google/gemini-3.1-flash-image-preview`,name:`Google: Nano Banana 2 (Gemini 3.1 Flash Image Preview)`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:.5,output:3,cacheRead:0,cacheWrite:0}},"openai/gpt-5-image":{id:`openai/gpt-5-image`,name:`OpenAI: GPT-5 Image`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:10,output:10,cacheRead:1.25,cacheWrite:0}},"openai/gpt-5-image-mini":{id:`openai/gpt-5-image-mini`,name:`OpenAI: GPT-5 Image Mini`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:2.5,output:2,cacheRead:.25,cacheWrite:0}},"openai/gpt-5.4-image-2":{id:`openai/gpt-5.4-image-2`,name:`OpenAI: GPT-5.4 Image 2`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`image`,`text`],output:[`image`,`text`],cost:{input:8,output:15,cacheRead:2,cacheWrite:0}},"openrouter/auto":{id:`openrouter/auto`,name:`Auto Router`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`text`,`image`],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0}},"recraft/recraft-v3":{id:`recraft/recraft-v3`,name:`Recraft: Recraft V3`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4":{id:`recraft/recraft-v4`,name:`Recraft: Recraft V4`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro":{id:`recraft/recraft-v4-pro`,name:`Recraft: Recraft V4 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-pro-vector":{id:`recraft/recraft-v4-pro-vector`,name:`Recraft: Recraft V4 Pro Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4-vector":{id:`recraft/recraft-v4-vector`,name:`Recraft: Recraft V4 Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1":{id:`recraft/recraft-v4.1`,name:`Recraft: Recraft V4.1`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro":{id:`recraft/recraft-v4.1-pro`,name:`Recraft: Recraft V4.1 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-pro-vector":{id:`recraft/recraft-v4.1-pro-vector`,name:`Recraft: Recraft V4.1 Pro Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility":{id:`recraft/recraft-v4.1-utility`,name:`Recraft: Recraft V4.1 Utility`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-utility-pro":{id:`recraft/recraft-v4.1-utility-pro`,name:`Recraft: Recraft V4.1 Utility Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"recraft/recraft-v4.1-vector":{id:`recraft/recraft-v4.1-vector`,name:`Recraft: Recraft V4.1 Vector`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast":{id:`sourceful/riverflow-v2-fast`,name:`Sourceful: Riverflow V2 Fast`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-fast-preview":{id:`sourceful/riverflow-v2-fast-preview`,name:`Sourceful: Riverflow V2 Fast Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-max-preview":{id:`sourceful/riverflow-v2-max-preview`,name:`Sourceful: Riverflow V2 Max Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-pro":{id:`sourceful/riverflow-v2-pro`,name:`Sourceful: Riverflow V2 Pro`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"sourceful/riverflow-v2-standard-preview":{id:`sourceful/riverflow-v2-standard-preview`,name:`Sourceful: Riverflow V2 Standard Preview`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}},"x-ai/grok-imagine-image-quality":{id:`x-ai/grok-imagine-image-quality`,name:`xAI: Grok Imagine Image Quality`,api:`openrouter-images`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,input:[`text`,`image`],output:[`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0}}}},Kre=new Map;for(let[e,t]of Object.entries(Gre)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Kre.set(e,n)}var qre=new Map;function Jre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Yre(e,t){qre.set(e.api,{provider:{api:e.api,generateImages:Jre(e.api,e.generateImages)},sourceId:t})}var zc;function Xre(e,t){return{api:e.api,provider:e.provider,model:e.id,output:[],stopReason:`error`,errorMessage:t instanceof Error?t.message:String(t),timestamp:Date.now()}}function Zre(){return zc||=I(()=>import(`./openrouter-PAULL0z5.js`).then(e=>e),__vite__mapDeps([0,1,2,3])),zc}var Qre=async(e,t,n)=>{try{return await(await Zre()).generateImagesOpenRouter(e,t,n)}catch(t){return Xre(e,t)}};function $re(){Yre({api:`openrouter-images`,generateImages:Qre})}$re();var eie={"amazon-bedrock":{"amazon.nova-2-lite-v1:0":{id:`amazon.nova-2-lite-v1:0`,name:`Nova 2 Lite`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.33,output:2.75,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"amazon.nova-lite-v1:0":{id:`amazon.nova-lite-v1:0`,name:`Nova Lite`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.06,output:.24,cacheRead:.015,cacheWrite:0},contextWindow:3e5,maxTokens:8192},"amazon.nova-micro-v1:0":{id:`amazon.nova-micro-v1:0`,name:`Nova Micro`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.035,output:.14,cacheRead:.00875,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"amazon.nova-pro-v1:0":{id:`amazon.nova-pro-v1:0`,name:`Nova Pro`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:3e5,maxTokens:8192},"anthropic.claude-haiku-4-5-20251001-v1:0":{id:`anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-opus-4-1-20250805-v1:0":{id:`anthropic.claude-opus-4-1-20250805-v1:0`,name:`Claude Opus 4.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic.claude-opus-4-5-20251101-v1:0":{id:`anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-opus-4-6-v1":{id:`anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-opus-4-7":{id:`anthropic.claude-opus-4-7`,name:`Claude Opus 4.7`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-opus-4-8":{id:`anthropic.claude-opus-4-8`,name:`Claude Opus 4.8`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"anthropic.claude-sonnet-4-6":{id:`anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"au.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`au.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"au.anthropic.claude-opus-4-6-v1":{id:`au.anthropic.claude-opus-4-6-v1`,name:`AU Anthropic Claude Opus 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:16.5,output:82.5,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"au.anthropic.claude-opus-4-8":{id:`au.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"au.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`au.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (AU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"au.anthropic.claude-sonnet-4-6":{id:`au.anthropic.claude-sonnet-4-6`,name:`AU Anthropic Claude Sonnet 4.6`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3.3,output:16.5,cacheRead:.33,cacheWrite:4.125},contextWindow:1e6,maxTokens:128e3},"deepseek.r1-v1:0":{id:`deepseek.r1-v1:0`,name:`DeepSeek-R1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768},"deepseek.v3-v1:0":{id:`deepseek.v3-v1:0`,name:`DeepSeek-V3.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.58,output:1.68,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:81920},"deepseek.v3.2":{id:`deepseek.v3.2`,name:`DeepSeek-V3.2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.62,output:1.85,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:81920},"eu.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`eu.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-opus-4-5-20251101-v1:0":{id:`eu.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-opus-4-6-v1":{id:`eu.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-opus-4-7":{id:`eu.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-opus-4-8":{id:`eu.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"eu.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`eu.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"eu.anthropic.claude-sonnet-4-6":{id:`eu.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (EU)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.eu-central-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"global.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`global.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-opus-4-5-20251101-v1:0":{id:`global.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-opus-4-6-v1":{id:`global.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-opus-4-7":{id:`global.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-opus-4-8":{id:`global.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"global.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`global.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"global.anthropic.claude-sonnet-4-6":{id:`global.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (Global)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"google.gemma-3-27b-it":{id:`google.gemma-3-27b-it`,name:`Google Gemma 3 27B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.12,output:.2,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:8192},"google.gemma-3-4b-it":{id:`google.gemma-3-4b-it`,name:`Gemma 3 4B IT`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.04,output:.08,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"jp.anthropic.claude-opus-4-7":{id:`jp.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"jp.anthropic.claude-opus-4-8":{id:`jp.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"jp.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`jp.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"jp.anthropic.claude-sonnet-4-6":{id:`jp.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (JP)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"meta.llama3-1-70b-instruct-v1:0":{id:`meta.llama3-1-70b-instruct-v1:0`,name:`Llama 3.1 70B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama3-1-8b-instruct-v1:0":{id:`meta.llama3-1-8b-instruct-v1:0`,name:`Llama 3.1 8B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:.22,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama3-3-70b-instruct-v1:0":{id:`meta.llama3-3-70b-instruct-v1:0`,name:`Llama 3.3 70B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"meta.llama4-maverick-17b-instruct-v1:0":{id:`meta.llama4-maverick-17b-instruct-v1:0`,name:`Llama 4 Maverick 17B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.97,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:16384},"meta.llama4-scout-17b-instruct-v1:0":{id:`meta.llama4-scout-17b-instruct-v1:0`,name:`Llama 4 Scout 17B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.17,output:.66,cacheRead:0,cacheWrite:0},contextWindow:35e5,maxTokens:16384},"minimax.minimax-m2":{id:`minimax.minimax-m2`,name:`MiniMax M2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204608,maxTokens:128e3},"minimax.minimax-m2.1":{id:`minimax.minimax-m2.1`,name:`MiniMax M2.1`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"minimax.minimax-m2.5":{id:`minimax.minimax-m2.5`,name:`MiniMax M2.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:196608,maxTokens:98304},"mistral.devstral-2-123b":{id:`mistral.devstral-2-123b`,name:`Devstral 2 123B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.magistral-small-2509":{id:`mistral.magistral-small-2509`,name:`Magistral Small 1.2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e4},"mistral.ministral-3-14b-instruct":{id:`mistral.ministral-3-14b-instruct`,name:`Ministral 14B 3.0`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.ministral-3-3b-instruct":{id:`mistral.ministral-3-3b-instruct`,name:`Ministral 3 3B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.ministral-3-8b-instruct":{id:`mistral.ministral-3-8b-instruct`,name:`Ministral 3 8B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.mistral-large-3-675b-instruct":{id:`mistral.mistral-large-3-675b-instruct`,name:`Mistral Large 3`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192},"mistral.pixtral-large-2502-v1:0":{id:`mistral.pixtral-large-2502-v1:0`,name:`Pixtral Large (25.02)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"mistral.voxtral-mini-3b-2507":{id:`mistral.voxtral-mini-3b-2507`,name:`Voxtral Mini 3B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.04,output:.04,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistral.voxtral-small-24b-2507":{id:`mistral.voxtral-small-24b-2507`,name:`Voxtral Small 24B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.35,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:8192},"moonshot.kimi-k2-thinking":{id:`moonshot.kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262143,maxTokens:16e3},"moonshotai.kimi-k2.5":{id:`moonshotai.kimi-k2.5`,name:`Kimi K2.5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:0,cacheWrite:0},contextWindow:262143,maxTokens:16e3},"nvidia.nemotron-nano-12b-v2":{id:`nvidia.nemotron-nano-12b-v2`,name:`NVIDIA Nemotron Nano 12B v2 VL BF16`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-nano-3-30b":{id:`nvidia.nemotron-nano-3-30b`,name:`NVIDIA Nemotron Nano 3 30B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.06,output:.24,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-nano-9b-v2":{id:`nvidia.nemotron-nano-9b-v2`,name:`NVIDIA Nemotron Nano 9B v2`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.06,output:.23,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"nvidia.nemotron-super-3-120b":{id:`nvidia.nemotron-super-3-120b`,name:`NVIDIA Nemotron 3 Super 120B A12B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.15,output:.65,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"openai.gpt-oss-120b-1:0":{id:`openai.gpt-oss-120b-1:0`,name:`gpt-oss-120b`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-20b-1:0":{id:`openai.gpt-oss-20b-1:0`,name:`gpt-oss-20b`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-safeguard-120b":{id:`openai.gpt-oss-safeguard-120b`,name:`GPT OSS Safeguard 120B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai.gpt-oss-safeguard-20b":{id:`openai.gpt-oss-safeguard-20b`,name:`GPT OSS Safeguard 20B`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.07,output:.2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"qwen.qwen3-235b-a22b-2507-v1:0":{id:`qwen.qwen3-235b-a22b-2507-v1:0`,name:`Qwen3 235B A22B 2507`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:.88,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"qwen.qwen3-32b-v1:0":{id:`qwen.qwen3-32b-v1:0`,name:`Qwen3 32B (dense)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:16384,maxTokens:16384},"qwen.qwen3-coder-30b-a3b-v1:0":{id:`qwen.qwen3-coder-30b-a3b-v1:0`,name:`Qwen3 Coder 30B A3B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"qwen.qwen3-coder-480b-a35b-v1:0":{id:`qwen.qwen3-coder-480b-a35b-v1:0`,name:`Qwen3 Coder 480B A35B Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.22,output:1.8,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen.qwen3-coder-next":{id:`qwen.qwen3-coder-next`,name:`Qwen3 Coder Next`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.22,output:1.8,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen.qwen3-next-80b-a3b":{id:`qwen.qwen3-next-80b-a3b`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`],cost:{input:.14,output:1.4,cacheRead:0,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"qwen.qwen3-vl-235b-a22b":{id:`qwen.qwen3-vl-235b-a22b`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"us.anthropic.claude-haiku-4-5-20251001-v1:0":{id:`us.anthropic.claude-haiku-4-5-20251001-v1:0`,name:`Claude Haiku 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-opus-4-1-20250805-v1:0":{id:`us.anthropic.claude-opus-4-1-20250805-v1:0`,name:`Claude Opus 4.1 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"us.anthropic.claude-opus-4-5-20251101-v1:0":{id:`us.anthropic.claude-opus-4-5-20251101-v1:0`,name:`Claude Opus 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-opus-4-6-v1":{id:`us.anthropic.claude-opus-4-6-v1`,name:`Claude Opus 4.6 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-opus-4-7":{id:`us.anthropic.claude-opus-4-7`,name:`Claude Opus 4.7 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-opus-4-8":{id:`us.anthropic.claude-opus-4-8`,name:`Claude Opus 4.8 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"us.anthropic.claude-sonnet-4-5-20250929-v1:0":{id:`us.anthropic.claude-sonnet-4-5-20250929-v1:0`,name:`Claude Sonnet 4.5 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"us.anthropic.claude-sonnet-4-6":{id:`us.anthropic.claude-sonnet-4-6`,name:`Claude Sonnet 4.6 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"us.deepseek.r1-v1:0":{id:`us.deepseek.r1-v1:0`,name:`DeepSeek-R1 (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768},"us.meta.llama4-maverick-17b-instruct-v1:0":{id:`us.meta.llama4-maverick-17b-instruct-v1:0`,name:`Llama 4 Maverick 17B Instruct (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.97,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:16384},"us.meta.llama4-scout-17b-instruct-v1:0":{id:`us.meta.llama4-scout-17b-instruct-v1:0`,name:`Llama 4 Scout 17B Instruct (US)`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.17,output:.66,cacheRead:0,cacheWrite:0},contextWindow:35e5,maxTokens:16384},"writer.palmyra-x4-v1:0":{id:`writer.palmyra-x4-v1:0`,name:`Palmyra X4`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:122880,maxTokens:8192},"writer.palmyra-x5-v1:0":{id:`writer.palmyra-x5-v1:0`,name:`Palmyra X5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:6,cacheRead:0,cacheWrite:0},contextWindow:104e4,maxTokens:8192},"zai.glm-4.7":{id:`zai.glm-4.7`,name:`GLM-4.7`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"zai.glm-4.7-flash":{id:`zai.glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:.07,output:.4,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"zai.glm-5":{id:`zai.glm-5`,name:`GLM-5`,api:`bedrock-converse-stream`,provider:`amazon-bedrock`,baseUrl:`https://bedrock-runtime.us-east-1.amazonaws.com`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:101376}},anthropic:{"claude-3-5-haiku-20241022":{id:`claude-3-5-haiku-20241022`,name:`Claude Haiku 3.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-5-haiku-latest":{id:`claude-3-5-haiku-latest`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-5-sonnet-20240620":{id:`claude-3-5-sonnet-20240620`,name:`Claude Sonnet 3.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-3-5-sonnet-20241022":{id:`claude-3-5-sonnet-20241022`,name:`Claude Sonnet 3.5 v2`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-3-7-sonnet-20250219":{id:`claude-3-7-sonnet-20250219`,name:`Claude Sonnet 3.7`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-3-haiku-20240307":{id:`claude-3-haiku-20240307`,name:`Claude Haiku 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3-opus-20240229":{id:`claude-3-opus-20240229`,name:`Claude Opus 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:4096},"claude-3-sonnet-20240229":{id:`claude-3-sonnet-20240229`,name:`Claude Sonnet 3`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-haiku-4-5-20251001":{id:`claude-haiku-4-5-20251001`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-0":{id:`claude-opus-4-0`,name:`Claude Opus 4 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1-20250805":{id:`claude-opus-4-1-20250805`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-20250514":{id:`claude-opus-4-20250514`,name:`Claude Opus 4`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-5-20251101":{id:`claude-opus-4-5-20251101`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-8":{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4-0":{id:`claude-sonnet-4-0`,name:`Claude Sonnet 4 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-20250514":{id:`claude-sonnet-4-20250514`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5 (latest)`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5-20250929":{id:`claude-sonnet-4-5-20250929`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`anthropic`,baseUrl:`https://api.anthropic.com`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3}},"azure-openai-responses":{"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-mini":{id:`gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:1.6,cacheRead:.1,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-nano":{id:`gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-05-13":{id:`gpt-4o-2024-05-13`,name:`GPT-4o (2024-05-13)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o-2024-08-06":{id:`gpt-4o-2024-08-06`,name:`GPT-4o (2024-08-06)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-11-20":{id:`gpt-4o-2024-11-20`,name:`GPT-4o (2024-11-20)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-chat-latest":{id:`gpt-5-chat-latest`,name:`GPT-5 Chat Latest`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5-Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5 Mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-pro":{id:`gpt-5-pro`,name:`GPT-5 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-chat-latest":{id:`gpt-5.1-chat-latest`,name:`GPT-5.1 Chat`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-chat-latest":{id:`gpt-5.2-chat-latest`,name:`GPT-5.2 Chat`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-pro":{id:`gpt-5.2-pro`,name:`GPT-5.2 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-chat-latest":{id:`gpt-5.3-chat-latest`,name:`GPT-5.3 Chat (latest)`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!1,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 nano`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o1-pro":{id:`o1-pro`,name:`o1-pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:150,output:600,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-deep-research":{id:`o3-deep-research`,name:`o3-deep-research`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini-deep-research":{id:`o4-mini-deep-research`,name:`o4-mini-deep-research`,api:`azure-openai-responses`,provider:`azure-openai-responses`,baseUrl:``,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5}},cerebras:{"gpt-oss-120b":{id:`gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!0,input:[`text`],cost:{input:.25,output:.69,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"llama3.1-8b":{id:`llama3.1-8b`,name:`Llama 3.1 8B`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:8e3},"zai-glm-4.7":{id:`zai-glm-4.7`,name:`Z.AI GLM-4.7`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2.25,output:2.75,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4e4}},"cloudflare-ai-gateway":{"claude-3-5-haiku":{id:`claude-3-5-haiku`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3-haiku":{id:`claude-3-haiku`,name:`Claude Haiku 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3-opus":{id:`claude-3-opus`,name:`Claude Opus 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:4096},"claude-3-sonnet":{id:`claude-3-sonnet`,name:`Claude Sonnet 3`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"claude-3.5-haiku":{id:`claude-3.5-haiku`,name:`Claude Haiku 3.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:.8,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"claude-3.5-sonnet":{id:`claude-3.5-sonnet`,name:`Claude Sonnet 3.5 v2`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!1,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:8192},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4":{id:`claude-opus-4`,name:`Claude Opus 4 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4":{id:`claude-sonnet-4`,name:`Claude Sonnet 4 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5 (latest)`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/anthropic`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.08,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`openai-responses`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/openai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.28,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"workers-ai/@cf/moonshotai/kimi-k2.5":{id:`workers-ai/@cf/moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/moonshotai/kimi-k2.6":{id:`workers-ai/@cf/moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/nvidia/nemotron-3-120b-a12b":{id:`workers-ai/@cf/nvidia/nemotron-3-120b-a12b`,name:`Nemotron 3 Super 120B`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"workers-ai/@cf/zai-org/glm-4.7-flash":{id:`workers-ai/@cf/zai-org/glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`cloudflare-ai-gateway`,baseUrl:`https://gateway.ai.cloudflare.com/v1/{CLOUDFLARE_ACCOUNT_ID}/{CLOUDFLARE_GATEWAY_ID}/compat`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.06,output:.4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072}},"cloudflare-workers-ai":{"@cf/google/gemma-4-26b-a4b-it":{id:`@cf/google/gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384},"@cf/ibm-granite/granite-4.0-h-micro":{id:`@cf/ibm-granite/granite-4.0-h-micro`,name:`Granite 4.0 H Micro`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.017,output:.112,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:131e3},"@cf/meta/llama-3.3-70b-instruct-fp8-fast":{id:`@cf/meta/llama-3.3-70b-instruct-fp8-fast`,name:`Llama 3.3 70B Instruct fp8 Fast`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.293,output:2.253,cacheRead:0,cacheWrite:0},contextWindow:24e3,maxTokens:24e3},"@cf/meta/llama-4-scout-17b-16e-instruct":{id:`@cf/meta/llama-4-scout-17b-16e-instruct`,name:`Llama 4 Scout 17B 16E Instruct`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`,`image`],cost:{input:.27,output:.85,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:16384},"@cf/mistralai/mistral-small-3.1-24b-instruct":{id:`@cf/mistralai/mistral-small-3.1-24b-instruct`,name:`Mistral Small 3.1 24B Instruct`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!1,input:[`text`],cost:{input:.351,output:.555,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"@cf/moonshotai/kimi-k2.5":{id:`@cf/moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"@cf/moonshotai/kimi-k2.6":{id:`@cf/moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:256e3},"@cf/nvidia/nemotron-3-120b-a12b":{id:`@cf/nvidia/nemotron-3-120b-a12b`,name:`Nemotron 3 Super 120B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"@cf/openai/gpt-oss-120b":{id:`@cf/openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.35,output:.75,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"@cf/openai/gpt-oss-20b":{id:`@cf/openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.2,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"@cf/qwen/qwen3-30b-a3b-fp8":{id:`@cf/qwen/qwen3-30b-a3b-fp8`,name:`Qwen3 30B A3b fp8`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.0509,output:.335,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"@cf/zai-org/glm-4.7-flash":{id:`@cf/zai-org/glm-4.7-flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`cloudflare-workers-ai`,baseUrl:`https://api.cloudflare.com/client/v4/accounts/{CLOUDFLARE_ACCOUNT_ID}/ai/v1`,compat:{sendSessionAffinityHeaders:!0},reasoning:!0,input:[`text`],cost:{input:.0605,output:.4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072}},deepseek:{"deepseek-v4-flash":{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`openai-completions`,provider:`deepseek`,baseUrl:`https://api.deepseek.com`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek-v4-pro":{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`deepseek`,baseUrl:`https://api.deepseek.com`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1e6,maxTokens:384e3}},fireworks:{"accounts/fireworks/models/deepseek-v4-flash":{id:`accounts/fireworks/models/deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.14,output:.28,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/deepseek-v4-pro":{id:`accounts/fireworks/models/deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.145,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/glm-5p1":{id:`accounts/fireworks/models/glm-5p1`,name:`GLM 5.1`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202800,maxTokens:131072},"accounts/fireworks/models/gpt-oss-120b":{id:`accounts/fireworks/models/gpt-oss-120b`,name:`GPT OSS 120B`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/gpt-oss-20b":{id:`accounts/fireworks/models/gpt-oss-20b`,name:`GPT OSS 20B`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:.035,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/kimi-k2p5":{id:`accounts/fireworks/models/kimi-k2p5`,name:`Kimi K2.5`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"accounts/fireworks/models/kimi-k2p6":{id:`accounts/fireworks/models/kimi-k2p6`,name:`Kimi K2.6`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"accounts/fireworks/models/minimax-m2p5":{id:`accounts/fireworks/models/minimax-m2p5`,name:`MiniMax-M2.5`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:196608,maxTokens:196608},"accounts/fireworks/models/minimax-m2p7":{id:`accounts/fireworks/models/minimax-m2p7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:196608,maxTokens:196608},"accounts/fireworks/models/qwen3p6-plus":{id:`accounts/fireworks/models/qwen3p6-plus`,name:`Qwen 3.6 Plus`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.1,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"accounts/fireworks/routers/glm-5p1-fast":{id:`accounts/fireworks/routers/glm-5p1-fast`,name:`GLM 5.1 Fast`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`],cost:{input:2.8,output:8.8,cacheRead:.52,cacheWrite:0},contextWindow:202800,maxTokens:131072},"accounts/fireworks/routers/kimi-k2p6-turbo":{id:`accounts/fireworks/routers/kimi-k2p6-turbo`,name:`Kimi K2.6 Turbo`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.3,cacheWrite:0},contextWindow:262e3,maxTokens:262e3}},"github-copilot":{"claude-haiku-4.5":{id:`claude-haiku-4.5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsEagerToolInputStreaming:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:32e3},"claude-opus-4.5":{id:`claude-opus-4.5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:16e4,maxTokens:32e3},"claude-opus-4.6":{id:`claude-opus-4.6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"claude-opus-4.7":{id:`claude-opus-4.7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:64e3},"claude-sonnet-4.5":{id:`claude-sonnet-4.5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsEagerToolInputStreaming:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:144e3,maxTokens:32e3},"claude-sonnet-4.6":{id:`claude-sonnet-4.6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:32e3},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5-mini`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:264e3,maxTokens:64e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:264e3,maxTokens:64e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2-Codex`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3-Codex`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},reasoning:!0,thinkingLevelMap:{off:null,minimal:`low`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"grok-code-fast-1":{id:`grok-code-fast-1`,name:`Grok Code Fast 1`,api:`openai-completions`,provider:`github-copilot`,baseUrl:`https://api.individual.githubcopilot.com`,headers:{"User-Agent":`GitHubCopilotChat/0.35.0`,"Editor-Version":`vscode/1.107.0`,"Editor-Plugin-Version":`copilot-chat/0.35.0`,"Copilot-Integration-Id":`vscode-chat`},compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3}},google:{"gemini-2.0-flash":{id:`gemini-2.0-flash`,name:`Gemini 2.0 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.0-flash-lite":{id:`gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash-Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.5-flash":{id:`gemini-2.5-flash`,name:`Gemini 2.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite":{id:`gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash-Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-pro-preview":{id:`gemini-3-pro-preview`,name:`Gemini 3 Pro Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-flash-lite":{id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash Lite`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-flash-lite-preview":{id:`gemini-3.1-flash-lite-preview`,name:`Gemini 3.1 Flash Lite Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview-customtools":{id:`gemini-3.1-pro-preview-customtools`,name:`Gemini 3.1 Pro Preview Custom Tools`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-flash-latest":{id:`gemini-flash-latest`,name:`Gemini Flash Latest`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.075,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-flash-lite-latest":{id:`gemini-flash-lite-latest`,name:`Gemini Flash-Lite Latest`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemma-4-26b-a4b-it":{id:`gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:`MINIMAL`,low:null,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"gemma-4-31b-it":{id:`gemma-4-31b-it`,name:`Gemma 4 31B IT`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,thinkingLevelMap:{off:null,minimal:`MINIMAL`,low:null,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768}},"google-vertex":{"gemini-1.5-flash":{id:`gemini-1.5-flash`,name:`Gemini 1.5 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.01875,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-1.5-flash-8b":{id:`gemini-1.5-flash-8b`,name:`Gemini 1.5 Flash-8B (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.0375,output:.15,cacheRead:.01,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-1.5-pro":{id:`gemini-1.5-pro`,name:`Gemini 1.5 Pro (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:5,cacheRead:.3125,cacheWrite:0},contextWindow:1e6,maxTokens:8192},"gemini-2.0-flash":{id:`gemini-2.0-flash`,name:`Gemini 2.0 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"gemini-2.0-flash-lite":{id:`gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash Lite (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.01875,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash":{id:`gemini-2.5-flash`,name:`Gemini 2.5 Flash (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite":{id:`gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash Lite (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-lite-preview-09-2025":{id:`gemini-2.5-flash-lite-preview-09-2025`,name:`Gemini 2.5 Flash Lite Preview 09-25 (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro":{id:`gemini-2.5-pro`,name:`Gemini 2.5 Pro (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-flash-preview":{id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3-pro-preview":{id:`gemini-3-pro-preview`,name:`Gemini 3 Pro Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"gemini-3.1-pro-preview":{id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro-preview-customtools":{id:`gemini-3.1-pro-preview-customtools`,name:`Gemini 3.1 Pro Preview Custom Tools (Vertex)`,api:`google-vertex`,provider:`google-vertex`,baseUrl:`https://{location}-aiplatform.googleapis.com`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536}},groq:{"deepseek-r1-distill-llama-70b":{id:`deepseek-r1-distill-llama-70b`,name:`DeepSeek R1 Distill Llama 70B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.75,output:.99,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"gemma2-9b-it":{id:`gemma2-9b-it`,name:`Gemma 2 9B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"groq/compound":{id:`groq/compound`,name:`Compound`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"groq/compound-mini":{id:`groq/compound-mini`,name:`Compound Mini`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"llama-3.1-8b-instant":{id:`llama-3.1-8b-instant`,name:`Llama 3.1 8B Instant`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.05,output:.08,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"llama-3.3-70b-versatile":{id:`llama-3.3-70b-versatile`,name:`Llama 3.3 70B Versatile`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"llama3-70b-8192":{id:`llama3-70b-8192`,name:`Llama 3 70B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"llama3-8b-8192":{id:`llama3-8b-8192`,name:`Llama 3 8B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.05,output:.08,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"meta-llama/llama-4-maverick-17b-128e-instruct":{id:`meta-llama/llama-4-maverick-17b-128e-instruct`,name:`Llama 4 Maverick 17B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"meta-llama/llama-4-scout-17b-16e-instruct":{id:`meta-llama/llama-4-scout-17b-16e-instruct`,name:`Llama 4 Scout 17B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.11,output:.34,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"mistral-saba-24b":{id:`mistral-saba-24b`,name:`Mistral Saba 24B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:.79,output:.79,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"moonshotai/kimi-k2-instruct":{id:`moonshotai/kimi-k2-instruct`,name:`Kimi K2 Instruct`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"moonshotai/kimi-k2-instruct-0905":{id:`moonshotai/kimi-k2-instruct-0905`,name:`Kimi K2 Instruct 0905`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:.5,cacheWrite:0},contextWindow:262144,maxTokens:16384},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.0375,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`Safety GPT OSS 20B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"qwen-qwq-32b":{id:`qwen-qwq-32b`,name:`Qwen QwQ 32B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,input:[`text`],cost:{input:.29,output:.39,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen3-32b":{id:`qwen/qwen3-32b`,name:`Qwen3 32B`,api:`openai-completions`,provider:`groq`,baseUrl:`https://api.groq.com/openai/v1`,reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`default`},input:[`text`],cost:{input:.29,output:.59,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:40960}},huggingface:{"MiniMaxAI/MiniMax-M2.1":{id:`MiniMaxAI/MiniMax-M2.1`,name:`MiniMax-M2.1`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.5":{id:`MiniMaxAI/MiniMax-M2.5`,name:`MiniMax-M2.5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.7":{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"Qwen/Qwen3-235B-A22B-Thinking-2507":{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3-235B-A22B-Thinking-2507`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.3,output:3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"Qwen/Qwen3-Coder-480B-A35B-Instruct":{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3-Coder-480B-A35B-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:2,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:66536},"Qwen/Qwen3-Coder-Next":{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3-Coder-Next`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"Qwen/Qwen3-Next-80B-A3B-Instruct":{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen3-Next-80B-A3B-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:66536},"Qwen/Qwen3-Next-80B-A3B-Thinking":{id:`Qwen/Qwen3-Next-80B-A3B-Thinking`,name:`Qwen3-Next-80B-A3B-Thinking`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:.3,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"Qwen/Qwen3.5-397B-A17B":{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5-397B-A17B`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"XiaomiMiMo/MiMo-V2-Flash":{id:`XiaomiMiMo/MiMo-V2-Flash`,name:`MiMo-V2-Flash`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"deepseek-ai/DeepSeek-R1-0528":{id:`deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek-R1-0528`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:3,output:5,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:163840},"deepseek-ai/DeepSeek-V3.2":{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek-V3.2`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.28,output:.4,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:65536},"deepseek-ai/DeepSeek-V4-Pro":{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1048576,maxTokens:393216},"moonshotai/Kimi-K2-Instruct":{id:`moonshotai/Kimi-K2-Instruct`,name:`Kimi-K2-Instruct`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"moonshotai/Kimi-K2-Instruct-0905":{id:`moonshotai/Kimi-K2-Instruct-0905`,name:`Kimi-K2-Instruct-0905`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"moonshotai/Kimi-K2-Thinking":{id:`moonshotai/Kimi-K2-Thinking`,name:`Kimi-K2-Thinking`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.5":{id:`moonshotai/Kimi-K2.5`,name:`Kimi-K2.5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.6":{id:`moonshotai/Kimi-K2.6`,name:`Kimi-K2.6`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144},"zai-org/GLM-4.7":{id:`zai-org/GLM-4.7`,name:`GLM-4.7`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:204800,maxTokens:131072},"zai-org/GLM-4.7-Flash":{id:`zai-org/GLM-4.7-Flash`,name:`GLM-4.7-Flash`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"zai-org/GLM-5":{id:`zai-org/GLM-5`,name:`GLM-5`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:131072},"zai-org/GLM-5.1":{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`huggingface`,baseUrl:`https://router.huggingface.co/v1`,compat:{supportsDeveloperRole:!1},reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:131072}},"kimi-coding":{"kimi-for-coding":{id:`kimi-for-coding`,name:`Kimi For Coding`,api:`anthropic-messages`,provider:`kimi-coding`,baseUrl:`https://api.kimi.com/coding`,headers:{"User-Agent":`KimiCLI/1.5`},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`anthropic-messages`,provider:`kimi-coding`,baseUrl:`https://api.kimi.com/coding`,headers:{"User-Agent":`KimiCLI/1.5`},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768}},minimax:{"MiniMax-M2.7":{id:`MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`minimax`,baseUrl:`https://api.minimax.io/anthropic`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"MiniMax-M2.7-highspeed":{id:`MiniMax-M2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,api:`anthropic-messages`,provider:`minimax`,baseUrl:`https://api.minimax.io/anthropic`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}},"minimax-cn":{"MiniMax-M2.7":{id:`MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`anthropic-messages`,provider:`minimax-cn`,baseUrl:`https://api.minimaxi.com/anthropic`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"MiniMax-M2.7-highspeed":{id:`MiniMax-M2.7-highspeed`,name:`MiniMax-M2.7-highspeed`,api:`anthropic-messages`,provider:`minimax-cn`,baseUrl:`https://api.minimaxi.com/anthropic`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131072}},mistral:{"codestral-latest":{id:`codestral-latest`,name:`Codestral (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"devstral-2512":{id:`devstral-2512`,name:`Devstral 2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"devstral-medium-2507":{id:`devstral-medium-2507`,name:`Devstral Medium`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"devstral-medium-latest":{id:`devstral-medium-latest`,name:`Devstral 2 (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"devstral-small-2505":{id:`devstral-small-2505`,name:`Devstral Small 2505`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"devstral-small-2507":{id:`devstral-small-2507`,name:`Devstral Small`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"labs-devstral-small-2512":{id:`labs-devstral-small-2512`,name:`Devstral Small 2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"magistral-medium-latest":{id:`magistral-medium-latest`,name:`Magistral Medium (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`],cost:{input:2,output:5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"magistral-small":{id:`magistral-small`,name:`Magistral Small`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"ministral-3b-latest":{id:`ministral-3b-latest`,name:`Ministral 3B (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.04,output:.04,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"ministral-8b-latest":{id:`ministral-8b-latest`,name:`Ministral 8B (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"mistral-large-2411":{id:`mistral-large-2411`,name:`Mistral Large 2.1`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"mistral-large-2512":{id:`mistral-large-2512`,name:`Mistral Large 3`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-large-latest":{id:`mistral-large-latest`,name:`Mistral Large (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-2505":{id:`mistral-medium-2505`,name:`Mistral Medium 3`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"mistral-medium-2508":{id:`mistral-medium-2508`,name:`Mistral Medium 3.1`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-2604":{id:`mistral-medium-2604`,name:`Mistral Medium 3.5`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-3.5":{id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-medium-latest":{id:`mistral-medium-latest`,name:`Mistral Medium (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"mistral-nemo":{id:`mistral-nemo`,name:`Mistral Nemo`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"mistral-small-2506":{id:`mistral-small-2506`,name:`Mistral Small 3.2`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"mistral-small-2603":{id:`mistral-small-2603`,name:`Mistral Small 4`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral-small-latest":{id:`mistral-small-latest`,name:`Mistral Small (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"open-mistral-7b":{id:`open-mistral-7b`,name:`Mistral 7B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.25,output:.25,cacheRead:0,cacheWrite:0},contextWindow:8e3,maxTokens:8e3},"open-mixtral-8x22b":{id:`open-mixtral-8x22b`,name:`Mixtral 8x22B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:64e3,maxTokens:64e3},"open-mixtral-8x7b":{id:`open-mixtral-8x7b`,name:`Mixtral 8x7B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`],cost:{input:.7,output:.7,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:32e3},"pixtral-12b":{id:`pixtral-12b`,name:`Pixtral 12B`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"pixtral-large-latest":{id:`pixtral-large-latest`,name:`Pixtral Large (latest)`,api:`mistral-conversations`,provider:`mistral`,baseUrl:`https://api.mistral.ai`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3}},moonshotai:{"kimi-k2-0711-preview":{id:`kimi-k2-0711-preview`,name:`Kimi K2 0711`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:131072,maxTokens:16384},"kimi-k2-0905-preview":{id:`kimi-k2-0905-preview`,name:`Kimi K2 0905`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking-turbo":{id:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-turbo-preview":{id:`kimi-k2-turbo-preview`,name:`Kimi K2 Turbo`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:2.4,output:10,cacheRead:.6,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`moonshotai`,baseUrl:`https://api.moonshot.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144}},"moonshotai-cn":{"kimi-k2-0711-preview":{id:`kimi-k2-0711-preview`,name:`Kimi K2 0711`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:131072,maxTokens:16384},"kimi-k2-0905-preview":{id:`kimi-k2-0905-preview`,name:`Kimi K2 0905`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking":{id:`kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-thinking-turbo":{id:`kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2-turbo-preview":{id:`kimi-k2-turbo-preview`,name:`Kimi K2 Turbo`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!1,input:[`text`],cost:{input:2.4,output:10,cacheRead:.6,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:262144},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`moonshotai-cn`,baseUrl:`https://api.moonshot.cn/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1},reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:262144}},openai:{"gpt-4":{id:`gpt-4`,name:`GPT-4`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"gpt-4-turbo":{id:`gpt-4-turbo`,name:`GPT-4 Turbo`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4.1":{id:`gpt-4.1`,name:`GPT-4.1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-mini":{id:`gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.4,output:1.6,cacheRead:.1,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4.1-nano":{id:`gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.1,output:.4,cacheRead:.025,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"gpt-4o":{id:`gpt-4o`,name:`GPT-4o`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-05-13":{id:`gpt-4o-2024-05-13`,name:`GPT-4o (2024-05-13)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"gpt-4o-2024-08-06":{id:`gpt-4o-2024-08-06`,name:`GPT-4o (2024-08-06)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-2024-11-20":{id:`gpt-4o-2024-11-20`,name:`GPT-4o (2024-11-20)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-4o-mini":{id:`gpt-4o-mini`,name:`GPT-4o mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-chat-latest":{id:`gpt-5-chat-latest`,name:`GPT-5 Chat Latest`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5-Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-mini":{id:`gpt-5-mini`,name:`GPT-5 Mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-pro":{id:`gpt-5-pro`,name:`GPT-5 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-chat-latest":{id:`gpt-5.1-chat-latest`,name:`GPT-5.1 Chat`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-chat-latest":{id:`gpt-5.2-chat-latest`,name:`GPT-5.2 Chat`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-pro":{id:`gpt-5.2-pro`,name:`GPT-5.2 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-chat-latest":{id:`gpt-5.3-chat-latest`,name:`GPT-5.3 Chat (latest)`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!1,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 nano`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:`none`,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},o1:{id:`o1`,name:`o1`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o1-pro":{id:`o1-pro`,name:`o1-pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:150,output:600,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},o3:{id:`o3`,name:`o3`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-deep-research":{id:`o3-deep-research`,name:`o3-deep-research`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-mini":{id:`o3-mini`,name:`o3-mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o3-pro":{id:`o3-pro`,name:`o3-pro`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini":{id:`o4-mini`,name:`o4-mini`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"o4-mini-deep-research":{id:`o4-mini-deep-research`,name:`o4-mini-deep-research`,api:`openai-responses`,provider:`openai`,baseUrl:`https://api.openai.com/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5}},"openai-codex":{"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.3-codex-spark":{id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 mini`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-codex-responses`,provider:`openai-codex`,baseUrl:`https://chatgpt.com/backend-api`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,minimal:`low`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:272e3,maxTokens:128e3}},opencode:{"big-pickle":{id:`big-pickle`,name:`Big Pickle`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:32e3},"claude-haiku-4-5":{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.1,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-1":{id:`claude-opus-4-1`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"claude-opus-4-5":{id:`claude-opus-4-5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"claude-opus-4-6":{id:`claude-opus-4-6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-7":{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-opus-4-8":{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"claude-sonnet-4":{id:`claude-sonnet-4`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-5":{id:`claude-sonnet-4-5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:2e5,maxTokens:64e3},"claude-sonnet-4-6":{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"deepseek-v4-flash-free":{id:`deepseek-v4-flash-free`,name:`DeepSeek V4 Flash Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"gemini-3-flash":{id:`gemini-3-flash`,name:`Gemini 3 Flash`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.1-pro":{id:`gemini-3.1-pro`,name:`Gemini 3.1 Pro Preview`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:`LOW`,medium:null,high:`HIGH`},input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-3.5-flash":{id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`google-generative-ai`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"glm-5":{id:`glm-5`,name:`GLM-5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:204800,maxTokens:131072},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:204800,maxTokens:131072},"gpt-5":{id:`gpt-5`,name:`GPT-5`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-codex":{id:`gpt-5-codex`,name:`GPT-5 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5-nano":{id:`gpt-5-nano`,name:`GPT-5 Nano`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.05,output:.4,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1":{id:`gpt-5.1`,name:`GPT-5.1`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex":{id:`gpt-5.1-codex`,name:`GPT-5.1 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-max":{id:`gpt-5.1-codex-max`,name:`GPT-5.1 Codex Max`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.1-codex-mini":{id:`gpt-5.1-codex-mini`,name:`GPT-5.1 Codex Mini`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.025,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2":{id:`gpt-5.2`,name:`GPT-5.2`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.2-codex":{id:`gpt-5.2-codex`,name:`GPT-5.2 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.3-codex":{id:`gpt-5.3-codex`,name:`GPT-5.3 Codex`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4":{id:`gpt-5.4`,name:`GPT-5.4`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:272e3,maxTokens:128e3},"gpt-5.4-mini":{id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-nano":{id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"gpt-5.4-pro":{id:`gpt-5.4-pro`,name:`GPT-5.4 Pro`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5":{id:`gpt-5.5`,name:`GPT-5.5`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"gpt-5.5-pro":{id:`gpt-5.5-pro`,name:`GPT-5.5 Pro`,api:`openai-responses`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,thinkingLevelMap:{off:null,xhigh:`xhigh`,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"grok-build-0.1":{id:`grok-build-0.1`,name:`Grok Build 0.1`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.2,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2.5-free":{id:`mimo-v2.5-free`,name:`MiMo V2.5 Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"minimax-m2.5":{id:`minimax-m2.5`,name:`MiniMax M2.5`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"minimax-m2.7":{id:`minimax-m2.7`,name:`MiniMax M2.7`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"nemotron-3-super-free":{id:`nemotron-3-super-free`,name:`Nemotron 3 Super Free`,api:`openai-completions`,provider:`opencode`,baseUrl:`https://opencode.ai/zen/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:128e3},"qwen3.5-plus":{id:`qwen3.5-plus`,name:`Qwen3.5 Plus`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:.2,output:1.2,cacheRead:.02,cacheWrite:.25},contextWindow:262144,maxTokens:65536},"qwen3.6-plus":{id:`qwen3.6-plus`,name:`Qwen3.6 Plus`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:.625},contextWindow:262144,maxTokens:65536}},"opencode-go":{"deepseek-v4-flash":{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek-v4-pro":{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.0145,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"glm-5":{id:`glm-5`,name:`GLM-5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3.2,cacheRead:.2,cacheWrite:0},contextWindow:202752,maxTokens:32768},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202752,maxTokens:32768},"kimi-k2.5":{id:`kimi-k2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.1,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kimi-k2.6":{id:`kimi-k2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`string-thinking`},reasoning:!0,thinkingLevelMap:{off:`none`},input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo V2.5`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:1.74,output:3.48,cacheRead:.0145,cacheWrite:0},contextWindow:1048576,maxTokens:128e3},"minimax-m2.5":{id:`minimax-m2.5`,name:`MiniMax M2.5`,api:`anthropic-messages`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:65536},"minimax-m2.7":{id:`minimax-m2.7`,name:`MiniMax M2.7`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"qwen3.5-plus":{id:`qwen3.5-plus`,name:`Qwen3.5 Plus`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`qwen`},reasoning:!0,input:[`text`,`image`],cost:{input:.2,output:1.2,cacheRead:.02,cacheWrite:.25},contextWindow:262144,maxTokens:65536},"qwen3.6-plus":{id:`qwen3.6-plus`,name:`Qwen3.6 Plus`,api:`openai-completions`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go/v1`,compat:{thinkingFormat:`qwen`},reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.05,cacheWrite:.625},contextWindow:262144,maxTokens:65536},"qwen3.7-max":{id:`qwen3.7-max`,name:`Qwen3.7 Max`,api:`anthropic-messages`,provider:`opencode-go`,baseUrl:`https://opencode.ai/zen/go`,reasoning:!0,input:[`text`],cost:{input:2.5,output:7.5,cacheRead:.5,cacheWrite:3.125},contextWindow:1e6,maxTokens:65536}},openrouter:{"ai21/jamba-large-1.7":{id:`ai21/jamba-large-1.7`,name:`AI21: Jamba Large 1.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:8,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"amazon/nova-2-lite-v1":{id:`amazon/nova-2-lite-v1`,name:`Amazon: Nova 2 Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65535},"amazon/nova-lite-v1":{id:`amazon/nova-lite-v1`,name:`Amazon: Nova Lite 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.06,output:.24,cacheRead:0,cacheWrite:0},contextWindow:3e5,maxTokens:5120},"amazon/nova-micro-v1":{id:`amazon/nova-micro-v1`,name:`Amazon: Nova Micro 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.035,output:.14,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:5120},"amazon/nova-premier-v1":{id:`amazon/nova-premier-v1`,name:`Amazon: Nova Premier 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:12.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:32e3},"amazon/nova-pro-v1":{id:`amazon/nova-pro-v1`,name:`Amazon: Nova Pro 1.0`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:3e5,maxTokens:5120},"anthropic/claude-3-haiku":{id:`anthropic/claude-3-haiku`,name:`Anthropic: Claude 3 Haiku`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"anthropic/claude-3.5-haiku":{id:`anthropic/claude-3.5-haiku`,name:`Anthropic: Claude 3.5 Haiku`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"anthropic/claude-haiku-4.5":{id:`anthropic/claude-haiku-4.5`,name:`Anthropic: Claude Haiku 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4":{id:`anthropic/claude-opus-4`,name:`Anthropic: Claude Opus 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.1":{id:`anthropic/claude-opus-4.1`,name:`Anthropic: Claude Opus 4.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.5":{id:`anthropic/claude-opus-4.5`,name:`Anthropic: Claude Opus 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4.6":{id:`anthropic/claude-opus-4.6`,name:`Anthropic: Claude Opus 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.6-fast":{id:`anthropic/claude-opus-4.6-fast`,name:`Anthropic: Claude Opus 4.6 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:30,output:150,cacheRead:3,cacheWrite:37.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7":{id:`anthropic/claude-opus-4.7`,name:`Anthropic: Claude Opus 4.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7-fast":{id:`anthropic/claude-opus-4.7-fast`,name:`Anthropic: Claude Opus 4.7 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:150,cacheRead:3,cacheWrite:37.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8":{id:`anthropic/claude-opus-4.8`,name:`Anthropic: Claude Opus 4.8`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8-fast":{id:`anthropic/claude-opus-4.8-fast`,name:`Anthropic: Claude Opus 4.8 (Fast)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:10,output:50,cacheRead:1,cacheWrite:12.5},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-sonnet-4":{id:`anthropic/claude-sonnet-4`,name:`Anthropic: Claude Sonnet 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.5":{id:`anthropic/claude-sonnet-4.5`,name:`Anthropic: Claude Sonnet 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.6":{id:`anthropic/claude-sonnet-4.6`,name:`Anthropic: Claude Sonnet 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"arcee-ai/trinity-large-thinking":{id:`arcee-ai/trinity-large-thinking`,name:`Arcee AI: Trinity Large Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.22,output:.85,cacheRead:.06,cacheWrite:0},contextWindow:262144,maxTokens:262144},"arcee-ai/trinity-mini":{id:`arcee-ai/trinity-mini`,name:`Arcee AI: Trinity Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.045,output:.15,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"arcee-ai/virtuoso-large":{id:`arcee-ai/virtuoso-large`,name:`Arcee AI: Virtuoso Large`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.75,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:64e3},auto:{id:`auto`,name:`Auto`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"baidu/ernie-4.5-21b-a3b":{id:`baidu/ernie-4.5-21b-a3b`,name:`Baidu: ERNIE 4.5 21B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.07,output:.28,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8e3},"baidu/ernie-4.5-vl-28b-a3b":{id:`baidu/ernie-4.5-vl-28b-a3b`,name:`Baidu: ERNIE 4.5 VL 28B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.56,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8e3},"bytedance-seed/seed-1.6":{id:`bytedance-seed/seed-1.6`,name:`ByteDance Seed: Seed 1.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"bytedance-seed/seed-1.6-flash":{id:`bytedance-seed/seed-1.6-flash`,name:`ByteDance Seed: Seed 1.6 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"bytedance-seed/seed-2.0-lite":{id:`bytedance-seed/seed-2.0-lite`,name:`ByteDance Seed: Seed-2.0-Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"bytedance-seed/seed-2.0-mini":{id:`bytedance-seed/seed-2.0-mini`,name:`ByteDance Seed: Seed-2.0-Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"cohere/command-r-08-2024":{id:`cohere/command-r-08-2024`,name:`Cohere: Command R (08-2024)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"cohere/command-r-plus-08-2024":{id:`cohere/command-r-plus-08-2024`,name:`Cohere: Command R+ (08-2024)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"deepseek/deepseek-chat":{id:`deepseek/deepseek-chat`,name:`DeepSeek: DeepSeek V3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.2288,output:.9144,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16e3},"deepseek/deepseek-chat-v3-0324":{id:`deepseek/deepseek-chat-v3-0324`,name:`DeepSeek: DeepSeek V3 0324`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.19999999999999998,output:.77,cacheRead:.135,cacheWrite:0},contextWindow:163840,maxTokens:16384},"deepseek/deepseek-chat-v3.1":{id:`deepseek/deepseek-chat-v3.1`,name:`DeepSeek: DeepSeek V3.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.21,output:.7899999999999999,cacheRead:.13,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-r1":{id:`deepseek/deepseek-r1`,name:`DeepSeek: R1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16e3},"deepseek/deepseek-r1-0528":{id:`deepseek/deepseek-r1-0528`,name:`DeepSeek: R1 0528`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.5,output:2.1500000000000004,cacheRead:.35,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-v3.1-terminus":{id:`deepseek/deepseek-v3.1-terminus`,name:`DeepSeek: DeepSeek V3.1 Terminus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27,output:.95,cacheRead:.13,cacheWrite:0},contextWindow:163840,maxTokens:32768},"deepseek/deepseek-v3.2":{id:`deepseek/deepseek-v3.2`,name:`DeepSeek: DeepSeek V3.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.252,output:.378,cacheRead:.0252,cacheWrite:0},contextWindow:131072,maxTokens:65536},"deepseek/deepseek-v3.2-exp":{id:`deepseek/deepseek-v3.2-exp`,name:`DeepSeek: DeepSeek V3.2 Exp`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27,output:.41,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:65536},"deepseek/deepseek-v4-flash":{id:`deepseek/deepseek-v4-flash`,name:`DeepSeek: DeepSeek V4 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:.09999999999999999,output:.19999999999999998,cacheRead:.02,cacheWrite:0},contextWindow:1048576,maxTokens:16384},"deepseek/deepseek-v4-flash:free":{id:`deepseek/deepseek-v4-flash:free`,name:`DeepSeek: DeepSeek V4 Flash (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:384e3},"deepseek/deepseek-v4-pro":{id:`deepseek/deepseek-v4-pro`,name:`DeepSeek: DeepSeek V4 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`xhigh`},input:[`text`],cost:{input:.435,output:.87,cacheRead:.003625,cacheWrite:0},contextWindow:1048576,maxTokens:384e3},"essentialai/rnj-1-instruct":{id:`essentialai/rnj-1-instruct`,name:`EssentialAI: Rnj 1 Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:4096},"google/gemini-2.0-flash-001":{id:`google/gemini-2.0-flash-001`,name:`Google: Gemini 2.0 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1e6,maxTokens:8192},"google/gemini-2.0-flash-lite-001":{id:`google/gemini-2.0-flash-lite-001`,name:`Google: Gemini 2.0 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.5-flash":{id:`google/gemini-2.5-flash`,name:`Google: Gemini 2.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-flash-lite":{id:`google/gemini-2.5-flash-lite`,name:`Google: Gemini 2.5 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-flash-lite-preview-09-2025":{id:`google/gemini-2.5-flash-lite-preview-09-2025`,name:`Google: Gemini 2.5 Flash Lite Preview 09-2025`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65535},"google/gemini-2.5-pro":{id:`google/gemini-2.5-pro`,name:`Google: Gemini 2.5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro-preview":{id:`google/gemini-2.5-pro-preview`,name:`Google: Gemini 2.5 Pro Preview 06-05`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro-preview-05-06":{id:`google/gemini-2.5-pro-preview-05-06`,name:`Google: Gemini 2.5 Pro Preview 05-06`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:.375},contextWindow:1048576,maxTokens:65535},"google/gemini-3-flash-preview":{id:`google/gemini-3-flash-preview`,name:`Google: Gemini 3 Flash Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.049999999999999996,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-flash-lite":{id:`google/gemini-3.1-flash-lite`,name:`Google: Gemini 3.1 Flash Lite`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-flash-lite-preview":{id:`google/gemini-3.1-flash-lite-preview`,name:`Google: Gemini 3.1 Flash Lite Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.024999999999999998,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-pro-preview":{id:`google/gemini-3.1-pro-preview`,name:`Google: Gemini 3.1 Pro Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"google/gemini-3.1-pro-preview-customtools":{id:`google/gemini-3.1-pro-preview-customtools`,name:`Google: Gemini 3.1 Pro Preview Custom Tools`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048756,maxTokens:65536},"google/gemini-3.5-flash":{id:`google/gemini-3.5-flash`,name:`Google: Gemini 3.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"google/gemma-3-12b-it":{id:`google/gemma-3-12b-it`,name:`Google: Gemma 3 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.04,output:.13,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"google/gemma-3-27b-it":{id:`google/gemma-3-27b-it`,name:`Google: Gemma 3 27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.16,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"google/gemma-4-26b-a4b-it":{id:`google/gemma-4-26b-a4b-it`,name:`Google: Gemma 4 26B A4B `,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.06,output:.33,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"google/gemma-4-26b-a4b-it:free":{id:`google/gemma-4-26b-a4b-it:free`,name:`Google: Gemma 4 26B A4B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"google/gemma-4-31b-it":{id:`google/gemma-4-31b-it`,name:`Google: Gemma 4 31B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.12,output:.37,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"google/gemma-4-31b-it:free":{id:`google/gemma-4-31b-it:free`,name:`Google: Gemma 4 31B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"ibm-granite/granite-4.1-8b":{id:`ibm-granite/granite-4.1-8b`,name:`IBM: Granite 4.1 8B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.049999999999999996,output:.09999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:131072},"inception/mercury-2":{id:`inception/mercury-2`,name:`Inception: Mercury 2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{off:null},input:[`text`],cost:{input:.25,output:.75,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:5e4},"inclusionai/ling-2.6-1t":{id:`inclusionai/ling-2.6-1t`,name:`inclusionAI: Ling-2.6-1T`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.075,output:.625,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:32768},"inclusionai/ling-2.6-flash":{id:`inclusionai/ling-2.6-flash`,name:`inclusionAI: Ling-2.6-flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.01,output:.03,cacheRead:.002,cacheWrite:0},contextWindow:262144,maxTokens:32768},"inclusionai/ring-2.6-1t":{id:`inclusionai/ring-2.6-1t`,name:`inclusionAI: Ring-2.6-1T`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.625,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:65536},"kwaipilot/kat-coder-pro-v2":{id:`kwaipilot/kat-coder-pro-v2`,name:`Kwaipilot: KAT-Coder-Pro V2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:256e3,maxTokens:8e4},"meta-llama/llama-3.1-70b-instruct":{id:`meta-llama/llama-3.1-70b-instruct`,name:`Meta: Llama 3.1 70B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.1-8b-instruct":{id:`meta-llama/llama-3.1-8b-instruct`,name:`Meta: Llama 3.1 8B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.02,output:.049999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.3-70b-instruct":{id:`meta-llama/llama-3.3-70b-instruct`,name:`Meta: Llama 3.3 70B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.32,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"meta-llama/llama-3.3-70b-instruct:free":{id:`meta-llama/llama-3.3-70b-instruct:free`,name:`Meta: Llama 3.3 70B Instruct (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"meta-llama/llama-4-scout":{id:`meta-llama/llama-4-scout`,name:`Meta: Llama 4 Scout`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.3,cacheRead:0,cacheWrite:0},contextWindow:1e7,maxTokens:16384},"minimax/minimax-m1":{id:`minimax/minimax-m1`,name:`MiniMax: MiniMax M1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.39999999999999997,output:2.2,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:4e4},"minimax/minimax-m2":{id:`minimax/minimax-m2`,name:`MiniMax: MiniMax M2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.255,output:1,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.1":{id:`minimax/minimax-m2.1`,name:`MiniMax: MiniMax M2.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.29,output:.95,cacheRead:.03,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.5":{id:`minimax/minimax-m2.5`,name:`MiniMax: MiniMax M2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:1.15,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:196608},"minimax/minimax-m2.5:free":{id:`minimax/minimax-m2.5:free`,name:`MiniMax: MiniMax M2.5 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:8192},"minimax/minimax-m2.7":{id:`minimax/minimax-m2.7`,name:`MiniMax: MiniMax M2.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.27899999999999997,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"mistralai/codestral-2508":{id:`mistralai/codestral-2508`,name:`Mistral: Codestral 2508`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.3,output:.8999999999999999,cacheRead:.03,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"mistralai/devstral-2512":{id:`mistralai/devstral-2512`,name:`Mistral: Devstral 2 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/devstral-medium":{id:`mistralai/devstral-medium`,name:`Mistral: Devstral Medium`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/devstral-small":{id:`mistralai/devstral-small`,name:`Mistral: Devstral Small 1.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/ministral-14b-2512":{id:`mistralai/ministral-14b-2512`,name:`Mistral: Ministral 3 14B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.19999999999999998,cacheRead:.02,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/ministral-3b-2512":{id:`mistralai/ministral-3b-2512`,name:`Mistral: Ministral 3 3B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:.01,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/ministral-8b-2512":{id:`mistralai/ministral-8b-2512`,name:`Mistral: Ministral 3 8B 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-large":{id:`mistralai/mistral-large`,name:`Mistral Large`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"mistralai/mistral-large-2407":{id:`mistralai/mistral-large-2407`,name:`Mistral Large 2407`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-large-2411":{id:`mistralai/mistral-large-2411`,name:`Mistral Large 2411`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-large-2512":{id:`mistralai/mistral-large-2512`,name:`Mistral: Mistral Large 3 2512`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.5,output:1.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-medium-3":{id:`mistralai/mistral-medium-3`,name:`Mistral: Mistral Medium 3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-medium-3-5":{id:`mistralai/mistral-medium-3-5`,name:`Mistral: Mistral Medium 3.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-medium-3.1":{id:`mistralai/mistral-medium-3.1`,name:`Mistral: Mistral Medium 3.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.04,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-nemo":{id:`mistralai/mistral-nemo`,name:`Mistral: Mistral Nemo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.02,output:.03,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/mistral-saba":{id:`mistralai/mistral-saba`,name:`Mistral: Saba`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.19999999999999998,output:.6,cacheRead:.02,cacheWrite:0},contextWindow:32768,maxTokens:4096},"mistralai/mistral-small-2603":{id:`mistralai/mistral-small-2603`,name:`Mistral: Mistral Small 4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:262144,maxTokens:4096},"mistralai/mistral-small-3.2-24b-instruct":{id:`mistralai/mistral-small-3.2-24b-instruct`,name:`Mistral: Mistral Small 3.2 24B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"mistralai/mixtral-8x22b-instruct":{id:`mistralai/mixtral-8x22b-instruct`,name:`Mistral: Mixtral 8x22B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:65536,maxTokens:4096},"mistralai/pixtral-large-2411":{id:`mistralai/pixtral-large-2411`,name:`Mistral: Pixtral Large 2411`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:4096},"mistralai/voxtral-small-24b-2507":{id:`mistralai/voxtral-small-24b-2507`,name:`Mistral: Voxtral Small 24B 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:32e3,maxTokens:4096},"moonshotai/kimi-k2":{id:`moonshotai/kimi-k2`,name:`MoonshotAI: Kimi K2 0711`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.5700000000000001,output:2.3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"moonshotai/kimi-k2-0905":{id:`moonshotai/kimi-k2-0905`,name:`MoonshotAI: Kimi K2 0905`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/kimi-k2-thinking":{id:`moonshotai/kimi-k2-thinking`,name:`MoonshotAI: Kimi K2 Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/kimi-k2.5":{id:`moonshotai/kimi-k2.5`,name:`MoonshotAI: Kimi K2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.41,output:2.06,cacheRead:.07,cacheWrite:0},contextWindow:262144,maxTokens:4096},"moonshotai/kimi-k2.6":{id:`moonshotai/kimi-k2.6`,name:`MoonshotAI: Kimi K2.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.73,output:3.49,cacheRead:.25,cacheWrite:0},contextWindow:262144,maxTokens:262142},"moonshotai/kimi-k2.6:free":{id:`moonshotai/kimi-k2.6:free`,name:`MoonshotAI: Kimi K2.6 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"nex-agi/deepseek-v3.1-nex-n1":{id:`nex-agi/deepseek-v3.1-nex-n1`,name:`Nex AGI: DeepSeek V3.1 Nex N1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.135,output:.5,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:163840},"nvidia/llama-3.3-nemotron-super-49b-v1.5":{id:`nvidia/llama-3.3-nemotron-super-49b-v1.5`,name:`NVIDIA: Llama 3.3 Nemotron Super 49B V1.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"nvidia/nemotron-3-nano-30b-a3b":{id:`nvidia/nemotron-3-nano-30b-a3b`,name:`NVIDIA: Nemotron 3 Nano 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:228e3},"nvidia/nemotron-3-nano-30b-a3b:free":{id:`nvidia/nemotron-3-nano-30b-a3b:free`,name:`NVIDIA: Nemotron 3 Nano 30B A3B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free":{id:`nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free`,name:`NVIDIA: Nemotron 3 Nano Omni (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536},"nvidia/nemotron-3-super-120b-a12b":{id:`nvidia/nemotron-3-super-120b-a12b`,name:`NVIDIA: Nemotron 3 Super`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:4096},"nvidia/nemotron-3-super-120b-a12b:free":{id:`nvidia/nemotron-3-super-120b-a12b:free`,name:`NVIDIA: Nemotron 3 Super (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:262144},"nvidia/nemotron-nano-12b-v2-vl:free":{id:`nvidia/nemotron-nano-12b-v2-vl:free`,name:`NVIDIA: Nemotron Nano 12B 2 VL (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"nvidia/nemotron-nano-9b-v2":{id:`nvidia/nemotron-nano-9b-v2`,name:`NVIDIA: Nemotron Nano 9B V2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.04,output:.16,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"nvidia/nemotron-nano-9b-v2:free":{id:`nvidia/nemotron-nano-9b-v2:free`,name:`NVIDIA: Nemotron Nano 9B V2 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-3.5-turbo":{id:`openai/gpt-3.5-turbo`,name:`OpenAI: GPT-3.5 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:16385,maxTokens:4096},"openai/gpt-3.5-turbo-0613":{id:`openai/gpt-3.5-turbo-0613`,name:`OpenAI: GPT-3.5 Turbo (older v0613)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:2,cacheRead:0,cacheWrite:0},contextWindow:4095,maxTokens:4096},"openai/gpt-3.5-turbo-16k":{id:`openai/gpt-3.5-turbo-16k`,name:`OpenAI: GPT-3.5 Turbo 16k`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:3,output:4,cacheRead:0,cacheWrite:0},contextWindow:16385,maxTokens:4096},"openai/gpt-4":{id:`openai/gpt-4`,name:`OpenAI: GPT-4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8191,maxTokens:4096},"openai/gpt-4-0314":{id:`openai/gpt-4-0314`,name:`OpenAI: GPT-4 (older v0314)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:30,output:60,cacheRead:0,cacheWrite:0},contextWindow:8191,maxTokens:4096},"openai/gpt-4-1106-preview":{id:`openai/gpt-4-1106-preview`,name:`OpenAI: GPT-4 Turbo (older v1106)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4-turbo":{id:`openai/gpt-4-turbo`,name:`OpenAI: GPT-4 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4-turbo-preview":{id:`openai/gpt-4-turbo-preview`,name:`OpenAI: GPT-4 Turbo Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4.1":{id:`openai/gpt-4.1`,name:`OpenAI: GPT-4.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:4096},"openai/gpt-4.1-mini":{id:`openai/gpt-4.1-mini`,name:`OpenAI: GPT-4.1 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:1.5999999999999999,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-nano":{id:`openai/gpt-4.1-nano`,name:`OpenAI: GPT-4.1 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4o":{id:`openai/gpt-4o`,name:`OpenAI: GPT-4o`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-2024-05-13":{id:`openai/gpt-4o-2024-05-13`,name:`OpenAI: GPT-4o (2024-05-13)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4o-2024-08-06":{id:`openai/gpt-4o-2024-08-06`,name:`OpenAI: GPT-4o (2024-08-06)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-2024-11-20":{id:`openai/gpt-4o-2024-11-20`,name:`OpenAI: GPT-4o (2024-11-20)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-audio-preview":{id:`openai/gpt-4o-audio-preview`,name:`OpenAI: GPT-4o Audio`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini":{id:`openai/gpt-4o-mini`,name:`OpenAI: GPT-4o-mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini-2024-07-18":{id:`openai/gpt-4o-mini-2024-07-18`,name:`OpenAI: GPT-4o-mini (2024-07-18)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5":{id:`openai/gpt-5`,name:`OpenAI: GPT-5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-codex":{id:`openai/gpt-5-codex`,name:`OpenAI: GPT-5 Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-mini":{id:`openai/gpt-5-mini`,name:`OpenAI: GPT-5 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-nano":{id:`openai/gpt-5-nano`,name:`OpenAI: GPT-5 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:4e5,maxTokens:4096},"openai/gpt-5-pro":{id:`openai/gpt-5-pro`,name:`OpenAI: GPT-5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1":{id:`openai/gpt-5.1`,name:`OpenAI: GPT-5.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-chat":{id:`openai/gpt-5.1-chat`,name:`OpenAI: GPT-5.1 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:128e3,maxTokens:32e3},"openai/gpt-5.1-codex":{id:`openai/gpt-5.1-codex`,name:`OpenAI: GPT-5.1-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.13,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-max":{id:`openai/gpt-5.1-codex-max`,name:`OpenAI: GPT-5.1-Codex-Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-mini":{id:`openai/gpt-5.1-codex-mini`,name:`OpenAI: GPT-5.1-Codex-Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:1e5},"openai/gpt-5.2":{id:`openai/gpt-5.2`,name:`OpenAI: GPT-5.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-chat":{id:`openai/gpt-5.2-chat`,name:`OpenAI: GPT-5.2 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.2-codex":{id:`openai/gpt-5.2-codex`,name:`OpenAI: GPT-5.2-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-pro":{id:`openai/gpt-5.2-pro`,name:`OpenAI: GPT-5.2 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.3-chat":{id:`openai/gpt-5.3-chat`,name:`OpenAI: GPT-5.3 Chat`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.3-codex":{id:`openai/gpt-5.3-codex`,name:`OpenAI: GPT-5.3-Codex`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4":{id:`openai/gpt-5.4`,name:`OpenAI: GPT-5.4`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.4-mini":{id:`openai/gpt-5.4-mini`,name:`OpenAI: GPT-5.4 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-nano":{id:`openai/gpt-5.4-nano`,name:`OpenAI: GPT-5.4 Nano`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.19999999999999998,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-pro":{id:`openai/gpt-5.4-pro`,name:`OpenAI: GPT-5.4 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5":{id:`openai/gpt-5.5`,name:`OpenAI: GPT-5.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5-pro":{id:`openai/gpt-5.5-pro`,name:`OpenAI: GPT-5.5 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,off:null,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-audio":{id:`openai/gpt-audio`,name:`OpenAI: GPT Audio`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-audio-mini":{id:`openai/gpt-audio-mini`,name:`OpenAI: GPT Audio Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:2.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-chat-latest":{id:`openai/gpt-chat-latest`,name:`OpenAI: GPT Chat Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`OpenAI: gpt-oss-120b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.039,output:.18,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:4096},"openai/gpt-oss-120b:free":{id:`openai/gpt-oss-120b:free`,name:`OpenAI: gpt-oss-120b (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`OpenAI: gpt-oss-20b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.03,output:.14,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-oss-20b:free":{id:`openai/gpt-oss-20b:free`,name:`OpenAI: gpt-oss-20b (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`OpenAI: gpt-oss-safeguard-20b`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/o1":{id:`openai/o1`,name:`OpenAI: o1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3":{id:`openai/o3`,name:`OpenAI: o3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-deep-research":{id:`openai/o3-deep-research`,name:`OpenAI: o3 Deep Research`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini":{id:`openai/o3-mini`,name:`OpenAI: o3 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini-high":{id:`openai/o3-mini-high`,name:`OpenAI: o3 Mini High`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-pro":{id:`openai/o3-pro`,name:`OpenAI: o3 Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini":{id:`openai/o4-mini`,name:`OpenAI: o4 Mini`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini-deep-research":{id:`openai/o4-mini-deep-research`,name:`OpenAI: o4 Mini Deep Research`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini-high":{id:`openai/o4-mini-high`,name:`OpenAI: o4 Mini High`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openrouter/auto":{id:`openrouter/auto`,name:`Auto Router`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:-1e6,output:-1e6,cacheRead:0,cacheWrite:0},contextWindow:2e6,maxTokens:4096},"openrouter/free":{id:`openrouter/free`,name:`Free Models Router`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:4096},"openrouter/owl-alpha":{id:`openrouter/owl-alpha`,name:`Owl Alpha`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048756,maxTokens:262144},"poolside/laguna-m.1:free":{id:`poolside/laguna-m.1:free`,name:`Poolside: Laguna M.1 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"poolside/laguna-xs.2:free":{id:`poolside/laguna-xs.2:free`,name:`Poolside: Laguna XS.2 (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"prime-intellect/intellect-3":{id:`prime-intellect/intellect-3`,name:`Prime Intellect: INTELLECT-3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.19999999999999998,output:1.1,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"qwen/qwen-2.5-72b-instruct":{id:`qwen/qwen-2.5-72b-instruct`,name:`Qwen2.5 72B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.36,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen-2.5-7b-instruct":{id:`qwen/qwen-2.5-7b-instruct`,name:`Qwen: Qwen2.5 7B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.04,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen-plus":{id:`qwen/qwen-plus`,name:`Qwen: Qwen-Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.26,output:.78,cacheRead:.052000000000000005,cacheWrite:.325},contextWindow:1e6,maxTokens:32768},"qwen/qwen-plus-2025-07-28":{id:`qwen/qwen-plus-2025-07-28`,name:`Qwen: Qwen Plus 0728`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.26,output:.78,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:32768},"qwen/qwen-plus-2025-07-28:thinking":{id:`qwen/qwen-plus-2025-07-28:thinking`,name:`Qwen: Qwen Plus 0728 (thinking)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.26,output:.78,cacheRead:0,cacheWrite:.325},contextWindow:1e6,maxTokens:32768},"qwen/qwen3-14b":{id:`qwen/qwen3-14b`,name:`Qwen: Qwen3 14B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.24,cacheRead:0,cacheWrite:0},contextWindow:131702,maxTokens:40960},"qwen/qwen3-235b-a22b":{id:`qwen/qwen3-235b-a22b`,name:`Qwen: Qwen3 235B A22B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.45499999999999996,output:1.8199999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"qwen/qwen3-235b-a22b-2507":{id:`qwen/qwen3-235b-a22b-2507`,name:`Qwen: Qwen3 235B A22B Instruct 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.071,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-235b-a22b-thinking-2507":{id:`qwen/qwen3-235b-a22b-thinking-2507`,name:`Qwen: Qwen3 235B A22B Thinking 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.14950000000000002,output:1.495,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3-30b-a3b":{id:`qwen/qwen3-30b-a3b`,name:`Qwen: Qwen3 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:2e4},"qwen/qwen3-30b-a3b-instruct-2507":{id:`qwen/qwen3-30b-a3b-instruct-2507`,name:`Qwen: Qwen3 30B A3B Instruct 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3-30b-a3b-thinking-2507":{id:`qwen/qwen3-30b-a3b-thinking-2507`,name:`Qwen: Qwen3 30B A3B Thinking 2507`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.08,output:.39999999999999997,cacheRead:.08,cacheWrite:0},contextWindow:131072,maxTokens:131072},"qwen/qwen3-32b":{id:`qwen/qwen3-32b`,name:`Qwen: Qwen3 32B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.08,output:.28,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"qwen/qwen3-8b":{id:`qwen/qwen3-8b`,name:`Qwen: Qwen3 8B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:8192},"qwen/qwen3-coder":{id:`qwen/qwen3-coder`,name:`Qwen: Qwen3 Coder 480B A35B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.22,output:1.7999999999999998,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"qwen/qwen3-coder-30b-a3b-instruct":{id:`qwen/qwen3-coder-30b-a3b-instruct`,name:`Qwen: Qwen3 Coder 30B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.07,output:.27,cacheRead:0,cacheWrite:0},contextWindow:16e4,maxTokens:32768},"qwen/qwen3-coder-flash":{id:`qwen/qwen3-coder-flash`,name:`Qwen: Qwen3 Coder Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.195,output:.975,cacheRead:.039,cacheWrite:.24375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3-coder-next":{id:`qwen/qwen3-coder-next`,name:`Qwen: Qwen3 Coder Next`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.11,output:.7999999999999999,cacheRead:.07,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3-coder-plus":{id:`qwen/qwen3-coder-plus`,name:`Qwen: Qwen3 Coder Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.65,output:3.25,cacheRead:.13,cacheWrite:.8125},contextWindow:1e6,maxTokens:65536},"qwen/qwen3-coder:free":{id:`qwen/qwen3-coder:free`,name:`Qwen: Qwen3 Coder 480B A35B (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:1048576,maxTokens:262e3},"qwen/qwen3-max":{id:`qwen/qwen3-max`,name:`Qwen: Qwen3 Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.78,output:3.9,cacheRead:.156,cacheWrite:.975},contextWindow:262144,maxTokens:32768},"qwen/qwen3-max-thinking":{id:`qwen/qwen3-max-thinking`,name:`Qwen: Qwen3 Max Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.78,output:3.9,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-next-80b-a3b-instruct":{id:`qwen/qwen3-next-80b-a3b-instruct`,name:`Qwen: Qwen3 Next 80B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09,output:1.1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-next-80b-a3b-instruct:free":{id:`qwen/qwen3-next-80b-a3b-instruct:free`,name:`Qwen: Qwen3 Next 80B A3B Instruct (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3-next-80b-a3b-thinking":{id:`qwen/qwen3-next-80b-a3b-thinking`,name:`Qwen: Qwen3 Next 80B A3B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.0975,output:.78,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-235b-a22b-instruct":{id:`qwen/qwen3-vl-235b-a22b-instruct`,name:`Qwen: Qwen3 VL 235B A22B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.88,cacheRead:.11,cacheWrite:0},contextWindow:262144,maxTokens:16384},"qwen/qwen3-vl-235b-a22b-thinking":{id:`qwen/qwen3-vl-235b-a22b-thinking`,name:`Qwen: Qwen3 VL 235B A22B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:2.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen3-vl-30b-a3b-instruct":{id:`qwen/qwen3-vl-30b-a3b-instruct`,name:`Qwen: Qwen3 VL 30B A3B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.13,output:.52,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-30b-a3b-thinking":{id:`qwen/qwen3-vl-30b-a3b-thinking`,name:`Qwen: Qwen3 VL 30B A3B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.13,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"qwen/qwen3-vl-32b-instruct":{id:`qwen/qwen3-vl-32b-instruct`,name:`Qwen: Qwen3 VL 32B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.10400000000000001,output:.41600000000000004,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:32768},"qwen/qwen3-vl-8b-instruct":{id:`qwen/qwen3-vl-8b-instruct`,name:`Qwen: Qwen3 VL 8B Instruct`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.08,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:32768},"qwen/qwen3-vl-8b-thinking":{id:`qwen/qwen3-vl-8b-thinking`,name:`Qwen: Qwen3 VL 8B Thinking`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.117,output:1.365,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:32768},"qwen/qwen3.5-122b-a10b":{id:`qwen/qwen3.5-122b-a10b`,name:`Qwen: Qwen3.5-122B-A10B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:2.08,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"qwen/qwen3.5-27b":{id:`qwen/qwen3.5-27b`,name:`Qwen: Qwen3.5-27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"qwen/qwen3.5-35b-a3b":{id:`qwen/qwen3.5-35b-a3b`,name:`Qwen: Qwen3.5-35B-A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.13899999999999998,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:4096},"qwen/qwen3.5-397b-a17b":{id:`qwen/qwen3.5-397b-a17b`,name:`Qwen: Qwen3.5 397B A17B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.39,output:2.34,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"qwen/qwen3.5-9b":{id:`qwen/qwen3.5-9b`,name:`Qwen: Qwen3.5-9B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:81920},"qwen/qwen3.5-flash-02-23":{id:`qwen/qwen3.5-flash-02-23`,name:`Qwen: Qwen3.5-Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.065,output:.26,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.5-plus-02-15":{id:`qwen/qwen3.5-plus-02-15`,name:`Qwen: Qwen3.5 Plus 2026-02-15`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.26,output:1.56,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.5-plus-20260420":{id:`qwen/qwen3.5-plus-20260420`,name:`Qwen: Qwen3.5 Plus 2026-04-20`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:1.7999999999999998,cacheRead:0,cacheWrite:.375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.6-27b":{id:`qwen/qwen3.6-27b`,name:`Qwen: Qwen3.6 27B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.29,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262140},"qwen/qwen3.6-35b-a3b":{id:`qwen/qwen3.6-35b-a3b`,name:`Qwen: Qwen3.6 35B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:1,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262140},"qwen/qwen3.6-flash":{id:`qwen/qwen3.6-flash`,name:`Qwen: Qwen3.6 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:1.125,cacheRead:0,cacheWrite:.234375},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.6-max-preview":{id:`qwen/qwen3.6-max-preview`,name:`Qwen: Qwen3.6 Max Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.04,output:6.24,cacheRead:0,cacheWrite:1.3},contextWindow:262144,maxTokens:65536},"qwen/qwen3.6-plus":{id:`qwen/qwen3.6-plus`,name:`Qwen: Qwen3.6 Plus`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.325,output:1.95,cacheRead:0,cacheWrite:.40625},contextWindow:1e6,maxTokens:65536},"qwen/qwen3.7-max":{id:`qwen/qwen3.7-max`,name:`Qwen: Qwen3.7 Max`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.25,output:3.75,cacheRead:.25,cacheWrite:1.5625},contextWindow:1e6,maxTokens:65536},"rekaai/reka-edge":{id:`rekaai/reka-edge`,name:`Reka Edge`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:16384,maxTokens:16384},"relace/relace-search":{id:`relace/relace-search`,name:`Relace: Relace Search`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:128e3},"sao10k/l3-euryale-70b":{id:`sao10k/l3-euryale-70b`,name:`Sao10k: Llama 3 Euryale 70B v2.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:1.48,output:1.48,cacheRead:0,cacheWrite:0},contextWindow:8192,maxTokens:8192},"sao10k/l3.1-euryale-70b":{id:`sao10k/l3.1-euryale-70b`,name:`Sao10K: Llama 3.1 Euryale 70B v2.2`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.85,output:.85,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:16384},"stepfun/step-3.5-flash":{id:`stepfun/step-3.5-flash`,name:`StepFun: Step 3.5 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.3,cacheRead:.02,cacheWrite:0},contextWindow:262144,maxTokens:16384},"tencent/hy3-preview":{id:`tencent/hy3-preview`,name:`Tencent: Hy3 preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.063,output:.21,cacheRead:.020999999999999998,cacheWrite:0},contextWindow:262144,maxTokens:4096},"thedrummer/rocinante-12b":{id:`thedrummer/rocinante-12b`,name:`TheDrummer: Rocinante 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.16999999999999998,output:.43,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"thedrummer/unslopnemo-12b":{id:`thedrummer/unslopnemo-12b`,name:`TheDrummer: UnslopNemo 12B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"upstage/solar-pro-3":{id:`upstage/solar-pro-3`,name:`Upstage: Solar Pro 3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:.015,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"x-ai/grok-4.20":{id:`x-ai/grok-4.20`,name:`xAI: Grok 4.20`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:4096},"x-ai/grok-4.3":{id:`x-ai/grok-4.3`,name:`xAI: Grok 4.3`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:4096},"x-ai/grok-build-0.1":{id:`x-ai/grok-build-0.1`,name:`xAI: Grok Build 0.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:256e3,maxTokens:4096},"xiaomi/mimo-v2-flash":{id:`xiaomi/mimo-v2-flash`,name:`Xiaomi: MiMo-V2-Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"xiaomi/mimo-v2-omni":{id:`xiaomi/mimo-v2-omni`,name:`Xiaomi: MiMo-V2-Omni`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:65536},"xiaomi/mimo-v2-pro":{id:`xiaomi/mimo-v2-pro`,name:`Xiaomi: MiMo-V2-Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"xiaomi/mimo-v2.5":{id:`xiaomi/mimo-v2.5`,name:`Xiaomi: MiMo-V2.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"xiaomi/mimo-v2.5-pro":{id:`xiaomi/mimo-v2.5-pro`,name:`Xiaomi: MiMo-V2.5-Pro`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"z-ai/glm-4-32b":{id:`z-ai/glm-4-32b`,name:`Z.ai: GLM 4 32B `,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"z-ai/glm-4.5":{id:`z-ai/glm-4.5`,name:`Z.ai: GLM 4.5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:131072,maxTokens:98304},"z-ai/glm-4.5-air":{id:`z-ai/glm-4.5-air`,name:`Z.ai: GLM 4.5 Air`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.125,output:.85,cacheRead:.06,cacheWrite:0},contextWindow:131072,maxTokens:131070},"z-ai/glm-4.5-air:free":{id:`z-ai/glm-4.5-air:free`,name:`Z.ai: GLM 4.5 Air (free)`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:96e3},"z-ai/glm-4.5v":{id:`z-ai/glm-4.5v`,name:`Z.ai: GLM 4.5V`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:1.7999999999999998,cacheRead:.11,cacheWrite:0},contextWindow:65536,maxTokens:16384},"z-ai/glm-4.6":{id:`z-ai/glm-4.6`,name:`Z.ai: GLM 4.6`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.43,output:1.74,cacheRead:.08,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-4.6v":{id:`z-ai/glm-4.6v`,name:`Z.ai: GLM 4.6V`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:.8999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:131072,maxTokens:24e3},"z-ai/glm-4.7":{id:`z-ai/glm-4.7`,name:`Z.ai: GLM 4.7`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.39999999999999997,output:1.75,cacheRead:.08,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-4.7-flash":{id:`z-ai/glm-4.7-flash`,name:`Z.ai: GLM 4.7 Flash`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.06,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:202752,maxTokens:16384},"z-ai/glm-5":{id:`z-ai/glm-5`,name:`Z.ai: GLM 5`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.6,output:1.9,cacheRead:.119,cacheWrite:0},contextWindow:202752,maxTokens:4096},"z-ai/glm-5-turbo":{id:`z-ai/glm-5-turbo`,name:`Z.ai: GLM 5 Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202752,maxTokens:131072},"z-ai/glm-5.1":{id:`z-ai/glm-5.1`,name:`Z.ai: GLM 5.1`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.98,output:3.08,cacheRead:.182,cacheWrite:0},contextWindow:202752,maxTokens:4096},"z-ai/glm-5v-turbo":{id:`z-ai/glm-5v-turbo`,name:`Z.ai: GLM 5V Turbo`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202752,maxTokens:131072},"~anthropic/claude-haiku-latest":{id:`~anthropic/claude-haiku-latest`,name:`Anthropic Claude Haiku Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"~anthropic/claude-opus-latest":{id:`~anthropic/claude-opus-latest`,name:`Anthropic: Claude Opus Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"~anthropic/claude-sonnet-latest":{id:`~anthropic/claude-sonnet-latest`,name:`Anthropic Claude Sonnet Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"~google/gemini-flash-latest":{id:`~google/gemini-flash-latest`,name:`Google Gemini Flash Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:.08333333333333334},contextWindow:1048576,maxTokens:65536},"~google/gemini-pro-latest":{id:`~google/gemini-pro-latest`,name:`Google Gemini Pro Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:.375},contextWindow:1048576,maxTokens:65536},"~moonshotai/kimi-latest":{id:`~moonshotai/kimi-latest`,name:`MoonshotAI Kimi Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.73,output:3.49,cacheRead:.25,cacheWrite:0},contextWindow:262144,maxTokens:262142},"~openai/gpt-latest":{id:`~openai/gpt-latest`,name:`OpenAI GPT Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"~openai/gpt-mini-latest":{id:`~openai/gpt-mini-latest`,name:`OpenAI GPT Mini Latest`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3}},together:{"MiniMaxAI/MiniMax-M2.5":{id:`MiniMaxAI/MiniMax-M2.5`,name:`MiniMax-M2.5`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:null,medium:null},input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:204800,maxTokens:131072},"MiniMaxAI/MiniMax-M2.7":{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax-M2.7`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!0,thinkingLevelMap:{off:null,minimal:null,low:null,medium:null},input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:202752,maxTokens:131072},"Qwen/Qwen3-235B-A22B-Instruct-2507-tput":{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507 FP8`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.2,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8":{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:2,output:2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3-Coder-Next-FP8":{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"Qwen/Qwen3.5-397B-A17B":{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:13e4},"Qwen/Qwen3.6-Plus":{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.5,output:3,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:5e5},"Qwen/Qwen3.7-Max":{id:`Qwen/Qwen3.7-Max`,name:`Qwen3.7 Max`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:2.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:5e5},"deepseek-ai/DeepSeek-V3":{id:`deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:1.25,output:1.25,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"deepseek-ai/DeepSeek-V3-1":{id:`deepseek-ai/DeepSeek-V3-1`,name:`DeepSeek V3.1`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:.6,output:1.7,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"deepseek-ai/DeepSeek-V4-Pro":{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!0,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:null},input:[`text`],cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:0},contextWindow:512e3,maxTokens:384e3},"essentialai/Rnj-1-Instruct":{id:`essentialai/Rnj-1-Instruct`,name:`Rnj-1 Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:32768,maxTokens:32768},"google/gemma-4-31B-it":{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.2,output:.5,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"meta-llama/Llama-3.3-70B-Instruct-Turbo":{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:.88,output:.88,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"moonshotai/Kimi-K2.5":{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:.5,output:2.8,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:262144},"moonshotai/Kimi-K2.6":{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`,`image`],cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:0},contextWindow:262144,maxTokens:131e3},"openai/gpt-oss-120b":{id:`openai/gpt-oss-120b`,name:`GPT OSS 120B`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!0,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`openai`},reasoning:!0,thinkingLevelMap:{off:null,minimal:null},input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"zai-org/GLM-5.1":{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`together`,baseUrl:`https://api.together.ai/v1`,compat:{supportsStore:!1,supportsDeveloperRole:!1,supportsReasoningEffort:!1,maxTokensField:`max_tokens`,supportsStrictMode:!1,supportsLongCacheRetention:!1,thinkingFormat:`together`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null},input:[`text`],cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},contextWindow:202752,maxTokens:131072}},"vercel-ai-gateway":{"alibaba/qwen-3-14b":{id:`alibaba/qwen-3-14b`,name:`Qwen3-14B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.12,output:.24,cacheRead:0,cacheWrite:0},contextWindow:40960,maxTokens:16384},"alibaba/qwen-3-235b":{id:`alibaba/qwen-3-235b`,name:`Qwen3 235B A22b Instruct 2507`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.6,output:1.2,cacheRead:.6,cacheWrite:0},contextWindow:131e3,maxTokens:4e4},"alibaba/qwen-3-30b":{id:`alibaba/qwen-3-30b`,name:`Qwen3-30B-A3B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.08,output:.29,cacheRead:0,cacheWrite:0},contextWindow:40960,maxTokens:16384},"alibaba/qwen-3-32b":{id:`alibaba/qwen-3-32b`,name:`Qwen 3 32B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.16,output:.64,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"alibaba/qwen-3.6-max-preview":{id:`alibaba/qwen-3.6-max-preview`,name:`Qwen 3.6 Max Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.3,output:7.8,cacheRead:.26,cacheWrite:1.625},contextWindow:24e4,maxTokens:64e3},"alibaba/qwen3-235b-a22b-thinking":{id:`alibaba/qwen3-235b-a22b-thinking`,name:`Qwen3 VL 235B A22B Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"alibaba/qwen3-coder":{id:`alibaba/qwen3-coder`,name:`Qwen3 Coder 480B A35B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.5,output:7.5,cacheRead:.3,cacheWrite:0},contextWindow:262144,maxTokens:65536},"alibaba/qwen3-coder-30b-a3b":{id:`alibaba/qwen3-coder-30b-a3b`,name:`Qwen 3 Coder 30B A3B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:8192},"alibaba/qwen3-coder-next":{id:`alibaba/qwen3-coder-next`,name:`Qwen3 Coder Next`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"alibaba/qwen3-coder-plus":{id:`alibaba/qwen3-coder-plus`,name:`Qwen3 Coder Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1,output:5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"alibaba/qwen3-max":{id:`alibaba/qwen3-max`,name:`Qwen3 Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:262144,maxTokens:32768},"alibaba/qwen3-max-preview":{id:`alibaba/qwen3-max-preview`,name:`Qwen3 Max Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:262144,maxTokens:32768},"alibaba/qwen3-max-thinking":{id:`alibaba/qwen3-max-thinking`,name:`Qwen 3 Max Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.2,output:6,cacheRead:.24,cacheWrite:0},contextWindow:256e3,maxTokens:65536},"alibaba/qwen3-vl-thinking":{id:`alibaba/qwen3-vl-thinking`,name:`Qwen3 VL 235B A22B Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:4,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"alibaba/qwen3.5-flash":{id:`alibaba/qwen3.5-flash`,name:`Qwen 3.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.001,cacheWrite:.125},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.5-plus":{id:`alibaba/qwen3.5-plus`,name:`Qwen 3.5 Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.39999999999999997,output:2.4,cacheRead:.04,cacheWrite:.5},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.6-27b":{id:`alibaba/qwen3.6-27b`,name:`Qwen 3.6 27B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3.5999999999999996,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"alibaba/qwen3.6-plus":{id:`alibaba/qwen3.6-plus`,name:`Qwen 3.6 Plus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.09999999999999999,cacheWrite:.625},contextWindow:1e6,maxTokens:64e3},"alibaba/qwen3.7-max":{id:`alibaba/qwen3.7-max`,name:`Qwen 3.7 Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:3.75,cacheRead:.25,cacheWrite:1.5625},contextWindow:991e3,maxTokens:64e3},"anthropic/claude-3-haiku":{id:`anthropic/claude-3-haiku`,name:`Claude 3 Haiku`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.25,cacheRead:.03,cacheWrite:.3},contextWindow:2e5,maxTokens:4096},"anthropic/claude-3.5-haiku":{id:`anthropic/claude-3.5-haiku`,name:`Claude 3.5 Haiku`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.7999999999999999,output:4,cacheRead:.08,cacheWrite:1},contextWindow:2e5,maxTokens:8192},"anthropic/claude-haiku-4.5":{id:`anthropic/claude-haiku-4.5`,name:`Claude Haiku 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:5,cacheRead:.09999999999999999,cacheWrite:1.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4":{id:`anthropic/claude-opus-4`,name:`Claude Opus 4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.1":{id:`anthropic/claude-opus-4.1`,name:`Claude Opus 4.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:75,cacheRead:1.5,cacheWrite:18.75},contextWindow:2e5,maxTokens:32e3},"anthropic/claude-opus-4.5":{id:`anthropic/claude-opus-4.5`,name:`Claude Opus 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:2e5,maxTokens:64e3},"anthropic/claude-opus-4.6":{id:`anthropic/claude-opus-4.6`,name:`Claude Opus 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`max`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.7":{id:`anthropic/claude-opus-4.7`,name:`Claude Opus 4.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-opus-4.8":{id:`anthropic/claude-opus-4.8`,name:`Claude Opus 4.8`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25},contextWindow:1e6,maxTokens:128e3},"anthropic/claude-sonnet-4":{id:`anthropic/claude-sonnet-4`,name:`Claude Sonnet 4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.5":{id:`anthropic/claude-sonnet-4.5`,name:`Claude Sonnet 4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:64e3},"anthropic/claude-sonnet-4.6":{id:`anthropic/claude-sonnet-4.6`,name:`Claude Sonnet 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,compat:{forceAdaptiveThinking:!0},reasoning:!0,input:[`text`,`image`],cost:{input:3,output:15,cacheRead:.3,cacheWrite:3.75},contextWindow:1e6,maxTokens:128e3},"arcee-ai/trinity-large-preview":{id:`arcee-ai/trinity-large-preview`,name:`Trinity Large Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:131e3},"arcee-ai/trinity-large-thinking":{id:`arcee-ai/trinity-large-thinking`,name:`Trinity Large Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:.8999999999999999,cacheRead:0,cacheWrite:0},contextWindow:262100,maxTokens:8e4},"bytedance/seed-1.6":{id:`bytedance/seed-1.6`,name:`Seed 1.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:2,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:256e3,maxTokens:32e3},"cohere/command-a":{id:`cohere/command-a`,name:`Command A`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:2.5,output:10,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8e3},"deepseek/deepseek-r1":{id:`deepseek/deepseek-r1`,name:`DeepSeek-R1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.35,output:5.4,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"deepseek/deepseek-v3":{id:`deepseek/deepseek-v3`,name:`DeepSeek V3 0324`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.77,output:.77,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16384},"deepseek/deepseek-v3.1":{id:`deepseek/deepseek-v3.1`,name:`DeepSeek-V3.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.56,output:1.68,cacheRead:.28,cacheWrite:0},contextWindow:163840,maxTokens:8192},"deepseek/deepseek-v3.1-terminus":{id:`deepseek/deepseek-v3.1-terminus`,name:`DeepSeek V3.1 Terminus`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.27,output:1,cacheRead:.135,cacheWrite:0},contextWindow:131072,maxTokens:65536},"deepseek/deepseek-v3.2":{id:`deepseek/deepseek-v3.2`,name:`DeepSeek V3.2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.28,output:.42,cacheRead:.028,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"deepseek/deepseek-v3.2-thinking":{id:`deepseek/deepseek-v3.2-thinking`,name:`DeepSeek V3.2 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.62,output:1.85,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"deepseek/deepseek-v4-flash":{id:`deepseek/deepseek-v4-flash`,name:`DeepSeek V4 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"deepseek/deepseek-v4-pro":{id:`deepseek/deepseek-v4-pro`,name:`DeepSeek V4 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"google/gemini-2.0-flash":{id:`google/gemini-2.0-flash`,name:`Gemini 2.0 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.0-flash-lite":{id:`google/gemini-2.0-flash-lite`,name:`Gemini 2.0 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.075,output:.3,cacheRead:.02,cacheWrite:0},contextWindow:1048576,maxTokens:8192},"google/gemini-2.5-flash":{id:`google/gemini-2.5-flash`,name:`Gemini 2.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:2.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65536},"google/gemini-2.5-flash-lite":{id:`google/gemini-2.5-flash-lite`,name:`Gemini 2.5 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"google/gemini-2.5-pro":{id:`google/gemini-2.5-pro`,name:`Gemini 2.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"google/gemini-3-flash":{id:`google/gemini-3-flash`,name:`Gemini 3 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:3,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3-pro-preview":{id:`google/gemini-3-pro-preview`,name:`Gemini 3 Pro Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemini-3.1-flash-lite":{id:`google/gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash Lite`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3.1-flash-lite-preview":{id:`google/gemini-3.1-flash-lite-preview`,name:`Gemini 3.1 Flash Lite Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:.03,cacheWrite:0},contextWindow:1e6,maxTokens:65e3},"google/gemini-3.1-pro-preview":{id:`google/gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:12,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemini-3.5-flash":{id:`google/gemini-3.5-flash`,name:`Gemini 3.5 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.5,output:9,cacheRead:.15,cacheWrite:0},contextWindow:1e6,maxTokens:64e3},"google/gemma-4-26b-a4b-it":{id:`google/gemma-4-26b-a4b-it`,name:`Gemma 4 26B A4B IT`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.13,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"google/gemma-4-31b-it":{id:`google/gemma-4-31b-it`,name:`Gemma 4 31B IT`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.14,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:131072},"inception/mercury-2":{id:`inception/mercury-2`,name:`Mercury 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.25,output:.75,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:128e3,maxTokens:128e3},"inception/mercury-coder-small":{id:`inception/mercury-coder-small`,name:`Mercury Coder Small Beta`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.25,output:1,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:16384},"kwaipilot/kat-coder-pro-v2":{id:`kwaipilot/kat-coder-pro-v2`,name:`Kat Coder Pro V2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"meituan/longcat-flash-chat":{id:`meituan/longcat-flash-chat`,name:`LongCat Flash Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:1e5},"meta/llama-3.1-70b":{id:`meta/llama-3.1-70b`,name:`Llama 3.1 70B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.1-8b":{id:`meta/llama-3.1-8b`,name:`Llama 3.1 8B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.22,output:.22,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.2-11b":{id:`meta/llama-3.2-11b`,name:`Llama 3.2 11B Vision Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.16,output:.16,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.2-90b":{id:`meta/llama-3.2-90b`,name:`Llama 3.2 90B Vision Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-3.3-70b":{id:`meta/llama-3.3-70b`,name:`Llama 3.3 70B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.72,output:.72,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-4-maverick":{id:`meta/llama-4-maverick`,name:`Llama 4 Maverick 17B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.24,output:.9700000000000001,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"meta/llama-4-scout":{id:`meta/llama-4-scout`,name:`Llama 4 Scout 17B Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.16999999999999998,output:.66,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192},"minimax/minimax-m2":{id:`minimax/minimax-m2`,name:`MiniMax M2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:205e3,maxTokens:205e3},"minimax/minimax-m2.1":{id:`minimax/minimax-m2.1`,name:`MiniMax M2.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"minimax/minimax-m2.1-lightning":{id:`minimax/minimax-m2.1-lightning`,name:`MiniMax M2.1 Lightning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:2.4,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131072},"minimax/minimax-m2.5":{id:`minimax/minimax-m2.5`,name:`MiniMax M2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.3,output:1.2,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.5-highspeed":{id:`minimax/minimax-m2.5-highspeed`,name:`MiniMax M2.5 High Speed`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.4,cacheRead:.03,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.7":{id:`minimax/minimax-m2.7`,name:`MiniMax M2.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131e3},"minimax/minimax-m2.7-highspeed":{id:`minimax/minimax-m2.7-highspeed`,name:`MiniMax M2.7 High Speed`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:2.4,cacheRead:.06,cacheWrite:.375},contextWindow:204800,maxTokens:131100},"mistral/codestral":{id:`mistral/codestral`,name:`Mistral Codestral`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.3,output:.8999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/devstral-2":{id:`mistral/devstral-2`,name:`Devstral 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.39999999999999997,output:2,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/devstral-small":{id:`mistral/devstral-small`,name:`Devstral Small 1.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"mistral/devstral-small-2":{id:`mistral/devstral-small-2`,name:`Devstral Small 2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/ministral-3b":{id:`mistral/ministral-3b`,name:`Ministral 3B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.09999999999999999,output:.09999999999999999,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/ministral-8b":{id:`mistral/ministral-8b`,name:`Ministral 8B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/mistral-medium":{id:`mistral/mistral-medium`,name:`Mistral Medium 3.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:64e3},"mistral/mistral-medium-3.5":{id:`mistral/mistral-medium-3.5`,name:`Mistral Medium Latest`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"mistral/mistral-small":{id:`mistral/mistral-small`,name:`Mistral Small`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:32e3,maxTokens:4e3},"mistral/pixtral-12b":{id:`mistral/pixtral-12b`,name:`Pixtral 12B 2409`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"mistral/pixtral-large":{id:`mistral/pixtral-large`,name:`Pixtral Large`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:6,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4e3},"moonshotai/kimi-k2":{id:`moonshotai/kimi-k2`,name:`Kimi K2 Instruct`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:.5700000000000001,output:2.3,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"moonshotai/kimi-k2-thinking":{id:`moonshotai/kimi-k2-thinking`,name:`Kimi K2 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.5,cacheRead:.15,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2-thinking-turbo":{id:`moonshotai/kimi-k2-thinking-turbo`,name:`Kimi K2 Thinking Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2-turbo":{id:`moonshotai/kimi-k2-turbo`,name:`Kimi K2 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`],cost:{input:1.15,output:8,cacheRead:.15,cacheWrite:0},contextWindow:256e3,maxTokens:16384},"moonshotai/kimi-k2.5":{id:`moonshotai/kimi-k2.5`,name:`Kimi K2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.6,output:3,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:262114,maxTokens:262114},"moonshotai/kimi-k2.6":{id:`moonshotai/kimi-k2.6`,name:`Kimi K2.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.95,output:4,cacheRead:.16,cacheWrite:0},contextWindow:262e3,maxTokens:262e3},"nvidia/nemotron-nano-12b-v2-vl":{id:`nvidia/nemotron-nano-12b-v2-vl`,name:`Nvidia Nemotron Nano 12B V2 VL`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.19999999999999998,output:.6,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"nvidia/nemotron-nano-9b-v2":{id:`nvidia/nemotron-nano-9b-v2`,name:`Nvidia Nemotron Nano 9B V2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.06,output:.22999999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"openai/gpt-4-turbo":{id:`openai/gpt-4-turbo`,name:`GPT-4 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:10,output:30,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:4096},"openai/gpt-4.1":{id:`openai/gpt-4.1`,name:`GPT-4.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-mini":{id:`openai/gpt-4.1-mini`,name:`GPT-4.1 mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.39999999999999997,output:1.5999999999999999,cacheRead:.09999999999999999,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4.1-nano":{id:`openai/gpt-4.1-nano`,name:`GPT-4.1 nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.09999999999999999,output:.39999999999999997,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:1047576,maxTokens:32768},"openai/gpt-4o":{id:`openai/gpt-4o`,name:`GPT-4o`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:2.5,output:10,cacheRead:1.25,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-4o-mini":{id:`openai/gpt-4o-mini`,name:`GPT-4o mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.075,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5":{id:`openai/gpt-5`,name:`GPT-5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-chat":{id:`openai/gpt-5-chat`,name:`GPT 5 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5-codex":{id:`openai/gpt-5-codex`,name:`GPT-5-Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-mini":{id:`openai/gpt-5-mini`,name:`GPT-5 mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-nano":{id:`openai/gpt-5-nano`,name:`GPT-5 nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.049999999999999996,output:.39999999999999997,cacheRead:.005,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5-pro":{id:`openai/gpt-5-pro`,name:`GPT-5 pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:120,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:272e3},"openai/gpt-5.1-codex":{id:`openai/gpt-5.1-codex`,name:`GPT-5.1-Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-max":{id:`openai/gpt-5.1-codex-max`,name:`GPT 5.1 Codex Max`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-codex-mini":{id:`openai/gpt-5.1-codex-mini`,name:`GPT 5.1 Codex Mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.25,output:2,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.1-instant":{id:`openai/gpt-5.1-instant`,name:`GPT-5.1 Instant`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.1-thinking":{id:`openai/gpt-5.1-thinking`,name:`GPT 5.1 Thinking`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.125,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2":{id:`openai/gpt-5.2`,name:`GPT 5.2`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-chat":{id:`openai/gpt-5.2-chat`,name:`GPT 5.2 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.2-codex":{id:`openai/gpt-5.2-codex`,name:`GPT 5.2 Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.2-pro":{id:`openai/gpt-5.2-pro`,name:`GPT 5.2 `,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:21,output:168,cacheRead:0,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.3-chat":{id:`openai/gpt-5.3-chat`,name:`GPT-5.3 Chat`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"openai/gpt-5.3-codex":{id:`openai/gpt-5.3-codex`,name:`GPT 5.3 Codex`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:1.75,output:14,cacheRead:.175,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4":{id:`openai/gpt-5.4`,name:`GPT 5.4`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.4-mini":{id:`openai/gpt-5.4-mini`,name:`GPT 5.4 Mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-nano":{id:`openai/gpt-5.4-nano`,name:`GPT 5.4 Nano`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:.19999999999999998,output:1.25,cacheRead:.02,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"openai/gpt-5.4-pro":{id:`openai/gpt-5.4-pro`,name:`GPT 5.4 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"openai/gpt-5.5":{id:`openai/gpt-5.5`,name:`GPT 5.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`},input:[`text`,`image`],cost:{input:5,output:30,cacheRead:.5,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"openai/gpt-5.5-pro":{id:`openai/gpt-5.5-pro`,name:`GPT 5.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,thinkingLevelMap:{xhigh:`xhigh`,off:null,minimal:null,low:null},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"openai/gpt-oss-20b":{id:`openai/gpt-oss-20b`,name:`GPT OSS 20B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.049999999999999996,output:.19999999999999998,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"openai/gpt-oss-safeguard-20b":{id:`openai/gpt-oss-safeguard-20b`,name:`GPT OSS Safeguard 20B`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.075,output:.3,cacheRead:.037,cacheWrite:0},contextWindow:131072,maxTokens:65536},"openai/o1":{id:`openai/o1`,name:`o1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:15,output:60,cacheRead:7.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3":{id:`openai/o3`,name:`o3`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:2,output:8,cacheRead:.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-deep-research":{id:`openai/o3-deep-research`,name:`o3-deep-research`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:10,output:40,cacheRead:2.5,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-mini":{id:`openai/o3-mini`,name:`o3-mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.1,output:4.4,cacheRead:.55,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o3-pro":{id:`openai/o3-pro`,name:`o3 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:20,output:80,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"openai/o4-mini":{id:`openai/o4-mini`,name:`o4-mini`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.1,output:4.4,cacheRead:.275,cacheWrite:0},contextWindow:2e5,maxTokens:1e5},"perplexity/sonar":{id:`perplexity/sonar`,name:`Sonar`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:127e3,maxTokens:8e3},"perplexity/sonar-pro":{id:`perplexity/sonar-pro`,name:`Sonar Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:8e3},"xai/grok-4.1-fast-non-reasoning":{id:`xai/grok-4.1-fast-non-reasoning`,name:`Grok 4.1 Fast Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.19999999999999998,output:.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-4.1-fast-reasoning":{id:`xai/grok-4.1-fast-reasoning`,name:`Grok 4.1 Fast Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.19999999999999998,output:.5,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-4.20-multi-agent":{id:`xai/grok-4.20-multi-agent`,name:`Grok 4.20 Multi-Agent`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-multi-agent-beta":{id:`xai/grok-4.20-multi-agent-beta`,name:`Grok 4.20 Multi Agent Beta`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-non-reasoning":{id:`xai/grok-4.20-non-reasoning`,name:`Grok 4.20 Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-non-reasoning-beta":{id:`xai/grok-4.20-non-reasoning-beta`,name:`Grok 4.20 Beta Non-Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-reasoning":{id:`xai/grok-4.20-reasoning`,name:`Grok 4.20 Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.20-reasoning-beta":{id:`xai/grok-4.20-reasoning-beta`,name:`Grok 4.20 Beta Reasoning`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:2e6,maxTokens:2e6},"xai/grok-4.3":{id:`xai/grok-4.3`,name:`Grok 4.3`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:1e6},"xai/grok-build-0.1":{id:`xai/grok-build-0.1`,name:`Grok Build 0.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"xiaomi/mimo-v2-flash":{id:`xiaomi/mimo-v2-flash`,name:`MiMo V2 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.09999999999999999,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:32e3},"xiaomi/mimo-v2-pro":{id:`xiaomi/mimo-v2-pro`,name:`MiMo V2 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1e6,maxTokens:128e3},"xiaomi/mimo-v2.5":{id:`xiaomi/mimo-v2.5`,name:`MiMo M2.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.14,output:.28,cacheRead:.0028,cacheWrite:0},contextWindow:105e4,maxTokens:131100},"xiaomi/mimo-v2.5-pro":{id:`xiaomi/mimo-v2.5-pro`,name:`MiMo V2.5 Pro`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.435,output:.87,cacheRead:.0036,cacheWrite:0},contextWindow:105e4,maxTokens:131e3},"zai/glm-4.5":{id:`zai/glm-4.5`,name:`GLM-4.5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:128e3,maxTokens:96e3},"zai/glm-4.5-air":{id:`zai/glm-4.5-air`,name:`GLM 4.5 Air`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.19999999999999998,output:1.1,cacheRead:.03,cacheWrite:0},contextWindow:128e3,maxTokens:96e3},"zai/glm-4.5v":{id:`zai/glm-4.5v`,name:`GLM 4.5V`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!1,input:[`text`,`image`],cost:{input:.6,output:1.7999999999999998,cacheRead:.11,cacheWrite:0},contextWindow:66e3,maxTokens:16e3},"zai/glm-4.6":{id:`zai/glm-4.6`,name:`GLM 4.6`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.6,output:2.2,cacheRead:.11,cacheWrite:0},contextWindow:2e5,maxTokens:96e3},"zai/glm-4.6v":{id:`zai/glm-4.6v`,name:`GLM-4.6V`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:.3,output:.8999999999999999,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:128e3,maxTokens:24e3},"zai/glm-4.6v-flash":{id:`zai/glm-4.6v-flash`,name:`GLM-4.6V-Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:24e3},"zai/glm-4.7":{id:`zai/glm-4.7`,name:`GLM 4.7`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:2.25,output:2.75,cacheRead:2.25,cacheWrite:0},contextWindow:131e3,maxTokens:4e4},"zai/glm-4.7-flash":{id:`zai/glm-4.7-flash`,name:`GLM 4.7 Flash`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.07,output:.39999999999999997,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131e3},"zai/glm-4.7-flashx":{id:`zai/glm-4.7-flashx`,name:`GLM 4.7 FlashX`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:.06,output:.39999999999999997,cacheRead:.01,cacheWrite:0},contextWindow:2e5,maxTokens:128e3},"zai/glm-5":{id:`zai/glm-5`,name:`GLM 5`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1,output:3.1999999999999997,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:202800,maxTokens:131100},"zai/glm-5-turbo":{id:`zai/glm-5-turbo`,name:`GLM 5 Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:202800,maxTokens:131100},"zai/glm-5.1":{id:`zai/glm-5.1`,name:`GLM 5.1`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`],cost:{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},contextWindow:202800,maxTokens:64e3},"zai/glm-5v-turbo":{id:`zai/glm-5v-turbo`,name:`GLM 5V Turbo`,api:`anthropic-messages`,provider:`vercel-ai-gateway`,baseUrl:`https://ai-gateway.vercel.sh`,reasoning:!0,input:[`text`,`image`],cost:{input:1.2,output:4,cacheRead:.24,cacheWrite:0},contextWindow:2e5,maxTokens:128e3}},xai:{"grok-3":{id:`grok-3`,name:`Grok 3`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:3,output:15,cacheRead:.75,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-3-fast":{id:`grok-3-fast`,name:`Grok 3 Fast`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:5,output:25,cacheRead:1.25,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-4.20-0309-non-reasoning":{id:`grok-4.20-0309-non-reasoning`,name:`Grok 4.20 (Non-Reasoning)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"grok-4.20-0309-reasoning":{id:`grok-4.20-0309-reasoning`,name:`Grok 4.20 (Reasoning)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:2e6,maxTokens:3e4},"grok-4.3":{id:`grok-4.3`,name:`Grok 4.3`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},contextWindow:1e6,maxTokens:3e4},"grok-build-0.1":{id:`grok-build-0.1`,name:`Grok Build 0.1`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:2,cacheRead:.2,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"grok-code-fast-1":{id:`grok-code-fast-1`,name:`Grok Code Fast 1`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.2,output:1.5,cacheRead:.02,cacheWrite:0},contextWindow:32768,maxTokens:8192}},xiaomi:{"mimo-v2-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:.1,output:.3,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi`,baseUrl:`https://api.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-ams":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-ams`,baseUrl:`https://token-plan-ams.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-cn":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-cn`,baseUrl:`https://token-plan-cn.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},"xiaomi-token-plan-sgp":{"mimo-v2-omni":{id:`mimo-v2-omni`,name:`MiMo-V2-Omni`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:131072},"mimo-v2-pro":{id:`mimo-v2-pro`,name:`MiMo-V2-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5":{id:`mimo-v2.5`,name:`MiMo-V2.5`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072},"mimo-v2.5-pro":{id:`mimo-v2.5-pro`,name:`MiMo-V2.5-Pro`,api:`openai-completions`,provider:`xiaomi-token-plan-sgp`,baseUrl:`https://token-plan-sgp.xiaomimimo.com/v1`,compat:{requiresReasoningContentOnAssistantMessages:!0,thinkingFormat:`deepseek`},reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072}},zai:{"glm-4.5-air":{id:`glm-4.5-air`,name:`GLM-4.5-Air`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:98304},"glm-4.7":{id:`glm-4.7`,name:`GLM-4.7`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:204800,maxTokens:131072},"glm-5-turbo":{id:`glm-5-turbo`,name:`GLM-5-Turbo`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"glm-5.1":{id:`glm-5.1`,name:`GLM-5.1`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072},"glm-5v-turbo":{id:`glm-5v-turbo`,name:`GLM-5V-Turbo`,api:`openai-completions`,provider:`zai`,baseUrl:`https://api.z.ai/api/coding/paas/v4`,compat:{supportsDeveloperRole:!1,thinkingFormat:`zai`,zaiToolStream:!0},reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:2e5,maxTokens:131072}}},Bc=new Map;for(let[e,t]of Object.entries(eie)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Bc.set(e,n)}function Vc(e,t){return Bc.get(e)?.get(t)}function Hc(){return Array.from(Bc.keys())}function Uc(e){let t=Bc.get(e);return t?Array.from(t.values()):[]}function Wc(e,t){return t.cost.input=e.cost.input/1e6*t.input,t.cost.output=e.cost.output/1e6*t.output,t.cost.cacheRead=e.cost.cacheRead/1e6*t.cacheRead,t.cost.cacheWrite=e.cost.cacheWrite/1e6*t.cacheWrite,t.cost.total=t.cost.input+t.cost.output+t.cost.cacheRead+t.cost.cacheWrite,t.cost}var Gc=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function Kc(e){return e.reasoning?Gc.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`?n!==void 0:!0}):[`off`]}function tie(e,t){let n=Kc(e);if(n.includes(t))return t;let r=Gc.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<Gc.length;e++){let t=Gc[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=Gc[e];if(n.includes(t))return t}return n[0]??`off`}var nie=class{queue=[];waiting=[];done=!1;finalResultPromise;resolveFinalResult;isComplete;extractResult;constructor(e,t){this.isComplete=e,this.extractResult=t,this.finalResultPromise=new Promise(e=>{this.resolveFinalResult=e})}push(e){if(this.done)return;this.isComplete(e)&&(this.done=!0,this.resolveFinalResult(this.extractResult(e)));let t=this.waiting.shift();t?t({value:e,done:!1}):this.queue.push(e)}end(e){for(this.done=!0,e!==void 0&&this.resolveFinalResult(e);this.waiting.length>0;)this.waiting.shift()({value:void 0,done:!0})}async*[Symbol.asyncIterator](){for(;;)if(this.queue.length>0)yield this.queue.shift();else if(this.done)return;else{let e=await new Promise(e=>this.waiting.push(e));if(e.done)return;yield e.value}}result(){return this.finalResultPromise}},qc=class extends nie{constructor(){super(e=>e.type===`done`||e.type===`error`,e=>{if(e.type===`done`)return e.message;if(e.type===`error`)return e.error;throw Error(`Unexpected event type for final result`)})}};function Jc(){return new qc}var rie=function(e,t){return typeof e==`string`&&/^\.\.?\//.test(e)?e.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(e,n,r,i,a){return n?t?`.jsx`:`.js`:r&&(!i||!a)?e:r+i+`.`+a.toLowerCase()+`js`}):e},iie=e=>{let t=import.meta.url.endsWith(`.js`)?e.replace(/\.ts$/,`.js`):e;return I(()=>import(rie(t)),[])},Yc,Xc,Zc,Qc,$c,el,tl,nl,rl,il;function al(e,t){(async()=>{for await(let n of t)e.push(n);e.end()})()}function ol(e,t){return{role:`assistant`,content:[],api:e.api,provider:e.provider,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 sl(e){return(t,n,r)=>{let i=new qc;return e().then(e=>{al(i,e.stream(t,n,r))}).catch(e=>{let n=ol(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function cl(e){return(t,n,r)=>{let i=new qc;return e().then(e=>{al(i,e.streamSimple(t,n,r))}).catch(e=>{let n=ol(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function ll(){return Yc||=I(()=>import(`./anthropic-j72gYC37.js`).then(e=>{let t=e;return{stream:t.streamAnthropic,streamSimple:t.streamSimpleAnthropic}}),__vite__mapDeps([4,5,1,2])),Yc}function ul(){return Xc||=I(()=>import(`./azure-openai-responses-BkJiczft.js`).then(e=>{let t=e;return{stream:t.streamAzureOpenAIResponses,streamSimple:t.streamSimpleAzureOpenAIResponses}}),__vite__mapDeps([6,7,8,9,2,1,3])),Xc}function dl(){return Zc||=I(()=>import(`./google-BV3wSZBi.js`).then(e=>{let t=e;return{stream:t.streamGoogle,streamSimple:t.streamSimpleGoogle}}),__vite__mapDeps([10,11,2])),Zc}function fl(){return Qc||=I(()=>import(`./google-vertex-No9Wv9Rg.js`).then(e=>{let t=e;return{stream:t.streamGoogleVertex,streamSimple:t.streamSimpleGoogleVertex}}),__vite__mapDeps([12,11,2])),Qc}function pl(){return $c||=I(()=>import(`./mistral-BkCTqf1V.js`).then(e=>{let t=e;return{stream:t.streamMistral,streamSimple:t.streamSimpleMistral}}),__vite__mapDeps([13,9,2])),$c}function ml(){return el||=I(()=>import(`./openai-codex-responses-PCFMqZ2-.js`).then(e=>{let t=e;return{stream:t.streamOpenAICodexResponses,streamSimple:t.streamSimpleOpenAICodexResponses}}),__vite__mapDeps([14,7,8,9,2,1])),el}function hl(){return tl||=I(()=>import(`./openai-completions-Ct4ErjP6.js`).then(e=>{let t=e;return{stream:t.streamOpenAICompletions,streamSimple:t.streamSimpleOpenAICompletions}}),__vite__mapDeps([15,5,7,1,2,3])),tl}function gl(){return nl||=I(()=>import(`./openai-responses-Bcj6Mw9f.js`).then(e=>{let t=e;return{stream:t.streamOpenAIResponses,streamSimple:t.streamSimpleOpenAIResponses}}),__vite__mapDeps([16,5,7,8,9,2,1,3])),nl}function _l(){return rl?Promise.resolve(rl):(il||=iie(`./amazon-bedrock.ts`).then(e=>{let t=e;return{stream:t.streamBedrock,streamSimple:t.streamSimpleBedrock}}),il)}var vl=sl(ll),yl=cl(ll),aie=sl(ul),oie=cl(ul),sie=sl(dl),cie=cl(dl),lie=sl(fl),uie=cl(fl),die=sl(pl),fie=cl(pl),bl=sl(ml),xl=cl(ml),Sl=sl(hl),Cl=cl(hl),wl=sl(gl),Tl=cl(gl),pie=sl(_l),mie=cl(_l);function hie(){Ac({api:`anthropic-messages`,stream:vl,streamSimple:yl}),Ac({api:`openai-completions`,stream:Sl,streamSimple:Cl}),Ac({api:`mistral-conversations`,stream:die,streamSimple:fie}),Ac({api:`openai-responses`,stream:wl,streamSimple:Tl}),Ac({api:`azure-openai-responses`,stream:aie,streamSimple:oie}),Ac({api:`openai-codex-responses`,stream:bl,streamSimple:xl}),Ac({api:`google-generative-ai`,stream:sie,streamSimple:cie}),Ac({api:`google-vertex`,stream:lie,streamSimple:uie}),Ac({api:`bedrock-converse-stream`,stream:pie,streamSimple:mie})}hie();var El=new Set;function gie(e){return El.add(e),()=>{El.delete(e)}}function _ie(e){let t=Ire(e);if(!t)throw Error(`No API provider registered for api: ${e}`);return t}function vie(e,t,n){return _ie(e.api).streamSimple(e,t,n)}async function Dl(e,t,n){return vie(e,t,n).result()}function Ol(e){return e instanceof Error?e.message||e.name:typeof e==`string`?e:String(e)}function yie(e){if(!(e instanceof Error))return{name:`ThrownValue`,message:Ol(e)};let t=e.code;return{name:e.name||void 0,message:e.message||e.name,stack:e.stack,code:typeof t==`string`||typeof t==`number`?t:void 0}}function bie(e,t,n){return{type:e,timestamp:Date.now(),error:yie(t),details:n}}function xie(e,t){e.diagnostics=[...e.diagnostics??[],t]}var kl=o((e=>{Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.ALL=e.COLLECTION=e.ATOM=e.SPECIAL=e.INF=e._INFINITY=e.INFINITY=e.NAN=e.BOOL=e.NULL=e.OBJ=e.ARR=e.NUM=e.STR=void 0,e.STR=1,e.NUM=2,e.ARR=4,e.OBJ=8,e.NULL=16,e.BOOL=32,e.NAN=64,e.INFINITY=128,e._INFINITY=256,e.INF=e.INFINITY|e._INFINITY,e.SPECIAL=e.NULL|e.BOOL|e.INF|e.NAN,e.ATOM=e.STR|e.NUM|e.SPECIAL,e.COLLECTION=e.ARR|e.OBJ,e.ALL=e.ATOM|e.COLLECTION,e.Allow={STR:e.STR,NUM:e.NUM,ARR:e.ARR,OBJ:e.OBJ,NULL:e.NULL,BOOL:e.BOOL,NAN:e.NAN,INFINITY:e.INFINITY,_INFINITY:e._INFINITY,INF:e.INF,SPECIAL:e.SPECIAL,ATOM:e.ATOM,COLLECTION:e.COLLECTION,ALL:e.ALL},e.default=e.Allow})),Al=o((e=>{var t=e&&e.__createBinding||(Object.create?(function(e,t,n,r){r===void 0&&(r=n);var i=Object.getOwnPropertyDescriptor(t,n);(!i||(`get`in i?!t.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,r,i)}):(function(e,t,n,r){r===void 0&&(r=n),e[r]=t[n]})),n=e&&e.__exportStar||function(e,n){for(var r in e)r!==`default`&&!Object.prototype.hasOwnProperty.call(n,r)&&t(n,e,r)};Object.defineProperty(e,"__esModule",{value:!0}),e.Allow=e.MalformedJSON=e.PartialJSON=e.parseJSON=e.parse=void 0;var r=kl();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(kl(),e);var i=class extends Error{};e.PartialJSON=i;var a=class extends Error{};e.MalformedJSON=a;function o(e,t=r.Allow.ALL){if(typeof e!=`string`)throw TypeError(`expecting str, got ${typeof e}`);if(!e.trim())throw Error(`${e} is empty`);return s(e.trim(),t)}e.parseJSON=o;var s=(e,t)=>{let n=e.length,o=0,s=e=>{throw new i(`${e} at position ${o}`)},c=e=>{throw new a(`${e} at position ${o}`)},l=()=>(m(),o>=n&&s(`Unexpected end of input`),e[o]===`"`?u():e[o]===`{`?d():e[o]===`[`?f():e.substring(o,o+4)===`null`||r.Allow.NULL&t&&n-o<4&&`null`.startsWith(e.substring(o))?(o+=4,null):e.substring(o,o+4)===`true`||r.Allow.BOOL&t&&n-o<4&&`true`.startsWith(e.substring(o))?(o+=4,!0):e.substring(o,o+5)===`false`||r.Allow.BOOL&t&&n-o<5&&`false`.startsWith(e.substring(o))?(o+=5,!1):e.substring(o,o+8)===`Infinity`||r.Allow.INFINITY&t&&n-o<8&&`Infinity`.startsWith(e.substring(o))?(o+=8,1/0):e.substring(o,o+9)===`-Infinity`||r.Allow._INFINITY&t&&1<n-o&&n-o<9&&`-Infinity`.startsWith(e.substring(o))?(o+=9,-1/0):e.substring(o,o+3)===`NaN`||r.Allow.NAN&t&&n-o<3&&`NaN`.startsWith(e.substring(o))?(o+=3,NaN):p()),u=()=>{let i=o,a=!1;for(o++;o<n&&(e[o]!==`"`||a&&e[o-1]===`\\`);)a=e[o]===`\\`?!a:!1,o++;if(e.charAt(o)==`"`)try{return JSON.parse(e.substring(i,++o-Number(a)))}catch(e){c(String(e))}else if(r.Allow.STR&t)try{return JSON.parse(e.substring(i,o-Number(a))+`"`)}catch{return JSON.parse(e.substring(i,e.lastIndexOf(`\\`))+`"`)}s(`Unterminated string literal`)},d=()=>{o++,m();let i={};try{for(;e[o]!==`}`;){if(m(),o>=n&&r.Allow.OBJ&t)return i;let a=u();m(),o++;try{i[a]=l()}catch(e){if(r.Allow.OBJ&t)return i;throw e}m(),e[o]===`,`&&o++}}catch{if(r.Allow.OBJ&t)return i;s(`Expected '}' at end of object`)}return o++,i},f=()=>{o++;let n=[];try{for(;e[o]!==`]`;)n.push(l()),m(),e[o]===`,`&&o++}catch{if(r.Allow.ARR&t)return n;s(`Expected ']' at end of array`)}return o++,n},p=()=>{if(o===0){e===`-`&&c(`Not sure what '-' is`);try{return JSON.parse(e)}catch(n){if(r.Allow.NUM&t)try{return JSON.parse(e.substring(0,e.lastIndexOf(`e`)))}catch{}c(String(n))}}let i=o;for(e[o]===`-`&&o++;e[o]&&`,]}`.indexOf(e[o])===-1;)o++;o==n&&!(r.Allow.NUM&t)&&s(`Unterminated number literal`);try{return JSON.parse(e.substring(i,o))}catch{e.substring(i,o)===`-`&&s(`Not sure what '-' is`);try{return JSON.parse(e.substring(i,e.lastIndexOf(`e`)))}catch(e){c(String(e))}}},m=()=>{for(;o<n&&`
|
|
5
5
|
\r `.includes(e[o]);)o++};return l()};e.parse=o}))(),Sie=new Set([`"`,`\\`,`/`,`b`,`f`,`n`,`r`,`t`,`u`]);function Cie(e){let t=e.codePointAt(0);return t!==void 0&&t>=0&&t<=31}function wie(e){switch(e){case`\b`:return`\\b`;case`\f`:return`\\f`;case`
|
|
6
6
|
`:return`\\n`;case`\r`:return`\\r`;case` `:return`\\t`;default:return`\\u${e.codePointAt(0)?.toString(16).padStart(4,`0`)??`0000`}`}}function jl(e){let t=``,n=!1;for(let r=0;r<e.length;r++){let i=e[r];if(!n){t+=i,i===`"`&&(n=!0);continue}if(i===`"`){t+=i,n=!1;continue}if(i===`\\`){let n=e[r+1];if(n===void 0){t+=`\\\\`;continue}if(n===`u`){let n=e.slice(r+2,r+6);if(/^[0-9a-fA-F]{4}$/.test(n)){t+=`\\u${n}`,r+=5;continue}}if(Sie.has(n)){t+=`\\${n}`,r+=1;continue}t+=`\\\\`;continue}t+=Cie(i)?wie(i):i}return t}function Ml(e){try{return JSON.parse(e)}catch(t){let n=jl(e);if(n!==e)return JSON.parse(n);throw t}}function Tie(e){if(!e||e.trim()===``)return{};try{return Ml(e)}catch{try{return(0,Al.parse)(e)??{}}catch{try{return(0,Al.parse)(jl(e))??{}}catch{return{}}}}}function Eie(e){return D(e)&&N(e,`check`)&&N(e,`errors`)&&oe(e.check)&&oe(e.errors)}function Nl(e){return N(e,`~guard`)&&Eie(e[`~guard`])}function Pl(e){return N(e,`~refine`)&&x(e[`~refine`])&&ve(e[`~refine`],0,e=>D(e)&&N(e,`check`)&&N(e,`error`)&&oe(e.check)&&oe(e.error))}function Fl(e){return D(e)&&!x(e)}function Il(e){return C(e)}function Ll(e){return Fl(e)||Il(e)}function Rl(e){return N(e,`additionalItems`)&&Ll(e.additionalItems)}function zl(e){return N(e,`additionalProperties`)&&Ll(e.additionalProperties)}function Bl(e){return N(e,`allOf`)&&x(e.allOf)&&e.allOf.every(e=>Ll(e))}function Vl(e){return N(e,`$anchor`)&&O(e.$anchor)}function Hl(e){return N(e,`anyOf`)&&x(e.anyOf)&&e.anyOf.every(e=>Ll(e))}function Ul(e){return N(e,`const`)}function Wl(e){return N(e,`contains`)&&Ll(e.contains)}function Gl(e){return N(e,`default`)}function Kl(e){return N(e,`dependencies`)&&D(e.dependencies)&&Object.values(e.dependencies).every(e=>Ll(e)||x(e)&&e.every(e=>O(e)))}function ql(e){return N(e,`dependentRequired`)&&D(e.dependentRequired)&&Object.values(e.dependentRequired).every(e=>x(e)&&e.every(e=>O(e)))}function Jl(e){return N(e,`dependentSchemas`)&&D(e.dependentSchemas)&&Object.values(e.dependentSchemas).every(e=>Ll(e))}function Yl(e){return N(e,`$dynamicAnchor`)&&O(e.$dynamicAnchor)}function Xl(e){return N(e,`$dynamicRef`)&&O(e.$dynamicRef)}function Zl(e){return N(e,`else`)&&Ll(e.else)}function Ql(e){return N(e,`enum`)&&x(e.enum)}function $l(e){return N(e,`exclusiveMaximum`)&&(T(e.exclusiveMaximum)||S(e.exclusiveMaximum))}function eu(e){return N(e,`exclusiveMinimum`)&&(T(e.exclusiveMinimum)||S(e.exclusiveMinimum))}function tu(e){return N(e,`format`)&&O(e.format)}function nu(e){return N(e,`$id`)&&O(e.$id)}function ru(e){return N(e,`if`)&&Ll(e.if)}function iu(e){return N(e,`items`)&&(Ll(e.items)||x(e.items)&&e.items.every(e=>Ll(e)))}function au(e){return iu(e)&&x(e.items)}function ou(e){return N(e,`maximum`)&&(T(e.maximum)||S(e.maximum))}function su(e){return N(e,`maxContains`)&&T(e.maxContains)}function cu(e){return N(e,`maxItems`)&&T(e.maxItems)}function lu(e){return N(e,`maxLength`)&&T(e.maxLength)}function uu(e){return N(e,`maxProperties`)&&T(e.maxProperties)}function du(e){return N(e,`minimum`)&&(T(e.minimum)||S(e.minimum))}function fu(e){return N(e,`minContains`)&&T(e.minContains)}function pu(e){return N(e,`minItems`)&&T(e.minItems)}function mu(e){return N(e,`minLength`)&&T(e.minLength)}function hu(e){return N(e,`minProperties`)&&T(e.minProperties)}function gu(e){return N(e,`multipleOf`)&&(T(e.multipleOf)||S(e.multipleOf))}function _u(e){return N(e,`not`)&&Ll(e.not)}function vu(e){return N(e,`oneOf`)&&x(e.oneOf)&&e.oneOf.every(e=>Ll(e))}function yu(e){return N(e,`pattern`)&&(O(e.pattern)||e.pattern instanceof RegExp)}function bu(e){return N(e,`patternProperties`)&&D(e.patternProperties)&&Object.values(e.patternProperties).every(e=>Ll(e))}function xu(e){return N(e,`prefixItems`)&&x(e.prefixItems)&&e.prefixItems.every(e=>Ll(e))}function Su(e){return N(e,`properties`)&&D(e.properties)&&Object.values(e.properties).every(e=>Ll(e))}function Cu(e){return N(e,`propertyNames`)&&(D(e.propertyNames)||Ll(e.propertyNames))}function Die(e){return N(e,`$recursiveAnchor`)&&C(e.$recursiveAnchor)}function wu(e){return Die(e)&&A(e.$recursiveAnchor,!0)}function Tu(e){return N(e,`$recursiveRef`)&&O(e.$recursiveRef)}function Eu(e){return N(e,`$ref`)&&O(e.$ref)}function Du(e){return N(e,`required`)&&x(e.required)&&e.required.every(e=>O(e))}function Ou(e){return N(e,`then`)&&Ll(e.then)}function ku(e){return N(e,`type`)&&(O(e.type)||x(e.type)&&e.type.every(e=>O(e)))}function Au(e){return N(e,`uniqueItems`)&&C(e.uniqueItems)}function ju(e){return N(e,`unevaluatedItems`)&&Ll(e.unevaluatedItems)}function Mu(e){return N(e,`unevaluatedProperties`)&&Ll(e.unevaluatedProperties)}var Nu=class{constructor(){let e=new Set,t=new Set;this.stack=[{indices:e,keys:t}]}Push(){let e=new Set,t=new Set;return this.stack.push({indices:e,keys:t}),!0}Pop(){return this.stack.pop(),!0}AddIndex(e){return this.GetIndices().add(e),!0}AddKey(e){return this.GetKeys().add(e),!0}GetIndices(){return this.stack[this.stack.length-1].indices}GetKeys(){return this.stack[this.stack.length-1].keys}Merge(e){for(let t of e)t.GetIndices().forEach(e=>this.GetIndices().add(e)),t.GetKeys().forEach(e=>this.GetKeys().add(e));return!0}},Oie=class extends Nu{constructor(e){super(),this.callback=e}AddError(e){return this.callback(e),!1}},Pu=class extends Oie{constructor(){super(e=>this.errors.push(e)),this.errors=[]}AddError(e){return this.errors.push(e),!1}GetErrors(){return this.errors}};function Fu(e,t,n,r){return n[`~guard`].check(r)}function Iu(e,t,n,r,i,a){return i[`~guard`].check(a)||t.AddError({keyword:`~guard`,schemaPath:n,instancePath:r,params:{errors:i[`~guard`].errors(a)}})}function Lu(e,t,n,r){return ve(n[`~refine`],0,(e,t)=>e.check(r))}function Ru(e,t,n,r,i,a){return ye(i[`~refine`],0,(e,i)=>e.check(a)||t.AddError({keyword:`~refine`,schemaPath:n,instancePath:r,params:{index:i,message:e.error(a)}}))}function zu(e){return iu(e)&&x(e.items)}function Bu(e,t,n,r){return zu(n)?r.every((r,i)=>ue(i,n.items.length)||tm(e,t,n.additionalItems,r)&&t.AddIndex(i)):!0}function Vu(e,t,n,r,i,a){return zu(i)?a.every((a,o)=>{let s=`${n}/additionalItems`,c=`${r}/${o}`;return ue(o,i.items.length)||rm(e,t,s,c,i.additionalItems,a)&&t.AddIndex(o)}):!0}function Hu(e){return`^${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}$`}function Uu(e){let t=[];return bu(e)&&t.push(...P(e.patternProperties)),Su(e)&&t.push(...P(e.properties).map(Hu)),A(t.length,0)?`(?!)`:`(${t.join(`|`)})`}function Wu(e,t,n,r){let i=new RegExp(Uu(n));return ve(P(r),0,(a,o)=>i.test(a)||tm(e,t,n.additionalProperties,r[a])&&t.AddKey(a))}function Gu(e,t,n,r,i,a){let o=new RegExp(Uu(i)),s=[];return ye(P(a),0,(c,l)=>{let u=`${n}/additionalProperties`,d=`${r}/${c}`,f=new Pu,p=o.test(c)||rm(e,f,u,d,i.additionalProperties,a[c])&&t.AddKey(c);return p||s.push(c),p})||t.AddError({keyword:`additionalProperties`,schemaPath:n,instancePath:r,params:{additionalProperties:s}})}function Ku(e,t,n,r){let i=n.allOf.reduce((t,n)=>{let i=new Nu;return nm(e,i,n,r)?[...t,i]:t},[]);return A(i.length,n.allOf.length)&&t.Merge(i)}function qu(e,t,n,r,i,a){let o=[],s=i.allOf.reduce((t,i,s)=>{let c=`${n}/allOf/${s}`,l=new Pu,u=im(e,l,c,r,i,a);return u||o.push(l),u?[...t,l]:t},[]),c=A(s.length,i.allOf.length)&&t.Merge(s);return c||o.forEach(e=>e.GetErrors().forEach(e=>t.AddError(e))),c}function Ju(e,t,n,r){let i=n.anyOf.reduce((t,n)=>{let i=new Nu;return nm(e,i,n,r)?[...t,i]:t},[]);return j(i.length,0)&&t.Merge(i)}function Yu(e,t,n,r,i,a){let o=[],s=i.anyOf.reduce((t,i,s)=>{let c=new Pu,l=im(e,c,`${n}/anyOf/${s}`,r,i,a);return l||o.push(c),l?[...t,c]:t},[]),c=j(s.length,0)&&t.Merge(s);return c||o.forEach(e=>e.GetErrors().forEach(e=>t.AddError(e))),c||t.AddError({keyword:`anyOf`,schemaPath:n,instancePath:r,params:{}})}function Xu(e,t,n,r){return n}function Zu(e,t,n,r,i,a){return Xu(e,t,i,a)||t.AddError({keyword:`boolean`,schemaPath:n,instancePath:r,params:{}})}function Qu(e,t,n,r){return he(n.const)?A(r,n.const):De(r,n.const)}function $u(e,t,n,r,i,a){return Qu(e,t,i,a)||t.AddError({keyword:`const`,schemaPath:n,instancePath:r,params:{allowedValue:i.const}})}function ed(e){return!(fu(e)&&A(e.minContains,0))}function td(e,t,n,r){return ed(n)?!A(r.length,0)&&r.some(r=>nm(e,t,n.contains,r)):!0}function nd(e,t,n,r,i,a){return td(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:1}})}function rd(e,t,n,r){let i=A(P(r).length,0),a=ve(Se(n.dependencies),0,([n,i])=>!N(r,n)||(x(i)?i.every(e=>N(r,e)):nm(e,t,i,r)));return i||a}function id(e,t,n,r,i,a){let o=A(P(a).length,0),s=ye(Se(i.dependencies),0,([i,o])=>{let s=`${n}/dependencies/${i}`;return!N(a,i)||(x(o)?o.every(e=>N(a,e)||t.AddError({keyword:`dependencies`,schemaPath:n,instancePath:r,params:{property:i,dependencies:o}})):im(e,t,s,r,o,a))});return o||s}function ad(e,t,n,r){let i=A(P(r).length,0),a=ve(Se(n.dependentRequired),0,([e,t])=>!N(r,e)||t.every(e=>N(r,e)));return i||a}function od(e,t,n,r,i,a){let o=A(P(a).length,0),s=ye(Se(i.dependentRequired),0,([e,i])=>!N(a,e)||ye(i,0,o=>N(a,o)||t.AddError({keyword:`dependentRequired`,schemaPath:n,instancePath:r,params:{property:e,dependencies:i}})));return o||s}function sd(e,t,n,r){let i=A(P(r).length,0),a=ve(Se(n.dependentSchemas),0,([n,i])=>!N(r,n)||nm(e,t,i,r));return i||a}function cd(e,t,n,r,i,a){let o=A(P(a).length,0),s=ye(Se(i.dependentSchemas),0,([i,o])=>{let s=`${n}/dependentSchemas/${i}`;return!N(a,i)||im(e,t,s,r,o,a)});return o||s}function ld(e,t,n,r){let i=e.DynamicRef(n)??!1;return Ll(i)&&nm(e,t,i,r)}function ud(e,t,n,r,i,a){let o=e.DynamicRef(i)??!1;return Ll(o)&&im(e,t,`#`,r,o,a)}function dd(e,t,n,r){return n.enum.some(e=>he(e)?A(r,e):De(r,e))}function fd(e,t,n,r,i,a){return dd(e,t,i,a)||t.AddError({keyword:`enum`,schemaPath:n,instancePath:r,params:{allowedValues:i.enum}})}function pd(e,t,n,r){return ue(r,n.exclusiveMaximum)}function md(e,t,n,r,i,a){return pd(e,t,i,a)||t.AddError({keyword:`exclusiveMaximum`,schemaPath:n,instancePath:r,params:{comparison:`<`,limit:i.exclusiveMaximum}})}function hd(e,t,n,r){return j(r,n.exclusiveMinimum)}function gd(e,t,n,r,i,a){return hd(e,t,i,a)||t.AddError({keyword:`exclusiveMinimum`,schemaPath:n,instancePath:r,params:{comparison:`>`,limit:i.exclusiveMinimum}})}var _d=[0,31,28,31,30,31,30,31,31,30,31,30,31],vd=/^(\d\d\d\d)-(\d\d)-(\d\d)$/;function yd(e){return e%4==0&&(e%100!=0||e%400==0)}function bd(e){let t=vd.exec(e);if(!t)return!1;let n=+t[1],r=+t[2],i=+t[3];return r>=1&&r<=12&&i>=1&&i<=(r===2&&yd(n)?29:_d[r])}var xd=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(?:Z|([+-])(\d\d):(\d\d))?$/i;function Sd(e,t=!0){let n=xd.exec(e);if(!n)return!1;let r=+n[1],i=+n[2],a=+n[3],o=n[4]===`-`?-1:1,s=+(n[5]||0),c=+(n[6]||0);if(s>23||c>59||t&&!n[4]&&e.toLowerCase().indexOf(`z`)===-1)return!1;if(r<=23&&i<=59&&a<60)return!0;let l=i-c*o,u=r-s*o-+(l<0);return(u===23||u===-1)&&(l===59||l===-1)&&a<61}function Cd(e,t=!0){let n=e.split(/T/i);return n.length===2&&bd(n[0])&&Sd(n[1],t)}var wd=/^P((\d+Y(\d+M(\d+D)?)?|\d+M(\d+D)?|\d+D)(T(\d+H(\d+M(\d+S)?)?|\d+M(\d+S)?|\d+S))?|T(\d+H(\d+M(\d+S)?)?|\d+M(\d+S)?|\d+S)|\d+W)$/;function Td(e){return wd.test(e)}var Ed=/^(?!.*\.\.)[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i;function Dd(e){return Ed.test(e)}var Od=36,kd=1,Ad=26,jd=38,Md=700,Nd=72,Pd=128;function Fd(e,t,n){e=n?Math.floor(e/Md):e>>1,e+=Math.floor(e/t);let r=0;for(;e>455;)e=Math.floor(e/(Od-kd)),r+=Od;return r+Math.floor(36*e/(e+jd))}function Id(e){let t=[],n=Pd,r=0,i=Nd,a=e.lastIndexOf(`-`);if(a>0)for(let n=0;n<a;n++){let r=e.charCodeAt(n);if(r>=128)throw Error(`Invalid punycode: non-basic before delimiter`);t.push(r)}let o=a<0?0:a+1;for(;o<e.length;){let a=r,s=1,c=Od;for(;;){if(o>=e.length)throw Error(`Invalid punycode: unexpected end of input`);let t=e.charCodeAt(o++),n;if(t>=97&&t<=122)n=t-97;else if(t>=48&&t<=57)n=t-48+26;else if(t>=65&&t<=90)n=t-65;else throw Error(`Invalid punycode: bad digit character`);r+=n*s;let a=c<=i?kd:c>=i+Ad?Ad:c-i;if(n<a)break;s*=Od-a,c+=Od}let l=t.length+1;i=Fd(r-a,l,a===0),n+=Math.floor(r/l),r%=l,t.splice(r,0,n),r++}return globalThis.String.fromCodePoint(...t)}function Ld(e){return/\p{Mn}/u.test(String.fromCodePoint(e))}function Rd(e){return/\p{Mc}/u.test(String.fromCodePoint(e))}function zd(e){return/\p{Me}/u.test(String.fromCodePoint(e))}function Bd(e){return Ld(e)||Rd(e)||zd(e)}var Vd=new Set([1600,2042,12334,12335,12337,12338,12339,12340,12341,12347]),Hd=new Set([2381,2509,2637,2765,2893,3021,3149,3277,3387,3388,3405,3530,6980,7082,7083,43456,69702,69759,69817,69939,69940,70080,70197,70477,70722,70850,71103,71231,71350,72767,73028,73029]);function Ud(e){return/\p{Script=Greek}/u.test(String.fromCodePoint(e))}function Wd(e){return/\p{Script=Hebrew}/u.test(String.fromCodePoint(e))}function Gd(e){return/\p{Script=Hiragana}/u.test(String.fromCodePoint(e))}function Kd(e){return/\p{Script=Katakana}/u.test(String.fromCodePoint(e))}function qd(e){return/\p{Script=Han}/u.test(String.fromCodePoint(e))}function Jd(e){return e>=1632&&e<=1641}function Yd(e){return e>=1776&&e<=1785}function Xd(e){return Hd.has(e)}function Zd(e){if(e.length===0)return!1;let t=[...e].map(e=>e.codePointAt(0)),n=t.length;if(t[0]===45||t[n-1]===45||n>=4&&t[2]===45&&t[3]===45||Bd(t[0]))return!1;let r=!1,i=!1,a=!1;for(let e=0;e<n;e++){let n=t[e];if(Vd.has(n))return!1;(Gd(n)||Kd(n)||qd(n))&&(r=!0),Jd(n)&&(i=!0),Yd(n)&&(a=!0);let o=t[e-1],s=t[e+1];switch(n){case 183:if(o!==108||s!==108)return!1;break;case 885:if(s===void 0||!Ud(s))return!1;break;case 1523:case 1524:if(o===void 0||!Wd(o))return!1;break;case 8205:if(o===void 0||!Xd(o))return!1;break;case 12539:break}}return!(e.includes(`・`)&&!r||i&&a)}function Qd(e){if(e.charCodeAt(0)===45||e.charCodeAt(e.length-1)===45||e.length>=4&&e.charCodeAt(2)===45&&e.charCodeAt(3)===45)return!1;for(let t=0;t<e.length;t++){let n=e.charCodeAt(t);if(!(n>=97&&n<=122||n>=65&&n<=90||n>=48&&n<=57||n===45))return!1}return!0}function $d(e){return e.toLowerCase().startsWith(`xn--`)}function ef(e){try{return Zd(Id(e.slice(4)))}catch{return!1}}function tf(e){return e.length===0||e.length>63?!1:$d(e)?ef(e):Zd(e)}function nf(e){return e.length===0||e.length>63?!1:$d(e)?ef(e):Qd(e)}function rf(e){if(e.length===0||e.length>253||e.charCodeAt(e.length-1)===46)return!1;for(let t of e.split(`.`))if(!nf(t))return!1;return!0}var af=/^(?!.*\.\.)[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+(?:\.[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+)*@[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?(?:\.[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?)*$/iu;function of(e){return af.test(e)}function sf(e){if(e.length===0||e.includes(` `))return!1;let t=e.normalize(`NFC`).replace(/[\u002E\u3002\uFF0E\uFF61]/g,`.`);if(t.length>253)return!1;for(let e of t.split(`.`))if(!tf(e))return!1;return!0}function cf(e,t,n){let r=0,i=0,a=0,o=0;for(let s=t;s<n;s++){let t=e.charCodeAt(s);if(t===46){if(a===0||i>255||o===48&&a>1)return!1;r++,i=0,a=0,o=0}else if(t>=48&&t<=57)a===0&&(o=t),i=i*10+(t-48),a++;else return!1}return r===3&&a>0&&i<=255&&!(o===48&&a>1)}function lf(e){return cf(e,0,e.length)}function uf(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function df(e){let t=e.length;if(t===0)return!1;let n=0,r=!1,i=0;if(e.charCodeAt(0)===58&&e.charCodeAt(1)===58){if(t===2)return!0;r=!0,i=2}for(;i<t;){let a=0,o=i;for(;i<t&&uf(e.charCodeAt(i));)i++,a++;if(a===0)return!1;let s=e.charCodeAt(i);if(s===46){if(!cf(e,o,t))return!1;n+=2,i=t;break}if(a>4)return!1;if(n++,i===t)break;if(s!==58)return!1;if(i++,e.charCodeAt(i)===58){if(r||e.charCodeAt(i+1)===58)return!1;if(r=!0,i++,i===t)break}}return r?n<=7:n===8}function ff(e){try{return new URL(e,`http://example.com`),!0}catch{return!1}}function pf(e){if(e.includes(` `)||e.includes(`\\`)||/[\x00-\x1F\x7F]/.test(e)||/%(?![0-9a-fA-F]{2})/.test(e))return!1;if(e===``)return!0;let t=e.indexOf(`:`);return t>0&&/^[a-zA-Z][a-zA-Z0-9+\-.]*$/.test(e.substring(0,t))?ff(e):e.match(/^([a-zA-Z][a-zA-Z0-9+\-.]*)(\/\/)/)&&t===-1?!1:ff(e)}function mf(e){try{return new URL(e),!0}catch{return!1}}var hf=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;function gf(e){return hf.test(e)}var _f=/^(?:\/(?:[^~/]|~0|~1)*)*$/;function vf(e){return _f.test(e)}function yf(e){if(e.length===0)return!1;try{return new RegExp(e),!0}catch{return!1}}var bf=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function xf(e){return bf.test(e)}var Sf=/^(?!.*[^\x00-\x7F])(?!.*\\)(?:(?:[a-z][a-z0-9+\-.]*:)?(?:\/\/[^\s[\]{}<>^`|]*)?|[^\s[\]{}<>^`|]*)(?:\?[^\s[\]{}<>^`|]*)?(?:#[^\s[\]{}<>^`|]*)?$/i;function Cf(e){return Sf.test(e)}var wf=/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;function Tf(e){return wf.test(e)}function Ef(e){return e>=97&&e<=122||e>=65&&e<=90}function Df(e){return Ef(e)||e>=48&&e<=57}function Of(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function kf(e){return Df(e)||e===43||e===45||e===46}function Af(e){return Df(e)||e===45||e===46||e===95||e===126}function jf(e){return e===33||e===36||e===38||e===39||e===40||e===41||e===42||e===43||e===44||e===59||e===61}function Mf(e){return Af(e)||jf(e)||e===58||e===64}function Nf(e){let t=e.length;if(t===0||!Ef(e.charCodeAt(0)))return!1;let n=1;for(;n<t;){let t=e.charCodeAt(n);if(t===58)break;if(!kf(t))return!1;n++}if(e.charCodeAt(n)!==58)return!1;if(n++,e.charCodeAt(n)===47&&e.charCodeAt(n+1)===47){n+=2;let r=n,i=-1;for(let r=n;r<t;r++){let t=e.charCodeAt(r);if(t===64){i=r;break}if(t===47||t===63||t===35)break}if(i!==-1){for(let t=r;t<i;t++){let n=e.charCodeAt(t);if(n===91||n===93)return!1;if(n===37){if(t+2>=i||!Of(e.charCodeAt(t+1))||!Of(e.charCodeAt(t+2)))return!1;t+=2}else if(!Af(n)&&!jf(n)&&n!==58)return!1}n=i+1}if(e.charCodeAt(n)===91){for(n++;n<t&&e.charCodeAt(n)!==93;)n++;if(e.charCodeAt(n)!==93)return!1;n++}else for(;n<t;){let t=e.charCodeAt(n);if(t===47||t===63||t===35||t===58)break;if(t<128&&!Af(t)&&!jf(t))return!1;n++}if(e.charCodeAt(n)===58)for(n++;n<t;){let t=e.charCodeAt(n);if(t===47||t===63||t===35)break;if(t<48||t>57)return!1;n++}}for(;n<t;){let r=e.charCodeAt(n);if(r===37){if(n+2>=t||!Of(e.charCodeAt(n+1))||!Of(e.charCodeAt(n+2)))return!1;n+=2}else if(r>127)return!1;else if(!(Mf(r)||r===47||r===63||r===35))return!1;n++}return!0}var Pf=/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;function Ff(e){return Pf.test(e)}var If=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;function Lf(e){return If.test(e)}var Rf=new Map;function zf(){Rf.clear()}function Bf(e,t){return Rf.get(e)?.(t)??!0}function Vf(){zf(),Rf.set(`date-time`,Cd),Rf.set(`date`,bd),Rf.set(`duration`,Td),Rf.set(`email`,Dd),Rf.set(`hostname`,rf),Rf.set(`idn-email`,of),Rf.set(`idn-hostname`,sf),Rf.set(`ipv4`,lf),Rf.set(`ipv6`,df),Rf.set(`iri-reference`,pf),Rf.set(`iri`,mf),Rf.set(`json-pointer-uri-fragment`,gf),Rf.set(`json-pointer`,vf),Rf.set(`regex`,yf),Rf.set(`relative-json-pointer`,xf),Rf.set(`time`,Sd),Rf.set(`uri-reference`,Cf),Rf.set(`uri-template`,Tf),Rf.set(`uri`,Nf),Rf.set(`url`,Ff),Rf.set(`uuid`,Lf)}Vf();function Hf(e,t,n,r){return Bf(n.format,r)}function Uf(e,t,n,r,i,a){return Hf(e,t,i,a)||t.AddError({keyword:`format`,schemaPath:n,instancePath:r,params:{format:i.format}})}function Wf(e,t,n,r){let i=Ou(n)?n.then:!0,a=Zl(n)?n.else:!0;return nm(e,t,n.if,r)?nm(e,t,i,r):nm(e,t,a,r)}function Gf(e,t,n,r,i,a){let o=Ou(i)?i.then:!0,s=Zl(i)?i.else:!0,c=new Pu,l=im(e,c,`${n}/if`,r,i.if,a)?im(e,c,`${n}/then`,r,o,a)||t.AddError({keyword:`if`,schemaPath:n,instancePath:r,params:{failingKeyword:`then`}}):im(e,t,`${n}/else`,r,s,a)||t.AddError({keyword:`if`,schemaPath:n,instancePath:r,params:{failingKeyword:`else`}});return l&&t.Merge([c]),l}function Kf(e,t,n,r){return ve(n.items,0,(n,i)=>de(r.length,i)||tm(e,t,n,r[i])&&t.AddIndex(i))}function qf(e,t,n,r,i,a){return ye(i.items,0,(i,o)=>{let s=`${n}/items/${o}`,c=`${r}/${o}`;return de(a.length,o)||rm(e,t,s,c,i,a[o])&&t.AddIndex(o)})}function Jf(e,t,n,r){return ve(r,xu(n)?n.prefixItems.length:0,(r,i)=>tm(e,t,n.items,r)&&t.AddIndex(i))}function Yf(e,t,n,r,i,a){return ye(a,xu(i)?i.prefixItems.length:0,(a,o)=>rm(e,t,`${n}/items`,`${r}/${o}`,i.items,a)&&t.AddIndex(o))}function Xf(e,t,n,r){return au(n)?Kf(e,t,n,r):Jf(e,t,n,r)}function Zf(e,t,n,r,i,a){return au(i)?qf(e,t,n,r,i,a):Yf(e,t,n,r,i,a)}function Qf(e){return Wl(e)}function $f(e,t,n,r){return Qf(n)?de(r.reduce((r,i)=>nm(e,t,n.contains,i)?++r:r,0),n.maxContains):!0}function ep(e,t,n,r,i,a){let o=fu(i)?i.minContains:1;return $f(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:o,maxContains:i.maxContains}})}function tp(e,t,n,r){return de(r,n.maximum)}function np(e,t,n,r,i,a){return tp(e,t,i,a)||t.AddError({keyword:`maximum`,schemaPath:n,instancePath:r,params:{comparison:`<=`,limit:i.maximum}})}function rp(e,t,n,r){return de(r.length,n.maxItems)}function ip(e,t,n,r,i,a){return rp(e,t,i,a)||t.AddError({keyword:`maxItems`,schemaPath:n,instancePath:r,params:{limit:i.maxItems}})}function ap(e,t,n,r){return ge(r,n.maxLength)}function op(e,t,n,r,i,a){return ap(e,t,i,a)||t.AddError({keyword:`maxLength`,schemaPath:n,instancePath:r,params:{limit:i.maxLength}})}function sp(e,t,n,r){return de(P(r).length,n.maxProperties)}function cp(e,t,n,r,i,a){return sp(e,t,i,a)||t.AddError({keyword:`maxProperties`,schemaPath:n,instancePath:r,params:{limit:i.maxProperties}})}function lp(e){return Wl(e)}function up(e,t,n,r){return lp(n)?fe(r.reduce((r,i)=>nm(e,t,n.contains,i)?++r:r,0),n.minContains):!0}function dp(e,t,n,r,i,a){return up(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:i.minContains}})}function fp(e,t,n,r){return fe(r,n.minimum)}function pp(e,t,n,r,i,a){return fp(e,t,i,a)||t.AddError({keyword:`minimum`,schemaPath:n,instancePath:r,params:{comparison:`>=`,limit:i.minimum}})}function mp(e,t,n,r){return fe(r.length,n.minItems)}function hp(e,t,n,r,i,a){return mp(e,t,i,a)||t.AddError({keyword:`minItems`,schemaPath:n,instancePath:r,params:{limit:i.minItems}})}function gp(e,t,n,r){return _e(r,n.minLength)}function _p(e,t,n,r,i,a){return gp(e,t,i,a)||t.AddError({keyword:`minLength`,schemaPath:n,instancePath:r,params:{limit:i.minLength}})}function vp(e,t,n,r){return fe(P(r).length,n.minProperties)}function yp(e,t,n,r,i,a){return vp(e,t,i,a)||t.AddError({keyword:`minProperties`,schemaPath:n,instancePath:r,params:{limit:i.minProperties}})}function bp(e,t,n,r){return pe(r,n.multipleOf)}function xp(e,t,n,r,i,a){return bp(e,t,i,a)||t.AddError({keyword:`multipleOf`,schemaPath:n,instancePath:r,params:{multipleOf:i.multipleOf}})}function Sp(e,t,n,r){let i=new Nu;return!nm(e,i,n.not,r)&&t.Merge([i])}function Cp(e,t,n,r,i,a){return Sp(e,t,i,a)||t.AddError({keyword:`not`,schemaPath:n,instancePath:r,params:{}})}function wp(e,t,n,r){let i=n.oneOf.reduce((t,n)=>{let i=new Nu;return nm(e,i,n,r)?[...t,i]:t},[]);return A(i.length,1)&&t.Merge(i)}function Tp(e,t,n,r,i,a){let o=[],s=[],c=i.oneOf.reduce((t,i,c)=>{let l=new Pu,u=im(e,l,`${n}/oneOf/${c}`,r,i,a);return u&&s.push(c),u||o.push(l),u?[...t,l]:t},[]),l=A(c.length,1)&&t.Merge(c);return!l&&A(s.length,0)&&o.forEach(e=>e.GetErrors().forEach(e=>t.AddError(e))),l||t.AddError({keyword:`oneOf`,schemaPath:n,instancePath:r,params:{passingSchemas:s}})}function Ep(e,t,n,r){return(O(n.pattern)?new RegExp(n.pattern,`u`):n.pattern).test(r)}function Dp(e,t,n,r,i,a){return Ep(e,t,i,a)||t.AddError({keyword:`pattern`,schemaPath:n,instancePath:r,params:{pattern:i.pattern}})}function Op(e,t,n,r){return ve(Se(n.patternProperties),0,([n,i])=>{let a=new RegExp(n,`u`);return ve(Se(r),0,([n,r])=>!a.test(n)||tm(e,t,i,r)&&t.AddKey(n))})}function kp(e,t,n,r,i,a){return ye(Se(i.patternProperties),0,([i,o])=>{let s=`${n}/patternProperties/${i}`,c=new RegExp(i,`u`);return ye(Se(a),0,([n,i])=>{let a=`${r}/${n}`;return!c.test(n)||rm(e,t,s,a,o,i)&&t.AddKey(n)})})}function Ap(e,t,n,r){return A(r.length,0)||ve(n.prefixItems,0,(n,i)=>de(r.length,i)||tm(e,t,n,r[i])&&t.AddIndex(i))}function jp(e,t,n,r,i,a){return A(a.length,0)||ye(i.prefixItems,0,(i,o)=>{let s=`${n}/prefixItems/${o}`,c=`${r}/${o}`;return de(a.length,o)||rm(e,t,s,c,i,a[o])&&t.AddIndex(o)})}function Mp(e,t){return e.includes(t)||Ge().exactOptionalPropertyTypes}function Np(e,t){return k(e[t])}function Pp(e,t,n,r){let i=Du(n)?n.required:[];return ve(Se(n.properties),0,([n,a])=>{let o=!N(r,n)||tm(e,t,a,r[n])&&t.AddKey(n);return Mp(i,n)?o:Np(r,n)||o})}function Fp(e,t,n,r,i,a){let o=Du(i)?i.required:[];return ye(Se(i.properties),0,([i,s])=>{let c=`${n}/properties/${i}`,l=`${r}/${i}`,u=()=>!N(a,i)||rm(e,t,c,l,s,a[i])&&t.AddKey(i);return Mp(o,i)?u():Np(a,i)||u()})}function Ip(e,t,n,r){return ve(P(r),0,(r,i)=>nm(e,t,n.propertyNames,r))}function Lp(e,t,n,r,i,a){let o=[];return ye(P(a),0,(t,a)=>{let s=`${r}/${t}`,c=`${n}/propertyNames`,l=im(e,new Pu,c,s,i.propertyNames,t);return l||o.push(t),l})||t.AddError({keyword:`propertyNames`,schemaPath:n,instancePath:r,params:{propertyNames:o}})}function Rp(e,t,n,r){let i=e.RecursiveRef(n)??!1;return Ll(i)&&nm(e,t,i,r)}function zp(e,t,n,r,i,a){let o=e.RecursiveRef(i)??!1;return Ll(o)&&im(e,t,`#`,r,o,a)}function Bp(e,t,n,r){let i=e.Ref(n)??!1,a=new Nu,o=Ll(i)&&nm(e,a,i,r);return o&&t.Merge([a]),o}function Vp(e,t,n,r,i,a){let o=e.Ref(i)??!1,s=new Pu,c=Ll(o)&&im(e,s,`#`,r,o,a);return c&&t.Merge([s]),c||s.GetErrors().forEach(e=>t.AddError(e)),c}function Hp(e,t,n,r){return ve(n.required,0,e=>N(r,e))}function Up(e,t,n,r,i,a){let o=[];return ye(i.required,0,e=>{let t=N(a,e);return t||o.push(e),t})||t.AddError({keyword:`required`,schemaPath:n,instancePath:r,params:{requiredProperties:o}})}function Wp(e,t,n,r,i){return A(n,`object`)?E(i):A(n,`array`)?x(i):A(n,`boolean`)?C(i):A(n,`integer`)?se(i):A(n,`number`)?T(i):A(n,`null`)?w(i):A(n,`string`)?O(i):A(n,`asyncIterator`)?ie(i):A(n,`bigint`)?S(i):A(n,`constructor`)?ae(i):A(n,`function`)?oe(i):A(n,`iterator`)?ce(i):A(n,`symbol`)?le(i):A(n,`undefined`)||A(n,`void`)?k(i):!0}function Gp(e,t,n,r,i){return n.some(n=>Wp(e,t,n,r,i))}function Kp(e,t,n,r){return x(n.type)?Gp(e,t,n.type,n,r):Wp(e,t,n.type,n,r)}function qp(e,t,n,r,i,a){return(x(i.type)?Gp(e,t,i.type,i,a):Wp(e,t,i.type,i,a))||t.AddError({keyword:`type`,schemaPath:n,instancePath:r,params:{type:i.type}})}function Jp(e,t,n,r){let i=t.GetIndices();return ve(r,0,(r,a)=>(i.has(a)||nm(e,t,n.unevaluatedItems,r))&&t.AddIndex(a))}function Yp(e,t,n,r,i,a){let o=t.GetIndices(),s=[];return ye(a,0,(a,c)=>{let l=new Pu,u=(o.has(c)||im(e,l,n,r,i.unevaluatedItems,a))&&t.AddIndex(c);return u||s.push(c),u})||t.AddError({keyword:`unevaluatedItems`,schemaPath:n,instancePath:r,params:{unevaluatedItems:s}})}function Xp(e,t,n,r){let i=t.GetKeys();return ve(Se(r),0,([r,a])=>i.has(r)||nm(e,t,n.unevaluatedProperties,a)&&t.AddKey(r))}function Zp(e,t,n,r,i,a){let o=t.GetKeys(),s=[];return ye(Se(a),0,([a,c])=>{let l=new Pu,u=o.has(a)||im(e,l,n,r,i.unevaluatedProperties,c)&&t.AddKey(a);return u||s.push(a),u})||t.AddError({keyword:`unevaluatedProperties`,schemaPath:n,instancePath:r,params:{unevaluatedProperties:s}})}function Qp(e){return!A(e.uniqueItems,!1)}function $p(e,t,n,r){if(!Qp(n))return!0;let i=new Set(r.map(yn)).size,a=r.length;return A(i,a)}function em(e,t,n,r,i,a){if(!Qp(i))return!0;let o=new Set,s=a.reduce((e,t,n)=>{let r=yn(t);return o.has(r)?[...e,n]:(o.add(r),e)},[]);return A(s.length,0)||t.AddError({keyword:`uniqueItems`,schemaPath:n,instancePath:r,params:{duplicateItems:s}})}function tm(e,t,n,r){return t.Push()&&nm(e,t,n,r)&&t.Pop()}function nm(e,t,n,r){e.Push(n);let i=Il(n)?Xu(e,t,n,r):(!ku(n)||Kp(e,t,n,r))&&(!(D(r)&&!x(r))||(!Du(n)||Hp(e,t,n,r))&&(!zl(n)||Wu(e,t,n,r))&&(!Kl(n)||rd(e,t,n,r))&&(!ql(n)||ad(e,t,n,r))&&(!Jl(n)||sd(e,t,n,r))&&(!bu(n)||Op(e,t,n,r))&&(!Su(n)||Pp(e,t,n,r))&&(!Cu(n)||Ip(e,t,n,r))&&(!hu(n)||vp(e,t,n,r))&&(!uu(n)||sp(e,t,n,r)))&&(!x(r)||(!Rl(n)||Bu(e,t,n,r))&&(!Wl(n)||td(e,t,n,r))&&(!iu(n)||Xf(e,t,n,r))&&(!su(n)||$f(e,t,n,r))&&(!cu(n)||rp(e,t,n,r))&&(!fu(n)||up(e,t,n,r))&&(!pu(n)||mp(e,t,n,r))&&(!xu(n)||Ap(e,t,n,r))&&(!Au(n)||$p(e,t,n,r)))&&(!O(r)||(!lu(n)||ap(e,t,n,r))&&(!mu(n)||gp(e,t,n,r))&&(!tu(n)||Hf(e,t,n,r))&&(!yu(n)||Ep(e,t,n,r)))&&(!(T(r)||S(r))||(!$l(n)||pd(e,t,n,r))&&(!eu(n)||hd(e,t,n,r))&&(!ou(n)||tp(e,t,n,r))&&(!du(n)||fp(e,t,n,r))&&(!gu(n)||bp(e,t,n,r)))&&(!Eu(n)||Bp(e,t,n,r))&&(!Tu(n)||Rp(e,t,n,r))&&(!Xl(n)||ld(e,t,n,r))&&(!Nl(n)||Fu(e,t,n,r))&&(!Ul(n)||Qu(e,t,n,r))&&(!Ql(n)||dd(e,t,n,r))&&(!ru(n)||Wf(e,t,n,r))&&(!_u(n)||Sp(e,t,n,r))&&(!Bl(n)||Ku(e,t,n,r))&&(!Hl(n)||Ju(e,t,n,r))&&(!vu(n)||wp(e,t,n,r))&&(!ju(n)||!x(r)||Jp(e,t,n,r))&&(!Mu(n)||!D(r)||Xp(e,t,n,r))&&(!Pl(n)||Lu(e,t,n,r));return e.Pop(n),i}function rm(e,t,n,r,i,a){return t.Push()&&im(e,t,n,r,i,a)&&t.Pop()}function im(e,t,n,r,i,a){e.Push(i);let o=Il(i)?Zu(e,t,n,r,i,a):!!((!ku(i)||qp(e,t,n,r,i,a))&+(!(D(a)&&!x(a))||!!((!Du(i)||Up(e,t,n,r,i,a))&+(!zl(i)||Gu(e,t,n,r,i,a))&(!Kl(i)||id(e,t,n,r,i,a))&(!ql(i)||od(e,t,n,r,i,a))&(!Jl(i)||cd(e,t,n,r,i,a))&(!bu(i)||kp(e,t,n,r,i,a))&(!Su(i)||Fp(e,t,n,r,i,a))&(!Cu(i)||Lp(e,t,n,r,i,a))&(!hu(i)||yp(e,t,n,r,i,a))&(!uu(i)||cp(e,t,n,r,i,a))))&(!x(a)||!!((!Rl(i)||Vu(e,t,n,r,i,a))&+(!Wl(i)||nd(e,t,n,r,i,a))&(!iu(i)||Zf(e,t,n,r,i,a))&(!su(i)||ep(e,t,n,r,i,a))&(!cu(i)||ip(e,t,n,r,i,a))&(!fu(i)||dp(e,t,n,r,i,a))&(!pu(i)||hp(e,t,n,r,i,a))&(!xu(i)||jp(e,t,n,r,i,a))&(!Au(i)||em(e,t,n,r,i,a))))&(!O(a)||!!((!lu(i)||op(e,t,n,r,i,a))&+(!mu(i)||_p(e,t,n,r,i,a))&(!tu(i)||Uf(e,t,n,r,i,a))&(!yu(i)||Dp(e,t,n,r,i,a))))&(!(T(a)||S(a))||!!((!$l(i)||md(e,t,n,r,i,a))&+(!eu(i)||gd(e,t,n,r,i,a))&(!ou(i)||np(e,t,n,r,i,a))&(!du(i)||pp(e,t,n,r,i,a))&(!gu(i)||xp(e,t,n,r,i,a))))&(!Eu(i)||Vp(e,t,n,r,i,a))&(!Tu(i)||zp(e,t,n,r,i,a))&(!Xl(i)||ud(e,t,n,r,i,a))&(!Nl(i)||Iu(e,t,n,r,i,a))&(!Ul(i)||$u(e,t,n,r,i,a))&(!Ql(i)||fd(e,t,n,r,i,a))&(!ru(i)||Gf(e,t,n,r,i,a))&(!_u(i)||Cp(e,t,n,r,i,a))&(!Bl(i)||qu(e,t,n,r,i,a))&(!Hl(i)||Yu(e,t,n,r,i,a))&(!vu(i)||Tp(e,t,n,r,i,a))&(!ju(i)||!x(a)||Yp(e,t,n,r,i,a))&(!Mu(i)||!D(a)||Zp(e,t,n,r,i,a)))&&(!Pl(i)||Ru(e,t,n,r,i,a));return e.Pop(i),o}function am(e,t){return D(t)&&!be(e)?t[e]:void 0}function om(e,t){return e.reduce((e,t)=>am(t,e),t)}function sm(e){if(A(e.length,0))return[];let t=e.split(`/`).map(e=>e.replace(/~1/g,`/`).replace(/~0/g,`~`));return t.length>0&&t[0]===``?t.slice(1):t}function cm(e,t){return om(sm(t),e)}function lm(e,t,n){if(e.$id===n.hash)return e;let r=new URL(e.$id,t.href),i=new URL(n.href,t.href);if(A(r.pathname,i.pathname))return n.hash.startsWith(`#`)?fm(e,t,n):e}function um(e,t,n){let r=new URL(`#${e.$anchor}`,t.href),i=new URL(n.href,t.href);return A(r.href,i.href)?e:void 0}function dm(e,t,n){let r=new URL(`#${e.$dynamicAnchor}`,t.href),i=new URL(n.href,t.href);return A(r.href,i.href)?e:void 0}function fm(e,t,n){if(n.href.endsWith(`#`))return e;if(!n.hash.startsWith(`#`))return;let r=decodeURIComponent(n.hash.slice(1));if(r.startsWith(`/`))return cm(e,r)}function pm(e,t,n){if(nu(e)){let r=lm(e,t,n);if(!k(r))return r}if(Vl(e)){let r=um(e,t,n);if(!k(r))return r}if(Yl(e)){let r=dm(e,t,n);if(!k(r))return r}return fm(e,t,n)}function mm(e,t,n){return e.reduce((e,r)=>{let i=gm(r,t,n);return k(i)?e:i},void 0)}function hm(e,t,n){return P(e).reduce((r,i)=>{let a=gm(e[i],t,n);return k(a)?r:a},void 0)}function gm(e,t,n){let r=Fl(e)&&nu(e)?new URL(e.$id,t.href):t;if(Fl(e)){let t=pm(e,r,n);if(!k(t))return t}if(x(e))return mm(e,r,n);if(D(e))return hm(e,r,n)}function _m(e,t){let n=new URL(`http://unknown/`),r=nu(e)?new URL(e.$id,n.href):n;return gm(e,r,new URL(t,r.href))}function vm(e,t,n,r){let i=n.$dynamicRef.startsWith(`#`)?_m(t,n.$dynamicRef):_m(e,n.$dynamicRef);if(!k(i))return!Fl(i)||!Yl(i)||new URL(n.$dynamicRef,`http://unknown/`).hash.startsWith(`#/`)?i:r.find(e=>e.$dynamicAnchor===i.$dynamicAnchor)??i}var ym=function(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)},bm,xm,Sm,Cm,wm,Tm=class{constructor(e,t){bm.add(this),this.context=e,this.schema=t,this.ids=[],this.anchors=[],this.recursiveAnchors=[],this.dynamicAnchors=[]}BaseURL(){return this.ids.reduce((e,t)=>new URL(t.$id,e),new URL(`http://unknown`))}Base(){return this.ids[this.ids.length-1]??this.schema}Push(e){Fl(e)&&(nu(e)&&(this.ids.push(e),ym(this,bm,`m`,xm).call(this,e)),Vl(e)&&this.anchors.push(e),wu(e)&&this.recursiveAnchors.push(e),Yl(e)&&this.dynamicAnchors.push(e))}Pop(e){Fl(e)&&(nu(e)&&(this.ids.pop(),ym(this,bm,`m`,Sm).call(this,e)),Vl(e)&&this.anchors.pop(),wu(e)&&this.recursiveAnchors.pop(),Yl(e)&&this.dynamicAnchors.pop())}Ref(e){return ym(this,bm,`m`,Cm).call(this,e)??ym(this,bm,`m`,wm).call(this,e)}RecursiveRef(e){return wu(this.Base())?_m(this.recursiveAnchors[0],e.$recursiveRef):_m(this.Base(),e.$recursiveRef)}DynamicRef(e){let t=this.schema;return vm(t,this.Base(),e,this.dynamicAnchors)}};bm=new WeakSet,xm=function e(t,n=!0){if(!Fl(t))return;let r=t;if(!(!n&&nu(r))){!n&&Yl(r)&&this.dynamicAnchors.push(r);for(let t of P(r))ym(this,bm,`m`,e).call(this,r[t],!1)}},Sm=function e(t,n=!0){if(!Fl(t))return;let r=t;if(!(!n&&nu(r))){!n&&Yl(r)&&this.dynamicAnchors.pop();for(let t of P(r))ym(this,bm,`m`,e).call(this,r[t],!1)}},Cm=function(e){return N(this.context,e.$ref)?this.context[e.$ref]:void 0},wm=function(e){let t=this.schema;return e.$ref.startsWith(`#`)?_m(this.Base(),e.$ref):_m(t,e.$ref)};function Em(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return nm(new Tm(t,n),new Nu,n,r)}function Dm(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return Em(t,n,r)}function Om(e,t,n){return x(n)?n.map(n=>Xm(e,t.items,n)):n}function km(e,t,n){return t.Clean(n)}function Am(e,t,n){return Xm({...e,...t.$defs},kt(t.$ref),n)}function jm(e,t){let n=N(t,`unevaluatedProperties`)?{additionalProperties:t.unevaluatedProperties}:{},r=Oc(Ec(e,t));return Bt(r)?Hne(r,n):r}function Mm(e,t,n){return Xm(e,jm(e,t),n)}function Nm(e){return N(e,`additionalProperties`)?e.additionalProperties:void 0}function Pm(e,t,n){if(!D(n)||x(n))return n;let r=Nm(t);for(let i of P(n)){if(N(t.properties,i)){n[i]=Xm(e,t.properties[i],n[i]);continue}if(C(r)&&A(r,!0)||Qe(r)&&Dm(e,r,n[i])){n[i]=Xm(e,r,n[i]);continue}delete n[i]}return n}function Fm(e,t,n){if(!D(n))return n;let r=Nm(t),[i,a]=[new RegExp(Lr(t)),zr(t)];for(let t of P(n)){if(i.test(t)){n[t]=Xm(e,a,n[t]);continue}if(C(r)&&A(r,!0)||Qe(r)&&Dm(e,r,n[t])){n[t]=Xm(e,r,n[t]);continue}delete n[t]}return n}function Im(e,t,n){return N(e,t.$ref)?Xm(e,e[t.$ref],n):n}function Lm(e,t,n){if(!x(n))return n;let r=Math.min(n.length,t.items.length);for(let i=0;i<r;i++)n[i]=Xm(e,t.items[i],n[i]);return j(n.length,r)?n.slice(0,r):n}function Rm(e){return e}function zm(e){let t={};for(let n of P(e))be(n)||(t[n]=Km(e[n]));for(let n of Ce(e))t[n]=Km(e[n]);return t}function Bm(e){return me(e)?Rm(e):zm(e)}function Vm(e){return e.map(e=>Km(e))}function Hm(e){return e.slice()}function Um(e){return new Map(Km([...e.entries()]))}function Wm(e){return new Set(Km([...e.values()]))}function Gm(e){return e}function Km(e){return je(e)?Hm(e):Fe(e)?Um(e):Pe(e)?Wm(e):x(e)?Vm(e):D(e)?Bm(e):Gm(e)}function qm(e,t){return JSON.stringify(e).localeCompare(JSON.stringify(t))}function Jm(e,t=1){return e.sort((e,n)=>{let r=Ma(e,n);return(A(r,`disjoint`)?qm(e,n):A(r,`right-inside`)?1:A(r,`left-inside`)?-1:qm(e,n))*t})}function Ym(e,t,n){for(let r of Jm(t.anyOf)){let t=Xm(e,r,Km(n));if(Dm(e,r,t))return t}return n}function Xm(e,t,n){return bt(t)?Om(e,t,n):vt(t)?km(e,t,n):Kt(t)?Am(e,t,n):Qt(t)?Mm(e,t,n):Bt(t)?Pm(e,t,n):Br(t)?Fm(e,t,n):At(t)?Im(e,t,n):ar(t)?Lm(e,t,n):Ht(t)?Ym(e,t,n):n}function Zm(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return Xm(t,n,r)}function Qm(e){return D(e)&&N(e,`value`)}function L(e){return{value:e}}function $m(e){return x(e)?L(e):L([e])}function eh(e){return A(e,!0)?L(BigInt(1)):L(BigInt(0))}var th=/^-?(0|[1-9]\d*)n$/,nh=/^-?(0|[1-9]\d*)\.\d+$/,rh=/^-?(0|[1-9]\d*)$/;function ih(e){return th.test(e)}function ah(e){return nh.test(e)}function oh(e){return rh.test(e)}function sh(e){let t=e.toLowerCase();return ih(e)?L(BigInt(e.slice(0,e.length-1))):ah(e)?L(BigInt(e.split(`.`)[0])):oh(e)?L(BigInt(e)):A(t,`false`)?L(BigInt(0)):A(t,`true`)?L(BigInt(1)):void 0}function ch(e){return S(e)?L(e):C(e)?eh(e):T(e)?L(BigInt(Math.trunc(e))):w(e)?L(BigInt(0)):O(e)?sh(e):k(e)?L(BigInt(0)):void 0}function lh(e){return A(e,BigInt(0))?L(!1):A(e,BigInt(1))?L(!0):void 0}function uh(e){return A(e,0)?L(!1):A(e,1)?L(!0):void 0}function dh(e){return A(e.toLowerCase(),`false`)?L(!1):A(e.toLowerCase(),`true`)?L(!0):A(e,`0`)?L(!1):A(e,`1`)?L(!0):void 0}function fh(e){return S(e)?lh(e):C(e)?L(e):T(e)?uh(e):w(e)?L(!1):O(e)?dh(e):k(e)?L(!1):void 0}function ph(e){return A(e,BigInt(0))?L(null):void 0}function mh(e){return A(e,!1)?L(null):void 0}function hh(e){return A(e,0)?L(null):void 0}function gh(e){let t=e.toLowerCase();return A(t,`undefined`)||A(t,`null`)||A(e,``)||A(e,`0`)?L(null):void 0}function _h(e){return S(e)?ph(e):C(e)?mh(e):T(e)?hh(e):w(e)?L(null):O(e)?gh(e):k(e)?L(null):void 0}var vh=BigInt(2**53-1),yh=BigInt(-(2**53-1));function bh(e){return e<=vh&&e>=yh?L(Number(e)):void 0}function xh(e){return L(+!!e)}function Sh(e){let t=+e;if(T(t))return L(t);let n=e.toLowerCase();if(A(n,`false`))return L(0);if(A(n,`true`))return L(1);let r=ch(e);if(Qm(r))return r.value<=vh&&r.value>=yh?L(Number(r.value)):void 0}function Ch(e){return S(e)?bh(e):C(e)?xh(e):T(e)?L(e):w(e)?L(0):O(e)?Sh(e):k(e)?L(0):void 0}function wh(e){return S(e)||C(e)||T(e)?L(e.toString()):w(e)?L(`null`):O(e)?L(e):k(e)?L(``):void 0}function Th(e){return A(e,BigInt(0))?L(void 0):void 0}function Eh(e){return A(e,!1)?L(void 0):void 0}function Dh(e){return A(e,0)?L(void 0):void 0}function Oh(e){let t=e.toLowerCase();return A(t,`undefined`)||A(t,`null`)||A(e,``)||A(e,`0`)?L(void 0):void 0}function kh(e){return S(e)?Th(e):C(e)?Eh(e):T(e)?Dh(e):w(e)?L(void 0):O(e)?Oh(e):k(e)?L(e):void 0}function Ah(e,t,n){return $m(n).value.map(n=>ig(e,t.items,n))}function jh(e,t,n){return t.Convert(n)}function Mh(e,t,n){let r=ch(n);return Qm(r)?r.value:n}function Nh(e,t,n){let r=fh(n);return Qm(r)?r.value:n}function Ph(e,t,n){return ig({...e,...t.$defs},kt(t.$ref),n)}function Fh(e,t,n){if(t.anyOf.some(t=>Dm(e,t,n)))return n;let r=t.anyOf.map(t=>ig(e,t,Km(n))).find(n=>Dm(e,t,n));return k(r)?n:r}function Ih(e,t,n){return Fh(e,rr(t),n)}function Lh(e,t,n){let r=Ch(n);return Qm(r)?Math.trunc(r.value):n}function Rh(e,t,n){return ig(e,Oc(Ec(e,t)),n)}function zh(e,t,n){let r=ch(n);return Qm(r)&&A(t.const,r.value)?r.value:n}function Bh(e,t,n){let r=fh(n);return Qm(r)&&A(t.const,r.value)?r.value:n}function Vh(e,t,n){let r=Ch(n);return Qm(r)&&A(t.const,r.value)?r.value:n}function Hh(e,t,n){let r=wh(n);return Qm(r)&&A(t.const,r.value)?r.value:n}function Uh(e,t,n){return A(t.const,n)?n:kn(t)?zh(e,t,n):An(t)?Bh(e,t,n):jn(t)?Vh(e,t,n):Mn(t)?Hh(e,t,n):$t()}function Wh(e,t,n){let r=_h(n);return Qm(r)?r.value:n}function Gh(e,t,n){let r=Ch(n);return Qm(r)?r.value:n}function Kh(e,t,n,r){let i=P(r);for(let[a,o]of t)for(let t of i)a.test(t)||(r[t]=ig(e,n,r[t]));return r}function qh(e,t,n){return mt(e)&&k(n[t])}function Jh(e,t,n){let r=xe(t.properties),i=P(n);for(let[t,a]of r)for(let r of i)!t.test(r)||qh(a,r,n)||(n[r]=ig(e,a,n[r]));return N(t,`additionalProperties`)&&D(t.additionalProperties)?Kh(e,r,t.additionalProperties,n):n}function Yh(e,t,n){return E(n)?Jh(e,t,n):n}function Xh(e,t,n){let r=xe(t.patternProperties),i=P(n);for(let[t,a]of r)for(let r of i)t.test(r)&&(n[r]=ig(e,a,n[r]));return N(t,`additionalProperties`)&&D(t.additionalProperties)?Kh(e,r,t.additionalProperties,n):n}function Zh(e,t,n){return E(n)?Xh(e,t,n):n}function Qh(e,t,n){return N(e,t.$ref)?ig(e,e[t.$ref],n):n}function $h(e,t,n){let r=wh(n);return Qm(r)?r.value:n}function eg(e,t,n){return ig(e,$n(t.pattern),n)}function tg(e,t,n){if(!x(n))return n;for(let r=0;r<Math.min(t.items.length,n.length);r++)n[r]=ig(e,t.items[r],n[r]);return n}function ng(e,t,n){let r=kh(n);return Qm(r)?r.value:n}function rg(e,t,n){return Qm(kh(n))?void 0:n}function ig(e,t,n){return bt(t)?Ah(e,t,n):vt(t)?jh(e,t,n):bn(t)?Mh(e,t,n):xn(t)?Nh(e,t,n):Kt(t)?Ph(e,t,n):Xt(t)?Ih(e,t,n):wn(t)?Lh(e,t,n):Qt(t)?Rh(e,t,n):Nn(t)?Uh(e,t,n):Fn(t)?Wh(e,t,n):Rn(t)?Gh(e,t,n):Bt(t)?Yh(e,t,n):Br(t)?Zh(e,t,n):At(t)?Qh(e,t,n):Hn(t)?$h(e,t,n):Di(t)?eg(e,t,n):ar(t)?tg(e,t,n):Gr(t)?ng(e,t,n):Ht(t)?Fh(e,t,n):Kr(t)?rg(e,t,n):n}function ag(e,t,n){if(!x(n))return n;for(let r=0;r<n.length;r++)n[r]=hg(e,t.items,n[r]);return n}function og(e,t,n){return t.Default(n)}function sg(e,t,n){return hg({...e,...t.$defs},kt(t.$ref),n)}function cg(e,t){return k(t)?oe(e.default)?e.default():Km(e.default):t}function lg(e,t,n){return hg(e,Oc(Ec(e,t)),n)}function ug(e,t,n){if(!D(n))return n;let r=P(t.properties);for(let i of r)k(hg(e,t.properties[i],n[i]))&&(mt(t.properties[i])||!N(t.properties[i],`default`))||(n[i]=hg(e,t.properties[i],n[i]));if(!zl(t)||C(t.additionalProperties))return n;for(let i of P(n))r.includes(i)||(n[i]=hg(e,t.additionalProperties,n[i]));return n}function dg(e,t,n){if(!D(n))return n;let[r,i]=[new RegExp(Lr(t)),zr(t)];for(let t of P(n))r.test(t)&&Gl(i)&&(n[t]=hg(e,i,n[t]));if(!zl(t))return n;for(let i of P(n))r.test(i)||(n[i]=hg(e,t.additionalProperties,n[i]));return n}function fg(e,t,n){return N(e,t.$ref)?hg(e,e[t.$ref],n):n}function pg(e,t,n){if(!x(n))return n;let[r,i]=[t.items,Math.max(t.items.length,n.length)];for(let t=0;t<i;t++)t<r.length&&(n[t]=hg(e,r[t],n[t]));return n}function mg(e,t,n){for(let r of t.anyOf){let t=hg(e,r,Km(n));if(Dm(e,r,t))return t}return n}function hg(e,t,n){let r=Gl(t)?cg(t,n):n;return bt(t)?ag(e,t,r):vt(t)?og(e,t,r):Kt(t)?sg(e,t,r):Qt(t)?lg(e,t,r):Bt(t)?ug(e,t,r):Br(t)?dg(e,t,r):At(t)?fg(e,t,r):ar(t)?pg(e,t,r):Ht(t)?mg(e,t,r):r}function gg(e,t,n){return t[`~codec`].decode(n)}function _g(e,t,n){return t[`~codec`].encode(n)}function vg(e,t,n,r){return vee(n)?A(e,`Decode`)?gg(t,n,r):_g(t,n,r):r}function yg(e,t,n,r){if(!x(r))return $t();for(let i=0;i<r.length;i++)r[i]=Hg(e,t,n.items,r[i]);return vg(e,t,n,r)}function bg(e,t,n,r){let i=vg(e,t,n,r);if(!x(i))return i;for(let r=0;r<i.length;r++)i[r]=Hg(e,t,n.items,i[r]);return i}function xg(e,t,n,r){return A(e,`Decode`)?yg(e,t,n,r):bg(e,t,n,r)}function Sg(e,t,n,r){return r=Hg(e,{...t,...n.$defs},kt(n.$ref),r),vg(e,t,n,r)}function Cg(e){return e.reduce((e,t)=>({...e,...t}),{})}function wg(e,t){for(let n of t)if(!De(e,n))return n;return e}function Tg(e,t,n,r){if(A(n.allOf.length,0))return vg(e,t,n,r);let i=n.allOf.map(n=>Hg(e,t,n,Zm(n,Km(r))));return vg(e,t,n,i.every(e=>D(e))?Cg(i):wg(r,i))}function Eg(e,t,n,r){if(A(n.allOf.length,0))return vg(e,t,n,r);let i=vg(e,t,n,r),a=n.allOf.map(n=>Hg(e,t,n,Zm(n,Km(i))));return a.every(e=>D(e))?Cg(a):wg(i,a)}function Dg(e,t,n,r){return A(e,`Decode`)?Tg(e,t,n,r):Eg(e,t,n,r)}function Og(e,t,n,r){if(!E(r))return $t();for(let i of P(n.properties))!N(r,i)||qh(n.properties[i],i,r)||(r[i]=Hg(e,t,n.properties[i],r[i]));return vg(e,t,n,r)}function kg(e,t,n,r){let i=vg(e,t,n,r);if(!E(i))return i;for(let r of P(n.properties))!N(i,r)||qh(n.properties[r],r,i)||(i[r]=Hg(e,t,n.properties[r],i[r]));return i}function Ag(e,t,n,r){return A(e,`Decode`)?Og(e,t,n,r):kg(e,t,n,r)}function jg(e,t,n,r){if(!E(r))return $t();let i=new RegExp(Lr(n));for(let a of P(r))i.test(a)||$t(),r[a]=Hg(e,t,zr(n),r[a]);return vg(e,t,n,r)}function Mg(e,t,n,r){let i=vg(e,t,n,r);if(!E(i))return i;let a=new RegExp(Lr(n));for(let r of P(i))a.test(r)&&(i[r]=Hg(e,t,zr(n),i[r]));return i}function Ng(e,t,n,r){return A(e,`Decode`)?jg(e,t,n,r):Mg(e,t,n,r)}function Pg(e,t,n,r){return N(t,n.$ref)?Hg(e,t,t[n.$ref],r):r}function Fg(e,t,n,r){return A(e,`Decode`)?vg(e,t,n,Pg(e,t,n,r)):Pg(e,t,n,vg(e,t,n,r))}function Ig(e,t,n,r){if(!x(r))return $t();for(let i=0;i<Math.min(n.items.length,r.length);i++)r[i]=Hg(e,t,n.items[i],r[i]);return vg(e,t,n,r)}function Lg(e,t,n,r){let i=vg(e,t,n,r);if(!x(i))return r;for(let r=0;r<Math.min(n.items.length,i.length);r++)i[r]=Hg(e,t,n.items[r],i[r]);return i}function Rg(e,t,n,r){return A(e,`Decode`)?Ig(e,t,n,r):Lg(e,t,n,r)}function zg(e,t,n,r){for(let i of Jm(n.anyOf,1))if(Dm(t,i,r))return vg(e,t,n,Hg(e,t,i,r));return r}function Bg(e,t,n,r){let i=vg(e,t,n,r);for(let r of Jm(n.anyOf,-1)){let n=Hg(e,t,r,Km(i));if(Dm(t,r,n))return n}return i}function Vg(e,t,n,r){return A(e,`Decode`)?zg(e,t,n,r):Bg(e,t,n,r)}function Hg(e,t,n,r){return bt(n)?xg(e,t,n,r):Kt(n)?Sg(e,t,n,r):Qt(n)?Dg(e,t,n,r):Bt(n)?Ag(e,t,n,r):Br(n)?Ng(e,t,n,r):At(n)?Fg(e,t,n,r):ar(n)?Rg(e,t,n,r):Ht(n)?Vg(e,t,n,r):vg(e,t,n,r)}Vt([zt({type:Dn(`insert`),path:Vn(),value:Ut()}),Object({type:Dn(`update`),path:Vn(),value:Ut()}),zt({type:Dn(`delete`),path:Vn()})]);function Ug(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e&&typeof e.source==`string`}var Wg=Symbol.for(`yaml.alias`),Gg=Symbol.for(`yaml.document`),Kg=Symbol.for(`yaml.map`),qg=Symbol.for(`yaml.pair`),Jg=Symbol.for(`yaml.scalar`),Yg=Symbol.for(`yaml.seq`),Xg=Symbol.for(`yaml.node.type`),Zg=e=>!!e&&typeof e==`object`&&e[Xg]===Wg,Qg=e=>!!e&&typeof e==`object`&&e[Xg]===Gg,$g=e=>!!e&&typeof e==`object`&&e[Xg]===Kg,e_=e=>!!e&&typeof e==`object`&&e[Xg]===qg,t_=e=>!!e&&typeof e==`object`&&e[Xg]===Jg,n_=e=>!!e&&typeof e==`object`&&e[Xg]===Yg;function r_(e){if(e&&typeof e==`object`)switch(e[Xg]){case Kg:case Yg:return!0}return!1}function i_(e){if(e&&typeof e==`object`)switch(e[Xg]){case Wg:case Kg:case Jg:case Yg:return!0}return!1}var a_=e=>(t_(e)||r_(e))&&!!e.anchor,o_=Symbol(`break visit`),s_=Symbol(`skip children`),c_=Symbol(`remove node`);function l_(e,t){let n=p_(t);Qg(e)?u_(null,e.contents,n,Object.freeze([e]))===c_&&(e.contents=null):u_(null,e,n,Object.freeze([]))}l_.BREAK=o_,l_.SKIP=s_,l_.REMOVE=c_;function u_(e,t,n,r){let i=m_(e,t,n,r);if(i_(i)||e_(i))return h_(e,r,i),u_(e,i,n,r);if(typeof i!=`symbol`){if(r_(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=u_(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===o_)return o_;else i===c_&&(t.items.splice(e,1),--e)}}else if(e_(t)){r=Object.freeze(r.concat(t));let e=u_(`key`,t.key,n,r);if(e===o_)return o_;e===c_&&(t.key=null);let i=u_(`value`,t.value,n,r);if(i===o_)return o_;i===c_&&(t.value=null)}}return i}async function d_(e,t){let n=p_(t);Qg(e)?await f_(null,e.contents,n,Object.freeze([e]))===c_&&(e.contents=null):await f_(null,e,n,Object.freeze([]))}d_.BREAK=o_,d_.SKIP=s_,d_.REMOVE=c_;async function f_(e,t,n,r){let i=await m_(e,t,n,r);if(i_(i)||e_(i))return h_(e,r,i),f_(e,i,n,r);if(typeof i!=`symbol`){if(r_(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await f_(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===o_)return o_;else i===c_&&(t.items.splice(e,1),--e)}}else if(e_(t)){r=Object.freeze(r.concat(t));let e=await f_(`key`,t.key,n,r);if(e===o_)return o_;e===c_&&(t.key=null);let i=await f_(`value`,t.value,n,r);if(i===o_)return o_;i===c_&&(t.value=null)}}return i}function p_(e){return typeof e==`object`&&(e.Collection||e.Node||e.Value)?Object.assign({Alias:e.Node,Map:e.Node,Scalar:e.Node,Seq:e.Node},e.Value&&{Map:e.Value,Scalar:e.Value,Seq:e.Value},e.Collection&&{Map:e.Collection,Seq:e.Collection},e):e}function m_(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if($g(t))return n.Map?.(e,t,r);if(n_(t))return n.Seq?.(e,t,r);if(e_(t))return n.Pair?.(e,t,r);if(t_(t))return n.Scalar?.(e,t,r);if(Zg(t))return n.Alias?.(e,t,r)}function h_(e,t,n){let r=t[t.length-1];if(r_(r))r.items[e]=n;else if(e_(r))e===`key`?r.key=n:r.value=n;else if(Qg(r))r.contents=n;else{let e=Zg(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}var g_={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},__=e=>e.replace(/[!,[\]{}]/g,e=>g_[e]),v_=class e{constructor(t,n){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},e.defaultYaml,t),this.tags=Object.assign({},e.defaultTags,n)}clone(){let t=new e(this.yaml,this.tags);return t.docStart=this.docStart,t}atDocument(){let t=new e(this.yaml,this.tags);switch(this.yaml.version){case`1.1`:this.atNextDocument=!0;break;case`1.2`:this.atNextDocument=!1,this.yaml={explicit:e.defaultYaml.explicit,version:`1.2`},this.tags=Object.assign({},e.defaultTags);break}return t}add(t,n){this.atNextDocument&&=(this.yaml={explicit:e.defaultYaml.explicit,version:`1.1`},this.tags=Object.assign({},e.defaultTags),!1);let r=t.trim().split(/[ \t]+/),i=r.shift();switch(i){case`%TAG`:{if(r.length!==2&&(n(0,`%TAG directive should contain exactly two parts`),r.length<2))return!1;let[e,t]=r;return this.tags[e]=t,!0}case`%YAML`:{if(this.yaml.explicit=!0,r.length!==1)return n(0,`%YAML directive should contain exactly one part`),!1;let[e]=r;if(e===`1.1`||e===`1.2`)return this.yaml.version=e,!0;{let t=/^\d+\.\d+$/.test(e);return n(6,`Unsupported YAML version ${e}`,t),!1}}default:return n(0,`Unknown directive ${i}`,!0),!1}}tagName(e,t){if(e===`!`)return`!`;if(e[0]!==`!`)return t(`Not a valid tag: ${e}`),null;if(e[1]===`<`){let n=e.slice(2,-1);return n===`!`||n===`!!`?(t(`Verbatim tags aren't resolved, so ${e} is invalid.`),null):(e[e.length-1]!==`>`&&t(`Verbatim tags must end with a >`),n)}let[,n,r]=e.match(/^(.*!)([^!]*)$/s);r||t(`The ${e} tag has no suffix`);let i=this.tags[n];if(i)try{return i+decodeURIComponent(r)}catch(e){return t(String(e)),null}return n===`!`?e:(t(`Could not resolve tag: ${e}`),null)}tagString(e){for(let[t,n]of Object.entries(this.tags))if(e.startsWith(n))return t+__(e.substring(n.length));return e[0]===`!`?e:`!<${e}>`}toString(e){let t=this.yaml.explicit?[`%YAML ${this.yaml.version||`1.2`}`]:[],n=Object.entries(this.tags),r;if(e&&n.length>0&&i_(e.contents)){let t={};l_(e.contents,(e,n)=>{i_(n)&&n.tag&&(t[n.tag]=!0)}),r=Object.keys(t)}else r=[];for(let[i,a]of n)i===`!!`&&a===`tag:yaml.org,2002:`||(!e||r.some(e=>e.startsWith(a)))&&t.push(`%TAG ${i} ${a}`);return t.join(`
|
|
7
7
|
`)}};v_.defaultYaml={explicit:!1,version:`1.2`},v_.defaultTags={"!!":`tag:yaml.org,2002:`};function y_(e){if(/[\x00-\x19\s,[\]{}]/.test(e)){let t=`Anchor must not contain whitespace or control characters: ${JSON.stringify(e)}`;throw Error(t)}return!0}function b_(e,t,n,r){if(r&&typeof r==`object`)if(Array.isArray(r))for(let t=0,n=r.length;t<n;++t){let n=r[t],i=b_(e,r,String(t),n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}else if(r instanceof Map)for(let t of Array.from(r.keys())){let n=r.get(t),i=b_(e,r,t,n);i===void 0?r.delete(t):i!==n&&r.set(t,i)}else if(r instanceof Set)for(let t of Array.from(r)){let n=b_(e,r,t,t);n===void 0?r.delete(t):n!==t&&(r.delete(t),r.add(n))}else for(let[t,n]of Object.entries(r)){let i=b_(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function x_(e,t,n){if(Array.isArray(e))return e.map((e,t)=>x_(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!a_(e))return e.toJSON(t,n);let r={aliasCount:0,count:1,res:void 0};n.anchors.set(e,r),n.onCreate=e=>{r.res=e,delete n.onCreate};let i=e.toJSON(t,n);return n.onCreate&&n.onCreate(i),i}return typeof e==`bigint`&&!n?.keep?Number(e):e}var S_=class{constructor(e){Object.defineProperty(this,Xg,{value:e})}clone(){let e=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(e.range=this.range.slice()),e}toJS(e,{mapAsMap:t,maxAliasCount:n,onAnchor:r,reviver:i}={}){if(!Qg(e))throw TypeError(`A document argument is required`);let a={anchors:new Map,doc:e,keep:!0,mapAsMap:t===!0,mapKeyWarned:!1,maxAliasCount:typeof n==`number`?n:100},o=x_(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?b_(i,{"":o},``,o):o}},C_=class extends S_{constructor(e){super(Wg),this.source=e,Object.defineProperty(this,"tag",{set(){throw Error(`Alias nodes cannot have tags`)}})}resolve(e,t){if(t?.maxAliasCount===0)throw ReferenceError(`Alias resolution is disabled`);let n;t?.aliasResolveCache?n=t.aliasResolveCache:(n=[],l_(e,{Node:(e,t)=>{(Zg(t)||a_(t))&&n.push(t)}}),t&&(t.aliasResolveCache=n));let r;for(let e of n){if(e===this)break;e.anchor===this.source&&(r=e)}return r}toJSON(e,t){if(!t)return{source:this.source};let{anchors:n,doc:r,maxAliasCount:i}=t,a=this.resolve(r,t);if(!a){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(e)}let o=n.get(a);if(o||=(x_(a,null,t),n.get(a)),o?.res===void 0)throw ReferenceError(`This should not happen: Alias anchor was not resolved?`);if(i>=0&&(o.count+=1,o.aliasCount===0&&(o.aliasCount=w_(r,a,n)),o.count*o.aliasCount>i))throw ReferenceError(`Excessive alias count indicates a resource exhaustion attack`);return o.res}toString(e,t,n){let r=`*${this.source}`;if(e){if(y_(this.source),e.options.verifyAliasOrder&&!e.anchors.has(this.source)){let e=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(e)}if(e.implicitKey)return`${r} `}return r}};function w_(e,t,n){if(Zg(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(r_(t)){let r=0;for(let i of t.items){let t=w_(e,i,n);t>r&&(r=t)}return r}else if(e_(t)){let r=w_(e,t.key,n),i=w_(e,t.value,n);return Math.max(r,i)}return 1}var T_=e=>!e||typeof e!=`function`&&typeof e!=`object`,E_=class extends S_{constructor(e){super(Jg),this.value=e}toJSON(e,t){return t?.keep?this.value:x_(this.value,e,t)}toString(){return String(this.value)}};E_.BLOCK_FOLDED=`BLOCK_FOLDED`,E_.BLOCK_LITERAL=`BLOCK_LITERAL`,E_.PLAIN=`PLAIN`,E_.QUOTE_DOUBLE=`QUOTE_DOUBLE`,E_.QUOTE_SINGLE=`QUOTE_SINGLE`;var D_=`tag:yaml.org,2002:`;function O_(e,t,n){if(t){let e=n.filter(e=>e.tag===t),r=e.find(e=>!e.format)??e[0];if(!r)throw Error(`Tag ${t} not found`);return r}return n.find(t=>t.identify?.(e)&&!t.format)}function k_(e,t,n){if(Qg(e)&&(e=e.contents),i_(e))return e;if(e_(e)){let t=n.schema[Kg].createNode?.(n.schema,null,n);return t.items.push(e),t}(e instanceof String||e instanceof Number||e instanceof Boolean||typeof BigInt<`u`&&e instanceof BigInt)&&(e=e.valueOf());let{aliasDuplicateObjects:r,onAnchor:i,onTagObj:a,schema:o,sourceObjects:s}=n,c;if(r&&e&&typeof e==`object`){if(c=s.get(e),c)return c.anchor??=i(e),new C_(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=D_+t.slice(2));let l=O_(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new E_(e);return c&&(c.node=t),t}l=e instanceof Map?o[Kg]:Symbol.iterator in Object(e)?o[Yg]:o[Kg]}a&&(a(l),delete n.onTagObj);let u=l?.createNode?l.createNode(n.schema,e,n):typeof l?.nodeClass?.from==`function`?l.nodeClass.from(n.schema,e,n):new E_(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function A_(e,t,n){let r=n;for(let e=t.length-1;e>=0;--e){let n=t[e];if(typeof n==`number`&&Number.isInteger(n)&&n>=0){let e=[];e[n]=r,r=e}else r=new Map([[n,r]])}return k_(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var j_=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,M_=class extends S_{constructor(e,t){super(e),Object.defineProperty(this,"schema",{value:t,configurable:!0,enumerable:!1,writable:!0})}clone(e){let t=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return e&&(t.schema=e),t.items=t.items.map(t=>i_(t)||e_(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(j_(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(r_(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,A_(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}deleteIn(e){let[t,...n]=e;if(n.length===0)return this.delete(t);let r=this.get(t,!0);if(r_(r))return r.deleteIn(n);throw Error(`Expected YAML collection at ${t}. Remaining path: ${n}`)}getIn(e,t){let[n,...r]=e,i=this.get(n,!0);return r.length===0?!t&&t_(i)?i.value:i:r_(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!e_(t))return!1;let n=t.value;return n==null||e&&t_(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(e){let[t,...n]=e;if(n.length===0)return this.has(t);let r=this.get(t,!0);return r_(r)?r.hasIn(n):!1}setIn(e,t){let[n,...r]=e;if(r.length===0)this.set(n,t);else{let e=this.get(n,!0);if(r_(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,A_(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},N_=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function P_(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var F_=(e,t,n)=>e.endsWith(`
|
|
@@ -65,7 +65,7 @@ Do NOT continue the conversation. Do NOT answer questions inside the conversatio
|
|
|
65
65
|
<conversation>
|
|
66
66
|
${e}
|
|
67
67
|
</conversation>`}async function Yv(e,t,n,r,i,a,o){let s=await Dl(e,{systemPrompt:n,messages:[{role:`user`,content:[{type:`text`,text:r}],timestamp:Date.now()}]},{maxTokens:i,apiKey:t,headers:a,signal:o});if(s.stopReason===`error`)throw Error(`Compaction call failed: ${s.errorMessage||`Unknown error`}`);return s.content.filter(e=>e.type===`text`).map(e=>e.text).join(`
|
|
68
|
-
`).trim()}async function Xv(e){let t=Jv(Gv(e.messages));return Yv(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Zv=qv,Qv=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,$v={html:`text/html`,htm:`text/html`,css:`text/css`,js:`application/javascript`,mjs:`application/javascript`,json:`application/json`,svg:`image/svg+xml`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,avif:`image/avif`,apng:`image/apng`,bmp:`image/bmp`,ico:`image/x-icon`,woff:`font/woff`,woff2:`font/woff2`,ttf:`font/ttf`,mp3:`audio/mpeg`,mp4:`video/mp4`,webm:`video/webm`,mov:`video/quicktime`,m4v:`video/x-m4v`,ogv:`video/ogg`,pdf:`application/pdf`,txt:`text/plain`,xml:`application/xml`,wasm:`application/wasm`};function ey(e){return $v[e.split(`.`).pop()?.toLowerCase()??``]??`application/octet-stream`}function ty(e){return e.startsWith(`image/`)}function ny(e){return e.startsWith(`video/`)}function ry(e){return ty(e)||ny(e)}function iy(e){return ry(ey(e))}var ay=`agent-sessions`,oy=1,sy=`sessions`;function cy(){return new Promise((e,t)=>{let n=indexedDB.open(ay,oy);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(sy)||e.createObjectStore(sy,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var ly=class{dbPromise=null;getDB(){return this.dbPromise||=cy(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readwrite`).objectStore(sy).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readonly`).objectStore(sy).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readwrite`).objectStore(sy).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(sy,`readonly`).objectStore(sy).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(sy,`readwrite`).objectStore(sy).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}},uy=Wv(`tool-ui`),dy=new class{pending=new Map;idCounter=0;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,t,n,r){this.pending.set(e,{request:t,resolve:n,reject:r}),uy.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){uy.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}uy.info(`Tool UI action`,{id:e,action:t.action});try{let e;e=n.request.onAction?await n.request.onAction(t.action,t.data):t,n.resolve(e)}catch(e){n.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e)}}cancel(e,t=`cancelled`){let n=this.pending.get(e);n&&(n.reject(Error(t)),this.pending.delete(e),uy.info(`Tool UI cancelled`,{id:e,reason:t}))}cancelAll(e=`cancelled`){let t=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear(),t>0&&uy.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}};async function fy(e,t){let n=e.id??dy.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return dy.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):uy.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}var py=Wv(`image-processor`),my=3932160,hy=1568,gy=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function _y(e){let t=0;return e.endsWith(`==`)?t=2:e.endsWith(`=`)&&(t=1),Math.ceil(e.length*3/4)-t}function vy(e){return gy.has(e)}function yy(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function by(e){if(!vy(e.mimeType))return py.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=yy(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;py.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await I(()=>import(`./magick-wasm-52jtVvFN.js`),[]);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return py.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return py.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=hy/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),py.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>my&&s!==`JPEG`?(py.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>my&&(py.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return py.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>my)return py.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return py.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return py.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}Wv(`tool-adapter`);var xy=s({loadAndClearPendingHandle:()=>Dy,openMountPickerPopup:()=>Ty,reactivateHandle:()=>Oy,storePendingHandle:()=>Ey}),Sy=Wv(`mount-picker-popup`),Cy=`slicc-pending-mount`,wy=6e4;function Ty(e){let t=e??`mount-${Date.now().toString(36)}`;return new Promise(e=>{let n=chrome.runtime.getURL(`mount-popup.html?requestId=${encodeURIComponent(t)}`),r=()=>{clearTimeout(i),chrome.runtime.onMessage.removeListener(a)},i=setTimeout(()=>{r(),e({cancelled:!0})},wy),a=n=>{let i=n;i?.source!==`mount-popup`||i.requestId!==t||(r(),e(i))};chrome.runtime.onMessage.addListener(a),chrome.windows.create({url:n,type:`popup`,width:300,height:80,focused:!0}).catch(n=>{r(),Sy.error(`chrome.windows.create failed for mount picker popup`,{requestId:t,error:n instanceof Error?n.message:String(n),name:n instanceof Error?n.name:void 0}),e({error:`Failed to open directory picker window`})})})}async function Ey(e,t){let n=await new Promise((e,t)=>{let n=indexedDB.open(Cy,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(`handles`)||n.result.createObjectStore(`handles`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),r=n.transaction(`handles`,`readwrite`);r.objectStore(`handles`).put(t,e),await new Promise((e,t)=>{r.oncomplete=()=>e(),r.onerror=()=>t(r.error??Error(`IDB transaction failed`)),r.onabort=()=>t(r.error??Error(`IDB transaction aborted`))}),n.close()}async function Dy(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(Cy,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(`handles`)||n.result.createObjectStore(`handles`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),n=t.transaction(`handles`,`readwrite`),r=n.objectStore(`handles`),i=r.get(e),a=r.delete(e);a.onerror=()=>{Sy.warn(`Failed to delete pending handle from IDB`,{idbKey:e,error:a.error})};let o=await new Promise((e,t)=>{n.oncomplete=()=>e(i.result??null),i.onerror=()=>t(i.error??Error(`IDB get failed`)),n.onerror=()=>t(n.error??Error(`IDB transaction failed`)),n.onabort=()=>t(n.error??Error(`IDB transaction aborted`))});return t.close(),o}async function Oy(e){let t=e;if(t.requestPermission){let n=await t.requestPermission({mode:`readwrite`});if(n!==`granted`)throw Error(`Permission denied for "${e.name}" (${n})`)}}var R=class extends Error{code;path;constructor(e,t,n){super(`${e}: ${t}${n?` '${n}'`:``}`),this.code=e,this.path=n,this.name=`FsError`}},ky=300*1e3,Ay=Symbol(`mount:timeout`),jy=class e{kind=`local`;source=void 0;profile=void 0;mountId;handle;closed=!1;constructor(e,t){this.handle=e,this.mountId=t.mountId}static fromHandle(t,n){return new e(t,n)}static async create(t){if(t.isScoop())throw Error(`mount: cannot mount local directories from a scoop (no UI). Ask the cone.`);let n;if(t.toolContext){let e=dy.generateId(),r=!1,i=fy({id:e,html:`
|
|
68
|
+
`).trim()}async function Xv(e){let t=Jv(Gv(e.messages));return Yv(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var Zv=qv,Qv=`Generate a short title (3 to 6 words) summarizing what this conversation was about. Output ONLY the title text — no quotes, no punctuation other than what belongs in the title, no preamble.`,$v={html:`text/html`,htm:`text/html`,css:`text/css`,js:`application/javascript`,mjs:`application/javascript`,json:`application/json`,svg:`image/svg+xml`,png:`image/png`,jpg:`image/jpeg`,jpeg:`image/jpeg`,gif:`image/gif`,webp:`image/webp`,avif:`image/avif`,apng:`image/apng`,bmp:`image/bmp`,ico:`image/x-icon`,woff:`font/woff`,woff2:`font/woff2`,ttf:`font/ttf`,mp3:`audio/mpeg`,mp4:`video/mp4`,webm:`video/webm`,mov:`video/quicktime`,m4v:`video/x-m4v`,ogv:`video/ogg`,pdf:`application/pdf`,txt:`text/plain`,xml:`application/xml`,wasm:`application/wasm`};function ey(e){return $v[e.split(`.`).pop()?.toLowerCase()??``]??`application/octet-stream`}function ty(e){return e.startsWith(`image/`)}function ny(e){return e.startsWith(`video/`)}function ry(e){return ty(e)||ny(e)}function iy(e){return ry(ey(e))}var ay=`agent-sessions`,oy=1,sy=`sessions`;function cy(){return new Promise((e,t)=>{let n=indexedDB.open(ay,oy);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(sy)||e.createObjectStore(sy,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var ly=class{dbPromise=null;getDB(){return this.dbPromise||=cy(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readwrite`).objectStore(sy).put(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readonly`).objectStore(sy).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async delete(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(sy,`readwrite`).objectStore(sy).delete(e);i.onsuccess=()=>n(),i.onerror=()=>r(i.error)})}async list(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(sy,`readonly`).objectStore(sy).getAll();r.onsuccess=()=>{t((r.result??[]).map(e=>({id:e.id,updatedAt:e.updatedAt})))},r.onerror=()=>n(r.error)})}async clearAll(){let e=await this.getDB();return new Promise((t,n)=>{let r=e.transaction(sy,`readwrite`).objectStore(sy).clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}static newId(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,8)}`}static createSession(e,t){let n=Date.now();return{id:e,messages:[],config:t,createdAt:n,updatedAt:n}}static updateMessages(e,t){return{...e,messages:t,updatedAt:Date.now()}}},uy=Wv(`tool-ui`),dy=new class{pending=new Map;idCounter=0;generateId(){return`tool-ui-${++this.idCounter}-${Date.now().toString(36)}`}register(e,t,n,r){this.pending.set(e,{request:t,resolve:n,reject:r}),uy.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){uy.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}uy.info(`Tool UI action`,{id:e,action:t.action});try{let e;e=n.request.onAction?await n.request.onAction(t.action,t.data):t,n.resolve(e)}catch(e){n.reject(e instanceof Error?e:Error(String(e)))}finally{this.pending.delete(e)}}cancel(e,t=`cancelled`){let n=this.pending.get(e);n&&(n.reject(Error(t)),this.pending.delete(e),uy.info(`Tool UI cancelled`,{id:e,reason:t}))}cancelAll(e=`cancelled`){let t=this.pending.size;for(let[t,n]of this.pending)n.reject(Error(e));this.pending.clear(),t>0&&uy.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}};async function fy(e,t){let n=e.id??dy.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return dy.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):uy.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}var py=Wv(`image-processor`),my=3932160,hy=1568,gy=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function _y(e){let t=0;return e.endsWith(`==`)?t=2:e.endsWith(`=`)&&(t=1),Math.ceil(e.length*3/4)-t}function vy(e){return gy.has(e)}function yy(e,t){try{if(t===`image/png`){if(e.length<32)return null;let t=atob(e.slice(0,32)),n=t.charCodeAt(16)<<24|t.charCodeAt(17)<<16|t.charCodeAt(18)<<8|t.charCodeAt(19),r=t.charCodeAt(20)<<24|t.charCodeAt(21)<<16|t.charCodeAt(22)<<8|t.charCodeAt(23);return n>0&&r>0?{width:n,height:r}:null}if(t===`image/gif`){if(e.length<16)return null;let t=atob(e.slice(0,16)),n=t.charCodeAt(6)|t.charCodeAt(7)<<8,r=t.charCodeAt(8)|t.charCodeAt(9)<<8;return n>0&&r>0?{width:n,height:r}:null}if(t===`image/jpeg`){let t=Math.min(21846*4,e.length),n=atob(e.slice(0,t));for(let e=0;e<n.length-8;e++)if(n.charCodeAt(e)===255){let t=n.charCodeAt(e+1);if(t===192||t===194){let t=n.charCodeAt(e+5)<<8|n.charCodeAt(e+6),r=n.charCodeAt(e+7)<<8|n.charCodeAt(e+8);return r>0&&t>0?{width:r,height:t}:null}}}}catch{}return null}async function by(e){if(!vy(e.mimeType))return py.warn(`Unsupported image format`,{mimeType:e.mimeType}),{type:`text`,text:`[Image removed: unsupported format "${e.mimeType}". Supported: JPEG, PNG, GIF, WebP]`};let t=e.data.length,n=yy(e.data,e.mimeType);if(!(t>5242880||n!==null&&(n.width>8e3||n.height>8e3)||n!==null&&Math.max(n.width,n.height)>1568))return e;py.info(`Image needs processing`,{base64Size:t,dimensions:n?`${n.width}x${n.height}`:`unknown`,reason:t>5242880?`size`:`dimensions`});let r,i;try{let e=await I(()=>import(`./magick-wasm-BeuHUgL1.js`),[]);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return py.error(`ImageMagick WASM module unavailable`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (ImageMagick WASM could not be loaded)]`}}let a;try{a=await r()}catch(e){return py.error(`ImageMagick WASM initialization failed`,{error:e instanceof Error?e.message:String(e)}),{type:`text`,text:`[Image removed: resize service unavailable (WASM init failed)]`}}try{let n=atob(e.data),r=new Uint8Array(n.length);for(let e=0;e<n.length;e++)r[e]=n.charCodeAt(e);let o={data:null,mime:e.mimeType};if(await a.ImageMagick.read(r,async t=>{let n=t.width,r=t.height,a=Math.max(n,r);if(a>1568){let e=hy/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),py.info(`Resized image`,{from:`${n}x${r}`,to:`${i}x${o}`})}let s=i[e.mimeType]||`JPEG`;t.write(s,e=>{o.data=new Uint8Array(e)}),o.data&&o.data.length>my&&s!==`JPEG`?(py.info(`Still over 5MB, compressing to JPEG q80`),t.quality=80,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}),o.mime=`image/jpeg`):o.data&&o.data.length>my&&(py.info(`Still over 5MB as JPEG, reducing quality to 60`),t.quality=60,t.write(`JPEG`,e=>{o.data=new Uint8Array(e)}))}),!o.data)return py.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>my)return py.warn(`Image still over 5MB after resize+compress`,{size:o.data.length}),{type:`text`,text:`[Image removed: still ${Math.round(o.data.length/1024/1024*10)/10}MB after resize and compression, exceeds 5MB API limit]`};let s=``;for(let e=0;e<o.data.length;e++)s+=String.fromCharCode(o.data[e]);let c=btoa(s);return py.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return py.error(`Image data processing failed (corrupt or unreadable)`,{mimeType:e.mimeType,estimatedBytes:t,error:n instanceof Error?n.message:String(n)}),{type:`text`,text:`[Image removed: image data could not be processed (${n instanceof Error?n.message:`corrupt or unreadable`})]`}}}Wv(`tool-adapter`);var xy=s({loadAndClearPendingHandle:()=>Dy,openMountPickerPopup:()=>Ty,reactivateHandle:()=>Oy,storePendingHandle:()=>Ey}),Sy=Wv(`mount-picker-popup`),Cy=`slicc-pending-mount`,wy=6e4;function Ty(e){let t=e??`mount-${Date.now().toString(36)}`;return new Promise(e=>{let n=chrome.runtime.getURL(`mount-popup.html?requestId=${encodeURIComponent(t)}`),r=()=>{clearTimeout(i),chrome.runtime.onMessage.removeListener(a)},i=setTimeout(()=>{r(),e({cancelled:!0})},wy),a=n=>{let i=n;i?.source!==`mount-popup`||i.requestId!==t||(r(),e(i))};chrome.runtime.onMessage.addListener(a),chrome.windows.create({url:n,type:`popup`,width:300,height:80,focused:!0}).catch(n=>{r(),Sy.error(`chrome.windows.create failed for mount picker popup`,{requestId:t,error:n instanceof Error?n.message:String(n),name:n instanceof Error?n.name:void 0}),e({error:`Failed to open directory picker window`})})})}async function Ey(e,t){let n=await new Promise((e,t)=>{let n=indexedDB.open(Cy,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(`handles`)||n.result.createObjectStore(`handles`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),r=n.transaction(`handles`,`readwrite`);r.objectStore(`handles`).put(t,e),await new Promise((e,t)=>{r.oncomplete=()=>e(),r.onerror=()=>t(r.error??Error(`IDB transaction failed`)),r.onabort=()=>t(r.error??Error(`IDB transaction aborted`))}),n.close()}async function Dy(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(Cy,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(`handles`)||n.result.createObjectStore(`handles`)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),n=t.transaction(`handles`,`readwrite`),r=n.objectStore(`handles`),i=r.get(e),a=r.delete(e);a.onerror=()=>{Sy.warn(`Failed to delete pending handle from IDB`,{idbKey:e,error:a.error})};let o=await new Promise((e,t)=>{n.oncomplete=()=>e(i.result??null),i.onerror=()=>t(i.error??Error(`IDB get failed`)),n.onerror=()=>t(n.error??Error(`IDB transaction failed`)),n.onabort=()=>t(n.error??Error(`IDB transaction aborted`))});return t.close(),o}async function Oy(e){let t=e;if(t.requestPermission){let n=await t.requestPermission({mode:`readwrite`});if(n!==`granted`)throw Error(`Permission denied for "${e.name}" (${n})`)}}var R=class extends Error{code;path;constructor(e,t,n){super(`${e}: ${t}${n?` '${n}'`:``}`),this.code=e,this.path=n,this.name=`FsError`}},ky=300*1e3,Ay=Symbol(`mount:timeout`),jy=class e{kind=`local`;source=void 0;profile=void 0;mountId;handle;closed=!1;constructor(e,t){this.handle=e,this.mountId=t.mountId}static fromHandle(t,n){return new e(t,n)}static async create(t){if(t.isScoop())throw Error(`mount: cannot mount local directories from a scoop (no UI). Ask the cone.`);let n;if(t.toolContext){let e=dy.generateId(),r=!1,i=fy({id:e,html:`
|
|
69
69
|
<div class="sprinkle-action-card">
|
|
70
70
|
<div class="sprinkle-action-card__header">Mount local directory <span class="sprinkle-badge sprinkle-badge--notice">approval</span></div>
|
|
71
71
|
<div class="sprinkle-action-card__actions">
|
|
@@ -73,7 +73,7 @@ ${e}
|
|
|
73
73
|
<button class="sprinkle-btn sprinkle-btn--primary" data-action="approve" data-picker="directory">Select directory</button>
|
|
74
74
|
</div>
|
|
75
75
|
</div>
|
|
76
|
-
`,onAction:async(e,t)=>{if(e===`approve`){let e=t;if(e?.handleInIdb&&typeof e.idbKey==`string`)try{let t=await Dy(e.idbKey);return t?(await Oy(t),{approved:!0,handle:t}):{error:`No directory handle found in storage`}}catch(e){return{error:e instanceof Error?e.message:String(e)}}if(e?.cancelled)return{cancelled:!0};if(e?.error)return{error:String(e.error)};try{return{approved:!0,handle:await window.showDirectoryPicker({mode:`readwrite`})}}catch(e){return e instanceof Error&&e.name===`AbortError`?{cancelled:!0}:{error:e instanceof Error?e.message:String(e)}}}return{denied:!0}}},t.toolContext.onUpdate).catch(e=>{if(r)return Ay;throw e}),a,o=new Promise(t=>{a=setTimeout(()=>{r=!0,dy.cancel(e,`mount: timed out`),t(Ay)},ky)}),s=await Promise.race([i,o]);if(a&&clearTimeout(a),s===Ay)throw Error(`mount: timed out after ${Math.round(ky/6e4)} minute(s) waiting for user approval`);if(!s)throw Error(`mount: tool UI not available`);let c=s;if(c.denied)throw Error(`mount: denied by user`);if(c.cancelled)throw Error(`mount: cancelled`);if(c.error)throw Error(`mount: ${c.error}`);if(!c.handle)throw Error(`mount: no directory selected`);n=c.handle}else if(t.isExtension)try{let e=await Ty();if(e.cancelled)throw Error(`mount: cancelled`);if(e.error)throw Error(`mount: ${e.error}`);if(e.handleInIdb&&typeof e.idbKey==`string`){let t=await Dy(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);await Oy(t),n=t}else throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}else{if(typeof window>`u`||!(`showDirectoryPicker`in window))throw Error(`mount: local picker requires a user gesture in the panel (unavailable in this runtime). Ask the agent to mount it instead.`);try{n=await window.showDirectoryPicker({mode:`readwrite`})}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`mount: cancelled`):Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}return new e(n,{mountId:t.mountId})}getHandle(){return this.handle}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}splitPath(e){return e.replace(/^\/+/,``).replace(/\/+$/,``).split(`/`).filter(e=>e.length>0)}async resolveDir(e,t=!1){let n=this.splitPath(e),r=this.handle;for(let i of n)try{r=await r.getDirectoryHandle(i,{create:t})}catch(t){throw this.toFsError(t,e)}return r}async resolveFile(e,t=!1){let n=this.splitPath(e);if(n.length===0)throw new R(`EISDIR`,`is a directory`,e);let r=n.pop(),i=this.handle;for(let r of n)try{i=await i.getDirectoryHandle(r,{create:t})}catch(t){throw this.toFsError(t,e)}try{return await i.getFileHandle(r,{create:t})}catch(t){throw this.toFsError(t,e)}}toFsError(e,t){if(e instanceof R)return e;if(e instanceof DOMException){if(e.name===`NotFoundError`)return new R(`ENOENT`,`no such file or directory`,t);if(e.name===`TypeMismatchError`)return new R(`ENOTDIR`,`not a directory`,t);if(e.name===`NotAllowedError`)return new R(`EACCES`,`permission denied`,t);if(e.name===`InvalidModificationError`)return new R(`ENOTEMPTY`,`directory not empty`,t)}if(e instanceof Error){if(e.name===`NotFound`||e.name===`NotFoundError`)return new R(`ENOENT`,`no such file or directory`,t);if(e.name===`TypeMismatch`||e.name===`TypeMismatchError`)return new R(`ENOTDIR`,`not a directory`,t);if(e.name===`InvalidModification`||e.name===`InvalidModificationError`)return new R(`ENOTEMPTY`,`directory not empty`,t)}return new R(`EINVAL`,e instanceof Error?e.message:String(e),t)}async readDir(e){this.assertOpen(e);let t=await this.resolveDir(e),n=[];for await(let[e,r]of t)if(r.kind===`file`){let t=await r.getFile();n.push({name:e,kind:`file`,size:t.size,lastModified:t.lastModified})}else n.push({name:e,kind:`directory`});return n}async readFile(e){this.assertOpen(e);let t=await(await this.resolveFile(e)).getFile();return new Uint8Array(await t.arrayBuffer())}async writeFile(e,t){this.assertOpen(e);let n=await(await this.resolveFile(e,!0)).createWritable();await n.write(t),await n.close()}async stat(e){if(this.assertOpen(e),this.splitPath(e).length===0)return{kind:`directory`,size:0,mtime:0};try{let t=await(await this.resolveFile(e)).getFile();return{kind:`file`,size:t.size,mtime:t.lastModified}}catch{}return await this.resolveDir(e),{kind:`directory`,size:0,mtime:0}}async mkdir(e){this.assertOpen(e),await this.resolveDir(e,!0)}async remove(e,t){this.assertOpen(e);let n=this.splitPath(e);if(n.length===0)throw new R(`EINVAL`,`cannot remove mount root`,e);let r=n.pop(),i=n.join(`/`),a=await this.resolveDir(i||`/`);try{await a.removeEntry(r,{recursive:t?.recursive??!1})}catch(t){throw this.toFsError(t,e)}}async refresh(){return this.assertOpen(`/`),{added:[],removed:[],changed:[],unchanged:0,errors:[]}}describe(){return{displayName:this.handle.name}}async close(){this.closed=!0}};function My(){return crypto.randomUUID()}function kie(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function Aie(e){return e.split(`/`).pop()||`data`}function jie(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var Mie=5*1024*1024,Ny=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=jie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??Mie,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new R(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new R(`EACCES`,`da access denied`,e);if(i.status>=400)throw new R(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n),i=kie(Aie(e),ey(e),t),a={"content-type":i.contentType,"content-length":String(i.body.byteLength)};r?.etag?a[`if-match`]=r.etag:r||(a[`if-none-match`]=`*`);let o=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:a,body:i.body}),s,c=1;try{s=await o()}catch{c=2,s=await o()}if(s.status===412){if(c===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new R(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new R(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(s.status===401||s.status===403)throw new R(`EACCES`,`da write denied`,e);if(s.status>=400)throw new R(`EIO`,`da writeFile failed: ${s.status}`,e);let l=s.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new R(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new R(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new R(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new R(`ENOENT`,`no such file or directory`,e)}throw new R(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new R(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new R(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new R(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});continue}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified});let i=await this.cache.getBody(n);i?r.etag&&i.etag!==r.etag?(await this.cache.invalidateBody(n),t.changed.push(n)):t.unchanged++:t.added.push(n)}else{a.push({name:r.name,kind:`directory`});let t=e?`${e}/${r.name}`:r.name;n.push(t)}await this.cache.putListing(e,a)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}if(e?.bodies)for(let e of t.changed)try{await this.readFile(e)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}return t}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function Nie(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var Pie=25*1024*1024,Py=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=Nie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??Pie,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new R(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new R(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new R(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new R(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new R(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new R(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new R(`EIO`,`s3 writeFile failed: ${o.status}`,e);let c=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,c);let l=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(l)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new R(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new R(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new R(`ENOENT`,`no such file or directory`,e)}throw new R(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new R(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new R(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new R(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new R(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},Fie=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function Iie(){let{getAccounts:e}=await I(async()=>{let{getAccounts:e}=await Promise.resolve().then(()=>l8);return{getAccounts:e}},void 0),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new Fie(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}var Lie=`slicc-mount-cache`,Fy=`listings`,Iy=`bodies`,Ly=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??Lie}isStale(e,t){return Date.now()-e>=(t??this.ttlMs)}async openDb(){return this.dbPromise||=new Promise((e,t)=>{let n=indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Fy)||e.createObjectStore(Fy),e.objectStoreNames.contains(Iy)||e.createObjectStore(Iy)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),this.dbPromise}key(e){return`${this.mountId}::${e}`}async getListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Fy,`readonly`).objectStore(Fy).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putListing(e,t){let n=await this.openDb();return new Promise((r,i)=>{let a=n.transaction(Fy,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(Fy).put(o,this.key(e)),a.oncomplete=()=>r(),a.onerror=()=>i(a.error)})}async invalidateListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Fy,`readwrite`);i.objectStore(Fy).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async getBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Iy,`readonly`).objectStore(Iy).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putBody(e,t,n){let r=await this.openDb(),i={body:t,etag:n,size:t.byteLength,cachedAt:Date.now()};try{await this.txPut(r,Iy,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,Iy,this.key(e),i)}catch{}return}throw t}}async invalidateBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Iy,`readwrite`);i.objectStore(Iy).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async clearMount(){let e=await this.openDb(),t=`${this.mountId}::`,n=n=>new Promise((r,i)=>{let a=e.transaction(n,`readwrite`),o=a.objectStore(n),s=o.getAllKeys();s.onsuccess=()=>{for(let e of s.result)typeof e==`string`&&e.startsWith(t)&&o.delete(e)},a.oncomplete=()=>r(),a.onerror=()=>i(a.error)});await Promise.all([n(Fy),n(Iy)])}txPut(e,t,n,r){return new Promise((i,a)=>{let o=e.transaction(t,`readwrite`);o.objectStore(t).put(r,n),o.oncomplete=()=>i(),o.onerror=()=>a(o.error)})}async evictLru(e){let t=await this.openDb(),n=`${this.mountId}::`,r=await new Promise((e,r)=>{let i=t.transaction(Iy,`readonly`).objectStore(Iy),a=[],o=i.openCursor();o.onsuccess=()=>{let t=o.result;if(!t){e(a);return}if(typeof t.key==`string`&&t.key.startsWith(n)){let e=t.value;a.push({key:t.key,cachedAt:e.cachedAt})}t.continue()},o.onerror=()=>r(o.error)});r.sort((e,t)=>e.cachedAt-t.cachedAt);let i=Math.max(1,Math.ceil(r.length*e)),a=r.slice(0,i);await new Promise((e,n)=>{let r=t.transaction(Iy,`readwrite`),i=r.objectStore(Iy);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}};function Ry(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function Rie(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function zy(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}var zie=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),Bie=new Set([101,103,204,205,304]);function By(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new R(`EACCES`,e.error):e.errorCode===`invalid_request`?new R(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||zie.has(String(e.errorCode))?new R(`EIO`,e.error):new R(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=Rie(e.bodyBase64)}catch(e){throw new R(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=Bie.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function Vy(e,t){let n;try{n=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}catch(e){throw new R(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new R(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function Hy(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new R(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}function Uy(e){return async t=>{let n={profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?zy(t.body):void 0};return By(Ry()?await Hy(`mount.s3-sign-and-forward`,n):await Vy(`/api/s3-sign-and-forward`,n))}}function Wy(e){let t=e?.getImsToken??(async()=>(await Iie()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new R(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}let r={imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?zy(e.body):void 0};return By(Ry()?await Hy(`mount.da-sign-and-forward`,r):await Vy(`/api/da-sign-and-forward`,r))}}var Gy=s({DaMountBackend:()=>Ny,RemoteMountCache:()=>Ly,S3MountBackend:()=>Py,makeSignedFetchDa:()=>Wy,makeSignedFetchS3:()=>Uy}),Vie=`slicc-mount-table`,Hie=2,Ky=`mounts`,qy=`mount-entries`;function Jy(){return new Promise((e,t)=>{let n=indexedDB.open(Vie,Hie);n.onupgradeneeded=e=>{let t=n.result,r=e.oldVersion;if(t.objectStoreNames.contains(Ky)||t.createObjectStore(Ky),t.objectStoreNames.contains(qy)||t.createObjectStore(qy),r<2){let e=n.transaction,t=e.objectStore(Ky),r=e.objectStore(qy),i=t.getAllKeys();i.onsuccess=()=>{for(let e of i.result){if(typeof e!=`string`)continue;let t={targetPath:e,descriptor:{kind:`local`,mountId:My(),idbHandleKey:e},createdAt:Date.now()};r.put(t,e)}}}},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function Uie(e,t){let n=await Jy();try{let r=e.descriptor.kind===`local`&&t?[Ky,qy]:[qy],i=n.transaction(r,`readwrite`);i.objectStore(qy).put(e,e.targetPath),e.descriptor.kind===`local`&&t&&i.objectStore(Ky).put(t,e.descriptor.idbHandleKey),await new Promise((e,t)=>{i.oncomplete=()=>e(),i.onerror=()=>t(i.error),i.onabort=()=>t(i.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{n.close()}}async function Wie(e){let t=await Jy();try{let n=t.transaction([Ky,qy],`readwrite`);n.objectStore(qy).delete(e),n.objectStore(Ky).delete(e),await new Promise((e,t)=>{n.oncomplete=()=>e(),n.onerror=()=>t(n.error),n.onabort=()=>t(n.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{t.close()}}async function Yy(){let e=await Jy();try{return await new Promise((t,n)=>{let r=e.transaction(qy,`readonly`),i=r.objectStore(qy).getAll();i.onsuccess=()=>t(i.result),i.onerror=()=>n(i.error),r.onabort=()=>n(r.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{e.close()}}async function Xy(e){let t=await Jy();try{return await new Promise((n,r)=>{let i=t.transaction(Ky,`readonly`).objectStore(Ky).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}finally{t.close()}}async function Gie(){let e=await Jy();try{let t=e.transaction([Ky,qy],`readwrite`);t.objectStore(Ky).clear(),t.objectStore(qy).clear(),await new Promise((e,n)=>{t.oncomplete=()=>e(),t.onerror=()=>n(t.error),t.onabort=()=>n(t.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{e.close()}}async function Zy(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await Xy(o.idbHandleKey),s=typeof a?.name==`string`?a.name:``;if(!a||!(`queryPermission`in a)){i.push({kind:`local`,path:e,dirName:s});continue}let c;try{c=await a.queryPermission({mode:`readwrite`})}catch(t){n?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s});continue}if(c!==`granted`){i.push({kind:`local`,path:e,dirName:s});continue}try{let i=jy.fromHandle(a,{mountId:o.mountId});await t.mount(e,i),n?.info?.(`Restored mount from previous session`,{path:e,name:s}),r.push({kind:`local`,path:e,dirName:s})}catch(t){n?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s})}continue}if(o.kind===`s3`){try{let i=new Ly({mountId:o.mountId,ttlMs:3e4}),a=new Py({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:Uy(o.profile)});await t.mount(e,a),n?.info?.(`Restored S3 mount from previous session`,{path:e,source:o.source}),r.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore S3 mount`,{path:e,error:r}),i.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:r})}continue}if(o.kind===`da`)try{let i=new Ly({mountId:o.mountId,ttlMs:3e4}),a=new Ny({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:Wy()});await t.mount(e,a),n?.info?.(`Restored DA mount from previous session`,{path:e,source:o.source}),r.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore DA mount`,{path:e,error:r}),i.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:r})}}return{restored:r,needsRecovery:i}}var Kie=s({PANEL_RPC_DEFAULT_TIMEOUT_MS:()=>PANEL_RPC_DEFAULT_TIMEOUT_MS,getPanelRpcClient:()=>eb,hasLocalDom:()=>tb,installPanelRpcHandler:()=>qie,panelRpcChannelName:()=>$y}),Qy=`slicc-panel-rpc`;function $y(e){return e?`${Qy}:${e}`:Qy}function qie(e){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel($y(e.instanceId)),n=(e,n,r)=>{let i={type:`panel-rpc-response`,id:e};r===void 0?i.result=n:i.error=r;try{t.postMessage(i)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`panel-rpc: failed to post response for id=${e}: ${n}`)}},r=async t=>{let r=t.data;if(r?.type!==`panel-rpc-request`)return;let i=e.handlers[r.op];if(!i){n(r.id,void 0,`panel-rpc: no handler for op '${r.op}'`);return}try{let e=await i(r.payload);n(r.id,e)}catch(e){n(r.id,void 0,e instanceof Error?e.message:String(e))}};return t.addEventListener(`message`,r),()=>{t.removeEventListener(`message`,r);try{t.close()}catch{}}}function eb(){return globalThis.__slicc_panelRpc??null}function tb(){return typeof window<`u`&&typeof document<`u`}var Jie=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function nb(e){let{include:t,exclude:n}=Jie;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var Yie=Object.assign({"./built-in/azure-ai-foundry.ts":()=>I(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>I(()=>import(`./azure-openai-BDajo6ba.js`),__vite__mapDeps([17,3])),"./built-in/bedrock-camp.ts":()=>I(()=>Promise.resolve().then(()=>Fxe),void 0),"./built-in/local-llm.ts":()=>I(()=>import(`./local-llm-BExlcRTe.js`),__vite__mapDeps([18,15,5,7,1,2,3]))}),Xie=Object.assign({"/packages/webapp/providers/adobe.ts":()=>I(()=>import(`./adobe-BRQEfz1I.js`),__vite__mapDeps([19,20])),"/packages/webapp/providers/github-copilot.ts":()=>I(()=>import(`./github-copilot-O8gRRubZ.js`),[]),"/packages/webapp/providers/github.ts":()=>I(()=>import(`./github-BVkjHtni.js`),__vite__mapDeps([21,22,20])),"/packages/webapp/providers/openai-codex.ts":()=>I(()=>import(`./openai-codex-CxjIoboc.js`),[]),"/packages/webapp/providers/xai-grok-errors.ts":()=>I(()=>import(`./xai-grok-errors-bnlIBeu-.js`),[]),"/packages/webapp/providers/xai-grok-models.ts":()=>I(()=>import(`./xai-grok-models-CeEBaUMC.js`),[]),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>I(()=>import(`./xai-grok-sanitize-CR2JoOJd.js`),__vite__mapDeps([23,24])),"/packages/webapp/providers/xai-grok.ts":()=>I(()=>import(`./xai-grok-C0k59tLJ.js`),__vite__mapDeps([25,26,24,23]))}),rb=new Map,ib=null;function Zie(){return ib||(ib=(async()=>{for(let[e,t]of Object.entries(Yie)){let e=await t();e.config&&nb(e.config.id)&&(rb.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(Xie)){let e=await t();e.config&&(rb.set(e.config.id,e.config),e.register?.())}})(),ib)}function ab(e){return rb.get(e)}function Qie(){return[...rb.keys()]}function $ie(e){rb.set(e.id,e)}var eae=`slicc-groups`,ob=3,sb={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},cb=null;async function tae(){if(cb){let e=Object.values(sb).every(e=>cb.objectStoreNames.contains(e));if(cb.version===ob&&e)return cb;cb.close(),cb=null}return new Promise((e,t)=>{let n=indexedDB.open(eae,ob);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(sb.MESSAGES)){let e=t.createObjectStore(sb.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(sb.SESSIONS)||t.createObjectStore(sb.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(sb.TASKS)||t.createObjectStore(sb.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(sb.STATE)||t.createObjectStore(sb.STATE,{keyPath:`key`})}if(n<2){let n=e.target.transaction;if(t.objectStoreNames.contains(`groups`)){let e=n.objectStore(`groups`).getAll();e.onsuccess=()=>{let n=e.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(sb.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let e of n){let t=e.isMain??!1,n={jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0};r.put(n)}}}else t.objectStoreNames.contains(sb.SCOOPS)||t.createObjectStore(sb.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(sb.WEBHOOKS)||t.createObjectStore(sb.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(sb.CRONTASKS)||t.createObjectStore(sb.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{cb=n.result,e(cb)},n.onerror=()=>t(n.error)})}async function lb(e,t=`readonly`){return(await tae()).transaction(e,t).objectStore(e)}async function nae(){let e=await lb(sb.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function rae(e){let t=await lb(sb.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function ub(e,t){let n=await lb(sb.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}function db(e){return e.headers.get(`x-proxy-error`)===`1`}async function fb(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return iae(n,t)}function iae(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}var pb=`tray`,mb=`trayWorkerUrl`,hb=`lead`;function gb(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function _b(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.toString(),r=t.pathname.split(`/`).filter(Boolean);if(r.length<2||r.at(-2)!==`join`)return null;let[i,a,...o]=decodeURIComponent(r.at(-1)).split(`.`);if(!i||!a||o.length>0)return null;r.splice(-2,2),t.pathname=r.length>0?`/${r.join(`/`)}`:`/`;let s=gb(t.toString());return s?{workerBaseUrl:s,trayId:i,joinUrl:n}:null}catch{return null}}function aae(e,t){let n=new URL(e);return n.searchParams.delete(mb),n.searchParams.delete(hb),n.searchParams.set(pb,t),n.toString()}var oae=s({DEFAULT_PRODUCTION_TRAY_WORKER_BASE_URL:()=>bb,DEFAULT_STAGING_TRAY_WORKER_BASE_URL:()=>sae,TRAY_JOIN_STORAGE_KEY:()=>yb,TRAY_LEGACY_LEAD_QUERY_PARAM:()=>hb,TRAY_QUERY_PARAM:()=>pb,TRAY_WORKER_QUERY_PARAM:()=>mb,TRAY_WORKER_STORAGE_KEY:()=>vb,buildTrayLaunchUrl:()=>Db,buildTrayLeadLaunchUrl:()=>uae,buildTrayLeadValue:()=>lae,buildTrayUrlValue:()=>Eb,buildTrayWorkerUrl:()=>xb,fetchRuntimeConfig:()=>kb,hasStoredTrayJoinUrl:()=>Tb,normalizeTrayWorkerBaseUrl:()=>gb,parseTrayJoinUrlValue:()=>Cb,parseTrayLeadValue:()=>cae,parseTrayUrlValue:()=>Sb,resolveTrayRuntimeConfig:()=>Ob,resolveTrayWorkerBaseUrl:()=>dae,storeTrayJoinUrl:()=>wb}),vb=`slicc.trayWorkerBaseUrl`,yb=`slicc.trayJoinUrl`,bb=`https://www.sliccy.ai`,sae=`https://slicc-tray-hub-staging.minivelos.workers.dev`;function xb(e,t){let n=gb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function Sb(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.pathname.split(`/`).filter(Boolean),r=null;if(n.length>=2&&n.at(-2)===`tray`)r=decodeURIComponent(n.at(-1)),n.splice(-2,2),t.pathname=n.length>0?`/${n.join(`/`)}`:`/`;else if(n.length>=2&&n.at(-2)===`join`)return _b(t.toString());let i=gb(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function Cb(e){let t=Sb(e);return t?.joinUrl?t:null}function wb(e,t){let n=Cb(t);return n?(e.setItem(yb,n.joinUrl),e.setItem(vb,n.workerBaseUrl),n):null}function Tb(e){return!!Cb(e?.getItem(`slicc.trayJoinUrl`)??null)}function Eb(e,t){let n=gb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t?.trim();return r?new URL(`tray/${encodeURIComponent(r)}`,`${n}/`).toString():n}function Db(e,t,n){return aae(e,Eb(t,n))}function cae(e){return Sb(e)}function lae(e,t){return Eb(e,t)}function uae(e,t,n){return Db(e,t,n)}async function Ob(e){let t=fae(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(yb,t.joinUrl),e.storage.setItem(vb,t.workerBaseUrl)),t;let n=Cb(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(vb,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await pae(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(yb,r.joinConfig.joinUrl),e.storage.setItem(vb,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=gb(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=gb(e.envBaseUrl??null),s=gb(e.defaultWorkerBaseUrl??null),c=i??a??o??s;return c?(e.storage&&e.storage.setItem(vb,c),{workerBaseUrl:c,trayId:null,joinUrl:null}):null}async function dae(e){return(await Ob(e))?.workerBaseUrl??null}async function kb(e=fetch){try{let t=await e(`/api/runtime-config`,{cache:`no-store`});return t.ok?await t.json():null}catch{return null}}function fae(e){try{let t=new URL(e),n=Sb(t.searchParams.get(pb));if(n)return n;let r=Sb(t.searchParams.get(hb));if(r)return r;let i=gb(t.searchParams.get(mb));return i?{workerBaseUrl:i,trayId:null,joinUrl:null}:_b(e)||null}catch{return null}}async function pae(e){let t=await e();if(!t)return null;let n=Cb(t.trayJoinUrl??null);return{workerBaseUrl:gb(t.trayWorkerBaseUrl??null),joinConfig:n}}var Ab=Wv(`tray-leader`),mae=`leader-tray-session`,hae=3e4,gae=1e4,_ae=1e3,vae=3e4,yae=2,bae=20,jb={state:`inactive`,session:null,error:null};function Mb(){return{...jb,session:jb.session?{...jb.session}:null}}var Nb=new Set;function xae(e){return Nb.add(e),()=>{Nb.delete(e)}}function Pb(e){if(jb={...e,session:e.session?{...e.session}:null},Nb.size!==0)for(let e of[...Nb])try{e(Mb())}catch{}}var Fb=class{key;constructor(e=mae){this.key=e}async load(){return Sae(await rae(this.key))}async save(e){await ub(this.key,JSON.stringify(e))}async clear(){await ub(this.key,``)}};function Sae(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var Cae=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new Fb,this.fetchImpl=e.fetchImpl??Eae(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??hae,this.connectTimeoutMs=e.connectTimeoutMs??gae;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??_ae,this.reconnectMaxDelayMs=n.maxDelayMs??vae,this.reconnectBackoffMultiplier=n.backoffMultiplier??yae,this.reconnectMaxAttempts=n.maxAttempts??bae,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return Pb({state:`leader`,session:this.currentSession,error:null}),this.currentSession;Pb({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();Ab.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){Ab.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw Pb({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,Pb({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),Pb({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){Ab.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,Pb({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;Ab.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,Pb({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),Ab.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,Ab.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){Ab.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),Ab.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,Pb({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),Ab.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!wae(t))throw t;return Ab.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear(),this.claimLeaderSession(null)}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(xb(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=Tae(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){Ab.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{Ab.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await Ib.fromResponse(n);return await n.json()}},Ib=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}};function wae(e){return e instanceof Ib&&[403,404,410].includes(e.status)}function Tae(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function Eae(e=fetch){return typeof chrome<`u`&&chrome?.runtime?.id?(t,n)=>e(t,n):async(t,n={})=>{let r=typeof t==`string`?t:t.toString();try{if(new URL(r).origin===window.location.origin)return e(r,{...n,cache:`no-store`})}catch{}let i=new Headers(n.headers);i.set(`X-Target-URL`,r);let a=await e(`/api/fetch-proxy`,{...n,headers:i,cache:`no-store`});if(db(a))throw Error(await fb(a));return a}}var Lb=Wv(`welcome-detection`),Rb=`/shared/.welcomed`,Dae=`browser-coding-agent`,Oae=1,zb=`sessions`,kae=`session-cone`,Bb=`[Sprinkle Event: welcome]`;function Vb(){return new Promise((e,t)=>{let n=indexedDB.open(Dae,Oae);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(zb)||e.createObjectStore(zb,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function Aae(){return Vb().catch(()=>new Promise((e,t)=>{setTimeout(()=>{Vb().then(e,t)},120)}))}async function Hb(){let e=await Aae();try{return await new Promise((t,n)=>{let r=e.transaction(zb,`readonly`).objectStore(zb).get(kae);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function jae(){try{let e=await Hb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>Mae(e))}catch(e){return Lb.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function Mae(e){let t=e.content;return typeof t==`string`?t.includes(Bb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Bb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Bb)}return!1}):!1}async function Ub(e){let t=!1;try{t=await e.exists(Rb)}catch(e){return Lb.warn(`Failed to read welcomed marker`,{path:Rb,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await jae()?{isFirstRun:!1}:{isFirstRun:!0}}async function Nae(e){await e.writeFile(Rb,`1`)}var Wb=`"action":"onboarding-complete-with-provider"`;function Pae(e){let t=e.content;return typeof t==`string`?t.includes(Wb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Wb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Wb)}return!1}):!1}async function Fae(){try{let e=await Hb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>Pae(e))}catch(e){return Lb.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}o((e=>{(function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function n(e){return i(o(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(e,r){var i=1,a=e.length,o,s=``,c,l,u,d,f,p,m,h;for(c=0;c<a;c++)if(typeof e[c]==`string`)s+=e[c];else if(typeof e[c]==`object`){if(u=e[c],u.keys)for(o=r[i],l=0;l<u.keys.length;l++){if(o==null)throw Error(n(`[sprintf] Cannot access property "%s" of undefined value "%s"`,u.keys[l],u.keys[l-1]));o=o[u.keys[l]]}else o=u.param_no?r[u.param_no]:r[i++];if(t.not_type.test(u.type)&&t.not_primitive.test(u.type)&&o instanceof Function&&(o=o()),t.numeric_arg.test(u.type)&&typeof o!=`number`&&isNaN(o))throw TypeError(n(`[sprintf] expecting number but found %T`,o));switch(t.number.test(u.type)&&(m=o>=0),u.type){case`b`:o=parseInt(o,10).toString(2);break;case`c`:o=String.fromCharCode(parseInt(o,10));break;case`d`:case`i`:o=parseInt(o,10);break;case`j`:o=JSON.stringify(o,null,u.width?parseInt(u.width):0);break;case`e`:o=u.precision?parseFloat(o).toExponential(u.precision):parseFloat(o).toExponential();break;case`f`:o=u.precision?parseFloat(o).toFixed(u.precision):parseFloat(o);break;case`g`:o=u.precision?String(Number(o.toPrecision(u.precision))):parseFloat(o);break;case`o`:o=(parseInt(o,10)>>>0).toString(8);break;case`s`:o=String(o),o=u.precision?o.substring(0,u.precision):o;break;case`t`:o=String(!!o),o=u.precision?o.substring(0,u.precision):o;break;case`T`:o=Object.prototype.toString.call(o).slice(8,-1).toLowerCase(),o=u.precision?o.substring(0,u.precision):o;break;case`u`:o=parseInt(o,10)>>>0;break;case`v`:o=o.valueOf(),o=u.precision?o.substring(0,u.precision):o;break;case`x`:o=(parseInt(o,10)>>>0).toString(16);break;case`X`:o=(parseInt(o,10)>>>0).toString(16).toUpperCase();break}t.json.test(u.type)?s+=o:(t.number.test(u.type)&&(!m||u.sign)?(h=m?`+`:`-`,o=o.toString().replace(t.sign,``)):h=``,f=u.pad_char?u.pad_char===`0`?`0`:u.pad_char.charAt(1):` `,p=u.width-(h+o).length,d=u.width&&p>0?f.repeat(p):``,s+=u.align?h+o+d:f===`0`?h+d+o:d+h+o)}return s}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var n=e,r,i=[],o=0;n;){if((r=t.text.exec(n))!==null)i.push(r[0]);else if((r=t.modulo.exec(n))!==null)i.push(`%`);else if((r=t.placeholder.exec(n))!==null){if(r[2]){o|=1;var s=[],c=r[2],l=[];if((l=t.key.exec(c))!==null)for(s.push(l[1]);(c=c.substring(l[0].length))!==``;)if((l=t.key_access.exec(c))!==null)s.push(l[1]);else if((l=t.index_access.exec(c))!==null)s.push(l[1]);else throw SyntaxError(`[sprintf] failed to parse named argument key`);else throw SyntaxError(`[sprintf] failed to parse named argument key`);r[2]=s}else o|=2;if(o===3)throw Error(`[sprintf] mixing positional and named placeholders is not (yet) supported`);i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}else throw SyntaxError(`[sprintf] unexpected placeholder`);n=n.substring(r[0].length)}return a[e]=i}e!==void 0&&(e.sprintf=n,e.vsprintf=r),typeof window<`u`&&(window.sprintf=n,window.vsprintf=r,typeof define==`function`&&define.amd&&define(function(){return{sprintf:n,vsprintf:r}}))})()}))();var Gb=(e,t,n)=>{let r=e instanceof RegExp?Kb(e,n):e,i=t instanceof RegExp?Kb(t,n):t,a=r!==null&&i!=null&&Iae(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},Kb=(e,t)=>{let n=t.match(e);return n?n[0]:null},Iae=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i<a&&(a=i,o=l),l=n.indexOf(t,u+1);u=c<l&&c>=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},qb=`\0SLASH`+Math.random()+`\0`,Jb=`\0OPEN`+Math.random()+`\0`,Yb=`\0CLOSE`+Math.random()+`\0`,Xb=`\0COMMA`+Math.random()+`\0`,Zb=`\0PERIOD`+Math.random()+`\0`,Lae=new RegExp(qb,`g`),Rae=new RegExp(Jb,`g`),zae=new RegExp(Yb,`g`),Bae=new RegExp(Xb,`g`),Vae=new RegExp(Zb,`g`),Hae=/\\\\/g,Uae=/\\{/g,Wae=/\\}/g,Gae=/\\,/g,Kae=/\\\./g,qae=1e5;function Qb(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Jae(e){return e.replace(Hae,qb).replace(Uae,Jb).replace(Wae,Yb).replace(Gae,Xb).replace(Kae,Zb)}function Yae(e){return e.replace(Lae,`\\`).replace(Rae,`{`).replace(zae,`}`).replace(Bae,`,`).replace(Vae,`.`)}function $b(e){if(!e)return[``];let t=[],n=Gb(`{`,`}`,e);if(!n)return e.split(`,`);let{pre:r,body:i,post:a}=n,o=r.split(`,`);o[o.length-1]+=`{`+i+`}`;let s=$b(a);return a.length&&(o[o.length-1]+=s.shift(),o.push.apply(o,s)),t.push.apply(t,o),t}function Xae(e,t={}){if(!e)return[];let{max:n=qae}=t;return e.slice(0,2)===`{}`&&(e=`\\{\\}`+e.slice(2)),ex(Jae(e),n,!0).map(Yae)}function Zae(e){return`{`+e+`}`}function Qae(e){return/^-?0\d/.test(e)}function $ae(e,t){return e<=t}function eoe(e,t){return e>=t}function ex(e,t,n){let r=[],i=Gb(`{`,`}`,e);if(!i)return[e];let a=i.pre,o=i.post.length?ex(i.post,t,!1):[``];if(/\$$/.test(i.pre))for(let e=0;e<o.length&&e<t;e++){let t=a+`{`+i.body+`}`+o[e];r.push(t)}else{let s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),l=s||c,u=i.body.indexOf(`,`)>=0;if(!l&&!u)return i.post.match(/,(?!,).*\}/)?(e=i.pre+`{`+i.body+Yb+i.post,ex(e,t,!0)):[e];let d;if(l)d=i.body.split(/\.\./);else if(d=$b(i.body),d.length===1&&d[0]!==void 0&&(d=ex(d[0],t,!1).map(Zae),d.length===1))return o.map(e=>i.pre+d[0]+e);let f;if(l&&d[0]!==void 0&&d[1]!==void 0){let e=Qb(d[0]),t=Qb(d[1]),n=Math.max(d[0].length,d[1].length),r=d.length===3&&d[2]!==void 0?Math.abs(Qb(d[2])):1,i=$ae;t<e&&(r*=-1,i=eoe);let a=d.some(Qae);f=[];for(let o=e;i(o,t);o+=r){let e;if(c)e=String.fromCharCode(o),e===`\\`&&(e=``);else if(e=String(o),a){let t=n-e.length;if(t>0){let n=Array(t+1).join(`0`);e=o<0?`-`+n+e.slice(1):n+e}}f.push(e)}}else{f=[];for(let e=0;e<d.length;e++)f.push.apply(f,ex(d[e],t,!1))}for(let e=0;e<f.length;e++)for(let i=0;i<o.length&&r.length<t;i++){let t=a+f[e]+o[i];(!n||l||t)&&r.push(t)}}return r}var toe=1024*64,tx=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>toe)throw TypeError(`pattern is too long`)},noe={"[:alnum:]":[`\\p{L}\\p{Nl}\\p{Nd}`,!0],"[:alpha:]":[`\\p{L}\\p{Nl}`,!0],"[:ascii:]":[`\\x00-\\x7f`,!1],"[:blank:]":[`\\p{Zs}\\t`,!0],"[:cntrl:]":[`\\p{Cc}`,!0],"[:digit:]":[`\\p{Nd}`,!0],"[:graph:]":[`\\p{Z}\\p{C}`,!0,!0],"[:lower:]":[`\\p{Ll}`,!0],"[:print:]":[`\\p{C}`,!0],"[:punct:]":[`\\p{P}`,!0],"[:space:]":[`\\p{Z}\\t\\r\\n\\v\\f`,!0],"[:upper:]":[`\\p{Lu}`,!0],"[:word:]":[`\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}`,!0],"[:xdigit:]":[`A-Fa-f0-9`,!1]},nx=e=>e.replace(/[[\]\\-]/g,`\\$&`),roe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),rx=e=>e.join(``),ioe=(e,t)=>{let n=t;if(e.charAt(n)!==`[`)throw Error(`not in a brace expression`);let r=[],i=[],a=n+1,o=!1,s=!1,c=!1,l=!1,u=n,d=``;WHILE:for(;a<e.length;){let t=e.charAt(a);if((t===`!`||t===`^`)&&a===n+1){l=!0,a++;continue}if(t===`]`&&o&&!c){u=a+1;break}if(o=!0,t===`\\`&&!c){c=!0,a++;continue}if(t===`[`&&!c){for(let[t,[o,c,l]]of Object.entries(noe))if(e.startsWith(t,a)){if(d)return[`$.`,!1,e.length-n,!0];a+=t.length,l?i.push(o):r.push(o),s||=c;continue WHILE}}if(c=!1,d){t>d?r.push(nx(d)+`-`+nx(t)):t===d&&r.push(nx(t)),d=``,a++;continue}if(e.startsWith(`-]`,a+1)){r.push(nx(t+`-`)),a+=2;continue}if(e.startsWith(`-`,a+1)){d=t,a+=2;continue}r.push(nx(t)),a++}if(u<a)return[``,!1,0,!1];if(!r.length&&!i.length)return[`$.`,!1,e.length-n,!0];if(i.length===0&&r.length===1&&/^\\?.$/.test(r[0])&&!l)return[roe(r[0].length===2?r[0].slice(-1):r[0]),!1,u-n,!1];let f=`[`+(l?`^`:``)+rx(r)+`]`,p=`[`+(l?``:`^`)+rx(i)+`]`;return[r.length&&i.length?`(`+f+`|`+p+`)`:r.length?f:p,s,u-n,!0]},ix=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!0}={})=>n?t?e.replace(/\[([^\/\\])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,`$1$2`).replace(/\\([^\/])/g,`$1`):t?e.replace(/\[([^\/\\{}])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,`$1$2`).replace(/\\([^\/{}])/g,`$1`),ax,aoe=new Set([`!`,`?`,`+`,`*`,`@`]),ox=e=>aoe.has(e),sx=e=>ox(e.type),ooe=new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),soe=new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),coe=new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),cx=new Map([[`!`,new Map([[`!`,`@`]])],[`?`,new Map([[`*`,`*`],[`+`,`*`]])],[`@`,new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,new Map([[`?`,`*`],[`*`,`*`]])]]),loe=`(?!(?:^|/)\\.\\.?(?:$|/))`,lx=`(?!\\.)`,uoe=new Set([`[`,`.`]),doe=new Set([`..`,`.`]),foe=new Set(`().*{}+?[]^$\\!`),poe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),moe=`[^/]`,hoe=`[^/]*?`,ux=`[^/]+?`,goe=0,dx=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++goe;get depth(){return(this.#i?.depth??-1)+1}[Symbol.for(`nodejs.util.inspect.custom`)](){return{"@@type":`AST`,id:this.id,type:this.type,root:this.#e.id,parent:this.#i?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#c=this.#e===this?n:this.#e.#c,this.#o=this.#e===this?[]:this.#e.#o,e===`!`&&!this.#e.#s&&this.#o.push(this),this.#a=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let e of this.#r)if(typeof e!=`string`&&(e.type||e.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#l===void 0?this.type?this.#l=this.type+`(`+this.#r.map(e=>String(e)).join(`|`)+`)`:this.#l=this.#r.map(e=>String(e)).join(``):this.#l}#d(){if(this!==this.#e)throw Error(`should only call on root`);if(this.#s)return this;this.toString(),this.#s=!0;let e;for(;e=this.#o.pop();){if(e.type!==`!`)continue;let t=e,n=t.#i;for(;n;){for(let r=t.#a+1;!n.type&&r<n.#r.length;r++)for(let t of e.#r){if(typeof t==`string`)throw Error(`string part in extglob AST??`);t.copyIn(n.#r[r])}t=n,n=t.#i}}return this}push(...e){for(let t of e)if(t!==``){if(typeof t!=`string`&&!(t instanceof ax&&t.#i===this))throw Error(`invalid part: `+t);this.#r.push(t)}}toJSON(){let e=this.type===null?this.#r.slice().map(e=>typeof e==`string`?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#i?.type===`!`)&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#a===0)return!0;let e=this.#i;for(let t=0;t<this.#a;t++){let n=e.#r[t];if(!(n instanceof ax&&n.type===`!`))return!1}return!0}isEnd(){if(this.#e===this||this.#i?.type===`!`)return!0;if(!this.#i?.isEnd())return!1;if(!this.type)return this.#i?.isEnd();let e=this.#i?this.#i.#r.length:0;return this.#a===e-1}copyIn(e){typeof e==`string`?this.push(e):this.push(e.clone(this))}clone(e){let t=new ax(this.type,e);for(let e of this.#r)t.copyIn(e);return t}static#f(e,t,n,r,i){let a=r.maxExtglobRecursion??2,o=!1,s=!1,c=-1,l=!1;if(t.type===null){let u=n,d=``;for(;u<e.length;){let n=e.charAt(u++);if(o||n===`\\`){o=!o,d+=n;continue}if(s){u===c+1?(n===`^`||n===`!`)&&(l=!0):n===`]`&&!(u===c+2&&l)&&(s=!1),d+=n;continue}else if(n===`[`){s=!0,c=u,l=!1,d+=n;continue}if(!r.noext&&ox(n)&&e.charAt(u)===`(`&&i<=a){t.push(d),d=``;let a=new ax(n,t);u=ax.#f(e,a,u,r,i+1),t.push(a);continue}d+=n}return t.push(d),u}let u=n+1,d=new ax(null,t),f=[],p=``;for(;u<e.length;){let n=e.charAt(u++);if(o||n===`\\`){o=!o,p+=n;continue}if(s){u===c+1?(n===`^`||n===`!`)&&(l=!0):n===`]`&&!(u===c+2&&l)&&(s=!1),p+=n;continue}else if(n===`[`){s=!0,c=u,l=!1,p+=n;continue}if(!r.noext&&ox(n)&&e.charAt(u)===`(`&&(i<=a||t&&t.#h(n))){let a=t&&t.#h(n)?0:1;d.push(p),p=``;let o=new ax(n,d);d.push(o),u=ax.#f(e,o,u,r,i+a);continue}if(n===`|`){d.push(p),p=``,f.push(d),d=new ax(null,t);continue}if(n===`)`)return p===``&&t.#r.length===0&&(t.#u=!0),d.push(p),p=``,t.push(...f,d),u;p+=n}return t.type=null,t.#t=void 0,t.#r=[e.substring(n-1)],u}#p(e){return this.#m(e,soe)}#m(e,t=ooe){if(!e||typeof e!=`object`||e.type!==null||e.#r.length!==1||this.type===null)return!1;let n=e.#r[0];return!n||typeof n!=`object`||n.type===null?!1:this.#h(n.type,t)}#h(e,t=coe){return!!t.get(this.type)?.includes(e)}#g(e,t){let n=e.#r[0],r=new ax(null,n,this.options);r.#r.push(``),n.push(r),this.#_(e,t)}#_(e,t){let n=e.#r[0];this.#r.splice(t,1,...n.#r);for(let e of n.#r)typeof e==`object`&&(e.#i=this);this.#l=void 0}#v(e){return!!cx.get(this.type)?.has(e)}#y(e){if(!e||typeof e!=`object`||e.type!==null||e.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let t=e.#r[0];return!t||typeof t!=`object`||t.type===null?!1:this.#v(t.type)}#b(e){let t=cx.get(this.type),n=e.#r[0],r=t?.get(n.type);if(!r)return!1;this.#r=n.#r;for(let e of this.#r)typeof e==`object`&&(e.#i=this);this.type=r,this.#l=void 0,this.#u=!1}static fromGlob(e,t={}){let n=new ax(null,void 0,t);return ax.#f(e,n,0,t,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let e=this.toString(),[t,n,r,i]=this.toRegExpSource();if(!(r||this.#t||this.#c.nocase&&!this.#c.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;let a=(this.#c.nocase?`i`:``)+(i?`u`:``);return Object.assign(RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#c}toRegExpSource(e){let t=e??!!this.#c.dot;if(this.#e===this&&(this.#x(),this.#d()),!sx(this)){let n=this.isStart()&&this.isEnd()&&!this.#r.some(e=>typeof e!=`string`),r=this.#r.map(t=>{let[r,i,a,o]=typeof t==`string`?ax.#C(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||o,r}).join(``),i=``;if(this.isStart()&&typeof this.#r[0]==`string`&&!(this.#r.length===1&&doe.has(this.#r[0]))){let n=uoe,a=t&&n.has(r.charAt(0))||r.startsWith(`\\.`)&&n.has(r.charAt(2))||r.startsWith(`\\.\\.`)&&n.has(r.charAt(4)),o=!t&&!e&&n.has(r.charAt(0));i=a?loe:o?lx:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,ix(r),this.#t=!!this.#t,this.#n]}let n=this.type===`*`||this.type===`+`,r=this.type===`!`?`(?:(?!(?:`:`(?:`,i=this.#S(t);if(this.isStart()&&this.isEnd()&&!i&&this.type!==`!`){let e=this.toString(),t=this;return t.#r=[e],t.type=null,t.#t=void 0,[e,ix(this.toString()),!1,!1]}let a=!n||e||t?``:this.#S(!0);a===i&&(a=``),a&&(i=`(?:${i})(?:${a})*?`);let o=``;if(this.type===`!`&&this.#u)o=(this.isStart()&&!t?lx:``)+ux;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?lx:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,ix(i),this.#t=!!this.#t,this.#n]}#x(){if(sx(this)){let e=0,t=!1;do{t=!0;for(let e=0;e<this.#r.length;e++){let n=this.#r[e];typeof n==`object`&&(n.#x(),this.#m(n)?(t=!1,this.#_(n,e)):this.#p(n)?(t=!1,this.#g(n,e)):this.#y(n)&&(t=!1,this.#b(n)))}}while(!t&&++e<10)}else for(let e of this.#r)typeof e==`object`&&e.#x();this.#l=void 0}#S(e){return this.#r.map(t=>{if(typeof t==`string`)throw Error(`string type in extglob ast??`);let[n,r,i,a]=t.toRegExpSource(e);return this.#n=this.#n||a,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(`|`)}static#C(e,t,n=!1){let r=!1,i=``,a=!1,o=!1;for(let s=0;s<e.length;s++){let c=e.charAt(s);if(r){r=!1,i+=(foe.has(c)?`\\`:``)+c;continue}if(c===`*`){if(o)continue;o=!0,i+=n&&/^[*]+$/.test(e)?ux:hoe,t=!0;continue}else o=!1;if(c===`\\`){s===e.length-1?i+=`\\\\`:r=!0;continue}if(c===`[`){let[n,r,o,c]=ioe(e,s);if(o){i+=n,a||=r,s+=o-1,t||=c;continue}}if(c===`?`){i+=moe,t=!0;continue}i+=poe(c)}return[i,ix(e),!!t,a]}};ax=dx;var _oe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),fx=(e,t,n={})=>(tx(t),!n.nocomment&&t.charAt(0)===`#`?!1:new xx(t,n).match(e)),voe=/^\*+([^+@!?\*\[\(]*)$/,yoe=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),boe=e=>t=>t.endsWith(e),xoe=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),Soe=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Coe=/^\*+\.\*+$/,woe=e=>!e.startsWith(`.`)&&e.includes(`.`),Toe=e=>e!==`.`&&e!==`..`&&e.includes(`.`),Eoe=/^\.\*+$/,Doe=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),Ooe=/^\*+$/,koe=e=>e.length!==0&&!e.startsWith(`.`),Aoe=e=>e.length!==0&&e!==`.`&&e!==`..`,joe=/^\?+([^+@!?\*\[\(]*)?$/,Moe=([e,t=``])=>{let n=px([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Noe=([e,t=``])=>{let n=mx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Poe=([e,t=``])=>{let n=mx([e]);return t?e=>n(e)&&e.endsWith(t):n},Foe=([e,t=``])=>{let n=px([e]);return t?e=>n(e)&&e.endsWith(t):n},px=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},mx=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},hx=typeof process==`object`&&process?{}.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,gx={win32:{sep:`\\`},posix:{sep:`/`}};fx.sep=hx===`win32`?gx.win32.sep:gx.posix.sep;var _x=Symbol(`globstar **`);fx.GLOBSTAR=_x;var Ioe=`[^/]*?`,Loe=`(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?`,Roe=`(?:(?!(?:\\/|^)\\.).)*?`;fx.filter=(e,t={})=>n=>fx(n,e,t);var vx=(e,t={})=>Object.assign({},e,t);fx.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return fx;let t=fx;return Object.assign((n,r,i={})=>t(n,r,vx(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,vx(e,n))}static defaults(n){return t.defaults(vx(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,vx(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,vx(e,r))}},unescape:(n,r={})=>t.unescape(n,vx(e,r)),escape:(n,r={})=>t.escape(n,vx(e,r)),filter:(n,r={})=>t.filter(n,vx(e,r)),defaults:n=>t.defaults(vx(e,n)),makeRe:(n,r={})=>t.makeRe(n,vx(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,vx(e,r)),match:(n,r,i={})=>t.match(n,r,vx(e,i)),sep:t.sep,GLOBSTAR:_x})};var yx=(e,t={})=>(tx(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Xae(e,{max:t.braceExpandMax}));fx.braceExpand=yx,fx.makeRe=(e,t={})=>new xx(e,t).makeRe(),fx.match=(e,t,n={})=>{let r=new xx(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};var bx=/[?*]|[+@!]\(.*?\)|\[|\]/,zoe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),xx=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){tx(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||hx,this.isWindows=this.platform===`win32`,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,`/`)),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot===void 0?!!(this.isWindows&&this.nocase):t.windowsNoMagicRoot,this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!=`string`)return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)===`#`){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=e[0]===``&&e[1]===``&&(e[2]===`?`||!bx.test(e[2]))&&!bx.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>e.indexOf(!1)===-1),this.isWindows)for(let e=0;e<this.set.length;e++){let t=this.set[e];t[0]===``&&t[1]===``&&this.globParts[e][2]===`?`&&typeof t[3]==`string`&&/^[a-z]:$/i.test(t[3])&&(t[2]=`?`)}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let t=0;t<e.length;t++)for(let n=0;n<e[t].length;n++)e[t][n]===`**`&&(e[t][n]=`*`);let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;(t=e.indexOf(`**`,t+1))!==-1;){let n=t;for(;e[n+1]===`**`;)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>(e=e.reduce((e,t)=>{let n=e[e.length-1];return t===`**`&&n===`**`?e:t===`..`&&n&&n!==`..`&&n!==`.`&&n!==`**`?(e.pop(),e):(e.push(t),e)},[]),e.length===0?[``]:e))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;n<e.length-1;n++){let r=e[n];n===1&&r===``&&e[0]===``||(r===`.`||r===``)&&(t=!0,e.splice(n,1),n--)}e[0]===`.`&&e.length===2&&(e[1]===`.`||e[1]===``)&&(t=!0,e.pop())}let n=0;for(;(n=e.indexOf(`..`,n+1))!==-1;){let r=e[n-1];r&&r!==`.`&&r!==`..`&&r!==`**`&&(t=!0,e.splice(n-1,2),n-=2)}}while(t);return e.length===0?[``]:e}firstPhasePreProcess(e){let t=!1;do{t=!1;for(let n of e){let r=-1;for(;(r=n.indexOf(`**`,r+1))!==-1;){let i=r;for(;n[i+1]===`**`;)i++;i>r&&n.splice(r+1,i-r);let a=n[r+1],o=n[r+2],s=n[r+3];if(a!==`..`||!o||o===`.`||o===`..`||!s||s===`.`||s===`..`)continue;t=!0,n.splice(r,1);let c=n.slice(0);c[r]=`**`,e.push(c),r--}if(!this.preserveMultipleSlashes){for(let e=1;e<n.length-1;e++){let r=n[e];e===1&&r===``&&n[0]===``||(r===`.`||r===``)&&(t=!0,n.splice(e,1),e--)}n[0]===`.`&&n.length===2&&(n[1]===`.`||n[1]===``)&&(t=!0,n.pop())}let i=0;for(;(i=n.indexOf(`..`,i+1))!==-1;){let e=n[i-1];if(e&&e!==`.`&&e!==`..`&&e!==`**`){t=!0;let e=i===1&&n[i+1]===`**`?[`.`]:[];n.splice(i-1,2,...e),n.length===0&&n.push(``),i-=2}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let n=t+1;n<e.length;n++){let r=this.partsMatch(e[t],e[n],!this.preserveMultipleSlashes);if(r){e[t]=[],e[n]=r;break}}return e.filter(e=>e.length)}partsMatch(e,t,n=!1){let r=0,i=0,a=[],o=``;for(;r<e.length&&i<t.length;)if(e[r]===t[i])a.push(o===`b`?t[i]:e[r]),r++,i++;else if(n&&e[r]===`**`&&t[i]===e[r+1])a.push(e[r]),r++;else if(n&&t[i]===`**`&&e[r]===t[i+1])a.push(t[i]),i++;else if(e[r]===`*`&&t[i]&&(this.options.dot||!t[i].startsWith(`.`))&&t[i]!==`**`){if(o===`b`)return!1;o=`a`,a.push(e[r]),r++,i++}else if(t[i]===`*`&&e[r]&&(this.options.dot||!e[r].startsWith(`.`))&&e[r]!==`**`){if(o===`a`)return!1;o=`b`,a.push(t[i]),r++,i++}else return!1;return e.length===t.length&&a}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=!1,n=0;for(let r=0;r<e.length&&e.charAt(r)===`!`;r++)t=!t,n++;n&&(this.pattern=e.slice(n)),this.negate=t}matchOne(e,t,n=!1){let r=0,i=0;if(this.isWindows){let n=typeof e[0]==`string`&&/^[a-z]:$/i.test(e[0]),a=!n&&e[0]===``&&e[1]===``&&e[2]===`?`&&/^[a-z]:$/i.test(e[3]),o=typeof t[0]==`string`&&/^[a-z]:$/i.test(t[0]),s=!o&&t[0]===``&&t[1]===``&&t[2]===`?`&&typeof t[3]==`string`&&/^[a-z]:$/i.test(t[3]),c=a?3:n?0:void 0,l=s?3:o?0:void 0;if(typeof c==`number`&&typeof l==`number`){let[n,a]=[e[c],t[l]];n.toLowerCase()===a.toLowerCase()&&(t[l]=n,i=l,r=c)}}let{optimizationLevel:a=1}=this.options;return a>=2&&(e=this.levelTwoFileOptimize(e)),t.includes(_x)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(_x,i),o=t.lastIndexOf(_x),[s,c,l]=n?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,o),t.slice(o+1)];if(s.length){let t=e.slice(r,r+s.length);if(!this.#n(t,s,n,0,0))return!1;r+=s.length,i+=s.length}let u=0;if(l.length){if(l.length+r>e.length)return!1;let t=e.length-l.length;if(this.#n(e,l,n,t,0))u=l.length;else{if(e[e.length-1]!==``||r+l.length===e.length||(t--,!this.#n(e,l,n,t,0)))return!1;u=l.length+1}}if(!c.length){let t=!!u;for(let n=r;n<e.length-u;n++){let r=String(e[n]);if(t=!0,r===`.`||r===`..`||!this.options.dot&&r.startsWith(`.`))return!1}return n||t}let d=[[[],0]],f=d[0],p=0,m=[0];for(let e of c)e===_x?(m.push(p),f=[[],0],d.push(f)):(f[0].push(e),p++);let h=d.length-1,g=e.length-u;for(let e of d)e[1]=g-(m[h--]+e[0].length);return!!this.#t(e,d,r,0,n,0,!!u)}#t(e,t,n,r,i,a,o){let s=t[r];if(!s){for(let t=n;t<e.length;t++){o=!0;let n=e[t];if(n===`.`||n===`..`||!this.options.dot&&n.startsWith(`.`))return!1}return o}let[c,l]=s;for(;n<=l;){if(this.#n(e.slice(0,n+c.length),c,i,n,0)&&a<this.maxGlobstarRecursion){let s=this.#t(e,t,n+c.length,r+1,i,a+1,o);if(s!==!1)return s}let s=e[n];if(s===`.`||s===`..`||!this.options.dot&&s.startsWith(`.`))return!1;n++}return i||null}#n(e,t,n,r,i){let a,o,s,c;for(a=r,o=i,c=e.length,s=t.length;a<c&&o<s;a++,o++){this.debug(`matchOne loop`);let n=t[o],r=e[a];if(this.debug(t,n,r),n===!1||n===_x)return!1;let i;if(typeof n==`string`?(i=r===n,this.debug(`string match`,n,r,i)):(i=n.test(r),this.debug(`pattern match`,n,r,i)),!i)return!1}if(a===c&&o===s)return!0;if(a===c)return n;if(o===s)return a===c-1&&e[a]===``;throw Error(`wtf?`)}braceExpand(){return yx(this.pattern,this.options)}parse(e){tx(e);let t=this.options;if(e===`**`)return _x;if(e===``)return``;let n,r=null;(n=e.match(Ooe))?r=t.dot?Aoe:koe:(n=e.match(voe))?r=(t.nocase?t.dot?Soe:xoe:t.dot?boe:yoe)(n[1]):(n=e.match(joe))?r=(t.nocase?t.dot?Noe:Moe:t.dot?Poe:Foe)(n):(n=e.match(Coe))?r=t.dot?Toe:woe:(n=e.match(Eoe))&&(r=Doe);let i=dx.fromGlob(e,this.options).toMMPattern();return r&&typeof i==`object`&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,n=t.noglobstar?Ioe:t.dot?Loe:Roe,r=new Set(t.nocase?[`i`]:[]),i=e.map(e=>{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(``))r.add(t);return typeof e==`string`?zoe(e):e===_x?_x:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e!==_x||a===_x||(a===void 0?i!==void 0&&i!==_x?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==_x&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=_x))});let i=t.filter(e=>e!==_x);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join(`/`));return`(?:`+e.join(`|`)+`)`}return i.join(`/`)}).join(`|`),[a,o]=e.length>1?[`(?:`,`)`]:[``,``];i=`^`+a+i+o+`$`,this.partial&&(i=`^(?:\\/|`+a+i.slice(1,-1)+o+`)$`),this.negate&&(i=`^(?!`+i+`).+$`);try{this.regexp=new RegExp(i,[...r].join(``))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(`/`):this.isWindows&&/^\/\/[^\/]+/.test(e)?[``,...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug(`match`,e,this.pattern),this.comment)return!1;if(this.empty)return e===``;if(e===`/`&&t)return!0;let n=this.options;this.isWindows&&(e=e.split(`\\`).join(`/`));let r=this.slashSplit(e);this.debug(this.pattern,`split`,r);let i=this.set;this.debug(this.pattern,`set`,i);let a=r[r.length-1];if(!a)for(let e=r.length-2;!a&&e>=0;e--)a=r[e];for(let e=0;e<i.length;e++){let o=i[e],s=r;if(n.matchBase&&o.length===1&&(s=[a]),this.matchOne(s,o,t))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(e){return fx.defaults(e).Minimatch}};fx.AST=dx,fx.Minimatch=xx,fx.escape=_oe,fx.unescape=ix;var Sx={};function Cx(){throw Error(`gunzipSync is not available in the browser`)}function wx(){throw Error(`gzipSync is not available in the browser`)}var Tx=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}};new class extends Tx{};function Ex(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function Dx(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function Ox(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function kx(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function Ax(e,t){return Ox(e,t,``)}function jx(e,t){return kx(e,t,``)}function Mx(e,t){return t.slice(0,Boe(e,t))}function Boe(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function Nx(e){let t;for(t=e.length-1;t>=0&&e[t].match(/\s/);t--);return e.substring(t+1)}function Px(e){let t=e.match(/^\s*/);return t?t[0]:``}var Fx=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,Voe=RegExp(`[${Fx}]+|\\s+|[^${Fx}]`,`ug`);new class extends Tx{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=[];for(let t of Array.from(r.segment(e))){let e=t.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}}else n=e.match(Voe)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&Ix(n,i,r,e),n=e,r=null,i=null)}),(r||i)&&Ix(n,i,r,null),e}};function Ix(e,t,n,r){if(t&&n){let i=Px(t.value),a=Nx(t.value),o=Px(n.value),s=Nx(n.value);if(e){let r=Ex(i,o);e.value=kx(e.value,o,r),t.value=Ax(t.value,r),n.value=Ax(n.value,r)}if(r){let e=Dx(a,s);r.value=Ox(r.value,s,e),t.value=jx(t.value,e),n.value=jx(n.value,e)}}else if(n){if(e){let e=Px(n.value);n.value=n.value.substring(e.length)}if(r){let e=Px(r.value);r.value=r.value.substring(e.length)}}else if(e&&r){let n=Px(r.value),i=Px(t.value),a=Nx(t.value),o=Ex(n,i);t.value=Ax(t.value,o);let s=Dx(Ax(n,o),a);t.value=jx(t.value,s),r.value=Ox(r.value,n,s),e.value=kx(e.value,n,n.slice(0,n.length-s.length))}else if(r){let e=Px(r.value),n=Mx(Nx(t.value),e);t.value=jx(t.value,n)}else if(e){let n=Mx(Nx(e.value),Px(t.value));t.value=Ax(t.value,n)}}new class extends Tx{tokenize(e){let t=RegExp(`(\\r?\\n)|[${Fx}]+|[^\\S\\n\\r]+|[^${Fx}]`,`ug`);return e.match(t)||[]}},new class extends Tx{constructor(){super(...arguments),this.tokenize=Lx}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
|
|
76
|
+
`,onAction:async(e,t)=>{if(e===`approve`){let e=t;if(e?.handleInIdb&&typeof e.idbKey==`string`)try{let t=await Dy(e.idbKey);return t?(await Oy(t),{approved:!0,handle:t}):{error:`No directory handle found in storage`}}catch(e){return{error:e instanceof Error?e.message:String(e)}}if(e?.cancelled)return{cancelled:!0};if(e?.error)return{error:String(e.error)};try{return{approved:!0,handle:await window.showDirectoryPicker({mode:`readwrite`})}}catch(e){return e instanceof Error&&e.name===`AbortError`?{cancelled:!0}:{error:e instanceof Error?e.message:String(e)}}}return{denied:!0}}},t.toolContext.onUpdate).catch(e=>{if(r)return Ay;throw e}),a,o=new Promise(t=>{a=setTimeout(()=>{r=!0,dy.cancel(e,`mount: timed out`),t(Ay)},ky)}),s=await Promise.race([i,o]);if(a&&clearTimeout(a),s===Ay)throw Error(`mount: timed out after ${Math.round(ky/6e4)} minute(s) waiting for user approval`);if(!s)throw Error(`mount: tool UI not available`);let c=s;if(c.denied)throw Error(`mount: denied by user`);if(c.cancelled)throw Error(`mount: cancelled`);if(c.error)throw Error(`mount: ${c.error}`);if(!c.handle)throw Error(`mount: no directory selected`);n=c.handle}else if(t.isExtension)try{let e=await Ty();if(e.cancelled)throw Error(`mount: cancelled`);if(e.error)throw Error(`mount: ${e.error}`);if(e.handleInIdb&&typeof e.idbKey==`string`){let t=await Dy(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);await Oy(t),n=t}else throw Error(`mount: unexpected popup result`)}catch(e){throw Error(`mount: ${e instanceof Error?e.message:String(e)}`)}else{if(typeof window>`u`||!(`showDirectoryPicker`in window))throw Error(`mount: local picker requires a user gesture in the panel (unavailable in this runtime). Ask the agent to mount it instead.`);try{n=await window.showDirectoryPicker({mode:`readwrite`})}catch(e){throw e instanceof Error&&e.name===`AbortError`?Error(`mount: cancelled`):Error(`mount: ${e instanceof Error?e.message:String(e)}`)}}return new e(n,{mountId:t.mountId})}getHandle(){return this.handle}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}splitPath(e){return e.replace(/^\/+/,``).replace(/\/+$/,``).split(`/`).filter(e=>e.length>0)}async resolveDir(e,t=!1){let n=this.splitPath(e),r=this.handle;for(let i of n)try{r=await r.getDirectoryHandle(i,{create:t})}catch(t){throw this.toFsError(t,e)}return r}async resolveFile(e,t=!1){let n=this.splitPath(e);if(n.length===0)throw new R(`EISDIR`,`is a directory`,e);let r=n.pop(),i=this.handle;for(let r of n)try{i=await i.getDirectoryHandle(r,{create:t})}catch(t){throw this.toFsError(t,e)}try{return await i.getFileHandle(r,{create:t})}catch(t){throw this.toFsError(t,e)}}toFsError(e,t){if(e instanceof R)return e;if(e instanceof DOMException){if(e.name===`NotFoundError`)return new R(`ENOENT`,`no such file or directory`,t);if(e.name===`TypeMismatchError`)return new R(`ENOTDIR`,`not a directory`,t);if(e.name===`NotAllowedError`)return new R(`EACCES`,`permission denied`,t);if(e.name===`InvalidModificationError`)return new R(`ENOTEMPTY`,`directory not empty`,t)}if(e instanceof Error){if(e.name===`NotFound`||e.name===`NotFoundError`)return new R(`ENOENT`,`no such file or directory`,t);if(e.name===`TypeMismatch`||e.name===`TypeMismatchError`)return new R(`ENOTDIR`,`not a directory`,t);if(e.name===`InvalidModification`||e.name===`InvalidModificationError`)return new R(`ENOTEMPTY`,`directory not empty`,t)}return new R(`EINVAL`,e instanceof Error?e.message:String(e),t)}async readDir(e){this.assertOpen(e);let t=await this.resolveDir(e),n=[];for await(let[e,r]of t)if(r.kind===`file`){let t=await r.getFile();n.push({name:e,kind:`file`,size:t.size,lastModified:t.lastModified})}else n.push({name:e,kind:`directory`});return n}async readFile(e){this.assertOpen(e);let t=await(await this.resolveFile(e)).getFile();return new Uint8Array(await t.arrayBuffer())}async writeFile(e,t){this.assertOpen(e);let n=await(await this.resolveFile(e,!0)).createWritable();await n.write(t),await n.close()}async stat(e){if(this.assertOpen(e),this.splitPath(e).length===0)return{kind:`directory`,size:0,mtime:0};try{let t=await(await this.resolveFile(e)).getFile();return{kind:`file`,size:t.size,mtime:t.lastModified}}catch{}return await this.resolveDir(e),{kind:`directory`,size:0,mtime:0}}async mkdir(e){this.assertOpen(e),await this.resolveDir(e,!0)}async remove(e,t){this.assertOpen(e);let n=this.splitPath(e);if(n.length===0)throw new R(`EINVAL`,`cannot remove mount root`,e);let r=n.pop(),i=n.join(`/`),a=await this.resolveDir(i||`/`);try{await a.removeEntry(r,{recursive:t?.recursive??!1})}catch(t){throw this.toFsError(t,e)}}async refresh(){return this.assertOpen(`/`),{added:[],removed:[],changed:[],unchanged:0,errors:[]}}describe(){return{displayName:this.handle.name}}async close(){this.closed=!0}};function My(){return crypto.randomUUID()}function kie(e,t,n){let r=`----DaMount${Math.random().toString(36).slice(2)}${Date.now().toString(36)}`,i=new TextEncoder,a=i.encode(`--${r}\r\nContent-Disposition: form-data; name="data"; filename="${e}"\r\nContent-Type: ${t}\r\n\r\n`),o=i.encode(`\r\n--${r}--\r\n`),s=new Uint8Array(a.byteLength+n.byteLength+o.byteLength);return s.set(a,0),s.set(n,a.byteLength),s.set(o,a.byteLength+n.byteLength),{contentType:`multipart/form-data; boundary=${r}`,body:s}}function Aie(e){return e.split(`/`).pop()||`data`}function jie(e){let t=e.match(/^da:\/\/([^/]+)\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid DA source '${e}' — expected da://org/repo[/path]`);return{org:t[1],repo:t[2],path:(t[3]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var Mie=5*1024*1024,Ny=class{kind=`da`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=jie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??Mie,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toSourcePath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/source/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}toListPath(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``),n=[this.parsed.path,t].filter(e=>e.length>0).join(`/`);return`/list/${this.parsed.org}/${this.parsed.repo}${n?`/${n}`:``}`}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,path:this.toSourcePath(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new R(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new R(`EACCES`,`da access denied`,e);if(i.status>=400)throw new R(`EIO`,`da readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){if(this.assertOpen(e),t.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let n=this.toMountRelative(e),r=await this.cache.getBody(n),i=kie(Aie(e),ey(e),t),a={"content-type":i.contentType,"content-length":String(i.body.byteLength)};r?.etag?a[`if-match`]=r.etag:r||(a[`if-none-match`]=`*`);let o=()=>this.transport({method:`POST`,path:this.toSourcePath(n),headers:a,body:i.body}),s,c=1;try{s=await o()}catch{c=2,s=await o()}if(s.status===412){if(c===2){let r=await this.transport({method:`HEAD`,path:this.toSourcePath(n)});if(r.status>=400)throw new R(`EIO`,`da reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new R(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(s.status===401||s.status===403)throw new R(`EACCES`,`da write denied`,e);if(s.status>=400)throw new R(`EIO`,`da writeFile failed: ${s.status}`,e);let l=s.headers.get(`etag`)??``;await this.cache.putBody(n,t,l);let u=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(u)}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.transport({method:`GET`,path:this.toListPath(t)});if(r.status===404)throw new R(`ENOENT`,`no such directory`,e);if(r.status>=400)throw new R(`EIO`,`da list failed: ${r.status}`,e);let i=(await r.json()).map(e=>e.ext?{name:`${e.name}.${e.ext}`,kind:`file`,etag:e.etag,lastModified:e.lastModified}:{name:e.name,kind:`directory`,lastModified:e.lastModified});return await this.cache.putListing(t,i),i}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.size,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new R(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,path:this.toSourcePath(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`),r=n?Date.parse(n):0;if(o){let n=o.entries.map(n=>n.name===i&&n.kind===`file`?{...n,size:e,etag:t,lastModified:r}:n);await this.cache.putListing(a,n)}return{kind:`file`,size:e,mtime:r,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new R(`ENOENT`,`no such file or directory`,e)}throw new R(`EIO`,`da stat failed: ${s.status}`,e)}async mkdir(e){}async remove(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.transport({method:`DELETE`,path:this.toSourcePath(t)});if(n.status===404)throw new R(`ENOENT`,`no such file`,e);if(n.status===401||n.status===403)throw new R(`EACCES`,`da delete denied`,e);if(n.status>=400)throw new R(`EIO`,`da delete failed: ${n.status}`,e);await this.cache.invalidateBody(t);let r=t.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(r)}async refresh(e){this.assertOpen(`/`);let t={added:[],removed:[],changed:[],unchanged:0,errors:[]},n=[``];for(;n.length>0;){let e=n.pop();try{let r=await this.transport({method:`GET`,path:this.toListPath(e)});if(r.status>=400){t.errors.push({path:e,message:`list failed: ${r.status}`});continue}let i=await r.json(),a=[];for(let r of i)if(r.ext){let n=e?`${e}/${r.name}.${r.ext}`:`${r.name}.${r.ext}`;a.push({name:`${r.name}.${r.ext}`,kind:`file`,etag:r.etag,lastModified:r.lastModified});let i=await this.cache.getBody(n);i?r.etag&&i.etag!==r.etag?(await this.cache.invalidateBody(n),t.changed.push(n)):t.unchanged++:t.added.push(n)}else{a.push({name:r.name,kind:`directory`});let t=e?`${e}/${r.name}`:r.name;n.push(t)}await this.cache.putListing(e,a)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}}if(e?.bodies)for(let e of t.changed)try{await this.readFile(e)}catch(n){t.errors.push({path:e,message:n instanceof Error?n.message:String(n)})}return t}describe(){return{displayName:`${this.parsed.org}/${this.parsed.repo}${this.parsed.path?`/${this.parsed.path}`:``}`,source:this.source,profile:this.profile}}async close(){this.closed||=!0}};function Nie(e){let t=e.match(/^s3:\/\/([^/]+)(?:\/(.*))?$/);if(!t)throw Error(`invalid S3 source '${e}' — expected s3://bucket[/prefix]`);return{bucket:t[1],prefix:(t[2]??``).replace(/^\/+/,``).replace(/\/+$/,``)}}var Pie=25*1024*1024,Py=class{kind=`s3`;source;profile;mountId;parsed;cache;maxBodyBytes;transport;closed=!1;constructor(e){this.source=e.source,this.profile=e.profile,this.mountId=e.mountId??crypto.randomUUID(),this.parsed=Nie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??Pie,this.transport=e.signedFetch}assertOpen(e){if(this.closed)throw new R(`EBADF`,`mount closed`,e)}toMountRelative(e){return e.replace(/^\/+/,``)}toS3Key(e){let t=e.replace(/^\/+/,``).replace(/\/+$/,``);return[this.parsed.prefix,t].filter(e=>e.length>0).join(`/`)}toMountRelativeKey(e){return this.parsed.prefix?e.slice(this.parsed.prefix.length+1):e}async readFile(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n&&!this.cache.isStale(n.cachedAt))return n.body;let r={};n&&(r[`if-none-match`]=n.etag);let i=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:this.toS3Key(t),headers:r});if(i.status===304&&n)return await this.cache.putBody(t,n.body,n.etag),n.body;if(i.status===404)throw await this.cache.invalidateBody(t),new R(`ENOENT`,`no such file`,e);if(i.status===401||i.status===403)throw new R(`EACCES`,`s3 access denied`,e);if(i.status>=400)throw new R(`EIO`,`s3 readFile failed: ${i.status}`,e);let a=i.headers.get(`content-length`),o=a?Number(a):void 0;if(o!==void 0&&o>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes (${o} > ${this.maxBodyBytes})`,e);let s=new Uint8Array(await i.arrayBuffer());if(s.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let c=i.headers.get(`etag`)??``;return await this.cache.putBody(t,s,c),s}async writeFile(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t.byteLength>this.maxBodyBytes)throw new R(`EFBIG`,`body exceeds maxBodyBytes`,e);let r=await this.cache.getBody(n),i={"content-type":`application/octet-stream`,"content-length":String(t.byteLength)};r?i[`if-match`]=r.etag:i[`if-none-match`]=`*`;let a=()=>this.transport({method:`PUT`,bucket:this.parsed.bucket,key:this.toS3Key(n),headers:i,body:t}),o,s=1;try{o=await a()}catch{s=2,o=await a()}if(o.status===412){if(s===2){let r=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status>=400)throw new R(`EIO`,`s3 reconcile HEAD failed: ${r.status}`,e);let i=r.headers.get(`etag`)??``;await this.cache.putBody(n,t,i);let a=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(a);return}await this.cache.invalidateBody(n);try{await this.readFile(e)}catch{}throw new R(`EBUSY`,`remote modified since last read — re-read and retry`,e)}if(o.status===401||o.status===403)throw new R(`EACCES`,`s3 write denied`,e);if(o.status>=400)throw new R(`EIO`,`s3 writeFile failed: ${o.status}`,e);let c=o.headers.get(`etag`)??``;await this.cache.putBody(n,t,c);let l=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(l)}async listObjectsV2(){let e=[],t;do{let n={"list-type":`2`};this.parsed.prefix&&(n.prefix=`${this.parsed.prefix}/`),t&&(n[`continuation-token`]=t);let r=await this.transport({method:`GET`,bucket:this.parsed.bucket,key:``,query:n});if(r.status>=400)throw new R(`EIO`,`s3 list failed: ${r.status}`,`/`);let i=await r.text(),a=this.parseListingXml(i);e.push(...a.contents),t=a.nextContinuationToken}while(t);return e}parseListingXml(e){let t=[];for(let n of e.matchAll(/<Contents>([\s\S]*?)<\/Contents>/g)){let e=n[1],r=e.match(/<Key>([^<]+)<\/Key>/)?.[1]??``,i=e.match(/<ETag>([^<]+)<\/ETag>/)?.[1]??``,a=e.match(/<Size>([^<]+)<\/Size>/)?.[1]??`0`,o=e.match(/<LastModified>([^<]+)<\/LastModified>/)?.[1]??``;t.push({key:r,etag:i,size:Number(a),lastModified:o?Date.parse(o):0})}return{contents:t,nextContinuationToken:e.match(/<IsTruncated>([^<]+)<\/IsTruncated>/)?.[1]===`true`?e.match(/<NextContinuationToken>([^<]+)<\/NextContinuationToken>/)?.[1]:void 0}}async readDir(e){this.assertOpen(e);let t=this.toMountRelative(e).replace(/\/+$/,``),n=await this.cache.getListing(t);if(n&&!this.cache.isStale(n.cachedAt))return n.entries;let r=await this.listObjectsV2(),i=this.groupByDir(r);for(let[e,t]of i)await this.cache.putListing(e,t);return i.get(t)??[]}groupByDir(e){let t=new Map,n=e=>(t.has(e)||t.set(e,[]),t.get(e));n(``);for(let t of e){let e=this.toMountRelativeKey(t.key).split(`/`),r=e.pop();n(e.join(`/`)).push({name:r,kind:`file`,size:t.size,etag:t.etag,lastModified:t.lastModified});let i=``;for(let t of e){let e=i;i=i?`${i}/${t}`:t;let r=n(e);r.find(e=>e.name===t&&e.kind===`directory`)||r.push({name:t,kind:`directory`}),n(i)}}return t}async stat(e){this.assertOpen(e);let t=this.toMountRelative(e),n=await this.cache.getBody(t);if(n)return{kind:`file`,size:n.body.byteLength,mtime:n.cachedAt,etag:n.etag};let r=t.split(`/`),i=r.pop()??``,a=r.join(`/`),o=await this.cache.getListing(a);if(o&&!this.cache.isStale(o.cachedAt)){let t=o.entries.find(e=>e.name===i);if(t?.kind===`file`&&t.size!==void 0)return{kind:`file`,size:t.size,mtime:t.lastModified??o.cachedAt,etag:t.etag??``};if(t?.kind===`directory`)return{kind:`directory`,size:0,mtime:t.lastModified??o.cachedAt};if(!t)throw new R(`ENOENT`,`no such file or directory`,e)}let s=await this.transport({method:`HEAD`,bucket:this.parsed.bucket,key:this.toS3Key(t)});if(s.status===200){let e=Number(s.headers.get(`content-length`)??`0`),t=s.headers.get(`etag`)??``,n=s.headers.get(`last-modified`);return{kind:`file`,size:e,mtime:n?Date.parse(n):0,etag:t}}if(s.status===404){let n=await this.cache.getListing(t);if(n)return{kind:`directory`,size:0,mtime:n.cachedAt};throw new R(`ENOENT`,`no such file or directory`,e)}throw new R(`EIO`,`s3 stat failed: ${s.status}`,e)}async refresh(e){this.assertOpen(`/`);let t=await this.listObjectsV2(),n=new Set(t.map(e=>this.toMountRelativeKey(e.key))),r=new Map(t.map(e=>[this.toMountRelativeKey(e.key),e.etag])),i={added:[],removed:[],changed:[],unchanged:0,errors:[]};for(let e of n){let t=await this.cache.getBody(e),n=r.get(e);t?t.etag===n?i.unchanged++:(await this.cache.invalidateBody(e),i.changed.push(e)):i.added.push(e)}let a=this.groupByDir(t);for(let[e,t]of a)await this.cache.putListing(e,t);if(e?.bodies)for(let e of i.changed)try{await this.readFile(e)}catch(t){i.errors.push({path:e,message:t instanceof Error?t.message:String(t)})}return i}async mkdir(e){}async remove(e,t){this.assertOpen(e);let n=this.toMountRelative(e);if(t?.recursive)throw new R(`EINVAL`,`recursive remove not yet supported on S3`,e);let r=await this.transport({method:`DELETE`,bucket:this.parsed.bucket,key:this.toS3Key(n)});if(r.status===404)throw new R(`ENOENT`,`no such file`,e);if(r.status===401||r.status===403)throw new R(`EACCES`,`s3 delete denied`,e);if(r.status>=400)throw new R(`EIO`,`s3 delete failed: ${r.status}`,e);await this.cache.invalidateBody(n);let i=n.split(`/`).slice(0,-1).join(`/`);await this.cache.invalidateListing(i)}describe(){return{displayName:this.parsed.prefix?`${this.parsed.bucket}/${this.parsed.prefix}`:this.parsed.bucket,source:this.source,profile:this.profile}}async close(){this.closed||=!0}},Fie=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function Iie(){let{getAccounts:e}=await I(async()=>{let{getAccounts:e}=await Promise.resolve().then(()=>l8);return{getAccounts:e}},void 0),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new Fie(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}var Lie=`slicc-mount-cache`,Fy=`listings`,Iy=`bodies`,Ly=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??Lie}isStale(e,t){return Date.now()-e>=(t??this.ttlMs)}async openDb(){return this.dbPromise||=new Promise((e,t)=>{let n=indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(Fy)||e.createObjectStore(Fy),e.objectStoreNames.contains(Iy)||e.createObjectStore(Iy)},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),this.dbPromise}key(e){return`${this.mountId}::${e}`}async getListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Fy,`readonly`).objectStore(Fy).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putListing(e,t){let n=await this.openDb();return new Promise((r,i)=>{let a=n.transaction(Fy,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(Fy).put(o,this.key(e)),a.oncomplete=()=>r(),a.onerror=()=>i(a.error)})}async invalidateListing(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Fy,`readwrite`);i.objectStore(Fy).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async getBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Iy,`readonly`).objectStore(Iy).get(this.key(e));i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async putBody(e,t,n){let r=await this.openDb(),i={body:t,etag:n,size:t.byteLength,cachedAt:Date.now()};try{await this.txPut(r,Iy,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,Iy,this.key(e),i)}catch{}return}throw t}}async invalidateBody(e){let t=await this.openDb();return new Promise((n,r)=>{let i=t.transaction(Iy,`readwrite`);i.objectStore(Iy).delete(this.key(e)),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async clearMount(){let e=await this.openDb(),t=`${this.mountId}::`,n=n=>new Promise((r,i)=>{let a=e.transaction(n,`readwrite`),o=a.objectStore(n),s=o.getAllKeys();s.onsuccess=()=>{for(let e of s.result)typeof e==`string`&&e.startsWith(t)&&o.delete(e)},a.oncomplete=()=>r(),a.onerror=()=>i(a.error)});await Promise.all([n(Fy),n(Iy)])}txPut(e,t,n,r){return new Promise((i,a)=>{let o=e.transaction(t,`readwrite`);o.objectStore(t).put(r,n),o.oncomplete=()=>i(),o.onerror=()=>a(o.error)})}async evictLru(e){let t=await this.openDb(),n=`${this.mountId}::`,r=await new Promise((e,r)=>{let i=t.transaction(Iy,`readonly`).objectStore(Iy),a=[],o=i.openCursor();o.onsuccess=()=>{let t=o.result;if(!t){e(a);return}if(typeof t.key==`string`&&t.key.startsWith(n)){let e=t.value;a.push({key:t.key,cachedAt:e.cachedAt})}t.continue()},o.onerror=()=>r(o.error)});r.sort((e,t)=>e.cachedAt-t.cachedAt);let i=Math.max(1,Math.ceil(r.length*e)),a=r.slice(0,i);await new Promise((e,n)=>{let r=t.transaction(Iy,`readwrite`),i=r.objectStore(Iy);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}};function Ry(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function Rie(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}function zy(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}var zie=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),Bie=new Set([101,103,204,205,304]);function By(e){if(!e.ok)throw e.errorCode===`profile_not_configured`||e.errorCode===`invalid_profile`?new R(`EACCES`,e.error):e.errorCode===`invalid_request`?new R(`EINVAL`,e.error):e.errorCode===`fetch_failed`||e.errorCode===`internal`||zie.has(String(e.errorCode))?new R(`EIO`,e.error):new R(`EINVAL`,`mount transport returned unrecognized errorCode '${e.errorCode}': ${e.error}`);let t;try{t=Rie(e.bodyBase64)}catch(e){throw new R(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=Bie.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function Vy(e,t){let n;try{n=await fetch(e,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)})}catch(e){throw new R(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (SLICC backend at localhost may not be running)`)}try{return await n.json()}catch(e){throw new R(`EIO`,`mount transport: response is not a JSON envelope (status ${n.status}): ${e instanceof Error?e.message:String(e)}`)}}async function Hy(e,t){try{return await chrome.runtime.sendMessage({type:e,envelope:t})}catch(e){throw new R(`EIO`,`mount transport failed: ${e instanceof Error?e.message:String(e)} (extension service worker not responding)`)}}function Uy(e){return async t=>{let n={profile:e,method:t.method,bucket:t.bucket,key:t.key,query:t.query,headers:t.headers,bodyBase64:t.body?zy(t.body):void 0};return By(Ry()?await Hy(`mount.s3-sign-and-forward`,n):await Vy(`/api/s3-sign-and-forward`,n))}}function Wy(e){let t=e?.getImsToken??(async()=>(await Iie()).getBearerToken());return async e=>{let n;try{n=await t()}catch(e){throw new R(`EACCES`,`DA mount: ${e instanceof Error?e.message:String(e)}`)}let r={imsToken:n,method:e.method,path:e.path,query:e.query,headers:e.headers,bodyBase64:e.body?zy(e.body):void 0};return By(Ry()?await Hy(`mount.da-sign-and-forward`,r):await Vy(`/api/da-sign-and-forward`,r))}}var Gy=s({DaMountBackend:()=>Ny,RemoteMountCache:()=>Ly,S3MountBackend:()=>Py,makeSignedFetchDa:()=>Wy,makeSignedFetchS3:()=>Uy}),Vie=`slicc-mount-table`,Hie=2,Ky=`mounts`,qy=`mount-entries`;function Jy(){return new Promise((e,t)=>{let n=indexedDB.open(Vie,Hie);n.onupgradeneeded=e=>{let t=n.result,r=e.oldVersion;if(t.objectStoreNames.contains(Ky)||t.createObjectStore(Ky),t.objectStoreNames.contains(qy)||t.createObjectStore(qy),r<2){let e=n.transaction,t=e.objectStore(Ky),r=e.objectStore(qy),i=t.getAllKeys();i.onsuccess=()=>{for(let e of i.result){if(typeof e!=`string`)continue;let t={targetPath:e,descriptor:{kind:`local`,mountId:My(),idbHandleKey:e},createdAt:Date.now()};r.put(t,e)}}}},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function Uie(e,t){let n=await Jy();try{let r=e.descriptor.kind===`local`&&t?[Ky,qy]:[qy],i=n.transaction(r,`readwrite`);i.objectStore(qy).put(e,e.targetPath),e.descriptor.kind===`local`&&t&&i.objectStore(Ky).put(t,e.descriptor.idbHandleKey),await new Promise((e,t)=>{i.oncomplete=()=>e(),i.onerror=()=>t(i.error),i.onabort=()=>t(i.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{n.close()}}async function Wie(e){let t=await Jy();try{let n=t.transaction([Ky,qy],`readwrite`);n.objectStore(qy).delete(e),n.objectStore(Ky).delete(e),await new Promise((e,t)=>{n.oncomplete=()=>e(),n.onerror=()=>t(n.error),n.onabort=()=>t(n.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{t.close()}}async function Yy(){let e=await Jy();try{return await new Promise((t,n)=>{let r=e.transaction(qy,`readonly`),i=r.objectStore(qy).getAll();i.onsuccess=()=>t(i.result),i.onerror=()=>n(i.error),r.onabort=()=>n(r.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{e.close()}}async function Xy(e){let t=await Jy();try{return await new Promise((n,r)=>{let i=t.transaction(Ky,`readonly`).objectStore(Ky).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}finally{t.close()}}async function Gie(){let e=await Jy();try{let t=e.transaction([Ky,qy],`readwrite`);t.objectStore(Ky).clear(),t.objectStore(qy).clear(),await new Promise((e,n)=>{t.oncomplete=()=>e(),t.onerror=()=>n(t.error),t.onabort=()=>n(t.error??new DOMException(`IndexedDB transaction aborted`,`AbortError`))})}finally{e.close()}}async function Zy(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await Xy(o.idbHandleKey),s=typeof a?.name==`string`?a.name:``;if(!a||!(`queryPermission`in a)){i.push({kind:`local`,path:e,dirName:s});continue}let c;try{c=await a.queryPermission({mode:`readwrite`})}catch(t){n?.warn?.(`queryPermission threw on persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s});continue}if(c!==`granted`){i.push({kind:`local`,path:e,dirName:s});continue}try{let i=jy.fromHandle(a,{mountId:o.mountId});await t.mount(e,i),n?.info?.(`Restored mount from previous session`,{path:e,name:s}),r.push({kind:`local`,path:e,dirName:s})}catch(t){n?.warn?.(`Failed to re-mount persisted handle`,{path:e,error:t instanceof Error?t.message:String(t)}),i.push({kind:`local`,path:e,dirName:s})}continue}if(o.kind===`s3`){try{let i=new Ly({mountId:o.mountId,ttlMs:3e4}),a=new Py({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:Uy(o.profile)});await t.mount(e,a),n?.info?.(`Restored S3 mount from previous session`,{path:e,source:o.source}),r.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore S3 mount`,{path:e,error:r}),i.push({kind:`s3`,path:e,source:o.source,profile:o.profile,reason:r})}continue}if(o.kind===`da`)try{let i=new Ly({mountId:o.mountId,ttlMs:3e4}),a=new Ny({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:Wy()});await t.mount(e,a),n?.info?.(`Restored DA mount from previous session`,{path:e,source:o.source}),r.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:``})}catch(t){let r=t instanceof Error?t.message:String(t);n?.warn?.(`Failed to restore DA mount`,{path:e,error:r}),i.push({kind:`da`,path:e,source:o.source,profile:o.profile,reason:r})}}return{restored:r,needsRecovery:i}}var Kie=s({PANEL_RPC_DEFAULT_TIMEOUT_MS:()=>PANEL_RPC_DEFAULT_TIMEOUT_MS,getPanelRpcClient:()=>eb,hasLocalDom:()=>tb,installPanelRpcHandler:()=>qie,panelRpcChannelName:()=>$y}),Qy=`slicc-panel-rpc`;function $y(e){return e?`${Qy}:${e}`:Qy}function qie(e){if(typeof BroadcastChannel!=`function`)return()=>{};let t=new BroadcastChannel($y(e.instanceId)),n=(e,n,r)=>{let i={type:`panel-rpc-response`,id:e};r===void 0?i.result=n:i.error=r;try{t.postMessage(i)}catch(t){let n=t instanceof Error?t.message:String(t);console.warn(`panel-rpc: failed to post response for id=${e}: ${n}`)}},r=async t=>{let r=t.data;if(r?.type!==`panel-rpc-request`)return;let i=e.handlers[r.op];if(!i){n(r.id,void 0,`panel-rpc: no handler for op '${r.op}'`);return}try{let e=await i(r.payload);n(r.id,e)}catch(e){n(r.id,void 0,e instanceof Error?e.message:String(e))}};return t.addEventListener(`message`,r),()=>{t.removeEventListener(`message`,r);try{t.close()}catch{}}}function eb(){return globalThis.__slicc_panelRpc??null}function tb(){return typeof window<`u`&&typeof document<`u`}var Jie=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function nb(e){let{include:t,exclude:n}=Jie;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var Yie=Object.assign({"./built-in/azure-ai-foundry.ts":()=>I(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>I(()=>import(`./azure-openai-DL9rlaYT.js`),__vite__mapDeps([17,3])),"./built-in/bedrock-camp.ts":()=>I(()=>Promise.resolve().then(()=>Fxe),void 0),"./built-in/local-llm.ts":()=>I(()=>import(`./local-llm-YQDW7uF7.js`),__vite__mapDeps([18,15,5,7,1,2,3]))}),Xie=Object.assign({"/packages/webapp/providers/adobe.ts":()=>I(()=>import(`./adobe-aXLIvH9D.js`),__vite__mapDeps([19,20])),"/packages/webapp/providers/github-copilot.ts":()=>I(()=>import(`./github-copilot-B6MHst0D.js`),[]),"/packages/webapp/providers/github.ts":()=>I(()=>import(`./github-DlJxVVkf.js`),__vite__mapDeps([21,22,20])),"/packages/webapp/providers/openai-codex.ts":()=>I(()=>import(`./openai-codex-DYEVNxR_.js`),[]),"/packages/webapp/providers/xai-grok-errors.ts":()=>I(()=>import(`./xai-grok-errors-bnlIBeu-.js`),[]),"/packages/webapp/providers/xai-grok-models.ts":()=>I(()=>import(`./xai-grok-models-CeEBaUMC.js`),[]),"/packages/webapp/providers/xai-grok-sanitize.ts":()=>I(()=>import(`./xai-grok-sanitize-CR2JoOJd.js`),__vite__mapDeps([23,24])),"/packages/webapp/providers/xai-grok.ts":()=>I(()=>import(`./xai-grok-woATmag9.js`),__vite__mapDeps([25,26,24,23]))}),rb=new Map,ib=null;function Zie(){return ib||(ib=(async()=>{for(let[e,t]of Object.entries(Yie)){let e=await t();e.config&&nb(e.config.id)&&(rb.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(Xie)){let e=await t();e.config&&(rb.set(e.config.id,e.config),e.register?.())}})(),ib)}function ab(e){return rb.get(e)}function Qie(){return[...rb.keys()]}function $ie(e){rb.set(e.id,e)}var eae=`slicc-groups`,ob=3,sb={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},cb=null;async function tae(){if(cb){let e=Object.values(sb).every(e=>cb.objectStoreNames.contains(e));if(cb.version===ob&&e)return cb;cb.close(),cb=null}return new Promise((e,t)=>{let n=indexedDB.open(eae,ob);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(sb.MESSAGES)){let e=t.createObjectStore(sb.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(sb.SESSIONS)||t.createObjectStore(sb.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(sb.TASKS)||t.createObjectStore(sb.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(sb.STATE)||t.createObjectStore(sb.STATE,{keyPath:`key`})}if(n<2){let n=e.target.transaction;if(t.objectStoreNames.contains(`groups`)){let e=n.objectStore(`groups`).getAll();e.onsuccess=()=>{let n=e.result;t.deleteObjectStore(`groups`);let r=t.createObjectStore(sb.SCOOPS,{keyPath:`jid`});r.createIndex(`type`,`type`);for(let e of n){let t=e.isMain??!1,n={jid:e.jid,name:e.name,folder:e.folder,trigger:t?void 0:e.trigger||`@${e.folder}`,requiresTrigger:!t&&(e.requiresTrigger??!0),isCone:t,type:t?`cone`:`scoop`,assistantLabel:t?`sliccy`:e.config?.assistantName||e.folder,addedAt:e.addedAt,config:e.config?{systemPromptAppend:e.config.systemPromptAppend,timeout:e.config.timeout,assistantName:e.config.assistantName}:void 0};r.put(n)}}}else t.objectStoreNames.contains(sb.SCOOPS)||t.createObjectStore(sb.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(sb.WEBHOOKS)||t.createObjectStore(sb.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(sb.CRONTASKS)||t.createObjectStore(sb.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{cb=n.result,e(cb)},n.onerror=()=>t(n.error)})}async function lb(e,t=`readonly`){return(await tae()).transaction(e,t).objectStore(e)}async function nae(){let e=await lb(sb.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function rae(e){let t=await lb(sb.STATE);return new Promise((n,r)=>{let i=t.get(e);i.onsuccess=()=>n(i.result?.value??null),i.onerror=()=>r(i.error)})}async function ub(e,t){let n=await lb(sb.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}function db(e){return e.headers.get(`x-proxy-error`)===`1`}async function fb(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return iae(n,t)}function iae(e,t){let n;try{n=JSON.parse(e)}catch{return t}if(!n||typeof n!=`object`)return t;let r=n.error;if(typeof r==`string`&&r.length>0)return r;if(r&&typeof r==`object`){let e=r.message;if(typeof e==`string`&&e.length>0)return e;try{return JSON.stringify(r)}catch{return t}}return t}var pb=`tray`,mb=`trayWorkerUrl`,hb=`lead`;function gb(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``,t.pathname!==`/`&&(t.pathname=t.pathname.replace(/\/+$/,``)||`/`);let n=t.toString();return n.endsWith(`/`)?n.slice(0,-1):n}catch{return null}}function _b(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.toString(),r=t.pathname.split(`/`).filter(Boolean);if(r.length<2||r.at(-2)!==`join`)return null;let[i,a,...o]=decodeURIComponent(r.at(-1)).split(`.`);if(!i||!a||o.length>0)return null;r.splice(-2,2),t.pathname=r.length>0?`/${r.join(`/`)}`:`/`;let s=gb(t.toString());return s?{workerBaseUrl:s,trayId:i,joinUrl:n}:null}catch{return null}}function aae(e,t){let n=new URL(e);return n.searchParams.delete(mb),n.searchParams.delete(hb),n.searchParams.set(pb,t),n.toString()}var oae=s({DEFAULT_PRODUCTION_TRAY_WORKER_BASE_URL:()=>bb,DEFAULT_STAGING_TRAY_WORKER_BASE_URL:()=>sae,TRAY_JOIN_STORAGE_KEY:()=>yb,TRAY_LEGACY_LEAD_QUERY_PARAM:()=>hb,TRAY_QUERY_PARAM:()=>pb,TRAY_WORKER_QUERY_PARAM:()=>mb,TRAY_WORKER_STORAGE_KEY:()=>vb,buildTrayLaunchUrl:()=>Db,buildTrayLeadLaunchUrl:()=>uae,buildTrayLeadValue:()=>lae,buildTrayUrlValue:()=>Eb,buildTrayWorkerUrl:()=>xb,fetchRuntimeConfig:()=>kb,hasStoredTrayJoinUrl:()=>Tb,normalizeTrayWorkerBaseUrl:()=>gb,parseTrayJoinUrlValue:()=>Cb,parseTrayLeadValue:()=>cae,parseTrayUrlValue:()=>Sb,resolveTrayRuntimeConfig:()=>Ob,resolveTrayWorkerBaseUrl:()=>dae,storeTrayJoinUrl:()=>wb}),vb=`slicc.trayWorkerBaseUrl`,yb=`slicc.trayJoinUrl`,bb=`https://www.sliccy.ai`,sae=`https://slicc-tray-hub-staging.minivelos.workers.dev`;function xb(e,t){let n=gb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function Sb(e){if(!e)return null;try{let t=new URL(e.trim());t.search=``,t.hash=``;let n=t.pathname.split(`/`).filter(Boolean),r=null;if(n.length>=2&&n.at(-2)===`tray`)r=decodeURIComponent(n.at(-1)),n.splice(-2,2),t.pathname=n.length>0?`/${n.join(`/`)}`:`/`;else if(n.length>=2&&n.at(-2)===`join`)return _b(t.toString());let i=gb(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function Cb(e){let t=Sb(e);return t?.joinUrl?t:null}function wb(e,t){let n=Cb(t);return n?(e.setItem(yb,n.joinUrl),e.setItem(vb,n.workerBaseUrl),n):null}function Tb(e){return!!Cb(e?.getItem(`slicc.trayJoinUrl`)??null)}function Eb(e,t){let n=gb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t?.trim();return r?new URL(`tray/${encodeURIComponent(r)}`,`${n}/`).toString():n}function Db(e,t,n){return aae(e,Eb(t,n))}function cae(e){return Sb(e)}function lae(e,t){return Eb(e,t)}function uae(e,t,n){return Db(e,t,n)}async function Ob(e){let t=fae(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(yb,t.joinUrl),e.storage.setItem(vb,t.workerBaseUrl)),t;let n=Cb(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(vb,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await pae(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(yb,r.joinConfig.joinUrl),e.storage.setItem(vb,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=gb(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=gb(e.envBaseUrl??null),s=gb(e.defaultWorkerBaseUrl??null),c=i??a??o??s;return c?(e.storage&&e.storage.setItem(vb,c),{workerBaseUrl:c,trayId:null,joinUrl:null}):null}async function dae(e){return(await Ob(e))?.workerBaseUrl??null}async function kb(e=fetch){try{let t=await e(`/api/runtime-config`,{cache:`no-store`});return t.ok?await t.json():null}catch{return null}}function fae(e){try{let t=new URL(e),n=Sb(t.searchParams.get(pb));if(n)return n;let r=Sb(t.searchParams.get(hb));if(r)return r;let i=gb(t.searchParams.get(mb));return i?{workerBaseUrl:i,trayId:null,joinUrl:null}:_b(e)||null}catch{return null}}async function pae(e){let t=await e();if(!t)return null;let n=Cb(t.trayJoinUrl??null);return{workerBaseUrl:gb(t.trayWorkerBaseUrl??null),joinConfig:n}}var Ab=Wv(`tray-leader`),mae=`leader-tray-session`,hae=3e4,gae=1e4,_ae=1e3,vae=3e4,yae=2,bae=20,jb={state:`inactive`,session:null,error:null};function Mb(){return{...jb,session:jb.session?{...jb.session}:null}}var Nb=new Set;function xae(e){return Nb.add(e),()=>{Nb.delete(e)}}function Pb(e){if(jb={...e,session:e.session?{...e.session}:null},Nb.size!==0)for(let e of[...Nb])try{e(Mb())}catch{}}var Fb=class{key;constructor(e=mae){this.key=e}async load(){return Sae(await rae(this.key))}async save(e){await ub(this.key,JSON.stringify(e))}async clear(){await ub(this.key,``)}};function Sae(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.workerBaseUrl!=`string`||typeof t.trayId!=`string`||typeof t.createdAt!=`string`||typeof t.controllerId!=`string`||typeof t.controllerUrl!=`string`||typeof t.joinUrl!=`string`||typeof t.webhookUrl!=`string`||typeof t.runtime!=`string`?null:{workerBaseUrl:t.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:t.controllerId,controllerUrl:t.controllerUrl,joinUrl:t.joinUrl,webhookUrl:t.webhookUrl,leaderKey:typeof t.leaderKey==`string`?t.leaderKey:void 0,leaderWebSocketUrl:typeof t.leaderWebSocketUrl==`string`?t.leaderWebSocketUrl:null,runtime:t.runtime}}catch{return null}}var Cae=class{options;store;fetchImpl;webSocketFactory;pingIntervalMs;connectTimeoutMs;reconnectEnabled;reconnectBaseDelayMs;reconnectMaxDelayMs;reconnectBackoffMultiplier;reconnectMaxAttempts;reconnectSleep;socket=null;pingTimer=null;currentSession=null;stopped=!1;reconnecting=!1;reconnectGeneration=0;constructor(e){this.options=e,this.store=e.store??new Fb,this.fetchImpl=e.fetchImpl??Eae(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??hae,this.connectTimeoutMs=e.connectTimeoutMs??gae;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??_ae,this.reconnectMaxDelayMs=n.maxDelayMs??vae,this.reconnectBackoffMultiplier=n.backoffMultiplier??yae,this.reconnectMaxAttempts=n.maxAttempts??bae,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return Pb({state:`leader`,session:this.currentSession,error:null}),this.currentSession;Pb({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();Ab.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){Ab.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw Pb({state:`error`,session:this.currentSession,error:e instanceof Error?e.message:String(e)}),e}}stop(){this.stopped=!0,this.reconnecting=!1,this.reconnectGeneration++,this.tearDownSocket(),this.currentSession=null,Pb({state:`inactive`,session:null,error:null})}tearDownSocket(){this.pingTimer&&=(clearInterval(this.pingTimer),null);let e=this.socket;if(this.socket=null,e)try{e.close()}catch{}}async connectOnce(){let e=await this.store.load(),t=e?.workerBaseUrl===this.options.workerBaseUrl?e:null,n=await this.attachWithRecovery(t);this.currentSession=n;let r=await this.openLeaderSocket(n.leaderWebSocketUrl);return this.socket=r,this.startPingLoop(r),Pb({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){Ab.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,Pb({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;Ab.warn(`Leader WebSocket dropped — starting reconnect loop`,{reason:e}),this.tearDownSocket();let n=0,r=this.reconnectBaseDelayMs,i=e;for(;!this.stopped&&t===this.reconnectGeneration&&n<this.reconnectMaxAttempts&&(n++,Pb({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),Ab.info(`Leader reconnect attempt`,{attempt:n,delay:r}),await this.reconnectSleep(r),!(this.stopped||t!==this.reconnectGeneration));){try{let e=await this.connectOnce();if(this.stopped||t!==this.reconnectGeneration){this.tearDownSocket();break}this.reconnecting=!1,Ab.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){Ab.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),Ab.warn(`Leader reconnect attempt failed`,{attempt:n,error:i}),this.tearDownSocket()}r=Math.min(r*this.reconnectBackoffMultiplier,this.reconnectMaxDelayMs)}!this.stopped&&t===this.reconnectGeneration&&(this.reconnecting=!1,this.currentSession=null,Pb({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),Ab.warn(`Leader reconnect gave up`,{attempts:n,lastError:i}),this.options.onReconnectGaveUp?.(i,n))}async clearSession(){await this.store.clear()}sendControlMessage(e){if(!this.socket)throw Error(`Tray leader WebSocket is not connected`);this.socket.send(JSON.stringify(e))}async attachWithRecovery(e){try{return await this.claimLeaderSession(e)}catch(t){if(!e||!wae(t))throw t;return Ab.warn(`Stored tray session is stale, creating a fresh tray`,{trayId:e.trayId,error:t instanceof Error?t.message:String(t)}),await this.store.clear(),this.claimLeaderSession(null)}}async claimLeaderSession(e){let t=e??await this.createTraySession(),n=await this.fetchJson(t.controllerUrl,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:t.controllerId,leaderKey:t.leaderKey,runtime:this.options.runtime})});if(n.role!==`leader`||!n.leaderKey||!n.websocket?.url)throw Error(`Tray attach did not return leader access for controller ${n.controllerId}`);let r={...t,trayId:n.trayId,controllerId:n.controllerId,leaderKey:n.leaderKey,leaderWebSocketUrl:n.websocket.url,runtime:this.options.runtime};return await this.store.save(r),r}async createTraySession(){let e=this.options.kind?JSON.stringify({kind:this.options.kind}):void 0,t=await this.fetchJson(xb(this.options.workerBaseUrl,`tray`),{method:`POST`,...e?{headers:{"content-type":`application/json`}}:{},...e?{body:e}:{}});return{workerBaseUrl:this.options.workerBaseUrl,trayId:t.trayId,createdAt:t.createdAt,controllerId:crypto.randomUUID(),controllerUrl:t.capabilities.controller.url,joinUrl:t.capabilities.join.url,webhookUrl:t.capabilities.webhook.url,runtime:this.options.runtime}}async openLeaderSocket(e){return await new Promise((t,n)=>{let r=this.webSocketFactory(e),i=!1,a=setTimeout(()=>{o(`Tray leader WebSocket timed out after ${this.connectTimeoutMs}ms waiting for leader.connected`);try{r.close(1e3,`leader.connected timeout`)}catch{}},this.connectTimeoutMs),o=e=>{i||(i=!0,clearTimeout(a),n(Error(e)))};r.addEventListener(`message`,e=>{let n=Tae(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){Ab.debug(`Tray leader heartbeat acknowledged`,{trayId:this.currentSession?.trayId});return}this.options.onControlMessage?.(n)}}),r.addEventListener(`close`,()=>o(`Tray leader WebSocket closed before leader.connected`)),r.addEventListener(`error`,()=>o(`Tray leader WebSocket failed before leader.connected`))})}startPingLoop(e){this.pingTimer&&clearInterval(this.pingTimer);let t=t=>{this.stopped||this.socket!==e||this.handleUnexpectedDisconnect(t).catch(e=>{Ab.warn(`Leader reconnect loop crashed`,{error:e instanceof Error?e.message:String(e)})})},n=()=>{try{e.send(JSON.stringify({type:`ping`}))}catch(e){t(`Leader ping send failed: ${e instanceof Error?e.message:String(e)}`)}};n(),this.pingTimer=setInterval(n,this.pingIntervalMs),e.addEventListener(`close`,()=>t(`Leader WebSocket closed`)),e.addEventListener(`error`,()=>t(`Leader WebSocket errored`))}async fetchJson(e,t){let n=await this.fetchImpl(e,t);if(!n.ok)throw await Ib.fromResponse(n);return await n.json()}},Ib=class e extends Error{status;code;constructor(e,t,n){super(n),this.status=e,this.code=t,this.name=`LeaderTrayHttpError`}static async fromResponse(t){try{let n=await t.json();return new e(t.status,n.code??null,n.error??`Tray request failed (${t.status})`)}catch{return new e(t.status,null,`Tray request failed (${t.status})`)}}};function wae(e){return e instanceof Ib&&[403,404,410].includes(e.status)}function Tae(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function Eae(e=fetch){return typeof chrome<`u`&&chrome?.runtime?.id?(t,n)=>e(t,n):async(t,n={})=>{let r=typeof t==`string`?t:t.toString();try{if(new URL(r).origin===window.location.origin)return e(r,{...n,cache:`no-store`})}catch{}let i=new Headers(n.headers);i.set(`X-Target-URL`,r);let a=await e(`/api/fetch-proxy`,{...n,headers:i,cache:`no-store`});if(db(a))throw Error(await fb(a));return a}}var Lb=Wv(`welcome-detection`),Rb=`/shared/.welcomed`,Dae=`browser-coding-agent`,Oae=1,zb=`sessions`,kae=`session-cone`,Bb=`[Sprinkle Event: welcome]`;function Vb(){return new Promise((e,t)=>{let n=indexedDB.open(Dae,Oae);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(zb)||e.createObjectStore(zb,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function Aae(){return Vb().catch(()=>new Promise((e,t)=>{setTimeout(()=>{Vb().then(e,t)},120)}))}async function Hb(){let e=await Aae();try{return await new Promise((t,n)=>{let r=e.transaction(zb,`readonly`).objectStore(zb).get(kae);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function jae(){try{let e=await Hb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>Mae(e))}catch(e){return Lb.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function Mae(e){let t=e.content;return typeof t==`string`?t.includes(Bb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Bb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Bb)}return!1}):!1}async function Ub(e){let t=!1;try{t=await e.exists(Rb)}catch(e){return Lb.warn(`Failed to read welcomed marker`,{path:Rb,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await jae()?{isFirstRun:!1}:{isFirstRun:!0}}async function Nae(e){await e.writeFile(Rb,`1`)}var Wb=`"action":"onboarding-complete-with-provider"`;function Pae(e){let t=e.content;return typeof t==`string`?t.includes(Wb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Wb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Wb)}return!1}):!1}async function Fae(){try{let e=await Hb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>Pae(e))}catch(e){return Lb.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}o((e=>{(function(){var t={not_string:/[^s]/,not_bool:/[^t]/,not_type:/[^T]/,not_primitive:/[^v]/,number:/[diefg]/,numeric_arg:/[bcdiefguxX]/,json:/[j]/,not_json:/[^j]/,text:/^[^\x25]+/,modulo:/^\x25{2}/,placeholder:/^\x25(?:([1-9]\d*)\$|\(([^)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-gijostTuvxX])/,key:/^([a-z_][a-z_\d]*)/i,key_access:/^\.([a-z_][a-z_\d]*)/i,index_access:/^\[(\d+)\]/,sign:/^[+-]/};function n(e){return i(o(e),arguments)}function r(e,t){return n.apply(null,[e].concat(t||[]))}function i(e,r){var i=1,a=e.length,o,s=``,c,l,u,d,f,p,m,h;for(c=0;c<a;c++)if(typeof e[c]==`string`)s+=e[c];else if(typeof e[c]==`object`){if(u=e[c],u.keys)for(o=r[i],l=0;l<u.keys.length;l++){if(o==null)throw Error(n(`[sprintf] Cannot access property "%s" of undefined value "%s"`,u.keys[l],u.keys[l-1]));o=o[u.keys[l]]}else o=u.param_no?r[u.param_no]:r[i++];if(t.not_type.test(u.type)&&t.not_primitive.test(u.type)&&o instanceof Function&&(o=o()),t.numeric_arg.test(u.type)&&typeof o!=`number`&&isNaN(o))throw TypeError(n(`[sprintf] expecting number but found %T`,o));switch(t.number.test(u.type)&&(m=o>=0),u.type){case`b`:o=parseInt(o,10).toString(2);break;case`c`:o=String.fromCharCode(parseInt(o,10));break;case`d`:case`i`:o=parseInt(o,10);break;case`j`:o=JSON.stringify(o,null,u.width?parseInt(u.width):0);break;case`e`:o=u.precision?parseFloat(o).toExponential(u.precision):parseFloat(o).toExponential();break;case`f`:o=u.precision?parseFloat(o).toFixed(u.precision):parseFloat(o);break;case`g`:o=u.precision?String(Number(o.toPrecision(u.precision))):parseFloat(o);break;case`o`:o=(parseInt(o,10)>>>0).toString(8);break;case`s`:o=String(o),o=u.precision?o.substring(0,u.precision):o;break;case`t`:o=String(!!o),o=u.precision?o.substring(0,u.precision):o;break;case`T`:o=Object.prototype.toString.call(o).slice(8,-1).toLowerCase(),o=u.precision?o.substring(0,u.precision):o;break;case`u`:o=parseInt(o,10)>>>0;break;case`v`:o=o.valueOf(),o=u.precision?o.substring(0,u.precision):o;break;case`x`:o=(parseInt(o,10)>>>0).toString(16);break;case`X`:o=(parseInt(o,10)>>>0).toString(16).toUpperCase();break}t.json.test(u.type)?s+=o:(t.number.test(u.type)&&(!m||u.sign)?(h=m?`+`:`-`,o=o.toString().replace(t.sign,``)):h=``,f=u.pad_char?u.pad_char===`0`?`0`:u.pad_char.charAt(1):` `,p=u.width-(h+o).length,d=u.width&&p>0?f.repeat(p):``,s+=u.align?h+o+d:f===`0`?h+d+o:d+h+o)}return s}var a=Object.create(null);function o(e){if(a[e])return a[e];for(var n=e,r,i=[],o=0;n;){if((r=t.text.exec(n))!==null)i.push(r[0]);else if((r=t.modulo.exec(n))!==null)i.push(`%`);else if((r=t.placeholder.exec(n))!==null){if(r[2]){o|=1;var s=[],c=r[2],l=[];if((l=t.key.exec(c))!==null)for(s.push(l[1]);(c=c.substring(l[0].length))!==``;)if((l=t.key_access.exec(c))!==null)s.push(l[1]);else if((l=t.index_access.exec(c))!==null)s.push(l[1]);else throw SyntaxError(`[sprintf] failed to parse named argument key`);else throw SyntaxError(`[sprintf] failed to parse named argument key`);r[2]=s}else o|=2;if(o===3)throw Error(`[sprintf] mixing positional and named placeholders is not (yet) supported`);i.push({placeholder:r[0],param_no:r[1],keys:r[2],sign:r[3],pad_char:r[4],align:r[5],width:r[6],precision:r[7],type:r[8]})}else throw SyntaxError(`[sprintf] unexpected placeholder`);n=n.substring(r[0].length)}return a[e]=i}e!==void 0&&(e.sprintf=n,e.vsprintf=r),typeof window<`u`&&(window.sprintf=n,window.vsprintf=r,typeof define==`function`&&define.amd&&define(function(){return{sprintf:n,vsprintf:r}}))})()}))();var Gb=(e,t,n)=>{let r=e instanceof RegExp?Kb(e,n):e,i=t instanceof RegExp?Kb(t,n):t,a=r!==null&&i!=null&&Iae(r,i,n);return a&&{start:a[0],end:a[1],pre:n.slice(0,a[0]),body:n.slice(a[0]+r.length,a[1]),post:n.slice(a[1]+i.length)}},Kb=(e,t)=>{let n=t.match(e);return n?n[0]:null},Iae=(e,t,n)=>{let r,i,a,o,s,c=n.indexOf(e),l=n.indexOf(t,c+1),u=c;if(c>=0&&l>0){if(e===t)return[c,l];for(r=[],a=n.length;u>=0&&!s;){if(u===c)r.push(u),c=n.indexOf(e,u+1);else if(r.length===1){let e=r.pop();e!==void 0&&(s=[e,l])}else i=r.pop(),i!==void 0&&i<a&&(a=i,o=l),l=n.indexOf(t,u+1);u=c<l&&c>=0?c:l}r.length&&o!==void 0&&(s=[a,o])}return s},qb=`\0SLASH`+Math.random()+`\0`,Jb=`\0OPEN`+Math.random()+`\0`,Yb=`\0CLOSE`+Math.random()+`\0`,Xb=`\0COMMA`+Math.random()+`\0`,Zb=`\0PERIOD`+Math.random()+`\0`,Lae=new RegExp(qb,`g`),Rae=new RegExp(Jb,`g`),zae=new RegExp(Yb,`g`),Bae=new RegExp(Xb,`g`),Vae=new RegExp(Zb,`g`),Hae=/\\\\/g,Uae=/\\{/g,Wae=/\\}/g,Gae=/\\,/g,Kae=/\\\./g,qae=1e5;function Qb(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Jae(e){return e.replace(Hae,qb).replace(Uae,Jb).replace(Wae,Yb).replace(Gae,Xb).replace(Kae,Zb)}function Yae(e){return e.replace(Lae,`\\`).replace(Rae,`{`).replace(zae,`}`).replace(Bae,`,`).replace(Vae,`.`)}function $b(e){if(!e)return[``];let t=[],n=Gb(`{`,`}`,e);if(!n)return e.split(`,`);let{pre:r,body:i,post:a}=n,o=r.split(`,`);o[o.length-1]+=`{`+i+`}`;let s=$b(a);return a.length&&(o[o.length-1]+=s.shift(),o.push.apply(o,s)),t.push.apply(t,o),t}function Xae(e,t={}){if(!e)return[];let{max:n=qae}=t;return e.slice(0,2)===`{}`&&(e=`\\{\\}`+e.slice(2)),ex(Jae(e),n,!0).map(Yae)}function Zae(e){return`{`+e+`}`}function Qae(e){return/^-?0\d/.test(e)}function $ae(e,t){return e<=t}function eoe(e,t){return e>=t}function ex(e,t,n){let r=[],i=Gb(`{`,`}`,e);if(!i)return[e];let a=i.pre,o=i.post.length?ex(i.post,t,!1):[``];if(/\$$/.test(i.pre))for(let e=0;e<o.length&&e<t;e++){let t=a+`{`+i.body+`}`+o[e];r.push(t)}else{let s=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),c=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),l=s||c,u=i.body.indexOf(`,`)>=0;if(!l&&!u)return i.post.match(/,(?!,).*\}/)?(e=i.pre+`{`+i.body+Yb+i.post,ex(e,t,!0)):[e];let d;if(l)d=i.body.split(/\.\./);else if(d=$b(i.body),d.length===1&&d[0]!==void 0&&(d=ex(d[0],t,!1).map(Zae),d.length===1))return o.map(e=>i.pre+d[0]+e);let f;if(l&&d[0]!==void 0&&d[1]!==void 0){let e=Qb(d[0]),t=Qb(d[1]),n=Math.max(d[0].length,d[1].length),r=d.length===3&&d[2]!==void 0?Math.abs(Qb(d[2])):1,i=$ae;t<e&&(r*=-1,i=eoe);let a=d.some(Qae);f=[];for(let o=e;i(o,t);o+=r){let e;if(c)e=String.fromCharCode(o),e===`\\`&&(e=``);else if(e=String(o),a){let t=n-e.length;if(t>0){let n=Array(t+1).join(`0`);e=o<0?`-`+n+e.slice(1):n+e}}f.push(e)}}else{f=[];for(let e=0;e<d.length;e++)f.push.apply(f,ex(d[e],t,!1))}for(let e=0;e<f.length;e++)for(let i=0;i<o.length&&r.length<t;i++){let t=a+f[e]+o[i];(!n||l||t)&&r.push(t)}}return r}var toe=1024*64,tx=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>toe)throw TypeError(`pattern is too long`)},noe={"[:alnum:]":[`\\p{L}\\p{Nl}\\p{Nd}`,!0],"[:alpha:]":[`\\p{L}\\p{Nl}`,!0],"[:ascii:]":[`\\x00-\\x7f`,!1],"[:blank:]":[`\\p{Zs}\\t`,!0],"[:cntrl:]":[`\\p{Cc}`,!0],"[:digit:]":[`\\p{Nd}`,!0],"[:graph:]":[`\\p{Z}\\p{C}`,!0,!0],"[:lower:]":[`\\p{Ll}`,!0],"[:print:]":[`\\p{C}`,!0],"[:punct:]":[`\\p{P}`,!0],"[:space:]":[`\\p{Z}\\t\\r\\n\\v\\f`,!0],"[:upper:]":[`\\p{Lu}`,!0],"[:word:]":[`\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}`,!0],"[:xdigit:]":[`A-Fa-f0-9`,!1]},nx=e=>e.replace(/[[\]\\-]/g,`\\$&`),roe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),rx=e=>e.join(``),ioe=(e,t)=>{let n=t;if(e.charAt(n)!==`[`)throw Error(`not in a brace expression`);let r=[],i=[],a=n+1,o=!1,s=!1,c=!1,l=!1,u=n,d=``;WHILE:for(;a<e.length;){let t=e.charAt(a);if((t===`!`||t===`^`)&&a===n+1){l=!0,a++;continue}if(t===`]`&&o&&!c){u=a+1;break}if(o=!0,t===`\\`&&!c){c=!0,a++;continue}if(t===`[`&&!c){for(let[t,[o,c,l]]of Object.entries(noe))if(e.startsWith(t,a)){if(d)return[`$.`,!1,e.length-n,!0];a+=t.length,l?i.push(o):r.push(o),s||=c;continue WHILE}}if(c=!1,d){t>d?r.push(nx(d)+`-`+nx(t)):t===d&&r.push(nx(t)),d=``,a++;continue}if(e.startsWith(`-]`,a+1)){r.push(nx(t+`-`)),a+=2;continue}if(e.startsWith(`-`,a+1)){d=t,a+=2;continue}r.push(nx(t)),a++}if(u<a)return[``,!1,0,!1];if(!r.length&&!i.length)return[`$.`,!1,e.length-n,!0];if(i.length===0&&r.length===1&&/^\\?.$/.test(r[0])&&!l)return[roe(r[0].length===2?r[0].slice(-1):r[0]),!1,u-n,!1];let f=`[`+(l?`^`:``)+rx(r)+`]`,p=`[`+(l?``:`^`)+rx(i)+`]`;return[r.length&&i.length?`(`+f+`|`+p+`)`:r.length?f:p,s,u-n,!0]},ix=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!0}={})=>n?t?e.replace(/\[([^\/\\])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,`$1$2`).replace(/\\([^\/])/g,`$1`):t?e.replace(/\[([^\/\\{}])\]/g,`$1`):e.replace(/((?!\\).|^)\[([^\/\\{}])\]/g,`$1$2`).replace(/\\([^\/{}])/g,`$1`),ax,aoe=new Set([`!`,`?`,`+`,`*`,`@`]),ox=e=>aoe.has(e),sx=e=>ox(e.type),ooe=new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),soe=new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),coe=new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),cx=new Map([[`!`,new Map([[`!`,`@`]])],[`?`,new Map([[`*`,`*`],[`+`,`*`]])],[`@`,new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,new Map([[`?`,`*`],[`*`,`*`]])]]),loe=`(?!(?:^|/)\\.\\.?(?:$|/))`,lx=`(?!\\.)`,uoe=new Set([`[`,`.`]),doe=new Set([`..`,`.`]),foe=new Set(`().*{}+?[]^$\\!`),poe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),moe=`[^/]`,hoe=`[^/]*?`,ux=`[^/]+?`,goe=0,dx=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++goe;get depth(){return(this.#i?.depth??-1)+1}[Symbol.for(`nodejs.util.inspect.custom`)](){return{"@@type":`AST`,id:this.id,type:this.type,root:this.#e.id,parent:this.#i?.id,depth:this.depth,partsLength:this.#r.length,parts:this.#r}}constructor(e,t,n={}){this.type=e,e&&(this.#t=!0),this.#i=t,this.#e=this.#i?this.#i.#e:this,this.#c=this.#e===this?n:this.#e.#c,this.#o=this.#e===this?[]:this.#e.#o,e===`!`&&!this.#e.#s&&this.#o.push(this),this.#a=this.#i?this.#i.#r.length:0}get hasMagic(){if(this.#t!==void 0)return this.#t;for(let e of this.#r)if(typeof e!=`string`&&(e.type||e.hasMagic))return this.#t=!0;return this.#t}toString(){return this.#l===void 0?this.type?this.#l=this.type+`(`+this.#r.map(e=>String(e)).join(`|`)+`)`:this.#l=this.#r.map(e=>String(e)).join(``):this.#l}#d(){if(this!==this.#e)throw Error(`should only call on root`);if(this.#s)return this;this.toString(),this.#s=!0;let e;for(;e=this.#o.pop();){if(e.type!==`!`)continue;let t=e,n=t.#i;for(;n;){for(let r=t.#a+1;!n.type&&r<n.#r.length;r++)for(let t of e.#r){if(typeof t==`string`)throw Error(`string part in extglob AST??`);t.copyIn(n.#r[r])}t=n,n=t.#i}}return this}push(...e){for(let t of e)if(t!==``){if(typeof t!=`string`&&!(t instanceof ax&&t.#i===this))throw Error(`invalid part: `+t);this.#r.push(t)}}toJSON(){let e=this.type===null?this.#r.slice().map(e=>typeof e==`string`?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#e||this.#e.#s&&this.#i?.type===`!`)&&e.push({}),e}isStart(){if(this.#e===this)return!0;if(!this.#i?.isStart())return!1;if(this.#a===0)return!0;let e=this.#i;for(let t=0;t<this.#a;t++){let n=e.#r[t];if(!(n instanceof ax&&n.type===`!`))return!1}return!0}isEnd(){if(this.#e===this||this.#i?.type===`!`)return!0;if(!this.#i?.isEnd())return!1;if(!this.type)return this.#i?.isEnd();let e=this.#i?this.#i.#r.length:0;return this.#a===e-1}copyIn(e){typeof e==`string`?this.push(e):this.push(e.clone(this))}clone(e){let t=new ax(this.type,e);for(let e of this.#r)t.copyIn(e);return t}static#f(e,t,n,r,i){let a=r.maxExtglobRecursion??2,o=!1,s=!1,c=-1,l=!1;if(t.type===null){let u=n,d=``;for(;u<e.length;){let n=e.charAt(u++);if(o||n===`\\`){o=!o,d+=n;continue}if(s){u===c+1?(n===`^`||n===`!`)&&(l=!0):n===`]`&&!(u===c+2&&l)&&(s=!1),d+=n;continue}else if(n===`[`){s=!0,c=u,l=!1,d+=n;continue}if(!r.noext&&ox(n)&&e.charAt(u)===`(`&&i<=a){t.push(d),d=``;let a=new ax(n,t);u=ax.#f(e,a,u,r,i+1),t.push(a);continue}d+=n}return t.push(d),u}let u=n+1,d=new ax(null,t),f=[],p=``;for(;u<e.length;){let n=e.charAt(u++);if(o||n===`\\`){o=!o,p+=n;continue}if(s){u===c+1?(n===`^`||n===`!`)&&(l=!0):n===`]`&&!(u===c+2&&l)&&(s=!1),p+=n;continue}else if(n===`[`){s=!0,c=u,l=!1,p+=n;continue}if(!r.noext&&ox(n)&&e.charAt(u)===`(`&&(i<=a||t&&t.#h(n))){let a=t&&t.#h(n)?0:1;d.push(p),p=``;let o=new ax(n,d);d.push(o),u=ax.#f(e,o,u,r,i+a);continue}if(n===`|`){d.push(p),p=``,f.push(d),d=new ax(null,t);continue}if(n===`)`)return p===``&&t.#r.length===0&&(t.#u=!0),d.push(p),p=``,t.push(...f,d),u;p+=n}return t.type=null,t.#t=void 0,t.#r=[e.substring(n-1)],u}#p(e){return this.#m(e,soe)}#m(e,t=ooe){if(!e||typeof e!=`object`||e.type!==null||e.#r.length!==1||this.type===null)return!1;let n=e.#r[0];return!n||typeof n!=`object`||n.type===null?!1:this.#h(n.type,t)}#h(e,t=coe){return!!t.get(this.type)?.includes(e)}#g(e,t){let n=e.#r[0],r=new ax(null,n,this.options);r.#r.push(``),n.push(r),this.#_(e,t)}#_(e,t){let n=e.#r[0];this.#r.splice(t,1,...n.#r);for(let e of n.#r)typeof e==`object`&&(e.#i=this);this.#l=void 0}#v(e){return!!cx.get(this.type)?.has(e)}#y(e){if(!e||typeof e!=`object`||e.type!==null||e.#r.length!==1||this.type===null||this.#r.length!==1)return!1;let t=e.#r[0];return!t||typeof t!=`object`||t.type===null?!1:this.#v(t.type)}#b(e){let t=cx.get(this.type),n=e.#r[0],r=t?.get(n.type);if(!r)return!1;this.#r=n.#r;for(let e of this.#r)typeof e==`object`&&(e.#i=this);this.type=r,this.#l=void 0,this.#u=!1}static fromGlob(e,t={}){let n=new ax(null,void 0,t);return ax.#f(e,n,0,t,0),n}toMMPattern(){if(this!==this.#e)return this.#e.toMMPattern();let e=this.toString(),[t,n,r,i]=this.toRegExpSource();if(!(r||this.#t||this.#c.nocase&&!this.#c.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;let a=(this.#c.nocase?`i`:``)+(i?`u`:``);return Object.assign(RegExp(`^${t}$`,a),{_src:t,_glob:e})}get options(){return this.#c}toRegExpSource(e){let t=e??!!this.#c.dot;if(this.#e===this&&(this.#x(),this.#d()),!sx(this)){let n=this.isStart()&&this.isEnd()&&!this.#r.some(e=>typeof e!=`string`),r=this.#r.map(t=>{let[r,i,a,o]=typeof t==`string`?ax.#C(t,this.#t,n):t.toRegExpSource(e);return this.#t=this.#t||a,this.#n=this.#n||o,r}).join(``),i=``;if(this.isStart()&&typeof this.#r[0]==`string`&&!(this.#r.length===1&&doe.has(this.#r[0]))){let n=uoe,a=t&&n.has(r.charAt(0))||r.startsWith(`\\.`)&&n.has(r.charAt(2))||r.startsWith(`\\.\\.`)&&n.has(r.charAt(4)),o=!t&&!e&&n.has(r.charAt(0));i=a?loe:o?lx:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,ix(r),this.#t=!!this.#t,this.#n]}let n=this.type===`*`||this.type===`+`,r=this.type===`!`?`(?:(?!(?:`:`(?:`,i=this.#S(t);if(this.isStart()&&this.isEnd()&&!i&&this.type!==`!`){let e=this.toString(),t=this;return t.#r=[e],t.type=null,t.#t=void 0,[e,ix(this.toString()),!1,!1]}let a=!n||e||t?``:this.#S(!0);a===i&&(a=``),a&&(i=`(?:${i})(?:${a})*?`);let o=``;if(this.type===`!`&&this.#u)o=(this.isStart()&&!t?lx:``)+ux;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?lx:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,ix(i),this.#t=!!this.#t,this.#n]}#x(){if(sx(this)){let e=0,t=!1;do{t=!0;for(let e=0;e<this.#r.length;e++){let n=this.#r[e];typeof n==`object`&&(n.#x(),this.#m(n)?(t=!1,this.#_(n,e)):this.#p(n)?(t=!1,this.#g(n,e)):this.#y(n)&&(t=!1,this.#b(n)))}}while(!t&&++e<10)}else for(let e of this.#r)typeof e==`object`&&e.#x();this.#l=void 0}#S(e){return this.#r.map(t=>{if(typeof t==`string`)throw Error(`string type in extglob ast??`);let[n,r,i,a]=t.toRegExpSource(e);return this.#n=this.#n||a,n}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(`|`)}static#C(e,t,n=!1){let r=!1,i=``,a=!1,o=!1;for(let s=0;s<e.length;s++){let c=e.charAt(s);if(r){r=!1,i+=(foe.has(c)?`\\`:``)+c;continue}if(c===`*`){if(o)continue;o=!0,i+=n&&/^[*]+$/.test(e)?ux:hoe,t=!0;continue}else o=!1;if(c===`\\`){s===e.length-1?i+=`\\\\`:r=!0;continue}if(c===`[`){let[n,r,o,c]=ioe(e,s);if(o){i+=n,a||=r,s+=o-1,t||=c;continue}}if(c===`?`){i+=moe,t=!0;continue}i+=poe(c)}return[i,ix(e),!!t,a]}};ax=dx;var _oe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),fx=(e,t,n={})=>(tx(t),!n.nocomment&&t.charAt(0)===`#`?!1:new xx(t,n).match(e)),voe=/^\*+([^+@!?\*\[\(]*)$/,yoe=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),boe=e=>t=>t.endsWith(e),xoe=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),Soe=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),Coe=/^\*+\.\*+$/,woe=e=>!e.startsWith(`.`)&&e.includes(`.`),Toe=e=>e!==`.`&&e!==`..`&&e.includes(`.`),Eoe=/^\.\*+$/,Doe=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),Ooe=/^\*+$/,koe=e=>e.length!==0&&!e.startsWith(`.`),Aoe=e=>e.length!==0&&e!==`.`&&e!==`..`,joe=/^\?+([^+@!?\*\[\(]*)?$/,Moe=([e,t=``])=>{let n=px([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Noe=([e,t=``])=>{let n=mx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},Poe=([e,t=``])=>{let n=mx([e]);return t?e=>n(e)&&e.endsWith(t):n},Foe=([e,t=``])=>{let n=px([e]);return t?e=>n(e)&&e.endsWith(t):n},px=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},mx=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},hx=typeof process==`object`&&process?{}.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,gx={win32:{sep:`\\`},posix:{sep:`/`}};fx.sep=hx===`win32`?gx.win32.sep:gx.posix.sep;var _x=Symbol(`globstar **`);fx.GLOBSTAR=_x;var Ioe=`[^/]*?`,Loe=`(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?`,Roe=`(?:(?!(?:\\/|^)\\.).)*?`;fx.filter=(e,t={})=>n=>fx(n,e,t);var vx=(e,t={})=>Object.assign({},e,t);fx.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return fx;let t=fx;return Object.assign((n,r,i={})=>t(n,r,vx(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,vx(e,n))}static defaults(n){return t.defaults(vx(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,vx(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,vx(e,r))}},unescape:(n,r={})=>t.unescape(n,vx(e,r)),escape:(n,r={})=>t.escape(n,vx(e,r)),filter:(n,r={})=>t.filter(n,vx(e,r)),defaults:n=>t.defaults(vx(e,n)),makeRe:(n,r={})=>t.makeRe(n,vx(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,vx(e,r)),match:(n,r,i={})=>t.match(n,r,vx(e,i)),sep:t.sep,GLOBSTAR:_x})};var yx=(e,t={})=>(tx(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Xae(e,{max:t.braceExpandMax}));fx.braceExpand=yx,fx.makeRe=(e,t={})=>new xx(e,t).makeRe(),fx.match=(e,t,n={})=>{let r=new xx(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};var bx=/[?*]|[+@!]\(.*?\)|\[|\]/,zoe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),xx=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){tx(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||hx,this.isWindows=this.platform===`win32`,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||t.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,`/`)),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=t.windowsNoMagicRoot===void 0?!!(this.isWindows&&this.nocase):t.windowsNoMagicRoot,this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let t of e)if(typeof t!=`string`)return!0;return!1}debug(...e){}make(){let e=this.pattern,t=this.options;if(!t.nocomment&&e.charAt(0)===`#`){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=(...e)=>console.error(...e)),this.debug(this.pattern,this.globSet);let n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){let t=e[0]===``&&e[1]===``&&(e[2]===`?`||!bx.test(e[2]))&&!bx.test(e[3]),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>e.indexOf(!1)===-1),this.isWindows)for(let e=0;e<this.set.length;e++){let t=this.set[e];t[0]===``&&t[1]===``&&this.globParts[e][2]===`?`&&typeof t[3]==`string`&&/^[a-z]:$/i.test(t[3])&&(t[2]=`?`)}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let t=0;t<e.length;t++)for(let n=0;n<e[t].length;n++)e[t][n]===`**`&&(e[t][n]=`*`);let{optimizationLevel:t=1}=this.options;return t>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;(t=e.indexOf(`**`,t+1))!==-1;){let n=t;for(;e[n+1]===`**`;)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>(e=e.reduce((e,t)=>{let n=e[e.length-1];return t===`**`&&n===`**`?e:t===`..`&&n&&n!==`..`&&n!==`.`&&n!==`**`?(e.pop(),e):(e.push(t),e)},[]),e.length===0?[``]:e))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;n<e.length-1;n++){let r=e[n];n===1&&r===``&&e[0]===``||(r===`.`||r===``)&&(t=!0,e.splice(n,1),n--)}e[0]===`.`&&e.length===2&&(e[1]===`.`||e[1]===``)&&(t=!0,e.pop())}let n=0;for(;(n=e.indexOf(`..`,n+1))!==-1;){let r=e[n-1];r&&r!==`.`&&r!==`..`&&r!==`**`&&(t=!0,e.splice(n-1,2),n-=2)}}while(t);return e.length===0?[``]:e}firstPhasePreProcess(e){let t=!1;do{t=!1;for(let n of e){let r=-1;for(;(r=n.indexOf(`**`,r+1))!==-1;){let i=r;for(;n[i+1]===`**`;)i++;i>r&&n.splice(r+1,i-r);let a=n[r+1],o=n[r+2],s=n[r+3];if(a!==`..`||!o||o===`.`||o===`..`||!s||s===`.`||s===`..`)continue;t=!0,n.splice(r,1);let c=n.slice(0);c[r]=`**`,e.push(c),r--}if(!this.preserveMultipleSlashes){for(let e=1;e<n.length-1;e++){let r=n[e];e===1&&r===``&&n[0]===``||(r===`.`||r===``)&&(t=!0,n.splice(e,1),e--)}n[0]===`.`&&n.length===2&&(n[1]===`.`||n[1]===``)&&(t=!0,n.pop())}let i=0;for(;(i=n.indexOf(`..`,i+1))!==-1;){let e=n[i-1];if(e&&e!==`.`&&e!==`..`&&e!==`**`){t=!0;let e=i===1&&n[i+1]===`**`?[`.`]:[];n.splice(i-1,2,...e),n.length===0&&n.push(``),i-=2}}}}while(t);return e}secondPhasePreProcess(e){for(let t=0;t<e.length-1;t++)for(let n=t+1;n<e.length;n++){let r=this.partsMatch(e[t],e[n],!this.preserveMultipleSlashes);if(r){e[t]=[],e[n]=r;break}}return e.filter(e=>e.length)}partsMatch(e,t,n=!1){let r=0,i=0,a=[],o=``;for(;r<e.length&&i<t.length;)if(e[r]===t[i])a.push(o===`b`?t[i]:e[r]),r++,i++;else if(n&&e[r]===`**`&&t[i]===e[r+1])a.push(e[r]),r++;else if(n&&t[i]===`**`&&e[r]===t[i+1])a.push(t[i]),i++;else if(e[r]===`*`&&t[i]&&(this.options.dot||!t[i].startsWith(`.`))&&t[i]!==`**`){if(o===`b`)return!1;o=`a`,a.push(e[r]),r++,i++}else if(t[i]===`*`&&e[r]&&(this.options.dot||!e[r].startsWith(`.`))&&e[r]!==`**`){if(o===`a`)return!1;o=`b`,a.push(t[i]),r++,i++}else return!1;return e.length===t.length&&a}parseNegate(){if(this.nonegate)return;let e=this.pattern,t=!1,n=0;for(let r=0;r<e.length&&e.charAt(r)===`!`;r++)t=!t,n++;n&&(this.pattern=e.slice(n)),this.negate=t}matchOne(e,t,n=!1){let r=0,i=0;if(this.isWindows){let n=typeof e[0]==`string`&&/^[a-z]:$/i.test(e[0]),a=!n&&e[0]===``&&e[1]===``&&e[2]===`?`&&/^[a-z]:$/i.test(e[3]),o=typeof t[0]==`string`&&/^[a-z]:$/i.test(t[0]),s=!o&&t[0]===``&&t[1]===``&&t[2]===`?`&&typeof t[3]==`string`&&/^[a-z]:$/i.test(t[3]),c=a?3:n?0:void 0,l=s?3:o?0:void 0;if(typeof c==`number`&&typeof l==`number`){let[n,a]=[e[c],t[l]];n.toLowerCase()===a.toLowerCase()&&(t[l]=n,i=l,r=c)}}let{optimizationLevel:a=1}=this.options;return a>=2&&(e=this.levelTwoFileOptimize(e)),t.includes(_x)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(_x,i),o=t.lastIndexOf(_x),[s,c,l]=n?[t.slice(i,a),t.slice(a+1),[]]:[t.slice(i,a),t.slice(a+1,o),t.slice(o+1)];if(s.length){let t=e.slice(r,r+s.length);if(!this.#n(t,s,n,0,0))return!1;r+=s.length,i+=s.length}let u=0;if(l.length){if(l.length+r>e.length)return!1;let t=e.length-l.length;if(this.#n(e,l,n,t,0))u=l.length;else{if(e[e.length-1]!==``||r+l.length===e.length||(t--,!this.#n(e,l,n,t,0)))return!1;u=l.length+1}}if(!c.length){let t=!!u;for(let n=r;n<e.length-u;n++){let r=String(e[n]);if(t=!0,r===`.`||r===`..`||!this.options.dot&&r.startsWith(`.`))return!1}return n||t}let d=[[[],0]],f=d[0],p=0,m=[0];for(let e of c)e===_x?(m.push(p),f=[[],0],d.push(f)):(f[0].push(e),p++);let h=d.length-1,g=e.length-u;for(let e of d)e[1]=g-(m[h--]+e[0].length);return!!this.#t(e,d,r,0,n,0,!!u)}#t(e,t,n,r,i,a,o){let s=t[r];if(!s){for(let t=n;t<e.length;t++){o=!0;let n=e[t];if(n===`.`||n===`..`||!this.options.dot&&n.startsWith(`.`))return!1}return o}let[c,l]=s;for(;n<=l;){if(this.#n(e.slice(0,n+c.length),c,i,n,0)&&a<this.maxGlobstarRecursion){let s=this.#t(e,t,n+c.length,r+1,i,a+1,o);if(s!==!1)return s}let s=e[n];if(s===`.`||s===`..`||!this.options.dot&&s.startsWith(`.`))return!1;n++}return i||null}#n(e,t,n,r,i){let a,o,s,c;for(a=r,o=i,c=e.length,s=t.length;a<c&&o<s;a++,o++){this.debug(`matchOne loop`);let n=t[o],r=e[a];if(this.debug(t,n,r),n===!1||n===_x)return!1;let i;if(typeof n==`string`?(i=r===n,this.debug(`string match`,n,r,i)):(i=n.test(r),this.debug(`pattern match`,n,r,i)),!i)return!1}if(a===c&&o===s)return!0;if(a===c)return n;if(o===s)return a===c-1&&e[a]===``;throw Error(`wtf?`)}braceExpand(){return yx(this.pattern,this.options)}parse(e){tx(e);let t=this.options;if(e===`**`)return _x;if(e===``)return``;let n,r=null;(n=e.match(Ooe))?r=t.dot?Aoe:koe:(n=e.match(voe))?r=(t.nocase?t.dot?Soe:xoe:t.dot?boe:yoe)(n[1]):(n=e.match(joe))?r=(t.nocase?t.dot?Noe:Moe:t.dot?Poe:Foe)(n):(n=e.match(Coe))?r=t.dot?Toe:woe:(n=e.match(Eoe))&&(r=Doe);let i=dx.fromGlob(e,this.options).toMMPattern();return r&&typeof i==`object`&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let t=this.options,n=t.noglobstar?Ioe:t.dot?Loe:Roe,r=new Set(t.nocase?[`i`]:[]),i=e.map(e=>{let t=e.map(e=>{if(e instanceof RegExp)for(let t of e.flags.split(``))r.add(t);return typeof e==`string`?zoe(e):e===_x?_x:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e!==_x||a===_x||(a===void 0?i!==void 0&&i!==_x?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==_x&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=_x))});let i=t.filter(e=>e!==_x);if(this.partial&&i.length>=1){let e=[];for(let t=1;t<=i.length;t++)e.push(i.slice(0,t).join(`/`));return`(?:`+e.join(`|`)+`)`}return i.join(`/`)}).join(`|`),[a,o]=e.length>1?[`(?:`,`)`]:[``,``];i=`^`+a+i+o+`$`,this.partial&&(i=`^(?:\\/|`+a+i.slice(1,-1)+o+`)$`),this.negate&&(i=`^(?!`+i+`).+$`);try{this.regexp=new RegExp(i,[...r].join(``))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(`/`):this.isWindows&&/^\/\/[^\/]+/.test(e)?[``,...e.split(/\/+/)]:e.split(/\/+/)}match(e,t=this.partial){if(this.debug(`match`,e,this.pattern),this.comment)return!1;if(this.empty)return e===``;if(e===`/`&&t)return!0;let n=this.options;this.isWindows&&(e=e.split(`\\`).join(`/`));let r=this.slashSplit(e);this.debug(this.pattern,`split`,r);let i=this.set;this.debug(this.pattern,`set`,i);let a=r[r.length-1];if(!a)for(let e=r.length-2;!a&&e>=0;e--)a=r[e];for(let e=0;e<i.length;e++){let o=i[e],s=r;if(n.matchBase&&o.length===1&&(s=[a]),this.matchOne(s,o,t))return n.flipNegate?!0:!this.negate}return n.flipNegate?!1:this.negate}static defaults(e){return fx.defaults(e).Minimatch}};fx.AST=dx,fx.Minimatch=xx,fx.escape=_oe,fx.unescape=ix;var Sx={};function Cx(){throw Error(`gunzipSync is not available in the browser`)}function wx(){throw Error(`gzipSync is not available in the browser`)}var Tx=class{diff(e,t,n={}){let r;typeof n==`function`?(r=n,n={}):`callback`in n&&(r=n.callback);let i=this.castInput(e,n),a=this.castInput(t,n),o=this.removeEmpty(this.tokenize(i,n)),s=this.removeEmpty(this.tokenize(a,n));return this.diffWithOptionsObj(o,s,n,r)}diffWithOptionsObj(e,t,n,r){let i=e=>{if(e=this.postProcess(e,n),r){setTimeout(function(){r(e)},0);return}else return e},a=t.length,o=e.length,s=1,c=a+o;n.maxEditLength!=null&&(c=Math.min(c,n.maxEditLength));let l=n.timeout??1/0,u=Date.now()+l,d=[{oldPos:-1,lastComponent:void 0}],f=this.extractCommon(d[0],t,e,0,n);if(d[0].oldPos+1>=o&&f+1>=a)return i(this.buildValues(d[0].lastComponent,t,e));let p=-1/0,m=1/0,h=()=>{for(let r=Math.max(p,-s);r<=Math.min(m,s);r+=2){let s,c=d[r-1],l=d[r+1];c&&(d[r-1]=void 0);let u=!1;if(l){let e=l.oldPos-r;u=l&&0<=e&&e<a}let h=c&&c.oldPos+1<o;if(!u&&!h){d[r]=void 0;continue}if(s=!h||u&&c.oldPos<l.oldPos?this.addToPath(l,!0,!1,0,n):this.addToPath(c,!1,!0,1,n),f=this.extractCommon(s,t,e,r,n),s.oldPos+1>=o&&f+1>=a)return i(this.buildValues(s.lastComponent,t,e))||!0;d[r]=s,s.oldPos+1>=o&&(m=Math.min(m,r-1)),f+1>=a&&(p=Math.max(p,r+1))}s++};if(r)(function e(){setTimeout(function(){if(s>c||Date.now()>u)return r(void 0);h()||e()},0)})();else for(;s<=c&&Date.now()<=u;){let e=h();if(e)return e}}addToPath(e,t,n,r,i){let a=e.lastComponent;return a&&!i.oneChangePerToken&&a.added===t&&a.removed===n?{oldPos:e.oldPos+r,lastComponent:{count:a.count+1,added:t,removed:n,previousComponent:a.previousComponent}}:{oldPos:e.oldPos+r,lastComponent:{count:1,added:t,removed:n,previousComponent:a}}}extractCommon(e,t,n,r,i){let a=t.length,o=n.length,s=e.oldPos,c=s-r,l=0;for(;c+1<a&&s+1<o&&this.equals(n[s+1],t[c+1],i);)c++,s++,l++,i.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return l&&!i.oneChangePerToken&&(e.lastComponent={count:l,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=s,c}equals(e,t,n){return n.comparator?n.comparator(e,t):e===t||!!n.ignoreCase&&e.toLowerCase()===t.toLowerCase()}removeEmpty(e){let t=[];for(let n=0;n<e.length;n++)e[n]&&t.push(e[n]);return t}castInput(e,t){return e}tokenize(e,t){return Array.from(e)}join(e){return e.join(``)}postProcess(e,t){return e}get useLongestToken(){return!1}buildValues(e,t,n){let r=[],i;for(;e;)r.push(e),i=e.previousComponent,delete e.previousComponent,e=i;r.reverse();let a=r.length,o=0,s=0,c=0;for(;o<a;o++){let e=r[o];if(e.removed)e.value=this.join(n.slice(c,c+e.count)),c+=e.count;else{if(!e.added&&this.useLongestToken){let r=t.slice(s,s+e.count);r=r.map(function(e,t){let r=n[c+t];return r.length>e.length?r:e}),e.value=this.join(r)}else e.value=this.join(t.slice(s,s+e.count));s+=e.count,e.added||(c+=e.count)}}return r}};new class extends Tx{};function Ex(e,t){let n;for(n=0;n<e.length&&n<t.length;n++)if(e[n]!=t[n])return e.slice(0,n);return e.slice(0,n)}function Dx(e,t){let n;if(!e||!t||e[e.length-1]!=t[t.length-1])return``;for(n=0;n<e.length&&n<t.length;n++)if(e[e.length-(n+1)]!=t[t.length-(n+1)])return e.slice(-n);return e.slice(-n)}function Ox(e,t,n){if(e.slice(0,t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(t)}; this is a bug`);return n+e.slice(t.length)}function kx(e,t,n){if(!t)return e+n;if(e.slice(-t.length)!=t)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(t)}; this is a bug`);return e.slice(0,-t.length)+n}function Ax(e,t){return Ox(e,t,``)}function jx(e,t){return kx(e,t,``)}function Mx(e,t){return t.slice(0,Boe(e,t))}function Boe(e,t){let n=0;e.length>t.length&&(n=e.length-t.length);let r=t.length;e.length<t.length&&(r=e.length);let i=Array(r),a=0;i[0]=0;for(let e=1;e<r;e++){for(t[e]==t[a]?i[e]=i[a]:i[e]=a;a>0&&t[e]!=t[a];)a=i[a];t[e]==t[a]&&a++}a=0;for(let r=n;r<e.length;r++){for(;a>0&&e[r]!=t[a];)a=i[a];e[r]==t[a]&&a++}return a}function Nx(e){let t;for(t=e.length-1;t>=0&&e[t].match(/\s/);t--);return e.substring(t+1)}function Px(e){let t=e.match(/^\s*/);return t?t[0]:``}var Fx=`a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}`,Voe=RegExp(`[${Fx}]+|\\s+|[^${Fx}]`,`ug`);new class extends Tx{equals(e,t,n){return n.ignoreCase&&(e=e.toLowerCase(),t=t.toLowerCase()),e.trim()===t.trim()}tokenize(e,t={}){let n;if(t.intlSegmenter){let r=t.intlSegmenter;if(r.resolvedOptions().granularity!=`word`)throw Error(`The segmenter passed must have a granularity of "word"`);n=[];for(let t of Array.from(r.segment(e))){let e=t.segment;n.length&&/\s/.test(n[n.length-1])&&/\s/.test(e)?n[n.length-1]+=e:n.push(e)}}else n=e.match(Voe)||[];let r=[],i=null;return n.forEach(e=>{/\s/.test(e)?i==null?r.push(e):r.push(r.pop()+e):i!=null&&/\s/.test(i)?r[r.length-1]==i?r.push(r.pop()+e):r.push(i+e):r.push(e),i=e}),r}join(e){return e.map((e,t)=>t==0?e:e.replace(/^\s+/,``)).join(``)}postProcess(e,t){if(!e||t.oneChangePerToken)return e;let n=null,r=null,i=null;return e.forEach(e=>{e.added?r=e:e.removed?i=e:((r||i)&&Ix(n,i,r,e),n=e,r=null,i=null)}),(r||i)&&Ix(n,i,r,null),e}};function Ix(e,t,n,r){if(t&&n){let i=Px(t.value),a=Nx(t.value),o=Px(n.value),s=Nx(n.value);if(e){let r=Ex(i,o);e.value=kx(e.value,o,r),t.value=Ax(t.value,r),n.value=Ax(n.value,r)}if(r){let e=Dx(a,s);r.value=Ox(r.value,s,e),t.value=jx(t.value,e),n.value=jx(n.value,e)}}else if(n){if(e){let e=Px(n.value);n.value=n.value.substring(e.length)}if(r){let e=Px(r.value);r.value=r.value.substring(e.length)}}else if(e&&r){let n=Px(r.value),i=Px(t.value),a=Nx(t.value),o=Ex(n,i);t.value=Ax(t.value,o);let s=Dx(Ax(n,o),a);t.value=jx(t.value,s),r.value=Ox(r.value,n,s),e.value=kx(e.value,n,n.slice(0,n.length-s.length))}else if(r){let e=Px(r.value),n=Mx(Nx(t.value),e);t.value=jx(t.value,n)}else if(e){let n=Mx(Nx(e.value),Px(t.value));t.value=Ax(t.value,n)}}new class extends Tx{tokenize(e){let t=RegExp(`(\\r?\\n)|[${Fx}]+|[^\\S\\n\\r]+|[^${Fx}]`,`ug`);return e.match(t)||[]}},new class extends Tx{constructor(){super(...arguments),this.tokenize=Lx}equals(e,t,n){return n.ignoreWhitespace?((!n.newlineIsToken||!e.includes(`
|
|
77
77
|
`))&&(e=e.trim()),(!n.newlineIsToken||!t.includes(`
|
|
78
78
|
`))&&(t=t.trim())):n.ignoreNewlineAtEof&&!n.newlineIsToken&&(e.endsWith(`
|
|
79
79
|
`)&&(e=e.slice(0,-1)),t.endsWith(`
|
|
@@ -636,7 +636,7 @@ ${o.repeat(a)}}`}return String(e)}var aO,oO;B({},{base64Command:()=>sO,flagsForF
|
|
|
636
636
|
job specification, and reports its termination status.
|
|
637
637
|
Exit Status:
|
|
638
638
|
Returns the status of the last ID; fails if ID is invalid or an invalid
|
|
639
|
-
option is given.`]]]).keys()].sort(),fj(),JP(),sA(),fj(),JP(),jj(),qj(),PM(),jj(),jj(),Hj(),kS(),kS(),jj(),kS(),fj(),kS(),sA(),fj(),JP(),$j(),LP(),qj(),PM(),cw(),kS(),AS(),JP(),kS(),LP(),kS(),AS(),kS(),AS(),kS(),LP(),fj(),LP(),bS(),_O(),kS(),sA(),fj(),JP(),kS(),LP(),jj(),qj(),PM(),fj(),kS(),LP(),AS(),YP(),_S(),vS(),xk(),fj(),_S(),new TextDecoder(`utf-8`,{fatal:!0}),bS();var XP={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function ZP(){return{...XP}}var QP=new Set;function $P(){if(QP.size!==0)for(let e of[...QP])try{e({...XP})}catch{}}function eF(e){XP={...e},$P()}function tF(e){XP={...XP,lastPingTime:e},$P()}var nF=s({OFFSCREEN_SET_TRAY_RUNTIME_HOOK:()=>iF,leaveTray:()=>oF,resolveAmbientLeaveTrayTransport:()=>aF}),rF=Wv(`scoops.tray-leave`),iF=`__slicc_setTrayRuntime`;function aF(){let e=globalThis.localStorage,t=e&&typeof e.setItem==`function`&&typeof e.removeItem==`function`?e:null,n=globalThis[iF];if(typeof n==`function`)return{wire:{kind:`offscreen-hook`,setTrayRuntime:n},storage:t};let r=globalThis.chrome;if(r?.runtime?.id&&typeof r.runtime.sendMessage==`function`){let e=r.runtime.sendMessage;return{wire:{kind:`extension-panel`,sendMessage:t=>e(t)},storage:t}}return typeof window<`u`&&typeof window.dispatchEvent==`function`?{wire:{kind:`standalone-page`,dispatchEvent:e=>window.dispatchEvent(e)},storage:t}:{wire:null,storage:t}}async function oF(e={},t=aF()){let n=e.workerBaseUrl??null;if(t.storage)try{t.storage.removeItem(yb),n===null?t.storage.removeItem(vb):t.storage.setItem(vb,n)}catch(t){rF.error(`tray-leave storage write failed`,{workerBaseUrl:n,requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}if(!t.wire)throw Error(`leaveTray: no transport available — inject a panelRpcClient (worker) or run in a context with chrome.runtime or window`);switch(t.wire.kind){case`offscreen-hook`:await t.wire.setTrayRuntime(null,n);return;case`extension-panel`:await t.wire.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:null,workerBaseUrl:n}});return;case`standalone-worker`:await t.wire.panelRpcClient.call(`tray-leave`,{workerBaseUrl:n,requestId:e.requestId});return;case`standalone-page`:t.wire.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:n,requestId:e.requestId}}));return}}var sF=null;function cF(e){sF=e}function lF(){return sF??void 0}var uF=Uint8Array,dF=Uint16Array,fF=Int32Array,pF=new uF([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),mF=new uF([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),hF=new uF([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gF=function(e,t){for(var n=new dF(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new fF(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},_F=gF(pF,2),vF=_F.b,yF=_F.r;vF[28]=258,yF[258]=28;for(var bF=gF(mF,0),xF=bF.b,SF=bF.r,CF=new dF(32768),wF=0;wF<32768;++wF){var TF=(wF&43690)>>1|(wF&21845)<<1;TF=(TF&52428)>>2|(TF&13107)<<2,TF=(TF&61680)>>4|(TF&3855)<<4,CF[wF]=((TF&65280)>>8|(TF&255)<<8)>>1}for(var EF=(function(e,t,n){for(var r=e.length,i=0,a=new dF(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new dF(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new dF(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[CF[d]>>c]=l}else for(s=new dF(r),i=0;i<r;++i)e[i]&&(s[i]=CF[o[e[i]-1]++]>>15-e[i]);return s}),DF=new uF(288),wF=0;wF<144;++wF)DF[wF]=8;for(var wF=144;wF<256;++wF)DF[wF]=9;for(var wF=256;wF<280;++wF)DF[wF]=7;for(var wF=280;wF<288;++wF)DF[wF]=8;for(var OF=new uF(32),wF=0;wF<32;++wF)OF[wF]=5;var kF=EF(DF,9,0),AF=EF(DF,9,1),jF=EF(OF,5,0),MF=EF(OF,5,1),NF=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},PF=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},FF=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},IF=function(e){return(e+7)/8|0},LF=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new uF(e.subarray(t,n))},RF=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],zF=function(e,t,n){var r=Error(t||RF[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,zF),!n)throw r;return r},BF=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new uF(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new uF(i*3));var l=function(e){var t=n.length;if(e>t){var r=new uF(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=PF(e,d,1);var v=PF(e,d+1,3);if(d+=3,!v){var ee=IF(d)+4,y=e[ee-4]|e[ee-3]<<8,b=ee+y;if(b>i){c&&zF(0);break}s&&l(f+y),n.set(e.subarray(ee,b),f),t.b=f+=y,t.p=d=b*8,t.f=u;continue}else if(v==1)p=AF,m=MF,h=9,g=5;else if(v==2){var te=PF(e,d,31)+257,ne=PF(e,d+10,15)+4,re=te+PF(e,d+5,31)+1;d+=14;for(var x=new uF(re),ie=new uF(19),S=0;S<ne;++S)ie[hF[S]]=PF(e,d+S*3,7);d+=ne*3;for(var C=NF(ie),ae=(1<<C)-1,oe=EF(ie,C,1),S=0;S<re;){var se=oe[PF(e,d,ae)];d+=se&15;var ee=se>>4;if(ee<16)x[S++]=ee;else{var ce=0,w=0;for(ee==16?(w=3+PF(e,d,3),d+=2,ce=x[S-1]):ee==17?(w=3+PF(e,d,7),d+=3):ee==18&&(w=11+PF(e,d,127),d+=7);w--;)x[S++]=ce}}var T=x.subarray(0,te),E=x.subarray(te);h=NF(T),g=NF(E),p=EF(T,h,1),m=EF(E,g,1)}else zF(1);if(d>_){c&&zF(0);break}}s&&l(f+131072);for(var D=(1<<h)-1,O=(1<<g)-1,le=d;;le=d){var ce=p[FF(e,d)&D],k=ce>>4;if(d+=ce&15,d>_){c&&zF(0);break}if(ce||zF(2),k<256)n[f++]=k;else if(k==256){le=d,p=null;break}else{var A=k-254;if(k>264){var S=k-257,j=pF[S];A=PF(e,d,(1<<j)-1)+vF[S],d+=j}var ue=m[FF(e,d)&O],de=ue>>4;ue||zF(3),d+=ue&15;var E=xF[de];if(de>3){var j=mF[de];E+=FF(e,d)&(1<<j)-1,d+=j}if(d>_){c&&zF(0);break}s&&l(f+131072);var fe=f+A;if(f<E){var pe=a-E,me=Math.min(E,fe);for(pe+f<0&&zF(3);f<me;++f)n[f]=r[pe+f]}for(;f<fe;++f)n[f]=n[f-E]}}t.l=p,t.p=le,t.b=f,t.f=u,p&&(u=1,t.m=h,t.d=m,t.n=g)}while(!u);return f!=n.length&&o?LF(n,0,f):n.subarray(0,f)},VF=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},HF=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},UF=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:XF,l:0};if(i==1){var o=new uF(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new dF(f+1),m=WF(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var ee=a[r].s;p[ee]<t?h-=1<<t-p[ee]++-1:++r}for(;r>=0&&h;--r){var y=a[r].s;p[y]==t&&(--p[y],++h)}m=t}return{t:new uF(p),l:m}},WF=function(e,t,n){return e.s==-1?Math.max(WF(e.l,t,n+1),WF(e.r,t,n+1)):t[e.s]=n},GF=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new dF(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},KF=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},qF=function(e,t,n){var r=n.length,i=IF(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},JF=function(e,t,n,r,i,a,o,s,c,l,u){VF(t,u++,n),++i[256];for(var d=UF(i,15),f=d.t,p=d.l,m=UF(a,15),h=m.t,g=m.l,_=GF(f),v=_.c,ee=_.n,y=GF(h),b=y.c,te=y.n,ne=new dF(19),re=0;re<v.length;++re)++ne[v[re]&31];for(var re=0;re<b.length;++re)++ne[b[re]&31];for(var x=UF(ne,7),ie=x.t,S=x.l,C=19;C>4&&!ie[hF[C-1]];--C);var ae=l+5<<3,oe=KF(i,DF)+KF(a,OF)+o,se=KF(i,f)+KF(a,h)+o+14+3*C+KF(ne,ie)+2*ne[16]+3*ne[17]+7*ne[18];if(c>=0&&ae<=oe&&ae<=se)return qF(t,u,e.subarray(c,c+l));var ce,w,T,E;if(VF(t,u,1+(se<oe)),u+=2,se<oe){ce=EF(f,p,0),w=f,T=EF(h,g,0),E=h;var D=EF(ie,S,0);VF(t,u,ee-257),VF(t,u+5,te-1),VF(t,u+10,C-4),u+=14;for(var re=0;re<C;++re)VF(t,u+3*re,ie[hF[re]]);u+=3*C;for(var O=[v,b],le=0;le<2;++le)for(var k=O[le],re=0;re<k.length;++re){var A=k[re]&31;VF(t,u,D[A]),u+=ie[A],A>15&&(VF(t,u,k[re]>>5&127),u+=k[re]>>12)}}else ce=kF,w=DF,T=jF,E=OF;for(var re=0;re<s;++re){var j=r[re];if(j>255){var A=j>>18&31;HF(t,u,ce[A+257]),u+=w[A+257],A>7&&(VF(t,u,j>>23&31),u+=pF[A]);var ue=j&31;HF(t,u,T[ue]),u+=E[ue],ue>3&&(HF(t,u,j>>5&8191),u+=mF[ue])}else HF(t,u,ce[j]),u+=w[j]}return HF(t,u,ce[256]),u+w[256]},YF=new fF([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),XF=new uF(0),ZF=function(e,t,n,r,i,a){var o=a.z||e.length,s=new uF(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=YF[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new dF(32768),g=a.h||new dF(m+1),_=Math.ceil(n/3),v=2*_,ee=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},y=new fF(25e3),b=new dF(288),te=new dF(32),ne=0,re=0,x=a.i||0,ie=0,S=a.w||0,C=0;x+2<o;++x){var ae=ee(x),oe=x&32767,se=g[ae];if(h[oe]=se,g[ae]=oe,S<=x){var ce=o-x;if((ne>7e3||ie>24576)&&(ce>423||!l)){u=JF(e,c,0,y,b,te,re,ie,C,x-C,u),ie=ne=re=0,C=x;for(var w=0;w<286;++w)b[w]=0;for(var w=0;w<30;++w)te[w]=0}var T=2,E=0,D=p,O=oe-se&32767;if(ce>2&&ae==ee(x-O))for(var le=Math.min(f,ce)-1,k=Math.min(32767,x),A=Math.min(258,ce);O<=k&&--D&&oe!=se;){if(e[x+T]==e[x+T-O]){for(var j=0;j<A&&e[x+j]==e[x+j-O];++j);if(j>T){if(T=j,E=O,j>le)break;for(var ue=Math.min(O,j-2),de=0,w=0;w<ue;++w){var fe=x-O+w&32767,pe=fe-h[fe]&32767;pe>de&&(de=pe,se=fe)}}}oe=se,se=h[oe],O+=oe-se&32767}if(E){y[ie++]=268435456|yF[T]<<18|SF[E];var me=yF[T]&31,he=SF[E]&31;re+=pF[me]+mF[he],++b[257+me],++te[he],S=x+T,++ne}else y[ie++]=e[x],++b[e[x]]}}for(x=Math.max(x,S);x<o;++x)y[ie++]=e[x],++b[e[x]];u=JF(e,c,l,y,b,te,re,ie,C,x-C,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=x,a.w=S)}else{for(var x=a.w||0;x<o+l;x+=65535){var ge=x+65535;ge>=o&&(c[u/8|0]=l,ge=o),u=qF(c,u+1,e.subarray(x,ge))}a.i=o}return LF(s,0,r+IF(u)+i)},QF=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),$F=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=QF[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},eI=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new uF(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return ZF(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},tI=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},nI=function(e,t){return e[t]|e[t+1]<<8},rI=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},iI=function(e,t){return rI(e,t)+rI(e,t+4)*4294967296},aI=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8};function oI(e,t){return eI(e,t||{},0,0)}function sI(e,t){return BF(e,{i:2},t&&t.out,t&&t.dictionary)}var cI=function(e,t,n,r){for(var i in e){var a=e[i],o=t+i,s=r;Array.isArray(a)&&(s=tI(r,a[1]),a=a[0]),a instanceof uF?n[o]=[a,s]:(n[o+=`/`]=[new uF(0),s],cI(a,o,n,r))}},lI=typeof TextEncoder<`u`&&new TextEncoder,uI=typeof TextDecoder<`u`&&new TextDecoder;try{uI.decode(XF,{stream:!0})}catch{}var dI=function(e){for(var t=``,n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:LF(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function fI(e,t){if(t){for(var n=new uF(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(lI)return lI.encode(e);for(var i=e.length,a=new uF(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new uF(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return LF(a,0,o)}function pI(e,t){if(t){for(var n=``,r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else if(uI)return uI.decode(e);else{var i=dI(e),a=i.s,n=i.r;return n.length&&zF(8),a}}var mI=function(e,t){return t+30+nI(e,t+26)+nI(e,t+28)},hI=function(e,t,n){var r=nI(e,t+28),i=pI(e.subarray(t+46,t+46+r),!(nI(e,t+8)&2048)),a=t+46+r,o=rI(e,t+20),s=n&&o==4294967295?gI(e,a):[o,rI(e,t+24),rI(e,t+42)],c=s[0],l=s[1],u=s[2];return[nI(e,t+10),c,l,i,a+nI(e,t+30)+nI(e,t+32),u]},gI=function(e,t){for(;nI(e,t)!=1;t+=4+nI(e,t+2));return[iI(e,t+12),iI(e,t+4),iI(e,t+20)]},_I=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&zF(9),t+=r+4}return t},vI=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=_I(l);aI(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&zF(10),aI(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&(aI(e,t,n.crc),aI(e,t+4,a<0?-a-2:a),aI(e,t+8,n.size)),aI(e,t+12,c),aI(e,t+14,d),t+=16,o!=null&&(aI(e,t,u),aI(e,t+6,n.attrs),aI(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;aI(e,t,+m),aI(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},yI=function(e,t,n,r,i){aI(e,t,101010256),aI(e,t+8,n),aI(e,t+10,n),aI(e,t+12,r),aI(e,t+16,i)};function bI(e,t){t||={};var n={},r=[];cI(e,``,n,t);var i=0,a=0;for(var o in n){var s=n[o],c=s[0],l=s[1],u=l.level==0?0:8,d=fI(o),f=d.length,p=l.comment,m=p&&fI(p),h=m&&m.length,g=_I(l.extra);f>65535&&zF(11);var _=u?oI(c,l):c,v=_.length,ee=$F();ee.p(c),r.push(tI(l,{size:c.length,crc:ee.d(),c:_,f:d,m,u:f!=o.length||m&&p.length!=h,o:i,compression:u})),i+=30+f+g+v,a+=76+2*(f+g)+(h||0)+v}for(var y=new uF(a+22),b=i,te=a-i,ne=0;ne<r.length;++ne){var d=r[ne];vI(y,d.o,d,d.f,d.u,d.c.length);var re=30+d.f.length+_I(d.extra);y.set(d.c,d.o+re),vI(y,i,d,d.f,d.u,d.c.length,d.o,d.m),i+=16+re+(d.m?d.m.length:0)}return yI(y,i,r.length,te,b),y}function xI(e,t){for(var n={},r=e.length-22;rI(e,r)!=101010256;--r)(!r||e.length-r>65558)&&zF(13);var i=nI(e,r+8);if(!i)return{};var a=rI(e,r+16),o=a==4294967295||i==65535;if(o){var s=rI(e,r-12);o=rI(e,s)==101075792,o&&(i=rI(e,s+32),a=rI(e,s+48))}for(var c=t&&t.filter,l=0;l<i;++l){var u=hI(e,a,o),d=u[0],f=u[1],p=u[2],m=u[3],h=u[4],g=u[5],_=mI(e,g);a=h,(!c||c({name:m,size:f,originalSize:p,compression:d}))&&(d?d==8?n[m]=sI(e.subarray(_,_+f),{out:new uF(p)}):zF(14,`unknown compression type `+d):n[m]=LF(e,_,_+f))}return n}var SI=Wv(`fs-watcher`),CI=0;function wI(e,t){return t===`/`||e===t||e.startsWith(t+`/`)}var TI=class{registrations=new Map;watch(e,t,n){let r=`fsw-${++CI}`;return this.registrations.set(r,{id:r,basePath:e,filter:t,callback:n}),SI.debug(`Watch registered`,{id:r,basePath:e}),()=>{this.registrations.delete(r),SI.debug(`Watch unregistered`,{id:r})}}notify(e){if(e.length!==0)for(let[,t]of this.registrations){let n=e.filter(e=>wI(e.path,t.basePath)&&t.filter(e.path));if(n.length>0)try{t.callback(n)}catch(e){SI.error(`Watch callback error`,{id:t.id,error:e instanceof Error?e.message:String(e)})}}}dispose(){this.registrations.clear(),SI.debug(`All watchers disposed`)}get size(){return this.registrations.size}},EI=Wv(`mount-index`),DI=class{mounts=new Map;listeners=new Set;registerMount(e,t){this.mounts.get(e)?.abortController?.abort();let n=new AbortController,r={handle:t,state:{status:`pending`,indexed:0},files:new Set,directories:new Set,abortController:n};this.mounts.set(e,r),this.notifyListeners(),this.indexMount(e,r,n.signal)}unregisterMount(e){let t=this.mounts.get(e);t&&(t.abortController?.abort(),this.mounts.delete(e),this.notifyListeners())}async refreshMount(e){let t=this.mounts.get(e);if(!t)throw Error(`No mount at ${e}`);t.abortController?.abort();let n=new AbortController;t.abortController=n,t.state={status:`pending`,indexed:0},t.files.clear(),t.directories.clear(),this.notifyListeners(),await this.indexMount(e,t,n.signal)}isReady(e){return this.mounts.get(e)?.state.status===`ready`}isAnyIndexing(){for(let e of this.mounts.values())if(e.state.status===`indexing`||e.state.status===`pending`)return!0;return!1}dispose(){for(let e of this.mounts.values())e.abortController?.abort();this.mounts.clear(),this.listeners.clear()}getState(e){return this.mounts.get(e)?.state}getFiles(e,t){let n=this.mounts.get(e);if(n?.state.status!==`ready`)return;if(!t)return[...n.files];let r=[];for(let e of n.files)t(e)&&r.push(e);return r}getDirectoryEntries(e,t){let n=this.mounts.get(e);if(n?.state.status!==`ready`)return;let r=t===`/`?`/`:t+`/`,i=new Map;for(let e of n.files){if(!e.startsWith(r))continue;let t=e.slice(r.length);t.includes(`/`)||i.set(t,`file`)}for(let e of n.directories){if(!e.startsWith(r))continue;let t=e.slice(r.length);t.includes(`/`)||i.set(t,`directory`)}return[...i.entries()].map(([e,t])=>({name:e,type:t}))}hasPath(e,t){let n=this.mounts.get(e);if(n?.state.status===`ready`)return n.files.has(t)||n.directories.has(t)}notifyWrite(e){let t=this.findMountForPath(e);if(!t)return;let n=this.mounts.get(t);if(n?.state.status!==`ready`)return;n.files.add(e);let r=e;for(;r!==t;){let e=r.lastIndexOf(`/`);if(e<=0)break;r=r.slice(0,e)||`/`,r.length>=t.length&&n.directories.add(r)}}notifyDelete(e){let t=this.findMountForPath(e);if(!t)return;let n=this.mounts.get(t);if(n?.state.status!==`ready`)return;n.files.delete(e),n.directories.delete(e);let r=e+`/`;for(let e of n.files)e.startsWith(r)&&n.files.delete(e);for(let e of n.directories)e.startsWith(r)&&n.directories.delete(e)}notifyRename(e,t){let n=this.findMountForPath(e);if(!n)return;let r=this.mounts.get(n);if(r?.state.status===`ready`){if(r.files.has(e)){r.files.delete(e),r.files.add(t);return}if(r.directories.has(e)){r.directories.delete(e),r.directories.add(t);let n=e+`/`,i=t+`/`;for(let e of[...r.files])e.startsWith(n)&&(r.files.delete(e),r.files.add(i+e.slice(n.length)));for(let e of[...r.directories])e.startsWith(n)&&(r.directories.delete(e),r.directories.add(i+e.slice(n.length)))}}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}findMountForPath(e){let t;for(let n of this.mounts.keys())(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.length)&&(t=n);return t}notifyListeners(){for(let e of this.listeners)try{e()}catch{}}async indexMount(e,t,n){t.state={status:`indexing`,indexed:0},this.notifyListeners();try{if(await this.walkHandle(e,t.handle,t,n),n.aborted)return;t.state={status:`ready`,indexed:t.files.size+t.directories.size,total:t.files.size+t.directories.size},t.abortController=null,EI.info(`Mount indexed`,{path:e,files:t.files.size,directories:t.directories.size})}catch(r){if(n.aborted)return;let i=r instanceof Error?r.message:String(r);t.state={status:`error`,indexed:0,error:i},EI.error(`Mount indexing failed`,{path:e,error:i})}this.notifyListeners()}async walkHandle(e,t,n,r){if(r.aborted)return;n.directories.add(e);let i=t;for await(let[t,a]of i){if(r.aborted)return;let i=e===`/`?`/${t}`:`${e}/${t}`;a.kind===`file`?(n.files.add(i),n.state.indexed++):a.kind===`directory`&&await this.walkHandle(i,a,n,r),n.state.indexed%500==0&&(this.notifyListeners(),await new Promise(e=>setTimeout(e,0)))}}};function Q(e){if(!e||e===`/`)return`/`;e.startsWith(`/`)||(e=`/`+e);let t=e.split(`/`),n=[];for(let e of t)e===``||e===`.`||(e===`..`?n.pop():n.push(e));return`/`+n.join(`/`)}function OI(e){let t=Q(e);if(t===`/`)return{dir:`/`,base:``};let n=t.lastIndexOf(`/`);return{dir:n===0?`/`:t.slice(0,n),base:t.slice(n+1)}}function kI(e){let t=Q(e);return t===`/`?[]:t.slice(1).split(`/`)}function AI(...e){return Q(e.join(`/`))}var jI=class{vfs;allowedPrefixes;readOnlyPrefixes;constructor(e,t,n=[]){this.vfs=e;let r=e=>{let t=Q(e);return t.endsWith(`/`)?t:t+`/`};this.allowedPrefixes=t.map(r),this.readOnlyPrefixes=n.map(r)}getAllPrefixes(){let e=this.vfs.listMounts().map(e=>e.endsWith(`/`)?e:e+`/`);return[...this.allowedPrefixes,...this.readOnlyPrefixes,...e]}isAllowed(e){let t=Q(e);return this.getAllPrefixes().some(e=>t===e.slice(0,-1)||t.startsWith(e)||t===`/`||e.startsWith(t+`/`))}isAllowedStrict(e){let t=Q(e);return this.getAllPrefixes().some(e=>t===e.slice(0,-1)||t.startsWith(e))}isWritable(e){let t=Q(e);return this.allowedPrefixes.some(e=>t===e.slice(0,-1)||t.startsWith(e))}canWrite(e){return this.isWritable(e)}checkWrite(e){if(!this.isWritable(e))throw new R(`EACCES`,`permission denied`,Q(e))}async resolveAndCheckRead(e){try{let t=await this.vfs.realpath(e);if(!this.isAllowedStrict(t))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}catch(t){throw t instanceof R?t:new R(`ENOENT`,`no such file or directory`,Q(e))}}async resolveAndCheckWrite(e){try{let t=await this.vfs.realpath(e);if(!this.isWritable(t))throw new R(`EACCES`,`permission denied`,Q(e));return t}catch(t){throw t instanceof R?t:new R(`EACCES`,`permission denied`,Q(e))}}getUnderlyingFS(){return this.vfs}isPathUnderMount(e){return this.vfs.isPathUnderMount(e)}async readFile(e,t){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let n=await this.resolveAndCheckRead(e);return this.vfs.readFile(n,t)}async readDir(e){if(!this.isAllowed(e))return[];let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return[]}let n=await this.vfs.readDir(t);if(!this.isAllowedStrict(e)){let t=Q(e);return n.filter(e=>{let n=t===`/`?`/${e.name}`:`${t}/${e.name}`;return this.isAllowed(n)})}return n}async stat(e){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));if(this.isAllowedStrict(e)){let t=await this.resolveAndCheckRead(e);return this.vfs.stat(t)}return this.vfs.stat(e)}scanPathForSymlinks(e,t){let n=Q(e);if(n===`/`)return!1;let r=n.slice(1).split(`/`),i=t?r.length:r.length-1,a=``;for(let e=0;e<i;e++){a=a+`/`+r[e];let t=this.vfs.lstatSync(a);if(t===null)return null;if(t.type===`symlink`)return!0}return!1}statSync(e){return!this.isAllowedStrict(e)||this.scanPathForSymlinks(e,!0)!==!1?null:this.vfs.statSync(e)}lstatSync(e){return!this.isAllowed(e)||this.scanPathForSymlinks(e,!1)!==!1?null:this.vfs.lstatSync(e)}readDirSync(e){if(!this.isAllowed(e)||this.scanPathForSymlinks(e,!0)!==!1)return null;let t=this.vfs.readDirSync(e);if(t===null)return null;if(this.isAllowedStrict(e))return t;let n=Q(e);return t.filter(e=>{let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;return this.isAllowed(t)})}async realpath(e){let t;try{t=await this.vfs.realpath(e)}catch(t){throw t instanceof R?t:new R(`ENOENT`,`no such file or directory`,Q(e))}if(!this.isAllowedStrict(t))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}async exists(e){if(!this.isAllowed(e))return!1;if(this.isAllowedStrict(e))try{await this.resolveAndCheckRead(e)}catch{return!1}return this.vfs.exists(e)}async readTextFile(e){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=await this.resolveAndCheckRead(e);return this.vfs.readTextFile(t)}async*walk(e){if(!this.isAllowed(e))return;let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return}for await(let e of this.vfs.walk(t))this.isAllowed(e)&&(yield e)}async writeFile(e,t,n){this.checkWrite(e);let r=this.vfs.dirname(e),i=this.vfs.basename(e);try{let t=await this.vfs.realpath(r);if(!this.isWritable(t+`/`+i))throw new R(`EACCES`,`permission denied`,Q(e))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}try{(await this.vfs.lstat(e)).type===`symlink`&&await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.writeFile(e,t,n)}async mkdir(e,t){this.checkWrite(e);let n=this.vfs.dirname(e),r=this.vfs.basename(e);try{let t=await this.vfs.realpath(n);if(!this.isWritable(t+`/`+r))throw new R(`EACCES`,`permission denied`,Q(e))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.mkdir(e,t)}async rm(e,t){this.checkWrite(e);try{(await this.vfs.lstat(e)).type===`symlink`||await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.rm(e,t)}async rename(e,t){this.checkWrite(e),this.checkWrite(t),await this.resolveAndCheckWrite(e);let n=this.vfs.dirname(t),r=this.vfs.basename(t);try{let e=await this.vfs.realpath(n);if(!this.isWritable(e+`/`+r))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.rename(e,t)}async copyFile(e,t){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));this.checkWrite(t);let n=await this.resolveAndCheckRead(e),r=this.vfs.dirname(t),i=this.vfs.basename(t);try{let e=await this.vfs.realpath(r);if(!this.isWritable(e+`/`+i))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}try{(await this.vfs.lstat(t)).type===`symlink`&&await this.resolveAndCheckWrite(t)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.copyFile(n,t)}async symlink(e,t){this.checkWrite(t);let n=this.vfs.dirname(t),r=this.vfs.basename(t);try{let e=await this.vfs.realpath(n);if(!this.isWritable(e+`/`+r))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.symlink(e,t)}async readlink(e){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=await this.vfs.readlink(e),n;if(n=t.startsWith(`/`)?Q(t):Q(this.vfs.dirname(e)+`/`+t),!this.isAllowedStrict(n))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}async lstat(e){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=Q(e),n=this.vfs.dirname(t),r=this.vfs.basename(t),i;if(n===t)i=n;else try{i=await this.vfs.realpath(n)}catch{throw new R(`ENOENT`,`no such file or directory`,t)}let a=i===`/`?`/${r}`:`${i}/${r}`;if(!this.isAllowed(a))throw new R(`ENOENT`,`no such file or directory`,t);return this.vfs.lstat(a)}watch(e,t,n){if(!this.isAllowed(e))throw new R(`EACCES`,`permission denied`,Q(e));let r=this.vfs.getWatcher();if(!r)throw new R(`EINVAL`,`no watcher configured`);return r.watch(Q(e),t,n)}dirname(e){return this.vfs.dirname(e)}basename(e){return this.vfs.basename(e)}async dispose(){await this.vfs.dispose()}},MI=10;function NI(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`opfs`}catch{}return`memory`}var PI=class e{lfs;lfsSync;rawLfs=null;rawLfsSync=null;_ready;_readyResolved=!1;backend;mountPoints=new Map;opfsBackendFs=null;opfsHandle=null;mountRoot=``;internalMounts=new Set;watcher=null;dbName;mountSyncChannel=null;mountIndex=new DI;constructor(t,n,r,i){if(this.dbName=t,this.backend=r===`opfs`?`opfs`:`memory`,this.lfs=this.makeDeferredLfs(),this.lfsSync=this.makeDeferredLfsSync(),this._ready=this.backend===`opfs`?e.initOpfsBackend(this,i,n===!0):e.initMemoryBackend(this,t,n===!0),this._ready.then(()=>{this._readyResolved=!0},()=>{}),typeof BroadcastChannel<`u`)try{this.mountSyncChannel=new BroadcastChannel(`vfs-mount-sync:${t}`),this.mountSyncChannel.onmessage=e=>{let{type:t,path:n,descriptor:r}=e.data??{};if(t===`mount`&&typeof n==`string`&&r)this.reconstructBackendFromDescriptor(r).then(e=>{this.mountPoints.set(n,e),e.kind===`local`&&this.mountIndex.registerMount(n,e.getHandle()),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}).catch(()=>{});else if(t===`unmount`&&typeof n==`string`){let e=this.mountPoints.get(n);this.mountPoints.delete(n),this.mountIndex.unregisterMount(n),e?.close(),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}}}catch{}}static async initOpfsBackend(t,n,r){let i=n??await e.acquireOpfsHandle(t.dbName,r);await e.seedOpfsMetadataSidecarIfMissing(i);let[a,{WebAccess:o}]=await Promise.all([I(()=>import(`./dist-BR9SH6f-.js`).then(e=>e.t),[]),I(()=>import(`./dist-B_L1hx85.js`),__vite__mapDeps([27,28]))]);await e.ensureRootMount(a);let s=`/__opfs__/${t.dbName}`,c=e.opfsBackends.get(t.dbName);if(c&&r){try{a.umount(s)}catch{}e.opfsBackends.delete(t.dbName),c=void 0}if(!c){let n=await a.resolveMountConfig({backend:o,handle:i,metadata:`/.metadata.json`});try{a.mount(s,n)}catch{}c={backendFs:n,refs:0},e.opfsBackends.set(t.dbName,c)}c.refs+=1,t.opfsBackendFs=c.backendFs.index?c.backendFs:null,t.opfsHandle=i,t.mountRoot=s,t.rawLfs=a.promises,t.rawLfsSync=a}static async initMemoryBackend(t,n,r){let i=await I(()=>import(`./dist-BR9SH6f-.js`).then(e=>e.t),[]);await e.ensureRootMount(i);let a=`/__zenfs__/${n}`,o=e.memoryBackends.get(n);if(o&&r){try{i.umount(a)}catch{}e.memoryBackends.delete(n),o=void 0}o||(o={store:i.InMemory.create({label:n}),refs:0},e.memoryBackends.set(n,o)),o.refs+=1;try{i.mount(a,o.store)}catch{}t.mountRoot=a,t.rawLfs=i.promises,t.rawLfsSync=i,t.opfsBackendFs=null,t.opfsHandle=null}static rootMountReady=null;static memoryBackends=new Map;static opfsBackends=new Map;static async ensureRootMount(t){return e.rootMountReady||=(async()=>{await t.configureSingle({backend:t.InMemory,label:`__vfs_root__`})})(),e.rootMountReady}prefix(e){return this.mountRoot?e===`/`?this.mountRoot:this.mountRoot+e:e}unprefix(e){return!this.mountRoot||!e.startsWith(this.mountRoot)?e:e.slice(this.mountRoot.length)||`/`}makeDeferredLfs(){let e=e=>this.prefix(e),t=e=>this.unprefix(e),n=()=>{if(!this.rawLfs)throw Error(`VirtualFS used before init resolved`);return this.rawLfs};return{readFile:(t,r)=>this._readyResolved?n().readFile(e(t),r):this._ready.then(()=>n().readFile(e(t),r)),writeFile:(t,r,i)=>this._readyResolved?n().writeFile(e(t),r,i):this._ready.then(()=>n().writeFile(e(t),r,i)),readdir:t=>this._readyResolved?n().readdir(e(t)):this._ready.then(()=>n().readdir(e(t))),mkdir:(t,r)=>this._readyResolved?n().mkdir(e(t),r):this._ready.then(()=>n().mkdir(e(t),r)),rmdir:t=>this._readyResolved?n().rmdir(e(t)):this._ready.then(()=>n().rmdir(e(t))),unlink:t=>this._readyResolved?n().unlink(e(t)):this._ready.then(()=>n().unlink(e(t))),rename:(t,r)=>this._readyResolved?n().rename(e(t),e(r)):this._ready.then(()=>n().rename(e(t),e(r))),stat:t=>this._readyResolved?n().stat(e(t)):this._ready.then(()=>n().stat(e(t))),lstat:t=>this._readyResolved?n().lstat(e(t)):this._ready.then(()=>n().lstat(e(t))),symlink:(t,r)=>{let i=t.startsWith(`/`)?e(t):t;return this._readyResolved?n().symlink(i,e(r)):this._ready.then(()=>n().symlink(i,e(r)))},readlink:async r=>(this._readyResolved||await this._ready,t(await n().readlink(e(r)))),realpath:async r=>{this._readyResolved||await this._ready;let i=n();return typeof i.realpath==`function`?t(await i.realpath(e(r))):e(r)}}}makeDeferredLfsSync(){let e=e=>this.prefix(e),t=e=>this.unprefix(e);return{readdirSync:t=>{let n=this.rawLfsSync;return n?.readdirSync?n.readdirSync(e(t)):void 0},statSync:t=>{let n=this.rawLfsSync;return n?.statSync?n.statSync(e(t)):void 0},lstatSync:t=>{let n=this.rawLfsSync;return n?.lstatSync?n.lstatSync(e(t)):void 0},readlinkSync:n=>{let r=this.rawLfsSync;return r?.readlinkSync?t(r.readlinkSync(e(n))):void 0}}}static async seedOpfsMetadataSidecarIfMissing(e){let t=`.metadata.json`;try{await e.getFileHandle(t);return}catch(e){if(e?.name!==`NotFoundError`)throw e}let n=await(await e.getFileHandle(t,{create:!0})).createWritable(),r=JSON.stringify({version:1,maxSize:4294967295,entries:{}});await n.write(r),await n.close()}static async acquireOpfsHandle(e,t){let n=navigator.storage;if(!n?.getDirectory)throw new R(`EINVAL`,`OPFS is not available in this environment`);let r=await n.getDirectory();if(t)try{await r.removeEntry(e,{recursive:!0})}catch{}return r.getDirectoryHandle(e,{create:!0})}static async create(t){let n=t?.dbName??`browser-fs`,r=t?.wipe===!0,i=new e(n,r,t?.backend??NI());return await i._ready,r&&await Gie().catch(()=>{}),i}async flush(){await this.writeOpfsMetadataSidecar()}async writeOpfsMetadataSidecar(){if(this.backend!==`opfs`)return;let e=this.opfsBackendFs,t=this.opfsHandle;if(!e||!t)return;let n=JSON.stringify(e.index.toJSON()),r=await(await t.getFileHandle(`.metadata.json`,{create:!0})).createWritable();await r.write(n),await r.close()}canWrite(e){return!0}setWatcher(e){this.watcher=e}getWatcher(){return this.watcher}async dispose(){if(this.mountSyncChannel?.close(),this.mountSyncChannel=null,this.watcher?.dispose(),this.watcher=null,this.mountIndex.dispose(),await this.writeOpfsMetadataSidecar(),this.mountRoot){let t=this.backend===`opfs`?e.opfsBackends:e.memoryBackends,n=t.get(this.dbName);if(n&&(--n.refs,n.refs<=0)){t.delete(this.dbName);try{(await I(()=>import(`./dist-BR9SH6f-.js`).then(e=>e.t),[])).umount(this.mountRoot)}catch{}}}}readDirSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.readdirSync!=`function`||typeof n.lstatSync!=`function`)return null;try{let e=n.readdirSync(t),r=[];for(let i of e){let e=t===`/`?`/${i}`:`${t}/${i}`;try{let t=n.lstatSync(e),a=t.isSymbolicLink()?`symlink`:t.isDirectory()?`directory`:`file`;r.push({name:i,type:a})}catch{}}return r}catch{return null}}statSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.statSync!=`function`||typeof n.lstatSync!=`function`||typeof n.readlinkSync!=`function`)return null;let r=t;for(let e=0;e<=MI;e++){let e;try{e=n.lstatSync(r)}catch{return null}if(!e.isSymbolicLink())return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs};let t;try{t=n.readlinkSync(r)}catch{return null}r=t.startsWith(`/`)?Q(t):Q(AI(OI(r).dir,t))}return null}lstatSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.lstatSync!=`function`)return null;try{let e=n.lstatSync(t);if(e.isSymbolicLink()){let r=n.readlinkSync?n.readlinkSync(t):``;return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:r}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return null}}async mount(e,t){let n=Q(e);if(this.mountPoints.has(n))throw new R(`EEXIST`,`mount point is already mounted`,n);try{if((await this.lstat(n)).type!==`directory`)throw new R(`ENOTDIR`,`mount point must be a directory`,n);if((await this.readDir(n)).length>0)throw new R(`ENOTEMPTY`,`mount point must be empty to avoid shadowing existing files`,n)}catch(e){if(!(e instanceof R)||e.code!==`ENOENT`)throw e}let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.mkdir(n)}catch{}this.mountPoints.set(n,t),t.kind===`local`&&this.mountIndex.registerMount(n,t.getHandle());let i=t.kind===`local`?{kind:`local`,mountId:t.mountId,idbHandleKey:n}:t.kind===`s3`?{kind:`s3`,mountId:t.mountId,source:t.source,profile:t.profile??`default`}:{kind:`da`,mountId:t.mountId,source:t.source,profile:t.profile??`default`};try{this.mountSyncChannel?.postMessage({type:`mount`,path:n,descriptor:i})}catch{}this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}]);try{await Uie({targetPath:n,descriptor:i,createdAt:Date.now()},t.kind===`local`?t.getHandle():void 0)}catch{}}async unmount(e){let t=Q(e),n=this.mountPoints.get(t);this.mountPoints.delete(t),this.mountIndex.unregisterMount(t);try{this.mountSyncChannel?.postMessage({type:`unmount`,path:t})}catch{}this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close();try{await Wie(t)}catch{}}async reconstructBackendFromDescriptor(e){switch(e.kind){case`local`:{let t=await Xy(e.idbHandleKey);if(!t)throw Error(`no handle stored for ${e.idbHandleKey}`);return jy.fromHandle(t,{mountId:e.mountId})}case`s3`:{let{S3MountBackend:t,RemoteMountCache:n,makeSignedFetchS3:r}=await I(async()=>{let{S3MountBackend:e,RemoteMountCache:t,makeSignedFetchS3:n}=await Promise.resolve().then(()=>Gy);return{S3MountBackend:e,RemoteMountCache:t,makeSignedFetchS3:n}},void 0),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r(e.profile)})}case`da`:{let{DaMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await I(async()=>{let{DaMountBackend:e,RemoteMountCache:t,makeSignedFetchDa:n}=await Promise.resolve().then(()=>Gy);return{DaMountBackend:e,RemoteMountCache:t,makeSignedFetchDa:n}},void 0),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}}}listMounts(){let e=[];for(let t of this.mountPoints.keys())this.internalMounts.has(t)||e.push(t);return e}listInternalMounts(){return[...this.internalMounts]}async mountInternal(e,t){let n=Q(e);if(this.mountPoints.has(n))throw new R(`EEXIST`,`mount point is already mounted`,n);let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.mkdir(n)}catch{}this.mountPoints.set(n,t),this.internalMounts.add(n),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}async unmountInternal(e){let t=Q(e);if(!this.internalMounts.has(t))throw new R(`ENOENT`,`not an internal mount point`,t);let n=this.mountPoints.get(t);this.mountPoints.delete(t),this.internalMounts.delete(t),this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close()}getMountIndex(){return this.mountIndex}async refreshMount(e,t){let n=Q(e),r=this.mountPoints.get(n);if(!r)throw new R(`ENOENT`,`not a mount point`,n);let i=await r.refresh(t);return r.kind===`local`&&await this.mountIndex.refreshMount(n),i}isPathUnderMount(e){for(let t of this.mountPoints.keys())if(e===t||e.startsWith(t+`/`))return!0;return!1}static rebrandFsError(e,t){if(e instanceof R){let n=`${e.code}: `,r=e.message;throw r.startsWith(n)&&(r=r.slice(n.length)),e.path&&r.endsWith(` '${e.path}'`)&&(r=r.slice(0,r.length-` '${e.path}'`.length)),new R(e.code,r,t)}throw e}findMount(e){let t=null;for(let[n,r]of this.mountPoints)(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.mountPath.length)&&(t={mountPath:n,backend:r});return t?e===t.mountPath?{path:t.mountPath,backend:t.backend,relParts:[]}:{path:t.mountPath,backend:t.backend,relParts:e.slice(t.mountPath.length+1).split(`/`).filter(Boolean)}:null}async readFile(t,n){let r=Q(t),i=this.findMount(r);if(i){if(i.relParts.length===0)throw new R(`EISDIR`,`is a directory`,r);let t=i.relParts.join(`/`);try{let e=await i.backend.readFile(t);return(n?.encoding??`utf-8`)===`utf-8`?new TextDecoder(`utf-8`).decode(e):e}catch(t){e.rebrandFsError(t,r)}}let a=await this.resolveSymlinks(r);try{return(n?.encoding??`utf-8`)===`utf-8`?await this.lfs.readFile(a,{encoding:`utf8`}):await this.lfs.readFile(a)}catch(e){throw this.convertError(e,r)}}async writeFile(t,n,r){let i=Q(t),a=this.findMount(i);if(a){if(a.relParts.length===0)throw new R(`EISDIR`,`is a directory`,i);let t=a.relParts.join(`/`),r=!1;try{await this.stat(i),r=!0}catch{}let o=typeof n==`string`?new TextEncoder().encode(n):n instanceof Uint8Array?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);try{await a.backend.writeFile(t,o)}catch(t){e.rebrandFsError(t,i)}this.watcher?.notify([{type:r?`modify`:`create`,path:i,entryType:`file`}]),this.mountIndex.notifyWrite(i);return}let o;try{o=await this.resolveSymlinks(i)}catch{o=i}let s=!1;try{await this.lfs.stat(o),s=!0}catch{}let{dir:c}=OI(o);c!==`/`&&await this.mkdir(c,{recursive:!0});try{await this.lfs.writeFile(o,n)}catch(e){throw this.convertError(e,i)}this.watcher?.notify([{type:s?`modify`:`create`,path:o,entryType:`file`}])}async readDir(t){let n=Q(t),r=this.findMount(n);if(r){let t=this.mountIndex.getDirectoryEntries(r.path,n);if(t!==void 0){let e=new Map;for(let n of t)e.set(n.name,{name:n.name,type:n.type});let r=n===`/`?`/`:`${n}/`;for(let t of this.mountPoints.keys()){if(t===n||!t.startsWith(r))continue;let i=t.slice(r.length);!i||i.includes(`/`)||e.has(i)||e.set(i,{name:i,type:`directory`})}return[...e.values()]}let i=r.relParts.join(`/`)||`/`,a;try{a=await r.backend.readDir(i)}catch(t){e.rebrandFsError(t,n)}let o=new Map;for(let e of a)o.set(e.name,{name:e.name,type:e.kind===`directory`?`directory`:`file`});let s=n===`/`?`/`:`${n}/`;for(let e of this.mountPoints.keys()){if(e===n||!e.startsWith(s))continue;let t=e.slice(s.length);!t||t.includes(`/`)||o.has(t)||o.set(t,{name:t,type:`directory`})}return[...o.values()]}let i=await this.resolveSymlinks(n);try{let e=await this.lfs.readdir(i),t=[];for(let n of e){let e=i===`/`?`/${n}`:`${i}/${n}`;try{let r=await this.lfs.lstat(e);r.isSymbolicLink()?t.push({name:n,type:`symlink`}):t.push({name:n,type:r.isDirectory()?`directory`:`file`})}catch{}}return t}catch(e){throw this.convertError(e,n)}}async mkdir(t,n){let r=Q(t);if(r===`/`)return;let i=this.findMount(r);if(i){if(i.relParts.length===0)return;let t=i.relParts.join(`/`),n=await this.exists(r);try{await i.backend.mkdir(t)}catch(t){e.rebrandFsError(t,r)}n||this.watcher?.notify([{type:`create`,path:r,entryType:`directory`}]);return}if(n?.recursive){let e=r.split(`/`).filter(Boolean),t=``;for(let n of e){t+=`/`+n;try{await this.lfs.mkdir(t)}catch(e){if(e instanceof Error&&!e.message.includes(`EEXIST`))throw this.convertError(e,t)}}}else{try{await this.lfs.mkdir(r)}catch(e){throw this.convertError(e,r)}this.watcher?.notify([{type:`create`,path:r,entryType:`directory`}])}}async rm(t,n){let r=Q(t),i=this.findMount(r);if(i){if(i.relParts.length===0)throw new R(`EINVAL`,`cannot remove a mount point — use unmount`,r);let t;try{t=(await this.stat(r)).type}catch{}let a=i.relParts.join(`/`);try{await i.backend.remove(a,{recursive:n?.recursive})}catch(t){e.rebrandFsError(t,r)}this.watcher?.notify([{type:`delete`,path:r,entryType:t}]),this.mountIndex.notifyDelete(r);return}try{let e=await this.lfs.lstat(r);e.isSymbolicLink()?await this.lfs.unlink(r):e.isDirectory()?n?.recursive?await this.rmRecursive(r):await this.lfs.rmdir(r):await this.lfs.unlink(r)}catch(e){throw this.convertError(e,r)}this.watcher?.notify([{type:`delete`,path:r}])}async rmRecursive(e){let t=await this.lfs.readdir(e);for(let n of t){let t=e===`/`?`/${n}`:`${e}/${n}`;(await this.lfs.stat(t)).isDirectory()?await this.rmRecursive(t):await this.lfs.unlink(t)}await this.lfs.rmdir(e)}async stat(t){let n=Q(t),r=this.findMount(n);if(r){if(r.relParts.length===0)try{let e=await this.lfs.stat(n);return{type:`directory`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return{type:`directory`,size:0,mtime:Date.now(),ctime:Date.now()}}let t=r.relParts.join(`/`);try{let e=await r.backend.stat(t);return{type:e.kind===`directory`?`directory`:`file`,size:e.size,mtime:e.mtime,ctime:e.mtime}}catch(t){e.rebrandFsError(t,n)}}let i=await this.resolveSymlinks(n);try{let e=await this.lfs.stat(i);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch(e){throw this.convertError(e,n)}}async exists(e){let t=Q(e),n=this.findMount(t);if(n){if(n.relParts.length===0)return!0;try{return await this.stat(t),!0}catch{return!1}}try{return await this.stat(t),!0}catch{try{return await this.lfs.lstat(t),!0}catch{return!1}}}async rename(e,t){let n=Q(e),r=Q(t),i;try{i=(await this.lstat(n)).type}catch{}try{await this.lfs.rename(n,r)}catch(e){throw this.convertError(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:i},{type:`create`,path:r,entryType:i}]),this.mountIndex.notifyRename(n,r)}async readTextFile(e){return await this.readFile(e,{encoding:`utf-8`})}async*walk(e,t){let n=Q(e);if(this.mountPoints.size>0&&this.mountPoints.has(n)&&![...this.mountPoints.keys()].some(e=>e!==n&&e.startsWith(n+`/`))&&this.mountIndex.isReady(n)){let e=this.mountIndex.getFiles(n);if(e){for(let t of e)yield t;return}}let r=t??new Set,i;try{i=await this.realpath(n)}catch{i=n}if(r.has(i))return;r.add(i);let a=await this.readDir(n);for(let e of a){let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;if(e.type===`file`)yield t;else if(e.type===`symlink`)try{let e=await this.stat(t);e.type===`file`?yield t:e.type===`directory`&&(yield*this.walk(t,r))}catch{}else yield*this.walk(t,r)}}async copyFile(e,t){if((await this.stat(e)).type===`directory`)throw new R(`EISDIR`,`is a directory`,e);let n=await this.readFile(e,{encoding:`binary`});await this.writeFile(t,n)}dirname(e){return OI(Q(e)).dir}basename(e){return OI(Q(e)).base}async symlink(e,t){let n=Q(t);if(this.findMount(n))throw new R(`EINVAL`,`symlinks not supported on mounted filesystems`,n);let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.symlink(e,n)}catch(e){throw this.convertError(e,n)}this.watcher?.notify([{type:`create`,path:n,entryType:`symlink`}])}async readlink(e){let t=Q(e);try{return await this.lfs.readlink(t)}catch(e){throw this.convertError(e,t)}}async lstat(e){let t=Q(e);if(this.findMount(t))return this.stat(t);try{let e=await this.lfs.lstat(t);if(e.isSymbolicLink()){let n=await this.lfs.readlink(t);return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:n}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch(e){throw this.convertError(e,t)}}async realpath(e){let t=Q(e);if(this.findMount(t))return t;let n=0,r=t.split(`/`).filter(Boolean),i=`/`;for(let e=0;e<r.length;e++){let a=i===`/`?`/${r[e]}`:`${i}/${r[e]}`;for(;;){let o;try{o=await this.lfs.lstat(a)}catch(n){let o=this.convertError(n,t);if(o.code===`ENOENT`&&e===r.length-1)return i=a,i;throw o}if(!o.isSymbolicLink()){i=a;break}if(++n>MI)throw new R(`ELOOP`,`too many symbolic links encountered`,t);let s;try{s=await this.lfs.readlink(a)}catch(e){throw this.convertError(e,t)}a=s.startsWith(`/`)?Q(s):Q(AI(OI(a).dir,s))}}return i}async resolveSymlinks(e){return this.findMount(e)?e:this.realpath(e)}convertError(e,t){if(e instanceof R)return e;let n=e?.code;if(typeof n==`string`){let r=n;if([`ENOENT`,`EEXIST`,`ENOTDIR`,`EISDIR`,`ENOTEMPTY`,`EINVAL`,`EACCES`,`ELOOP`,`EBUSY`,`EFBIG`,`EBADF`,`EIO`].includes(r))return new R(r,(e instanceof Error?e.message:String(e))||r,t)}let r=e instanceof Error?e.message:String(e);return r.includes(`ENOENT`)?new R(`ENOENT`,`no such file or directory`,t):r.includes(`EEXIST`)?new R(`EEXIST`,`file already exists`,t):r.includes(`ENOTDIR`)?new R(`ENOTDIR`,`not a directory`,t):r.includes(`EISDIR`)?new R(`EISDIR`,`is a directory`,t):r.includes(`ENOTEMPTY`)?new R(`ENOTEMPTY`,`directory not empty`,t):r.includes(`ELOOP`)?new R(`ELOOP`,`too many levels of symbolic links`,t):new R(`EINVAL`,r,t)}},FI=s({FsError:()=>R,FsWatcher:()=>TI,MountIndex:()=>DI,RestrictedFS:()=>jI,VirtualFS:()=>PI,joinPath:()=>AI,normalizePath:()=>Q,pathSegments:()=>kI,resolveVfsBackendFromEnv:()=>NI,splitPath:()=>OI}),II=`.skill`,LI=1e3,RI=`/workspace/skills`,zI=`SKILL.md`,BI=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function VI(e){if(e===`__MACOSX`||e.startsWith(`__MACOSX/`))return!0;let t=e.includes(`/`)?e.slice(e.lastIndexOf(`/`)+1):e;return!!(t===`.DS_Store`||t===`Thumbs.db`||t===`desktop.ini`||t.startsWith(`._`))}var HI=class extends Error{};function UI(e){let t=e.replace(/\\/g,`/`);if(!t||t.endsWith(`/`))return null;if(t.startsWith(`/`)||/^[A-Za-z]:\//.test(t))throw Error(`Blocked suspicious path "${e}".`);let n=t.split(`/`);if(n.some(e=>e===``||e===`.`||e===`..`))throw Error(`Blocked suspicious path "${e}".`);return n.join(`/`)}function WI(e){if(!BI.test(e))throw Error(`Invalid skill: skill name "${e}" must be a simple directory name.`)}function GI(e){let t=[];for(let[n,r]of Object.entries(e)){let e=UI(n);e&&(VI(e)||t.push({originalPath:n,path:e,bytes:r}))}return t}function KI(e){let t=e.filter(e=>e.path===`SKILL.md`||e.path.endsWith(`/SKILL.md`));if(t.length===0)throw Error(`Skill archive is missing ${zI}.`);if(t.length>1)throw Error(`Skill archive contains multiple ${zI} files.`);return t[0]}function qI(e){let t=0,n=0;return xI(e,{filter(e){if(t++,t>1e3)throw new HI(`Skill archives may contain at most ${LI} entries.`);if(n+=e.originalSize,n>52428800)throw new HI(`Skill archives must expand to 50 MB or smaller after extraction.`);return!0}})}function JI(e){return AI(RI,`.${e}.tmp-${`${Date.now()}-${Math.random().toString(16).slice(2,8)}`}`)}function YI(e,t){return t===`SKILL.md`?e.replace(/\.skill$/i,``):t.slice(0,-9).split(`/`).pop()??``}async function XI(e,t){if(!t.name.toLowerCase().endsWith(`.skill`))throw Error(`Only ${II} archives can be installed with drag and drop.`);if(t.size>52428800)throw Error(`Skill archives must be 50 MB or smaller.`);let n;try{n=qI(new Uint8Array(await t.arrayBuffer()))}catch(e){if(e instanceof HI)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Invalid .skill archive: ${t}`)}let r=GI(n),i=KI(r),a=YI(t.name,i.path);WI(a);let o=AI(RI,a);if(await e.exists(o))throw Error(`Skill "${a}" already exists at ${o}.`);let s=JI(a),c=i.path===`SKILL.md`?``:i.path.slice(0,-(zI.length+1));await e.mkdir(s,{recursive:!0});try{let t=0;for(let n of r){if(c&&(n.path===c||!n.path.startsWith(`${c}/`)))continue;let r=c?n.path.slice(c.length+1):n.path;if(!r)continue;let i=AI(s,r),{dir:a}=OI(i);a!==`/`&&await e.mkdir(a,{recursive:!0}),await e.writeFile(i,n.bytes),t++}return await e.rename(s,o),{skillName:a,destinationPath:o,fileCount:t}}catch(t){throw await e.exists(s)&&await e.rm(s,{recursive:!0}),t}}var ZI=`/tmp`;function QI(e){let t=e.replace(/[\\/:]+/g,`_`).replace(/[^A-Za-z0-9._-]/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``);return t.length>0?t:`attachment`}function $I(){let e=globalThis.crypto!==void 0&&typeof globalThis.crypto.getRandomValues==`function`?globalThis.crypto:null;if(e){let t=new Uint8Array(4);return e.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}return Math.random().toString(36).slice(2,10)}function eL(e,t,n,r=$I()){let i=QI(e);return`${ZI}/attachment-${t.toString(36)}-${n.toString(36)}-${r}-${i}`}function tL(e){let t=0;return async n=>{let r=new Uint8Array(await n.arrayBuffer());t+=1;let i=eL(n.name,Date.now(),t);return await e.mkdir(ZI,{recursive:!0}).catch(()=>{}),await e.writeFile(i,r),i}}function nL(e,t){try{window.close()}catch{}e.setLocked(!0),t.showDetachedActiveOverlay()}var rL=`slicc-theme`,iL=new Set([`dark`,`light`,`system`]);function aL(){let e=localStorage.getItem(rL);return e&&iL.has(e)?e:`system`}function oL(){return document.documentElement.classList.contains(`theme-light`)}var sL=new Set;function cL(e){e&&sL.add(e)}function lL(e){e&&sL.delete(e)}function uL(){let e=oL();for(let t of sL)try{t.postMessage({type:`slicc-theme`,isLight:e},`*`)}catch{sL.delete(t)}}function dL(){let e=aL(),t=e===`light`;e===`system`&&(t=window.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1),document.documentElement.classList.toggle(`theme-light`,t),uL()}var fL,pL;function mL(){dL(),fL=window.matchMedia?.(`(prefers-color-scheme: light)`),fL?.addEventListener?.(`change`,()=>{aL()===`system`&&dL()}),typeof MutationObserver<`u`&&!pL&&(pL=new MutationObserver(()=>uL()),pL.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}))}var hL=typeof chrome<`u`&&!!chrome?.runtime?.id,gL=/<script\b([^>]*)\bsrc\s*=\s*["'](https?:\/\/[^"']+)["']([^>]*)><\/script>/gi;async function _L(e){let t=[],n;for(;(n=gL.exec(e))!==null;)t.push({full:n[0],url:n[2],index:n.index});if(gL.lastIndex=0,t.length===0)return e;let r=await Promise.all(t.map(async e=>{try{let t=await fetch(e.url);if(!t.ok)throw Error(`HTTP ${t.status}`);return{...e,text:await t.text()}}catch(t){let n=t instanceof Error?t.message:String(t);return{...e,text:`console.error('[sprinkle] Failed to load ${e.url}: ${n}')`}}})),i=e;for(let e=r.length-1;e>=0;e--){let{full:t,text:n}=r[e],a=n.replace(/<\/script/gi,`<\\/script`);i=i.replace(t,()=>`<script>${a}<\/script>`)}return i}function vL(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}var yL=class e{container;bridge;scripts=[];iframe=null;static cachedLucideScript=null;static lucideScriptPromise=null;messageHandler=null;constructor(e,t){this.container=e,this.bridge=t}async render(e,t){this.dispose(),hL?await this.renderInSandbox(e,t,vL(e)):vL(e)?await this.renderFullDoc(e,t):this.renderInline(e,t)}async renderInSandbox(e,t,n=!1){let r=document.createElement(`iframe`);r.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),r.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,this.iframe=r,console.log(`[sprinkle-renderer] creating sandbox iframe`,r.src),await new Promise((e,t)=>{let n=setTimeout(()=>{console.error(`[sprinkle-renderer] iframe load timed out after 5s`),t(Error(`sprinkle sandbox iframe load timed out`))},5e3);r.addEventListener(`load`,()=>{clearTimeout(n),console.log(`[sprinkle-renderer] iframe loaded, contentWindow:`,!!r.contentWindow),cL(r.contentWindow),e()},{once:!0}),r.addEventListener(`error`,e=>{clearTimeout(n),console.error(`[sprinkle-renderer] iframe error:`,e),t(Error(`sprinkle sandbox iframe failed to load`))},{once:!0}),this.container.appendChild(r)}),this.messageHandler=e=>{if(e.source!==r.contentWindow)return;let n=e.data;if(n?.type){if(n.type===`sprinkle-lick`)this.bridge.lick({action:n.action,data:n.data});else if(n.type===`sprinkle-set-state`)this.bridge.setState(n.data);else if(n.type===`sprinkle-close`)this.bridge.close();else if(n.type===`sprinkle-minimize`)this.bridge.minimize();else if(n.type===`sprinkle-stop-cone`)this.bridge.stopCone();else if(n.type===`sprinkle-storage-set`)try{localStorage.setItem(`slicc-sprinkle-ls:${t}:${n.key}`,n.value)}catch(e){console.warn(`[sprinkle-renderer] localStorage setItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-remove`)try{localStorage.removeItem(`slicc-sprinkle-ls:${t}:${n.key}`)}catch(e){console.warn(`[sprinkle-renderer] localStorage removeItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-clear`){let e=`slicc-sprinkle-ls:${t}:`;for(let t=localStorage.length-1;t>=0;t--){let n=localStorage.key(t);n?.startsWith(e)&&localStorage.removeItem(n)}}else if(n.type===`sprinkle-attach-image`)this.bridge.attachImage(n.base64,n.name,n.mimeType);else if(n.type===`sprinkle-open`)this.bridge.open(n.path,n.projectRoot?{projectRoot:n.projectRoot}:void 0);else if(n.type===`sprinkle-readfile`)this.bridge.readFile(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,content:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-writefile`)this.bridge.writeFile(n.path,n.content).then(()=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-readdir`)this.bridge.readDir(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,entries:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-exists`)this.bridge.exists(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,exists:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-stat`)this.bridge.stat(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,stat:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-mkdir`)this.bridge.mkdir(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-rm`)this.bridge.rm(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-capture-screen`)this.bridge.captureScreen().then(e=>r.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-fetch-script`){let e=n.url,t=n.id;fetch(e).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,text:n},`*`)}).catch(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,error:n instanceof Error?n.message:String(n)},`*`)})}}},window.addEventListener(`message`,this.messageHandler);let i=this.collectThemeCSS(),a={},o=`slicc-sprinkle-ls:${t}:`;for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t?.startsWith(o)&&(a[t.slice(o.length)]=localStorage.getItem(t)??``)}let s=this.bridge.getState(),c=``,l=``;if(n){let t=[];e.includes(`<slicc-editor`)&&t.push(fetch(chrome.runtime.getURL(`slicc-editor.js`)).then(e=>e.ok?e.text():``).then(e=>{c=e}).catch(()=>{})),e.includes(`<slicc-diff`)&&t.push(fetch(chrome.runtime.getURL(`slicc-diff.js`)).then(e=>e.ok?e.text():``).then(e=>{l=e}).catch(()=>{})),await Promise.all(t)}let u=await this.getLucideScript(),d=n?await _L(e):e;r.contentWindow.postMessage({type:`sprinkle-render`,content:d,name:t,themeCSS:i,savedState:s,savedStorage:a,fullDoc:n,editorScript:c,diffScript:l,lucideScript:u,isLight:oL()},`*`)}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}collectThemeCSS(){return xL()}generateBridgeScript(){return`(function() {
|
|
639
|
+
option is given.`]]]).keys()].sort(),fj(),JP(),sA(),fj(),JP(),jj(),qj(),PM(),jj(),jj(),Hj(),kS(),kS(),jj(),kS(),fj(),kS(),sA(),fj(),JP(),$j(),LP(),qj(),PM(),cw(),kS(),AS(),JP(),kS(),LP(),kS(),AS(),kS(),AS(),kS(),LP(),fj(),LP(),bS(),_O(),kS(),sA(),fj(),JP(),kS(),LP(),jj(),qj(),PM(),fj(),kS(),LP(),AS(),YP(),_S(),vS(),xk(),fj(),_S(),new TextDecoder(`utf-8`,{fatal:!0}),bS();var XP={state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null};function ZP(){return{...XP}}var QP=new Set;function $P(){if(QP.size!==0)for(let e of[...QP])try{e({...XP})}catch{}}function eF(e){XP={...e},$P()}function tF(e){XP={...XP,lastPingTime:e},$P()}var nF=s({OFFSCREEN_SET_TRAY_RUNTIME_HOOK:()=>iF,leaveTray:()=>oF,resolveAmbientLeaveTrayTransport:()=>aF}),rF=Wv(`scoops.tray-leave`),iF=`__slicc_setTrayRuntime`;function aF(){let e=globalThis.localStorage,t=e&&typeof e.setItem==`function`&&typeof e.removeItem==`function`?e:null,n=globalThis[iF];if(typeof n==`function`)return{wire:{kind:`offscreen-hook`,setTrayRuntime:n},storage:t};let r=globalThis.chrome;if(r?.runtime?.id&&typeof r.runtime.sendMessage==`function`){let e=r.runtime.sendMessage;return{wire:{kind:`extension-panel`,sendMessage:t=>e(t)},storage:t}}return typeof window<`u`&&typeof window.dispatchEvent==`function`?{wire:{kind:`standalone-page`,dispatchEvent:e=>window.dispatchEvent(e)},storage:t}:{wire:null,storage:t}}async function oF(e={},t=aF()){let n=e.workerBaseUrl??null;if(t.storage)try{t.storage.removeItem(yb),n===null?t.storage.removeItem(vb):t.storage.setItem(vb,n)}catch(t){rF.error(`tray-leave storage write failed`,{workerBaseUrl:n,requestId:e.requestId,error:t instanceof Error?t.message:String(t)})}if(!t.wire)throw Error(`leaveTray: no transport available — inject a panelRpcClient (worker) or run in a context with chrome.runtime or window`);switch(t.wire.kind){case`offscreen-hook`:await t.wire.setTrayRuntime(null,n);return;case`extension-panel`:await t.wire.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:null,workerBaseUrl:n}});return;case`standalone-worker`:await t.wire.panelRpcClient.call(`tray-leave`,{workerBaseUrl:n,requestId:e.requestId});return;case`standalone-page`:t.wire.dispatchEvent(new CustomEvent(`slicc:tray-leave`,{detail:{workerBaseUrl:n,requestId:e.requestId}}));return}}var sF=null;function cF(e){sF=e}function lF(){return sF??void 0}var uF=Uint8Array,dF=Uint16Array,fF=Int32Array,pF=new uF([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),mF=new uF([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),hF=new uF([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),gF=function(e,t){for(var n=new dF(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];for(var i=new fF(n[30]),r=1;r<30;++r)for(var a=n[r];a<n[r+1];++a)i[a]=a-n[r]<<5|r;return{b:n,r:i}},_F=gF(pF,2),vF=_F.b,yF=_F.r;vF[28]=258,yF[258]=28;for(var bF=gF(mF,0),xF=bF.b,SF=bF.r,CF=new dF(32768),wF=0;wF<32768;++wF){var TF=(wF&43690)>>1|(wF&21845)<<1;TF=(TF&52428)>>2|(TF&13107)<<2,TF=(TF&61680)>>4|(TF&3855)<<4,CF[wF]=((TF&65280)>>8|(TF&255)<<8)>>1}for(var EF=(function(e,t,n){for(var r=e.length,i=0,a=new dF(t);i<r;++i)e[i]&&++a[e[i]-1];var o=new dF(t);for(i=1;i<t;++i)o[i]=o[i-1]+a[i-1]<<1;var s;if(n){s=new dF(1<<t);var c=15-t;for(i=0;i<r;++i)if(e[i])for(var l=i<<4|e[i],u=t-e[i],d=o[e[i]-1]++<<u,f=d|(1<<u)-1;d<=f;++d)s[CF[d]>>c]=l}else for(s=new dF(r),i=0;i<r;++i)e[i]&&(s[i]=CF[o[e[i]-1]++]>>15-e[i]);return s}),DF=new uF(288),wF=0;wF<144;++wF)DF[wF]=8;for(var wF=144;wF<256;++wF)DF[wF]=9;for(var wF=256;wF<280;++wF)DF[wF]=7;for(var wF=280;wF<288;++wF)DF[wF]=8;for(var OF=new uF(32),wF=0;wF<32;++wF)OF[wF]=5;var kF=EF(DF,9,0),AF=EF(DF,9,1),jF=EF(OF,5,0),MF=EF(OF,5,1),NF=function(e){for(var t=e[0],n=1;n<e.length;++n)e[n]>t&&(t=e[n]);return t},PF=function(e,t,n){var r=t/8|0;return(e[r]|e[r+1]<<8)>>(t&7)&n},FF=function(e,t){var n=t/8|0;return(e[n]|e[n+1]<<8|e[n+2]<<16)>>(t&7)},IF=function(e){return(e+7)/8|0},LF=function(e,t,n){return(t==null||t<0)&&(t=0),(n==null||n>e.length)&&(n=e.length),new uF(e.subarray(t,n))},RF=[`unexpected EOF`,`invalid block type`,`invalid length/literal`,`invalid distance`,`stream finished`,`no stream handler`,,`no callback`,`invalid UTF-8 data`,`extra field too long`,`date not in range 1980-2099`,`filename too long`,`stream finishing`,`invalid zip data`],zF=function(e,t,n){var r=Error(t||RF[e]);if(r.code=e,Error.captureStackTrace&&Error.captureStackTrace(r,zF),!n)throw r;return r},BF=function(e,t,n,r){var i=e.length,a=r?r.length:0;if(!i||t.f&&!t.l)return n||new uF(0);var o=!n,s=o||t.i!=2,c=t.i;o&&(n=new uF(i*3));var l=function(e){var t=n.length;if(e>t){var r=new uF(Math.max(t*2,e));r.set(n),n=r}},u=t.f||0,d=t.p||0,f=t.b||0,p=t.l,m=t.d,h=t.m,g=t.n,_=i*8;do{if(!p){u=PF(e,d,1);var v=PF(e,d+1,3);if(d+=3,!v){var ee=IF(d)+4,y=e[ee-4]|e[ee-3]<<8,b=ee+y;if(b>i){c&&zF(0);break}s&&l(f+y),n.set(e.subarray(ee,b),f),t.b=f+=y,t.p=d=b*8,t.f=u;continue}else if(v==1)p=AF,m=MF,h=9,g=5;else if(v==2){var te=PF(e,d,31)+257,ne=PF(e,d+10,15)+4,re=te+PF(e,d+5,31)+1;d+=14;for(var x=new uF(re),ie=new uF(19),S=0;S<ne;++S)ie[hF[S]]=PF(e,d+S*3,7);d+=ne*3;for(var C=NF(ie),ae=(1<<C)-1,oe=EF(ie,C,1),S=0;S<re;){var se=oe[PF(e,d,ae)];d+=se&15;var ee=se>>4;if(ee<16)x[S++]=ee;else{var ce=0,w=0;for(ee==16?(w=3+PF(e,d,3),d+=2,ce=x[S-1]):ee==17?(w=3+PF(e,d,7),d+=3):ee==18&&(w=11+PF(e,d,127),d+=7);w--;)x[S++]=ce}}var T=x.subarray(0,te),E=x.subarray(te);h=NF(T),g=NF(E),p=EF(T,h,1),m=EF(E,g,1)}else zF(1);if(d>_){c&&zF(0);break}}s&&l(f+131072);for(var D=(1<<h)-1,O=(1<<g)-1,le=d;;le=d){var ce=p[FF(e,d)&D],k=ce>>4;if(d+=ce&15,d>_){c&&zF(0);break}if(ce||zF(2),k<256)n[f++]=k;else if(k==256){le=d,p=null;break}else{var A=k-254;if(k>264){var S=k-257,j=pF[S];A=PF(e,d,(1<<j)-1)+vF[S],d+=j}var ue=m[FF(e,d)&O],de=ue>>4;ue||zF(3),d+=ue&15;var E=xF[de];if(de>3){var j=mF[de];E+=FF(e,d)&(1<<j)-1,d+=j}if(d>_){c&&zF(0);break}s&&l(f+131072);var fe=f+A;if(f<E){var pe=a-E,me=Math.min(E,fe);for(pe+f<0&&zF(3);f<me;++f)n[f]=r[pe+f]}for(;f<fe;++f)n[f]=n[f-E]}}t.l=p,t.p=le,t.b=f,t.f=u,p&&(u=1,t.m=h,t.d=m,t.n=g)}while(!u);return f!=n.length&&o?LF(n,0,f):n.subarray(0,f)},VF=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8},HF=function(e,t,n){n<<=t&7;var r=t/8|0;e[r]|=n,e[r+1]|=n>>8,e[r+2]|=n>>16},UF=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,a=n.slice();if(!i)return{t:XF,l:0};if(i==1){var o=new uF(n[0].s+1);return o[n[0].s]=1,{t:o,l:1}}n.sort(function(e,t){return e.f-t.f}),n.push({s:-1,f:25001});var s=n[0],c=n[1],l=0,u=1,d=2;for(n[0]={s:-1,f:s.f+c.f,l:s,r:c};u!=i-1;)s=n[n[l].f<n[d].f?l++:d++],c=n[l!=u&&n[l].f<n[d].f?l++:d++],n[u++]={s:-1,f:s.f+c.f,l:s,r:c};for(var f=a[0].s,r=1;r<i;++r)a[r].s>f&&(f=a[r].s);var p=new dF(f+1),m=WF(n[u-1],p,0);if(m>t){var r=0,h=0,g=m-t,_=1<<g;for(a.sort(function(e,t){return p[t.s]-p[e.s]||e.f-t.f});r<i;++r){var v=a[r].s;if(p[v]>t)h+=_-(1<<m-p[v]),p[v]=t;else break}for(h>>=g;h>0;){var ee=a[r].s;p[ee]<t?h-=1<<t-p[ee]++-1:++r}for(;r>=0&&h;--r){var y=a[r].s;p[y]==t&&(--p[y],++h)}m=t}return{t:new uF(p),l:m}},WF=function(e,t,n){return e.s==-1?Math.max(WF(e.l,t,n+1),WF(e.r,t,n+1)):t[e.s]=n},GF=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new dF(++t),r=0,i=e[0],a=1,o=function(e){n[r++]=e},s=1;s<=t;++s)if(e[s]==i&&s!=t)++a;else{if(!i&&a>2){for(;a>138;a-=138)o(32754);a>2&&(o(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(o(i),--a;a>6;a-=6)o(8304);a>2&&(o(a-3<<5|8208),a=0)}for(;a--;)o(i);a=1,i=e[s]}return{c:n.subarray(0,r),n:t}},KF=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},qF=function(e,t,n){var r=n.length,i=IF(t+2);e[i]=r&255,e[i+1]=r>>8,e[i+2]=e[i]^255,e[i+3]=e[i+1]^255;for(var a=0;a<r;++a)e[i+a+4]=n[a];return(i+4+r)*8},JF=function(e,t,n,r,i,a,o,s,c,l,u){VF(t,u++,n),++i[256];for(var d=UF(i,15),f=d.t,p=d.l,m=UF(a,15),h=m.t,g=m.l,_=GF(f),v=_.c,ee=_.n,y=GF(h),b=y.c,te=y.n,ne=new dF(19),re=0;re<v.length;++re)++ne[v[re]&31];for(var re=0;re<b.length;++re)++ne[b[re]&31];for(var x=UF(ne,7),ie=x.t,S=x.l,C=19;C>4&&!ie[hF[C-1]];--C);var ae=l+5<<3,oe=KF(i,DF)+KF(a,OF)+o,se=KF(i,f)+KF(a,h)+o+14+3*C+KF(ne,ie)+2*ne[16]+3*ne[17]+7*ne[18];if(c>=0&&ae<=oe&&ae<=se)return qF(t,u,e.subarray(c,c+l));var ce,w,T,E;if(VF(t,u,1+(se<oe)),u+=2,se<oe){ce=EF(f,p,0),w=f,T=EF(h,g,0),E=h;var D=EF(ie,S,0);VF(t,u,ee-257),VF(t,u+5,te-1),VF(t,u+10,C-4),u+=14;for(var re=0;re<C;++re)VF(t,u+3*re,ie[hF[re]]);u+=3*C;for(var O=[v,b],le=0;le<2;++le)for(var k=O[le],re=0;re<k.length;++re){var A=k[re]&31;VF(t,u,D[A]),u+=ie[A],A>15&&(VF(t,u,k[re]>>5&127),u+=k[re]>>12)}}else ce=kF,w=DF,T=jF,E=OF;for(var re=0;re<s;++re){var j=r[re];if(j>255){var A=j>>18&31;HF(t,u,ce[A+257]),u+=w[A+257],A>7&&(VF(t,u,j>>23&31),u+=pF[A]);var ue=j&31;HF(t,u,T[ue]),u+=E[ue],ue>3&&(HF(t,u,j>>5&8191),u+=mF[ue])}else HF(t,u,ce[j]),u+=w[j]}return HF(t,u,ce[256]),u+w[256]},YF=new fF([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),XF=new uF(0),ZF=function(e,t,n,r,i,a){var o=a.z||e.length,s=new uF(r+o+5*(1+Math.ceil(o/7e3))+i),c=s.subarray(r,s.length-i),l=a.l,u=(a.r||0)&7;if(t){u&&(c[0]=a.r>>3);for(var d=YF[t-1],f=d>>13,p=d&8191,m=(1<<n)-1,h=a.p||new dF(32768),g=a.h||new dF(m+1),_=Math.ceil(n/3),v=2*_,ee=function(t){return(e[t]^e[t+1]<<_^e[t+2]<<v)&m},y=new fF(25e3),b=new dF(288),te=new dF(32),ne=0,re=0,x=a.i||0,ie=0,S=a.w||0,C=0;x+2<o;++x){var ae=ee(x),oe=x&32767,se=g[ae];if(h[oe]=se,g[ae]=oe,S<=x){var ce=o-x;if((ne>7e3||ie>24576)&&(ce>423||!l)){u=JF(e,c,0,y,b,te,re,ie,C,x-C,u),ie=ne=re=0,C=x;for(var w=0;w<286;++w)b[w]=0;for(var w=0;w<30;++w)te[w]=0}var T=2,E=0,D=p,O=oe-se&32767;if(ce>2&&ae==ee(x-O))for(var le=Math.min(f,ce)-1,k=Math.min(32767,x),A=Math.min(258,ce);O<=k&&--D&&oe!=se;){if(e[x+T]==e[x+T-O]){for(var j=0;j<A&&e[x+j]==e[x+j-O];++j);if(j>T){if(T=j,E=O,j>le)break;for(var ue=Math.min(O,j-2),de=0,w=0;w<ue;++w){var fe=x-O+w&32767,pe=fe-h[fe]&32767;pe>de&&(de=pe,se=fe)}}}oe=se,se=h[oe],O+=oe-se&32767}if(E){y[ie++]=268435456|yF[T]<<18|SF[E];var me=yF[T]&31,he=SF[E]&31;re+=pF[me]+mF[he],++b[257+me],++te[he],S=x+T,++ne}else y[ie++]=e[x],++b[e[x]]}}for(x=Math.max(x,S);x<o;++x)y[ie++]=e[x],++b[e[x]];u=JF(e,c,l,y,b,te,re,ie,C,x-C,u),l||(a.r=u&7|c[u/8|0]<<3,u-=7,a.h=g,a.p=h,a.i=x,a.w=S)}else{for(var x=a.w||0;x<o+l;x+=65535){var ge=x+65535;ge>=o&&(c[u/8|0]=l,ge=o),u=qF(c,u+1,e.subarray(x,ge))}a.i=o}return LF(s,0,r+IF(u)+i)},QF=(function(){for(var e=new Int32Array(256),t=0;t<256;++t){for(var n=t,r=9;--r;)n=(n&1&&-306674912)^n>>>1;e[t]=n}return e})(),$F=function(){var e=-1;return{p:function(t){for(var n=e,r=0;r<t.length;++r)n=QF[n&255^t[r]]^n>>>8;e=n},d:function(){return~e}}},eI=function(e,t,n,r,i){if(!i&&(i={l:1},t.dictionary)){var a=t.dictionary.subarray(-32768),o=new uF(a.length+e.length);o.set(a),o.set(e,a.length),e=o,i.w=a.length}return ZF(e,t.level==null?6:t.level,t.mem==null?i.l?Math.ceil(Math.max(8,Math.min(13,Math.log(e.length)))*1.5):20:12+t.mem,n,r,i)},tI=function(e,t){var n={};for(var r in e)n[r]=e[r];for(var r in t)n[r]=t[r];return n},nI=function(e,t){return e[t]|e[t+1]<<8},rI=function(e,t){return(e[t]|e[t+1]<<8|e[t+2]<<16|e[t+3]<<24)>>>0},iI=function(e,t){return rI(e,t)+rI(e,t+4)*4294967296},aI=function(e,t,n){for(;n;++t)e[t]=n,n>>>=8};function oI(e,t){return eI(e,t||{},0,0)}function sI(e,t){return BF(e,{i:2},t&&t.out,t&&t.dictionary)}var cI=function(e,t,n,r){for(var i in e){var a=e[i],o=t+i,s=r;Array.isArray(a)&&(s=tI(r,a[1]),a=a[0]),a instanceof uF?n[o]=[a,s]:(n[o+=`/`]=[new uF(0),s],cI(a,o,n,r))}},lI=typeof TextEncoder<`u`&&new TextEncoder,uI=typeof TextDecoder<`u`&&new TextDecoder;try{uI.decode(XF,{stream:!0})}catch{}var dI=function(e){for(var t=``,n=0;;){var r=e[n++],i=(r>127)+(r>223)+(r>239);if(n+i>e.length)return{s:t,r:LF(e,n-1)};i?i==3?(r=((r&15)<<18|(e[n++]&63)<<12|(e[n++]&63)<<6|e[n++]&63)-65536,t+=String.fromCharCode(55296|r>>10,56320|r&1023)):i&1?t+=String.fromCharCode((r&31)<<6|e[n++]&63):t+=String.fromCharCode((r&15)<<12|(e[n++]&63)<<6|e[n++]&63):t+=String.fromCharCode(r)}};function fI(e,t){if(t){for(var n=new uF(e.length),r=0;r<e.length;++r)n[r]=e.charCodeAt(r);return n}if(lI)return lI.encode(e);for(var i=e.length,a=new uF(e.length+(e.length>>1)),o=0,s=function(e){a[o++]=e},r=0;r<i;++r){if(o+5>a.length){var c=new uF(o+8+(i-r<<1));c.set(a),a=c}var l=e.charCodeAt(r);l<128||t?s(l):l<2048?(s(192|l>>6),s(128|l&63)):l>55295&&l<57344?(l=65536+(l&1047552)|e.charCodeAt(++r)&1023,s(240|l>>18),s(128|l>>12&63),s(128|l>>6&63),s(128|l&63)):(s(224|l>>12),s(128|l>>6&63),s(128|l&63))}return LF(a,0,o)}function pI(e,t){if(t){for(var n=``,r=0;r<e.length;r+=16384)n+=String.fromCharCode.apply(null,e.subarray(r,r+16384));return n}else if(uI)return uI.decode(e);else{var i=dI(e),a=i.s,n=i.r;return n.length&&zF(8),a}}var mI=function(e,t){return t+30+nI(e,t+26)+nI(e,t+28)},hI=function(e,t,n){var r=nI(e,t+28),i=pI(e.subarray(t+46,t+46+r),!(nI(e,t+8)&2048)),a=t+46+r,o=rI(e,t+20),s=n&&o==4294967295?gI(e,a):[o,rI(e,t+24),rI(e,t+42)],c=s[0],l=s[1],u=s[2];return[nI(e,t+10),c,l,i,a+nI(e,t+30)+nI(e,t+32),u]},gI=function(e,t){for(;nI(e,t)!=1;t+=4+nI(e,t+2));return[iI(e,t+12),iI(e,t+4),iI(e,t+20)]},_I=function(e){var t=0;if(e)for(var n in e){var r=e[n].length;r>65535&&zF(9),t+=r+4}return t},vI=function(e,t,n,r,i,a,o,s){var c=r.length,l=n.extra,u=s&&s.length,d=_I(l);aI(e,t,o==null?67324752:33639248),t+=4,o!=null&&(e[t++]=20,e[t++]=n.os),e[t]=20,t+=2,e[t++]=n.flag<<1|(a<0&&8),e[t++]=i&&8,e[t++]=n.compression&255,e[t++]=n.compression>>8;var f=new Date(n.mtime==null?Date.now():n.mtime),p=f.getFullYear()-1980;if((p<0||p>119)&&zF(10),aI(e,t,p<<25|f.getMonth()+1<<21|f.getDate()<<16|f.getHours()<<11|f.getMinutes()<<5|f.getSeconds()>>1),t+=4,a!=-1&&(aI(e,t,n.crc),aI(e,t+4,a<0?-a-2:a),aI(e,t+8,n.size)),aI(e,t+12,c),aI(e,t+14,d),t+=16,o!=null&&(aI(e,t,u),aI(e,t+6,n.attrs),aI(e,t+10,o),t+=14),e.set(r,t),t+=c,d)for(var m in l){var h=l[m],g=h.length;aI(e,t,+m),aI(e,t+2,g),e.set(h,t+4),t+=4+g}return u&&(e.set(s,t),t+=u),t},yI=function(e,t,n,r,i){aI(e,t,101010256),aI(e,t+8,n),aI(e,t+10,n),aI(e,t+12,r),aI(e,t+16,i)};function bI(e,t){t||={};var n={},r=[];cI(e,``,n,t);var i=0,a=0;for(var o in n){var s=n[o],c=s[0],l=s[1],u=l.level==0?0:8,d=fI(o),f=d.length,p=l.comment,m=p&&fI(p),h=m&&m.length,g=_I(l.extra);f>65535&&zF(11);var _=u?oI(c,l):c,v=_.length,ee=$F();ee.p(c),r.push(tI(l,{size:c.length,crc:ee.d(),c:_,f:d,m,u:f!=o.length||m&&p.length!=h,o:i,compression:u})),i+=30+f+g+v,a+=76+2*(f+g)+(h||0)+v}for(var y=new uF(a+22),b=i,te=a-i,ne=0;ne<r.length;++ne){var d=r[ne];vI(y,d.o,d,d.f,d.u,d.c.length);var re=30+d.f.length+_I(d.extra);y.set(d.c,d.o+re),vI(y,i,d,d.f,d.u,d.c.length,d.o,d.m),i+=16+re+(d.m?d.m.length:0)}return yI(y,i,r.length,te,b),y}function xI(e,t){for(var n={},r=e.length-22;rI(e,r)!=101010256;--r)(!r||e.length-r>65558)&&zF(13);var i=nI(e,r+8);if(!i)return{};var a=rI(e,r+16),o=a==4294967295||i==65535;if(o){var s=rI(e,r-12);o=rI(e,s)==101075792,o&&(i=rI(e,s+32),a=rI(e,s+48))}for(var c=t&&t.filter,l=0;l<i;++l){var u=hI(e,a,o),d=u[0],f=u[1],p=u[2],m=u[3],h=u[4],g=u[5],_=mI(e,g);a=h,(!c||c({name:m,size:f,originalSize:p,compression:d}))&&(d?d==8?n[m]=sI(e.subarray(_,_+f),{out:new uF(p)}):zF(14,`unknown compression type `+d):n[m]=LF(e,_,_+f))}return n}var SI=Wv(`fs-watcher`),CI=0;function wI(e,t){return t===`/`||e===t||e.startsWith(t+`/`)}var TI=class{registrations=new Map;watch(e,t,n){let r=`fsw-${++CI}`;return this.registrations.set(r,{id:r,basePath:e,filter:t,callback:n}),SI.debug(`Watch registered`,{id:r,basePath:e}),()=>{this.registrations.delete(r),SI.debug(`Watch unregistered`,{id:r})}}notify(e){if(e.length!==0)for(let[,t]of this.registrations){let n=e.filter(e=>wI(e.path,t.basePath)&&t.filter(e.path));if(n.length>0)try{t.callback(n)}catch(e){SI.error(`Watch callback error`,{id:t.id,error:e instanceof Error?e.message:String(e)})}}}dispose(){this.registrations.clear(),SI.debug(`All watchers disposed`)}get size(){return this.registrations.size}},EI=Wv(`mount-index`),DI=class{mounts=new Map;listeners=new Set;registerMount(e,t){this.mounts.get(e)?.abortController?.abort();let n=new AbortController,r={handle:t,state:{status:`pending`,indexed:0},files:new Set,directories:new Set,abortController:n};this.mounts.set(e,r),this.notifyListeners(),this.indexMount(e,r,n.signal)}unregisterMount(e){let t=this.mounts.get(e);t&&(t.abortController?.abort(),this.mounts.delete(e),this.notifyListeners())}async refreshMount(e){let t=this.mounts.get(e);if(!t)throw Error(`No mount at ${e}`);t.abortController?.abort();let n=new AbortController;t.abortController=n,t.state={status:`pending`,indexed:0},t.files.clear(),t.directories.clear(),this.notifyListeners(),await this.indexMount(e,t,n.signal)}isReady(e){return this.mounts.get(e)?.state.status===`ready`}isAnyIndexing(){for(let e of this.mounts.values())if(e.state.status===`indexing`||e.state.status===`pending`)return!0;return!1}dispose(){for(let e of this.mounts.values())e.abortController?.abort();this.mounts.clear(),this.listeners.clear()}getState(e){return this.mounts.get(e)?.state}getFiles(e,t){let n=this.mounts.get(e);if(n?.state.status!==`ready`)return;if(!t)return[...n.files];let r=[];for(let e of n.files)t(e)&&r.push(e);return r}getDirectoryEntries(e,t){let n=this.mounts.get(e);if(n?.state.status!==`ready`)return;let r=t===`/`?`/`:t+`/`,i=new Map;for(let e of n.files){if(!e.startsWith(r))continue;let t=e.slice(r.length);t.includes(`/`)||i.set(t,`file`)}for(let e of n.directories){if(!e.startsWith(r))continue;let t=e.slice(r.length);t.includes(`/`)||i.set(t,`directory`)}return[...i.entries()].map(([e,t])=>({name:e,type:t}))}hasPath(e,t){let n=this.mounts.get(e);if(n?.state.status===`ready`)return n.files.has(t)||n.directories.has(t)}notifyWrite(e){let t=this.findMountForPath(e);if(!t)return;let n=this.mounts.get(t);if(n?.state.status!==`ready`)return;n.files.add(e);let r=e;for(;r!==t;){let e=r.lastIndexOf(`/`);if(e<=0)break;r=r.slice(0,e)||`/`,r.length>=t.length&&n.directories.add(r)}}notifyDelete(e){let t=this.findMountForPath(e);if(!t)return;let n=this.mounts.get(t);if(n?.state.status!==`ready`)return;n.files.delete(e),n.directories.delete(e);let r=e+`/`;for(let e of n.files)e.startsWith(r)&&n.files.delete(e);for(let e of n.directories)e.startsWith(r)&&n.directories.delete(e)}notifyRename(e,t){let n=this.findMountForPath(e);if(!n)return;let r=this.mounts.get(n);if(r?.state.status===`ready`){if(r.files.has(e)){r.files.delete(e),r.files.add(t);return}if(r.directories.has(e)){r.directories.delete(e),r.directories.add(t);let n=e+`/`,i=t+`/`;for(let e of[...r.files])e.startsWith(n)&&(r.files.delete(e),r.files.add(i+e.slice(n.length)));for(let e of[...r.directories])e.startsWith(n)&&(r.directories.delete(e),r.directories.add(i+e.slice(n.length)))}}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}findMountForPath(e){let t;for(let n of this.mounts.keys())(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.length)&&(t=n);return t}notifyListeners(){for(let e of this.listeners)try{e()}catch{}}async indexMount(e,t,n){t.state={status:`indexing`,indexed:0},this.notifyListeners();try{if(await this.walkHandle(e,t.handle,t,n),n.aborted)return;t.state={status:`ready`,indexed:t.files.size+t.directories.size,total:t.files.size+t.directories.size},t.abortController=null,EI.info(`Mount indexed`,{path:e,files:t.files.size,directories:t.directories.size})}catch(r){if(n.aborted)return;let i=r instanceof Error?r.message:String(r);t.state={status:`error`,indexed:0,error:i},EI.error(`Mount indexing failed`,{path:e,error:i})}this.notifyListeners()}async walkHandle(e,t,n,r){if(r.aborted)return;n.directories.add(e);let i=t;for await(let[t,a]of i){if(r.aborted)return;let i=e===`/`?`/${t}`:`${e}/${t}`;a.kind===`file`?(n.files.add(i),n.state.indexed++):a.kind===`directory`&&await this.walkHandle(i,a,n,r),n.state.indexed%500==0&&(this.notifyListeners(),await new Promise(e=>setTimeout(e,0)))}}};function Q(e){if(!e||e===`/`)return`/`;e.startsWith(`/`)||(e=`/`+e);let t=e.split(`/`),n=[];for(let e of t)e===``||e===`.`||(e===`..`?n.pop():n.push(e));return`/`+n.join(`/`)}function OI(e){let t=Q(e);if(t===`/`)return{dir:`/`,base:``};let n=t.lastIndexOf(`/`);return{dir:n===0?`/`:t.slice(0,n),base:t.slice(n+1)}}function kI(e){let t=Q(e);return t===`/`?[]:t.slice(1).split(`/`)}function AI(...e){return Q(e.join(`/`))}var jI=class{vfs;allowedPrefixes;readOnlyPrefixes;constructor(e,t,n=[]){this.vfs=e;let r=e=>{let t=Q(e);return t.endsWith(`/`)?t:t+`/`};this.allowedPrefixes=t.map(r),this.readOnlyPrefixes=n.map(r)}getAllPrefixes(){let e=this.vfs.listMounts().map(e=>e.endsWith(`/`)?e:e+`/`);return[...this.allowedPrefixes,...this.readOnlyPrefixes,...e]}isAllowed(e){let t=Q(e);return this.getAllPrefixes().some(e=>t===e.slice(0,-1)||t.startsWith(e)||t===`/`||e.startsWith(t+`/`))}isAllowedStrict(e){let t=Q(e);return this.getAllPrefixes().some(e=>t===e.slice(0,-1)||t.startsWith(e))}isWritable(e){let t=Q(e);return this.allowedPrefixes.some(e=>t===e.slice(0,-1)||t.startsWith(e))}canWrite(e){return this.isWritable(e)}checkWrite(e){if(!this.isWritable(e))throw new R(`EACCES`,`permission denied`,Q(e))}async resolveAndCheckRead(e){try{let t=await this.vfs.realpath(e);if(!this.isAllowedStrict(t))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}catch(t){throw t instanceof R?t:new R(`ENOENT`,`no such file or directory`,Q(e))}}async resolveAndCheckWrite(e){try{let t=await this.vfs.realpath(e);if(!this.isWritable(t))throw new R(`EACCES`,`permission denied`,Q(e));return t}catch(t){throw t instanceof R?t:new R(`EACCES`,`permission denied`,Q(e))}}getUnderlyingFS(){return this.vfs}isPathUnderMount(e){return this.vfs.isPathUnderMount(e)}async readFile(e,t){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let n=await this.resolveAndCheckRead(e);return this.vfs.readFile(n,t)}async readDir(e){if(!this.isAllowed(e))return[];let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return[]}let n=await this.vfs.readDir(t);if(!this.isAllowedStrict(e)){let t=Q(e);return n.filter(e=>{let n=t===`/`?`/${e.name}`:`${t}/${e.name}`;return this.isAllowed(n)})}return n}async stat(e){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));if(this.isAllowedStrict(e)){let t=await this.resolveAndCheckRead(e);return this.vfs.stat(t)}return this.vfs.stat(e)}scanPathForSymlinks(e,t){let n=Q(e);if(n===`/`)return!1;let r=n.slice(1).split(`/`),i=t?r.length:r.length-1,a=``;for(let e=0;e<i;e++){a=a+`/`+r[e];let t=this.vfs.lstatSync(a);if(t===null)return null;if(t.type===`symlink`)return!0}return!1}statSync(e){return!this.isAllowedStrict(e)||this.scanPathForSymlinks(e,!0)!==!1?null:this.vfs.statSync(e)}lstatSync(e){return!this.isAllowed(e)||this.scanPathForSymlinks(e,!1)!==!1?null:this.vfs.lstatSync(e)}readDirSync(e){if(!this.isAllowed(e)||this.scanPathForSymlinks(e,!0)!==!1)return null;let t=this.vfs.readDirSync(e);if(t===null)return null;if(this.isAllowedStrict(e))return t;let n=Q(e);return t.filter(e=>{let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;return this.isAllowed(t)})}async realpath(e){let t;try{t=await this.vfs.realpath(e)}catch(t){throw t instanceof R?t:new R(`ENOENT`,`no such file or directory`,Q(e))}if(!this.isAllowedStrict(t))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}async exists(e){if(!this.isAllowed(e))return!1;if(this.isAllowedStrict(e))try{await this.resolveAndCheckRead(e)}catch{return!1}return this.vfs.exists(e)}async readTextFile(e){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=await this.resolveAndCheckRead(e);return this.vfs.readTextFile(t)}async*walk(e){if(!this.isAllowed(e))return;let t=e;if(this.isAllowedStrict(e))try{t=await this.resolveAndCheckRead(e)}catch{return}for await(let e of this.vfs.walk(t))this.isAllowed(e)&&(yield e)}async writeFile(e,t,n){this.checkWrite(e);let r=this.vfs.dirname(e),i=this.vfs.basename(e);try{let t=await this.vfs.realpath(r);if(!this.isWritable(t+`/`+i))throw new R(`EACCES`,`permission denied`,Q(e))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}try{(await this.vfs.lstat(e)).type===`symlink`&&await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.writeFile(e,t,n)}async mkdir(e,t){this.checkWrite(e);let n=this.vfs.dirname(e),r=this.vfs.basename(e);try{let t=await this.vfs.realpath(n);if(!this.isWritable(t+`/`+r))throw new R(`EACCES`,`permission denied`,Q(e))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.mkdir(e,t)}async rm(e,t){this.checkWrite(e);try{(await this.vfs.lstat(e)).type===`symlink`||await this.resolveAndCheckWrite(e)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.rm(e,t)}async rename(e,t){this.checkWrite(e),this.checkWrite(t),await this.resolveAndCheckWrite(e);let n=this.vfs.dirname(t),r=this.vfs.basename(t);try{let e=await this.vfs.realpath(n);if(!this.isWritable(e+`/`+r))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.rename(e,t)}async copyFile(e,t){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));this.checkWrite(t);let n=await this.resolveAndCheckRead(e),r=this.vfs.dirname(t),i=this.vfs.basename(t);try{let e=await this.vfs.realpath(r);if(!this.isWritable(e+`/`+i))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}try{(await this.vfs.lstat(t)).type===`symlink`&&await this.resolveAndCheckWrite(t)}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.copyFile(n,t)}async symlink(e,t){this.checkWrite(t);let n=this.vfs.dirname(t),r=this.vfs.basename(t);try{let e=await this.vfs.realpath(n);if(!this.isWritable(e+`/`+r))throw new R(`EACCES`,`permission denied`,Q(t))}catch(e){if(e instanceof R&&e.code===`EACCES`)throw e}return this.vfs.symlink(e,t)}async readlink(e){if(!this.isAllowedStrict(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=await this.vfs.readlink(e),n;if(n=t.startsWith(`/`)?Q(t):Q(this.vfs.dirname(e)+`/`+t),!this.isAllowedStrict(n))throw new R(`ENOENT`,`no such file or directory`,Q(e));return t}async lstat(e){if(!this.isAllowed(e))throw new R(`ENOENT`,`no such file or directory`,Q(e));let t=Q(e),n=this.vfs.dirname(t),r=this.vfs.basename(t),i;if(n===t)i=n;else try{i=await this.vfs.realpath(n)}catch{throw new R(`ENOENT`,`no such file or directory`,t)}let a=i===`/`?`/${r}`:`${i}/${r}`;if(!this.isAllowed(a))throw new R(`ENOENT`,`no such file or directory`,t);return this.vfs.lstat(a)}watch(e,t,n){if(!this.isAllowed(e))throw new R(`EACCES`,`permission denied`,Q(e));let r=this.vfs.getWatcher();if(!r)throw new R(`EINVAL`,`no watcher configured`);return r.watch(Q(e),t,n)}dirname(e){return this.vfs.dirname(e)}basename(e){return this.vfs.basename(e)}async dispose(){await this.vfs.dispose()}},MI=10;function NI(){try{if(typeof globalThis.navigator?.storage?.getDirectory==`function`)return`opfs`}catch{}return`memory`}var PI=class e{lfs;lfsSync;rawLfs=null;rawLfsSync=null;_ready;_readyResolved=!1;backend;mountPoints=new Map;opfsBackendFs=null;opfsHandle=null;mountRoot=``;internalMounts=new Set;watcher=null;dbName;mountSyncChannel=null;mountIndex=new DI;constructor(t,n,r,i){if(this.dbName=t,this.backend=r===`opfs`?`opfs`:`memory`,this.lfs=this.makeDeferredLfs(),this.lfsSync=this.makeDeferredLfsSync(),this._ready=this.backend===`opfs`?e.initOpfsBackend(this,i,n===!0):e.initMemoryBackend(this,t,n===!0),this._ready.then(()=>{this._readyResolved=!0},()=>{}),typeof BroadcastChannel<`u`)try{this.mountSyncChannel=new BroadcastChannel(`vfs-mount-sync:${t}`),this.mountSyncChannel.onmessage=e=>{let{type:t,path:n,descriptor:r}=e.data??{};if(t===`mount`&&typeof n==`string`&&r)this.reconstructBackendFromDescriptor(r).then(e=>{this.mountPoints.set(n,e),e.kind===`local`&&this.mountIndex.registerMount(n,e.getHandle()),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}).catch(()=>{});else if(t===`unmount`&&typeof n==`string`){let e=this.mountPoints.get(n);this.mountPoints.delete(n),this.mountIndex.unregisterMount(n),e?.close(),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}}}catch{}}static async initOpfsBackend(t,n,r){let i=n??await e.acquireOpfsHandle(t.dbName,r);await e.seedOpfsMetadataSidecarIfMissing(i);let[a,{WebAccess:o}]=await Promise.all([I(()=>import(`./dist-DVEQZAIT.js`).then(e=>e.t),[]),I(()=>import(`./dist-BvP45YUI.js`),__vite__mapDeps([27,28]))]);await e.ensureRootMount(a);let s=`/__opfs__/${t.dbName}`,c=e.opfsBackends.get(t.dbName);if(c&&r){try{a.umount(s)}catch{}e.opfsBackends.delete(t.dbName),c=void 0}if(!c){let n=await a.resolveMountConfig({backend:o,handle:i,metadata:`/.metadata.json`});try{a.mount(s,n)}catch{}c={backendFs:n,refs:0},e.opfsBackends.set(t.dbName,c)}c.refs+=1,t.opfsBackendFs=c.backendFs.index?c.backendFs:null,t.opfsHandle=i,t.mountRoot=s,t.rawLfs=a.promises,t.rawLfsSync=a}static async initMemoryBackend(t,n,r){let i=await I(()=>import(`./dist-DVEQZAIT.js`).then(e=>e.t),[]);await e.ensureRootMount(i);let a=`/__zenfs__/${n}`,o=e.memoryBackends.get(n);if(o&&r){try{i.umount(a)}catch{}e.memoryBackends.delete(n),o=void 0}o||(o={store:i.InMemory.create({label:n}),refs:0},e.memoryBackends.set(n,o)),o.refs+=1;try{i.mount(a,o.store)}catch{}t.mountRoot=a,t.rawLfs=i.promises,t.rawLfsSync=i,t.opfsBackendFs=null,t.opfsHandle=null}static rootMountReady=null;static memoryBackends=new Map;static opfsBackends=new Map;static async ensureRootMount(t){return e.rootMountReady||=(async()=>{await t.configureSingle({backend:t.InMemory,label:`__vfs_root__`})})(),e.rootMountReady}prefix(e){return this.mountRoot?e===`/`?this.mountRoot:this.mountRoot+e:e}unprefix(e){return!this.mountRoot||!e.startsWith(this.mountRoot)?e:e.slice(this.mountRoot.length)||`/`}makeDeferredLfs(){let e=e=>this.prefix(e),t=e=>this.unprefix(e),n=()=>{if(!this.rawLfs)throw Error(`VirtualFS used before init resolved`);return this.rawLfs};return{readFile:(t,r)=>this._readyResolved?n().readFile(e(t),r):this._ready.then(()=>n().readFile(e(t),r)),writeFile:(t,r,i)=>this._readyResolved?n().writeFile(e(t),r,i):this._ready.then(()=>n().writeFile(e(t),r,i)),readdir:t=>this._readyResolved?n().readdir(e(t)):this._ready.then(()=>n().readdir(e(t))),mkdir:(t,r)=>this._readyResolved?n().mkdir(e(t),r):this._ready.then(()=>n().mkdir(e(t),r)),rmdir:t=>this._readyResolved?n().rmdir(e(t)):this._ready.then(()=>n().rmdir(e(t))),unlink:t=>this._readyResolved?n().unlink(e(t)):this._ready.then(()=>n().unlink(e(t))),rename:(t,r)=>this._readyResolved?n().rename(e(t),e(r)):this._ready.then(()=>n().rename(e(t),e(r))),stat:t=>this._readyResolved?n().stat(e(t)):this._ready.then(()=>n().stat(e(t))),lstat:t=>this._readyResolved?n().lstat(e(t)):this._ready.then(()=>n().lstat(e(t))),symlink:(t,r)=>{let i=t.startsWith(`/`)?e(t):t;return this._readyResolved?n().symlink(i,e(r)):this._ready.then(()=>n().symlink(i,e(r)))},readlink:async r=>(this._readyResolved||await this._ready,t(await n().readlink(e(r)))),realpath:async r=>{this._readyResolved||await this._ready;let i=n();return typeof i.realpath==`function`?t(await i.realpath(e(r))):e(r)}}}makeDeferredLfsSync(){let e=e=>this.prefix(e),t=e=>this.unprefix(e);return{readdirSync:t=>{let n=this.rawLfsSync;return n?.readdirSync?n.readdirSync(e(t)):void 0},statSync:t=>{let n=this.rawLfsSync;return n?.statSync?n.statSync(e(t)):void 0},lstatSync:t=>{let n=this.rawLfsSync;return n?.lstatSync?n.lstatSync(e(t)):void 0},readlinkSync:n=>{let r=this.rawLfsSync;return r?.readlinkSync?t(r.readlinkSync(e(n))):void 0}}}static async seedOpfsMetadataSidecarIfMissing(e){let t=`.metadata.json`;try{await e.getFileHandle(t);return}catch(e){if(e?.name!==`NotFoundError`)throw e}let n=await(await e.getFileHandle(t,{create:!0})).createWritable(),r=JSON.stringify({version:1,maxSize:4294967295,entries:{}});await n.write(r),await n.close()}static async acquireOpfsHandle(e,t){let n=navigator.storage;if(!n?.getDirectory)throw new R(`EINVAL`,`OPFS is not available in this environment`);let r=await n.getDirectory();if(t)try{await r.removeEntry(e,{recursive:!0})}catch{}return r.getDirectoryHandle(e,{create:!0})}static async create(t){let n=t?.dbName??`browser-fs`,r=t?.wipe===!0,i=new e(n,r,t?.backend??NI());return await i._ready,r&&await Gie().catch(()=>{}),i}async flush(){await this.writeOpfsMetadataSidecar()}async writeOpfsMetadataSidecar(){if(this.backend!==`opfs`)return;let e=this.opfsBackendFs,t=this.opfsHandle;if(!e||!t)return;let n=JSON.stringify(e.index.toJSON()),r=await(await t.getFileHandle(`.metadata.json`,{create:!0})).createWritable();await r.write(n),await r.close()}canWrite(e){return!0}setWatcher(e){this.watcher=e}getWatcher(){return this.watcher}async dispose(){if(this.mountSyncChannel?.close(),this.mountSyncChannel=null,this.watcher?.dispose(),this.watcher=null,this.mountIndex.dispose(),await this.writeOpfsMetadataSidecar(),this.mountRoot){let t=this.backend===`opfs`?e.opfsBackends:e.memoryBackends,n=t.get(this.dbName);if(n&&(--n.refs,n.refs<=0)){t.delete(this.dbName);try{(await I(()=>import(`./dist-DVEQZAIT.js`).then(e=>e.t),[])).umount(this.mountRoot)}catch{}}}}readDirSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.readdirSync!=`function`||typeof n.lstatSync!=`function`)return null;try{let e=n.readdirSync(t),r=[];for(let i of e){let e=t===`/`?`/${i}`:`${t}/${i}`;try{let t=n.lstatSync(e),a=t.isSymbolicLink()?`symlink`:t.isDirectory()?`directory`:`file`;r.push({name:i,type:a})}catch{}}return r}catch{return null}}statSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.statSync!=`function`||typeof n.lstatSync!=`function`||typeof n.readlinkSync!=`function`)return null;let r=t;for(let e=0;e<=MI;e++){let e;try{e=n.lstatSync(r)}catch{return null}if(!e.isSymbolicLink())return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs};let t;try{t=n.readlinkSync(r)}catch{return null}r=t.startsWith(`/`)?Q(t):Q(AI(OI(r).dir,t))}return null}lstatSync(e){let t=Q(e);if(this.findMount(t))return null;let n=this.lfsSync;if(typeof n.lstatSync!=`function`)return null;try{let e=n.lstatSync(t);if(e.isSymbolicLink()){let r=n.readlinkSync?n.readlinkSync(t):``;return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:r}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return null}}async mount(e,t){let n=Q(e);if(this.mountPoints.has(n))throw new R(`EEXIST`,`mount point is already mounted`,n);try{if((await this.lstat(n)).type!==`directory`)throw new R(`ENOTDIR`,`mount point must be a directory`,n);if((await this.readDir(n)).length>0)throw new R(`ENOTEMPTY`,`mount point must be empty to avoid shadowing existing files`,n)}catch(e){if(!(e instanceof R)||e.code!==`ENOENT`)throw e}let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.mkdir(n)}catch{}this.mountPoints.set(n,t),t.kind===`local`&&this.mountIndex.registerMount(n,t.getHandle());let i=t.kind===`local`?{kind:`local`,mountId:t.mountId,idbHandleKey:n}:t.kind===`s3`?{kind:`s3`,mountId:t.mountId,source:t.source,profile:t.profile??`default`}:{kind:`da`,mountId:t.mountId,source:t.source,profile:t.profile??`default`};try{this.mountSyncChannel?.postMessage({type:`mount`,path:n,descriptor:i})}catch{}this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}]);try{await Uie({targetPath:n,descriptor:i,createdAt:Date.now()},t.kind===`local`?t.getHandle():void 0)}catch{}}async unmount(e){let t=Q(e),n=this.mountPoints.get(t);this.mountPoints.delete(t),this.mountIndex.unregisterMount(t);try{this.mountSyncChannel?.postMessage({type:`unmount`,path:t})}catch{}this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close();try{await Wie(t)}catch{}}async reconstructBackendFromDescriptor(e){switch(e.kind){case`local`:{let t=await Xy(e.idbHandleKey);if(!t)throw Error(`no handle stored for ${e.idbHandleKey}`);return jy.fromHandle(t,{mountId:e.mountId})}case`s3`:{let{S3MountBackend:t,RemoteMountCache:n,makeSignedFetchS3:r}=await I(async()=>{let{S3MountBackend:e,RemoteMountCache:t,makeSignedFetchS3:n}=await Promise.resolve().then(()=>Gy);return{S3MountBackend:e,RemoteMountCache:t,makeSignedFetchS3:n}},void 0),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r(e.profile)})}case`da`:{let{DaMountBackend:t,RemoteMountCache:n,makeSignedFetchDa:r}=await I(async()=>{let{DaMountBackend:e,RemoteMountCache:t,makeSignedFetchDa:n}=await Promise.resolve().then(()=>Gy);return{DaMountBackend:e,RemoteMountCache:t,makeSignedFetchDa:n}},void 0),i=new n({mountId:e.mountId,ttlMs:3e4});return new t({source:e.source,profile:e.profile,cache:i,mountId:e.mountId,signedFetch:r()})}}}listMounts(){let e=[];for(let t of this.mountPoints.keys())this.internalMounts.has(t)||e.push(t);return e}listInternalMounts(){return[...this.internalMounts]}async mountInternal(e,t){let n=Q(e);if(this.mountPoints.has(n))throw new R(`EEXIST`,`mount point is already mounted`,n);let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.mkdir(n)}catch{}this.mountPoints.set(n,t),this.internalMounts.add(n),this.watcher?.notify([{type:`modify`,path:n,entryType:`directory`}])}async unmountInternal(e){let t=Q(e);if(!this.internalMounts.has(t))throw new R(`ENOENT`,`not an internal mount point`,t);let n=this.mountPoints.get(t);this.mountPoints.delete(t),this.internalMounts.delete(t),this.watcher?.notify([{type:`modify`,path:t,entryType:`directory`}]),await n?.close()}getMountIndex(){return this.mountIndex}async refreshMount(e,t){let n=Q(e),r=this.mountPoints.get(n);if(!r)throw new R(`ENOENT`,`not a mount point`,n);let i=await r.refresh(t);return r.kind===`local`&&await this.mountIndex.refreshMount(n),i}isPathUnderMount(e){for(let t of this.mountPoints.keys())if(e===t||e.startsWith(t+`/`))return!0;return!1}static rebrandFsError(e,t){if(e instanceof R){let n=`${e.code}: `,r=e.message;throw r.startsWith(n)&&(r=r.slice(n.length)),e.path&&r.endsWith(` '${e.path}'`)&&(r=r.slice(0,r.length-` '${e.path}'`.length)),new R(e.code,r,t)}throw e}findMount(e){let t=null;for(let[n,r]of this.mountPoints)(e===n||e.startsWith(n+`/`))&&(!t||n.length>t.mountPath.length)&&(t={mountPath:n,backend:r});return t?e===t.mountPath?{path:t.mountPath,backend:t.backend,relParts:[]}:{path:t.mountPath,backend:t.backend,relParts:e.slice(t.mountPath.length+1).split(`/`).filter(Boolean)}:null}async readFile(t,n){let r=Q(t),i=this.findMount(r);if(i){if(i.relParts.length===0)throw new R(`EISDIR`,`is a directory`,r);let t=i.relParts.join(`/`);try{let e=await i.backend.readFile(t);return(n?.encoding??`utf-8`)===`utf-8`?new TextDecoder(`utf-8`).decode(e):e}catch(t){e.rebrandFsError(t,r)}}let a=await this.resolveSymlinks(r);try{return(n?.encoding??`utf-8`)===`utf-8`?await this.lfs.readFile(a,{encoding:`utf8`}):await this.lfs.readFile(a)}catch(e){throw this.convertError(e,r)}}async writeFile(t,n,r){let i=Q(t),a=this.findMount(i);if(a){if(a.relParts.length===0)throw new R(`EISDIR`,`is a directory`,i);let t=a.relParts.join(`/`),r=!1;try{await this.stat(i),r=!0}catch{}let o=typeof n==`string`?new TextEncoder().encode(n):n instanceof Uint8Array?new Uint8Array(n.buffer,n.byteOffset,n.byteLength):new Uint8Array(n);try{await a.backend.writeFile(t,o)}catch(t){e.rebrandFsError(t,i)}this.watcher?.notify([{type:r?`modify`:`create`,path:i,entryType:`file`}]),this.mountIndex.notifyWrite(i);return}let o;try{o=await this.resolveSymlinks(i)}catch{o=i}let s=!1;try{await this.lfs.stat(o),s=!0}catch{}let{dir:c}=OI(o);c!==`/`&&await this.mkdir(c,{recursive:!0});try{await this.lfs.writeFile(o,n)}catch(e){throw this.convertError(e,i)}this.watcher?.notify([{type:s?`modify`:`create`,path:o,entryType:`file`}])}async readDir(t){let n=Q(t),r=this.findMount(n);if(r){let t=this.mountIndex.getDirectoryEntries(r.path,n);if(t!==void 0){let e=new Map;for(let n of t)e.set(n.name,{name:n.name,type:n.type});let r=n===`/`?`/`:`${n}/`;for(let t of this.mountPoints.keys()){if(t===n||!t.startsWith(r))continue;let i=t.slice(r.length);!i||i.includes(`/`)||e.has(i)||e.set(i,{name:i,type:`directory`})}return[...e.values()]}let i=r.relParts.join(`/`)||`/`,a;try{a=await r.backend.readDir(i)}catch(t){e.rebrandFsError(t,n)}let o=new Map;for(let e of a)o.set(e.name,{name:e.name,type:e.kind===`directory`?`directory`:`file`});let s=n===`/`?`/`:`${n}/`;for(let e of this.mountPoints.keys()){if(e===n||!e.startsWith(s))continue;let t=e.slice(s.length);!t||t.includes(`/`)||o.has(t)||o.set(t,{name:t,type:`directory`})}return[...o.values()]}let i=await this.resolveSymlinks(n);try{let e=await this.lfs.readdir(i),t=[];for(let n of e){let e=i===`/`?`/${n}`:`${i}/${n}`;try{let r=await this.lfs.lstat(e);r.isSymbolicLink()?t.push({name:n,type:`symlink`}):t.push({name:n,type:r.isDirectory()?`directory`:`file`})}catch{}}return t}catch(e){throw this.convertError(e,n)}}async mkdir(t,n){let r=Q(t);if(r===`/`)return;let i=this.findMount(r);if(i){if(i.relParts.length===0)return;let t=i.relParts.join(`/`),n=await this.exists(r);try{await i.backend.mkdir(t)}catch(t){e.rebrandFsError(t,r)}n||this.watcher?.notify([{type:`create`,path:r,entryType:`directory`}]);return}if(n?.recursive){let e=r.split(`/`).filter(Boolean),t=``;for(let n of e){t+=`/`+n;try{await this.lfs.mkdir(t)}catch(e){if(e instanceof Error&&!e.message.includes(`EEXIST`))throw this.convertError(e,t)}}}else{try{await this.lfs.mkdir(r)}catch(e){throw this.convertError(e,r)}this.watcher?.notify([{type:`create`,path:r,entryType:`directory`}])}}async rm(t,n){let r=Q(t),i=this.findMount(r);if(i){if(i.relParts.length===0)throw new R(`EINVAL`,`cannot remove a mount point — use unmount`,r);let t;try{t=(await this.stat(r)).type}catch{}let a=i.relParts.join(`/`);try{await i.backend.remove(a,{recursive:n?.recursive})}catch(t){e.rebrandFsError(t,r)}this.watcher?.notify([{type:`delete`,path:r,entryType:t}]),this.mountIndex.notifyDelete(r);return}try{let e=await this.lfs.lstat(r);e.isSymbolicLink()?await this.lfs.unlink(r):e.isDirectory()?n?.recursive?await this.rmRecursive(r):await this.lfs.rmdir(r):await this.lfs.unlink(r)}catch(e){throw this.convertError(e,r)}this.watcher?.notify([{type:`delete`,path:r}])}async rmRecursive(e){let t=await this.lfs.readdir(e);for(let n of t){let t=e===`/`?`/${n}`:`${e}/${n}`;(await this.lfs.stat(t)).isDirectory()?await this.rmRecursive(t):await this.lfs.unlink(t)}await this.lfs.rmdir(e)}async stat(t){let n=Q(t),r=this.findMount(n);if(r){if(r.relParts.length===0)try{let e=await this.lfs.stat(n);return{type:`directory`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch{return{type:`directory`,size:0,mtime:Date.now(),ctime:Date.now()}}let t=r.relParts.join(`/`);try{let e=await r.backend.stat(t);return{type:e.kind===`directory`?`directory`:`file`,size:e.size,mtime:e.mtime,ctime:e.mtime}}catch(t){e.rebrandFsError(t,n)}}let i=await this.resolveSymlinks(n);try{let e=await this.lfs.stat(i);return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch(e){throw this.convertError(e,n)}}async exists(e){let t=Q(e),n=this.findMount(t);if(n){if(n.relParts.length===0)return!0;try{return await this.stat(t),!0}catch{return!1}}try{return await this.stat(t),!0}catch{try{return await this.lfs.lstat(t),!0}catch{return!1}}}async rename(e,t){let n=Q(e),r=Q(t),i;try{i=(await this.lstat(n)).type}catch{}try{await this.lfs.rename(n,r)}catch(e){throw this.convertError(e,n)}this.watcher?.notify([{type:`delete`,path:n,entryType:i},{type:`create`,path:r,entryType:i}]),this.mountIndex.notifyRename(n,r)}async readTextFile(e){return await this.readFile(e,{encoding:`utf-8`})}async*walk(e,t){let n=Q(e);if(this.mountPoints.size>0&&this.mountPoints.has(n)&&![...this.mountPoints.keys()].some(e=>e!==n&&e.startsWith(n+`/`))&&this.mountIndex.isReady(n)){let e=this.mountIndex.getFiles(n);if(e){for(let t of e)yield t;return}}let r=t??new Set,i;try{i=await this.realpath(n)}catch{i=n}if(r.has(i))return;r.add(i);let a=await this.readDir(n);for(let e of a){let t=n===`/`?`/${e.name}`:`${n}/${e.name}`;if(e.type===`file`)yield t;else if(e.type===`symlink`)try{let e=await this.stat(t);e.type===`file`?yield t:e.type===`directory`&&(yield*this.walk(t,r))}catch{}else yield*this.walk(t,r)}}async copyFile(e,t){if((await this.stat(e)).type===`directory`)throw new R(`EISDIR`,`is a directory`,e);let n=await this.readFile(e,{encoding:`binary`});await this.writeFile(t,n)}dirname(e){return OI(Q(e)).dir}basename(e){return OI(Q(e)).base}async symlink(e,t){let n=Q(t);if(this.findMount(n))throw new R(`EINVAL`,`symlinks not supported on mounted filesystems`,n);let{dir:r}=OI(n);r!==`/`&&await this.mkdir(r,{recursive:!0});try{await this.lfs.symlink(e,n)}catch(e){throw this.convertError(e,n)}this.watcher?.notify([{type:`create`,path:n,entryType:`symlink`}])}async readlink(e){let t=Q(e);try{return await this.lfs.readlink(t)}catch(e){throw this.convertError(e,t)}}async lstat(e){let t=Q(e);if(this.findMount(t))return this.stat(t);try{let e=await this.lfs.lstat(t);if(e.isSymbolicLink()){let n=await this.lfs.readlink(t);return{type:`symlink`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs,isSymlink:!0,symlinkTarget:n}}return{type:e.isDirectory()?`directory`:`file`,size:e.size,mtime:e.mtimeMs,ctime:e.ctimeMs}}catch(e){throw this.convertError(e,t)}}async realpath(e){let t=Q(e);if(this.findMount(t))return t;let n=0,r=t.split(`/`).filter(Boolean),i=`/`;for(let e=0;e<r.length;e++){let a=i===`/`?`/${r[e]}`:`${i}/${r[e]}`;for(;;){let o;try{o=await this.lfs.lstat(a)}catch(n){let o=this.convertError(n,t);if(o.code===`ENOENT`&&e===r.length-1)return i=a,i;throw o}if(!o.isSymbolicLink()){i=a;break}if(++n>MI)throw new R(`ELOOP`,`too many symbolic links encountered`,t);let s;try{s=await this.lfs.readlink(a)}catch(e){throw this.convertError(e,t)}a=s.startsWith(`/`)?Q(s):Q(AI(OI(a).dir,s))}}return i}async resolveSymlinks(e){return this.findMount(e)?e:this.realpath(e)}convertError(e,t){if(e instanceof R)return e;let n=e?.code;if(typeof n==`string`){let r=n;if([`ENOENT`,`EEXIST`,`ENOTDIR`,`EISDIR`,`ENOTEMPTY`,`EINVAL`,`EACCES`,`ELOOP`,`EBUSY`,`EFBIG`,`EBADF`,`EIO`].includes(r))return new R(r,(e instanceof Error?e.message:String(e))||r,t)}let r=e instanceof Error?e.message:String(e);return r.includes(`ENOENT`)?new R(`ENOENT`,`no such file or directory`,t):r.includes(`EEXIST`)?new R(`EEXIST`,`file already exists`,t):r.includes(`ENOTDIR`)?new R(`ENOTDIR`,`not a directory`,t):r.includes(`EISDIR`)?new R(`EISDIR`,`is a directory`,t):r.includes(`ENOTEMPTY`)?new R(`ENOTEMPTY`,`directory not empty`,t):r.includes(`ELOOP`)?new R(`ELOOP`,`too many levels of symbolic links`,t):new R(`EINVAL`,r,t)}},FI=s({FsError:()=>R,FsWatcher:()=>TI,MountIndex:()=>DI,RestrictedFS:()=>jI,VirtualFS:()=>PI,joinPath:()=>AI,normalizePath:()=>Q,pathSegments:()=>kI,resolveVfsBackendFromEnv:()=>NI,splitPath:()=>OI}),II=`.skill`,LI=1e3,RI=`/workspace/skills`,zI=`SKILL.md`,BI=/^[A-Za-z0-9][A-Za-z0-9._-]*$/;function VI(e){if(e===`__MACOSX`||e.startsWith(`__MACOSX/`))return!0;let t=e.includes(`/`)?e.slice(e.lastIndexOf(`/`)+1):e;return!!(t===`.DS_Store`||t===`Thumbs.db`||t===`desktop.ini`||t.startsWith(`._`))}var HI=class extends Error{};function UI(e){let t=e.replace(/\\/g,`/`);if(!t||t.endsWith(`/`))return null;if(t.startsWith(`/`)||/^[A-Za-z]:\//.test(t))throw Error(`Blocked suspicious path "${e}".`);let n=t.split(`/`);if(n.some(e=>e===``||e===`.`||e===`..`))throw Error(`Blocked suspicious path "${e}".`);return n.join(`/`)}function WI(e){if(!BI.test(e))throw Error(`Invalid skill: skill name "${e}" must be a simple directory name.`)}function GI(e){let t=[];for(let[n,r]of Object.entries(e)){let e=UI(n);e&&(VI(e)||t.push({originalPath:n,path:e,bytes:r}))}return t}function KI(e){let t=e.filter(e=>e.path===`SKILL.md`||e.path.endsWith(`/SKILL.md`));if(t.length===0)throw Error(`Skill archive is missing ${zI}.`);if(t.length>1)throw Error(`Skill archive contains multiple ${zI} files.`);return t[0]}function qI(e){let t=0,n=0;return xI(e,{filter(e){if(t++,t>1e3)throw new HI(`Skill archives may contain at most ${LI} entries.`);if(n+=e.originalSize,n>52428800)throw new HI(`Skill archives must expand to 50 MB or smaller after extraction.`);return!0}})}function JI(e){return AI(RI,`.${e}.tmp-${`${Date.now()}-${Math.random().toString(16).slice(2,8)}`}`)}function YI(e,t){return t===`SKILL.md`?e.replace(/\.skill$/i,``):t.slice(0,-9).split(`/`).pop()??``}async function XI(e,t){if(!t.name.toLowerCase().endsWith(`.skill`))throw Error(`Only ${II} archives can be installed with drag and drop.`);if(t.size>52428800)throw Error(`Skill archives must be 50 MB or smaller.`);let n;try{n=qI(new Uint8Array(await t.arrayBuffer()))}catch(e){if(e instanceof HI)throw e;let t=e instanceof Error?e.message:String(e);throw Error(`Invalid .skill archive: ${t}`)}let r=GI(n),i=KI(r),a=YI(t.name,i.path);WI(a);let o=AI(RI,a);if(await e.exists(o))throw Error(`Skill "${a}" already exists at ${o}.`);let s=JI(a),c=i.path===`SKILL.md`?``:i.path.slice(0,-(zI.length+1));await e.mkdir(s,{recursive:!0});try{let t=0;for(let n of r){if(c&&(n.path===c||!n.path.startsWith(`${c}/`)))continue;let r=c?n.path.slice(c.length+1):n.path;if(!r)continue;let i=AI(s,r),{dir:a}=OI(i);a!==`/`&&await e.mkdir(a,{recursive:!0}),await e.writeFile(i,n.bytes),t++}return await e.rename(s,o),{skillName:a,destinationPath:o,fileCount:t}}catch(t){throw await e.exists(s)&&await e.rm(s,{recursive:!0}),t}}var ZI=`/tmp`;function QI(e){let t=e.replace(/[\\/:]+/g,`_`).replace(/[^A-Za-z0-9._-]/g,`_`).replace(/_+/g,`_`).replace(/^_+|_+$/g,``);return t.length>0?t:`attachment`}function $I(){let e=globalThis.crypto!==void 0&&typeof globalThis.crypto.getRandomValues==`function`?globalThis.crypto:null;if(e){let t=new Uint8Array(4);return e.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,`0`)).join(``)}return Math.random().toString(36).slice(2,10)}function eL(e,t,n,r=$I()){let i=QI(e);return`${ZI}/attachment-${t.toString(36)}-${n.toString(36)}-${r}-${i}`}function tL(e){let t=0;return async n=>{let r=new Uint8Array(await n.arrayBuffer());t+=1;let i=eL(n.name,Date.now(),t);return await e.mkdir(ZI,{recursive:!0}).catch(()=>{}),await e.writeFile(i,r),i}}function nL(e,t){try{window.close()}catch{}e.setLocked(!0),t.showDetachedActiveOverlay()}var rL=`slicc-theme`,iL=new Set([`dark`,`light`,`system`]);function aL(){let e=localStorage.getItem(rL);return e&&iL.has(e)?e:`system`}function oL(){return document.documentElement.classList.contains(`theme-light`)}var sL=new Set;function cL(e){e&&sL.add(e)}function lL(e){e&&sL.delete(e)}function uL(){let e=oL();for(let t of sL)try{t.postMessage({type:`slicc-theme`,isLight:e},`*`)}catch{sL.delete(t)}}function dL(){let e=aL(),t=e===`light`;e===`system`&&(t=window.matchMedia?.(`(prefers-color-scheme: light)`).matches??!1),document.documentElement.classList.toggle(`theme-light`,t),uL()}var fL,pL;function mL(){dL(),fL=window.matchMedia?.(`(prefers-color-scheme: light)`),fL?.addEventListener?.(`change`,()=>{aL()===`system`&&dL()}),typeof MutationObserver<`u`&&!pL&&(pL=new MutationObserver(()=>uL()),pL.observe(document.documentElement,{attributes:!0,attributeFilter:[`class`]}))}var hL=typeof chrome<`u`&&!!chrome?.runtime?.id,gL=/<script\b([^>]*)\bsrc\s*=\s*["'](https?:\/\/[^"']+)["']([^>]*)><\/script>/gi;async function _L(e){let t=[],n;for(;(n=gL.exec(e))!==null;)t.push({full:n[0],url:n[2],index:n.index});if(gL.lastIndex=0,t.length===0)return e;let r=await Promise.all(t.map(async e=>{try{let t=await fetch(e.url);if(!t.ok)throw Error(`HTTP ${t.status}`);return{...e,text:await t.text()}}catch(t){let n=t instanceof Error?t.message:String(t);return{...e,text:`console.error('[sprinkle] Failed to load ${e.url}: ${n}')`}}})),i=e;for(let e=r.length-1;e>=0;e--){let{full:t,text:n}=r[e],a=n.replace(/<\/script/gi,`<\\/script`);i=i.replace(t,()=>`<script>${a}<\/script>`)}return i}function vL(e){let t=e.trimStart().toLowerCase();return t.startsWith(`<!doctype`)||t.startsWith(`<html`)}var yL=class e{container;bridge;scripts=[];iframe=null;static cachedLucideScript=null;static lucideScriptPromise=null;messageHandler=null;constructor(e,t){this.container=e,this.bridge=t}async render(e,t){this.dispose(),hL?await this.renderInSandbox(e,t,vL(e)):vL(e)?await this.renderFullDoc(e,t):this.renderInline(e,t)}async renderInSandbox(e,t,n=!1){let r=document.createElement(`iframe`);r.src=chrome.runtime.getURL(`sprinkle-sandbox.html`),r.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,this.iframe=r,console.log(`[sprinkle-renderer] creating sandbox iframe`,r.src),await new Promise((e,t)=>{let n=setTimeout(()=>{console.error(`[sprinkle-renderer] iframe load timed out after 5s`),t(Error(`sprinkle sandbox iframe load timed out`))},5e3);r.addEventListener(`load`,()=>{clearTimeout(n),console.log(`[sprinkle-renderer] iframe loaded, contentWindow:`,!!r.contentWindow),cL(r.contentWindow),e()},{once:!0}),r.addEventListener(`error`,e=>{clearTimeout(n),console.error(`[sprinkle-renderer] iframe error:`,e),t(Error(`sprinkle sandbox iframe failed to load`))},{once:!0}),this.container.appendChild(r)}),this.messageHandler=e=>{if(e.source!==r.contentWindow)return;let n=e.data;if(n?.type){if(n.type===`sprinkle-lick`)this.bridge.lick({action:n.action,data:n.data});else if(n.type===`sprinkle-set-state`)this.bridge.setState(n.data);else if(n.type===`sprinkle-close`)this.bridge.close();else if(n.type===`sprinkle-minimize`)this.bridge.minimize();else if(n.type===`sprinkle-stop-cone`)this.bridge.stopCone();else if(n.type===`sprinkle-storage-set`)try{localStorage.setItem(`slicc-sprinkle-ls:${t}:${n.key}`,n.value)}catch(e){console.warn(`[sprinkle-renderer] localStorage setItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-remove`)try{localStorage.removeItem(`slicc-sprinkle-ls:${t}:${n.key}`)}catch(e){console.warn(`[sprinkle-renderer] localStorage removeItem failed:`,n.key,e)}else if(n.type===`sprinkle-storage-clear`){let e=`slicc-sprinkle-ls:${t}:`;for(let t=localStorage.length-1;t>=0;t--){let n=localStorage.key(t);n?.startsWith(e)&&localStorage.removeItem(n)}}else if(n.type===`sprinkle-attach-image`)this.bridge.attachImage(n.base64,n.name,n.mimeType);else if(n.type===`sprinkle-open`)this.bridge.open(n.path,n.projectRoot?{projectRoot:n.projectRoot}:void 0);else if(n.type===`sprinkle-readfile`)this.bridge.readFile(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,content:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-writefile`)this.bridge.writeFile(n.path,n.content).then(()=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-readdir`)this.bridge.readDir(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,entries:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-exists`)this.bridge.exists(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,exists:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-stat`)this.bridge.stat(n.path).then(e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,stat:e},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-mkdir`)this.bridge.mkdir(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-rm`)this.bridge.rm(n.path).then(()=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-capture-screen`)this.bridge.captureScreen().then(e=>r.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>r.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:n.id,error:e instanceof Error?e.message:String(e)},`*`));else if(n.type===`sprinkle-fetch-script`){let e=n.url,t=n.id;fetch(e).then(e=>e.ok?e.text():Promise.reject(Error(`HTTP ${e.status}`))).then(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,text:n},`*`)}).catch(n=>{r.contentWindow?.postMessage({type:`sprinkle-fetch-script-response`,id:t,url:e,error:n instanceof Error?n.message:String(n)},`*`)})}}},window.addEventListener(`message`,this.messageHandler);let i=this.collectThemeCSS(),a={},o=`slicc-sprinkle-ls:${t}:`;for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);t?.startsWith(o)&&(a[t.slice(o.length)]=localStorage.getItem(t)??``)}let s=this.bridge.getState(),c=``,l=``;if(n){let t=[];e.includes(`<slicc-editor`)&&t.push(fetch(chrome.runtime.getURL(`slicc-editor.js`)).then(e=>e.ok?e.text():``).then(e=>{c=e}).catch(()=>{})),e.includes(`<slicc-diff`)&&t.push(fetch(chrome.runtime.getURL(`slicc-diff.js`)).then(e=>e.ok?e.text():``).then(e=>{l=e}).catch(()=>{})),await Promise.all(t)}let u=await this.getLucideScript(),d=n?await _L(e):e;r.contentWindow.postMessage({type:`sprinkle-render`,content:d,name:t,themeCSS:i,savedState:s,savedStorage:a,fullDoc:n,editorScript:c,diffScript:l,lucideScript:u,isLight:oL()},`*`)}pushUpdate(e){this.iframe?.contentWindow&&this.iframe.contentWindow.postMessage({type:`sprinkle-update`,data:e},`*`)}collectThemeCSS(){return xL()}generateBridgeScript(){return`(function() {
|
|
640
640
|
var _updateListeners = new Set();
|
|
641
641
|
var _sprinkleName = '';
|
|
642
642
|
var _state = null;
|
|
@@ -745,7 +745,7 @@ ${o.repeat(a)}}`}return String(e)}var aO,oO;B({},{base64Command:()=>sO,flagsForF
|
|
|
745
745
|
};
|
|
746
746
|
window.slicc = api;
|
|
747
747
|
window.bridge = api;
|
|
748
|
-
})();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,r=this.collectThemeCSS(),i=r?`<style>${r}</style>`:``,a=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,o=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,s=`<script>(function(){try{if(${oL()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+i+a+o+`<script src="/lucide-icons.js"><\/script>`,c,l=e.match(/<head\b[^>]*>/i);if(l){let t=l.index+l[0].length;c=e.slice(0,t)+s+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)c=e.slice(0,t.index)+s+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;c=e.slice(0,n)+s+e.slice(n)}else c=s+e}}let u=document.createElement(`iframe`);u.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),u.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,u.srcdoc=c,this.iframe=u,await new Promise((e,n)=>{let r=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);u.addEventListener(`load`,()=>{clearTimeout(r),cL(u.contentWindow);let n=this.bridge.getState();u.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),e()},{once:!0}),u.addEventListener(`error`,e=>{clearTimeout(r),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(u)}),this.messageHandler=e=>{if(e.source!==u.contentWindow)return;let t=e.data;t?.type&&(t.type===`sprinkle-lick`?this.bridge.lick({action:t.action,data:t.data}):t.type===`sprinkle-set-state`?this.bridge.setState(t.data):t.type===`sprinkle-close`?this.bridge.close():t.type===`sprinkle-minimize`?this.bridge.minimize():t.type===`sprinkle-stop-cone`?this.bridge.stopCone():t.type===`sprinkle-attach-image`?this.bridge.attachImage(t.base64,t.name,t.mimeType):t.type===`sprinkle-readfile`?this.bridge.readFile(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,content:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-writefile`?this.bridge.writeFile(t.path,t.content).then(()=>u.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-readdir`?this.bridge.readDir(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,entries:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exists`?this.bridge.exists(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,exists:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-stat`?this.bridge.stat(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,stat:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-mkdir`?this.bridge.mkdir(t.path).then(()=>u.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-rm`?this.bridge.rm(t.path).then(()=>u.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-capture-screen`&&this.bridge.captureScreen().then(e=>u.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)))},window.addEventListener(`message`,this.messageHandler)}renderInline(e,t){if(e.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&I(()=>import(`./slicc-editor-
|
|
748
|
+
})();`}async renderFullDoc(e,t){let n=`<script>${this.generateBridgeScript()}<\/script>`,r=this.collectThemeCSS(),i=r?`<style>${r}</style>`:``,a=e.includes(`<slicc-editor`)?`<script src="/slicc-editor.js"><\/script>`:``,o=e.includes(`<slicc-diff`)?`<script src="/slicc-diff.js"><\/script>`:``,s=`<script>(function(){try{if(${oL()?`true`:`false`})document.documentElement.classList.add('theme-light');}catch(e){}})();<\/script>`+n+i+a+o+`<script src="/lucide-icons.js"><\/script>`,c,l=e.match(/<head\b[^>]*>/i);if(l){let t=l.index+l[0].length;c=e.slice(0,t)+s+e.slice(t)}else{let t=e.match(/<script\b/i);if(t)c=e.slice(0,t.index)+s+e.slice(t.index);else{let t=e.match(/<html\b[^>]*>/i);if(t){let n=t.index+t[0].length;c=e.slice(0,n)+s+e.slice(n)}else c=s+e}}let u=document.createElement(`iframe`);u.setAttribute(`sandbox`,`allow-scripts allow-same-origin`),u.style.cssText=`width: 100%; flex: 1; border: none; min-height: 0;`,u.srcdoc=c,this.iframe=u,await new Promise((e,n)=>{let r=setTimeout(()=>{n(Error(`full-doc iframe load timed out`))},5e3);u.addEventListener(`load`,()=>{clearTimeout(r),cL(u.contentWindow);let n=this.bridge.getState();u.contentWindow?.postMessage({type:`sprinkle-init`,name:t,savedState:n},`*`),e()},{once:!0}),u.addEventListener(`error`,e=>{clearTimeout(r),n(Error(`full-doc iframe failed to load`))},{once:!0}),this.container.appendChild(u)}),this.messageHandler=e=>{if(e.source!==u.contentWindow)return;let t=e.data;t?.type&&(t.type===`sprinkle-lick`?this.bridge.lick({action:t.action,data:t.data}):t.type===`sprinkle-set-state`?this.bridge.setState(t.data):t.type===`sprinkle-close`?this.bridge.close():t.type===`sprinkle-minimize`?this.bridge.minimize():t.type===`sprinkle-stop-cone`?this.bridge.stopCone():t.type===`sprinkle-attach-image`?this.bridge.attachImage(t.base64,t.name,t.mimeType):t.type===`sprinkle-readfile`?this.bridge.readFile(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,content:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-readfile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-writefile`?this.bridge.writeFile(t.path,t.content).then(()=>u.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-writefile-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-readdir`?this.bridge.readDir(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,entries:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-readdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-exists`?this.bridge.exists(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,exists:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-exists-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-stat`?this.bridge.stat(t.path).then(e=>u.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,stat:e},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-stat-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-mkdir`?this.bridge.mkdir(t.path).then(()=>u.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-mkdir-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-rm`?this.bridge.rm(t.path).then(()=>u.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-rm-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)):t.type===`sprinkle-capture-screen`&&this.bridge.captureScreen().then(e=>u.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,base64:e.base64,width:e.width,height:e.height,mimeType:e.mimeType},`*`),e=>u.contentWindow?.postMessage({type:`sprinkle-capture-screen-response`,id:t.id,error:e instanceof Error?e.message:String(e)},`*`)))},window.addEventListener(`message`,this.messageHandler)}renderInline(e,t){if(e.includes(`<slicc-editor`)&&!customElements.get(`slicc-editor`)&&I(()=>import(`./slicc-editor-CQAmYyAf.js`),__vite__mapDeps([29,30])),e.includes(`<slicc-diff`)&&!customElements.get(`slicc-diff`)){let e=document.createElement(`script`);e.src=`/slicc-diff.js`,document.head.appendChild(e)}window.__slicc_sprinkles||(window.__slicc_sprinkles={}),window.__slicc_sprinkles[t]=this.bridge,this.bridge._container=this.container;let n=document.createElement(`div`);n.className=`sprinkle-content`,n.innerHTML=e,this.container.appendChild(n);for(let e of n.querySelectorAll(`.fill[data-value]`)){let t=parseFloat(e.dataset.value||`0`);t>=0&&t<=100&&(e.style.width=`${t}%`)}let r=`window.__slicc_sprinkles[${JSON.stringify(t)}]`;for(let e of n.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;/\b(slicc|bridge)\b/.test(t)&&e.setAttribute(`onclick`,t.replace(/\b(slicc|bridge)\b/g,r))}let i=Array.from(n.querySelectorAll(`script`));for(let e of i){e.remove();let t=document.createElement(`script`);for(let n of e.attributes)t.setAttribute(n.name,n.value);if(!e.src){let i=new Set;for(let e of n.querySelectorAll(`[onclick]`)){let t=e.getAttribute(`onclick`)||``;for(let e of t.matchAll(/\b(\w+)\s*\(/g)){let t=e[1];[`slicc`,`bridge`,`lick`,`close`].includes(t)||i.add(t)}}let a=[...i].map(e=>`if (typeof ${e} === 'function') window.${e} = ${e};`).join(`
|
|
749
749
|
`);t.textContent=`(function() { var slicc = ${r}; var bridge = slicc;\n`+e.textContent+(a?`
|
|
750
750
|
`+a:``)+`
|
|
751
751
|
})();`}n.appendChild(t),this.scripts.push(t)}}dispose(){this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(lL(this.iframe.contentWindow),this.iframe.remove(),null);for(let e of this.scripts)e.remove();this.scripts=[];let e=this.container.querySelector(`.sprinkle-content`);e&&e.remove(),window.__slicc_sprinkles&&delete window.__slicc_sprinkles[this.bridge.name]}async getLucideScript(){return e.cachedLucideScript===null?(e.lucideScriptPromise===null&&(e.lucideScriptPromise=(async()=>{try{let t=await fetch(chrome.runtime.getURL(`lucide-icons.js`));if(t.ok){let n=await t.text();return e.cachedLucideScript=n,n}}catch{}return e.cachedLucideScript=``,``})()),e.lucideScriptPromise):e.cachedLucideScript}};function bL(e,t){return e.replace(/url\(\s*['"]?([^'")]+)['"]?\s*\)/g,(e,n)=>{if(/^(https?:|data:|blob:)/i.test(n))return`url('${n}')`;try{return`url('${new URL(n,t).href}')`}catch{return`url('${n}')`}})}function xL(){if(typeof getComputedStyle!=`function`)return``;let e=[],t=[],n=[],r=location.href,i=e=>e===`:root`||e===`:root.theme-light`||e.startsWith(`.theme-light `)||e===`.theme-light`||e.split(`,`).some(e=>{let t=e.trim();return t===`:root`||t===`:root.theme-light`||t.startsWith(`.theme-light `)||t===`.theme-light`});for(let a of document.styleSheets)try{for(let o of a.cssRules)if(o instanceof CSSFontFaceRule)e.push(bL(o.cssText,r));else if(o instanceof CSSStyleRule){let e=o.selectorText;i(e)&&t.push(o.cssText),(e.includes(`.sprinkle-`)||e.includes(`.fill`))&&n.push(o.cssText)}}catch{}return e.join(`
|
|
@@ -981,7 +981,7 @@ ${this.parser.parse(e)}</blockquote>
|
|
|
981
981
|
${e}</tr>
|
|
982
982
|
`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
|
|
983
983
|
`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${g6(e,!0)}</code>`}br(e){return`<br>`}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=_6(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+g6(t)+`"`),a+=`>`+r+`</a>`,a}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=_6(e);if(i===null)return g6(n);e=i;let a=`<img src="${e}" alt="${g6(n)}"`;return t&&(a+=` title="${g6(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:g6(e.text)}},T6=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return``+e}image({text:e}){return``+e}br(){return``}checkbox({raw:e}){return e}},E6=class e{options;renderer;textRenderer;constructor(e){this.options=e||R3,this.options.renderer=this.options.renderer||new w6,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new T6}static parse(t,n){return new e(n).parse(t)}static parseInline(t,n){return new e(n).parseInline(t)}parse(e){this.renderer.parser=this;let t=``;for(let n=0;n<e.length;n++){let r=e[n];if(this.options.extensions?.renderers?.[r.type]){let e=r,n=this.options.extensions.renderers[e.type].call({parser:this},e);if(n!==!1||![`space`,`hr`,`heading`,`code`,`table`,`blockquote`,`list`,`html`,`def`,`paragraph`,`text`].includes(e.type)){t+=n||``;continue}}let i=r;switch(i.type){case`space`:t+=this.renderer.space(i);break;case`hr`:t+=this.renderer.hr(i);break;case`heading`:t+=this.renderer.heading(i);break;case`code`:t+=this.renderer.code(i);break;case`table`:t+=this.renderer.table(i);break;case`blockquote`:t+=this.renderer.blockquote(i);break;case`list`:t+=this.renderer.list(i);break;case`checkbox`:t+=this.renderer.checkbox(i);break;case`html`:t+=this.renderer.html(i);break;case`def`:t+=this.renderer.def(i);break;case`paragraph`:t+=this.renderer.paragraph(i);break;case`text`:t+=this.renderer.text(i);break;default:{let e=`Token with "`+i.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return t}parseInline(e,t=this.renderer){this.renderer.parser=this;let n=``;for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let e=this.options.extensions.renderers[i.type].call({parser:this},i);if(e!==!1||![`escape`,`html`,`link`,`image`,`strong`,`em`,`codespan`,`br`,`del`,`text`].includes(i.type)){n+=e||``;continue}}let a=i;switch(a.type){case`escape`:n+=t.text(a);break;case`html`:n+=t.html(a);break;case`link`:n+=t.link(a);break;case`image`:n+=t.image(a);break;case`checkbox`:n+=t.checkbox(a);break;case`strong`:n+=t.strong(a);break;case`em`:n+=t.em(a);break;case`codespan`:n+=t.codespan(a);break;case`br`:n+=t.br(a);break;case`del`:n+=t.del(a);break;case`text`:n+=t.text(a);break;default:{let e=`Token with "`+a.type+`" type was not found.`;if(this.options.silent)return console.error(e),``;throw Error(e)}}}return n}},D6=class{options;block;constructor(e){this.options=e||R3}static passThroughHooks=new Set([`preprocess`,`postprocess`,`processAllTokens`,`emStrongMask`]);static passThroughHooksRespectAsync=new Set([`preprocess`,`postprocess`,`processAllTokens`]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}emStrongMask(e){return e}provideLexer(e=this.block){return e?C6.lex:C6.lexInline}provideParser(e=this.block){return e?E6.parse:E6.parseInline}},O6=class{defaults=L3();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=E6;Renderer=w6;TextRenderer=T6;Lexer=C6;Tokenizer=S6;Hooks=D6;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case`table`:{let e=r;for(let r of e.header)n=n.concat(this.walkTokens(r.tokens,t));for(let r of e.rows)for(let e of r)n=n.concat(this.walkTokens(e.tokens,t));break}case`list`:{let e=r;n=n.concat(this.walkTokens(e.items,t));break}default:{let e=r;this.defaults.extensions?.childTokens?.[e.type]?this.defaults.extensions.childTokens[e.type].forEach(r=>{let i=e[r].flat(1/0);n=n.concat(this.walkTokens(i,t))}):e.tokens&&(n=n.concat(this.walkTokens(e.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(e=>{let n={...e};if(n.async=this.defaults.async||n.async||!1,e.extensions&&(e.extensions.forEach(e=>{if(!e.name)throw Error(`extension name required`);if(`renderer`in e){let n=t.renderers[e.name];n?t.renderers[e.name]=function(...t){let r=e.renderer.apply(this,t);return r===!1&&(r=n.apply(this,t)),r}:t.renderers[e.name]=e.renderer}if(`tokenizer`in e){if(!e.level||e.level!==`block`&&e.level!==`inline`)throw Error(`extension level must be 'block' or 'inline'`);let n=t[e.level];n?n.unshift(e.tokenizer):t[e.level]=[e.tokenizer],e.start&&(e.level===`block`?t.startBlock?t.startBlock.push(e.start):t.startBlock=[e.start]:e.level===`inline`&&(t.startInline?t.startInline.push(e.start):t.startInline=[e.start]))}`childTokens`in e&&e.childTokens&&(t.childTokens[e.name]=e.childTokens)}),n.extensions=t),e.renderer){let t=this.defaults.renderer||new w6(this.defaults);for(let n in e.renderer){if(!(n in t))throw Error(`renderer '${n}' does not exist`);if([`options`,`parser`].includes(n))continue;let r=n,i=e.renderer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n||``}}n.renderer=t}if(e.tokenizer){let t=this.defaults.tokenizer||new S6(this.defaults);for(let n in e.tokenizer){if(!(n in t))throw Error(`tokenizer '${n}' does not exist`);if([`options`,`rules`,`lexer`].includes(n))continue;let r=n,i=e.tokenizer[r],a=t[r];t[r]=(...e)=>{let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.tokenizer=t}if(e.hooks){let t=this.defaults.hooks||new D6;for(let n in e.hooks){if(!(n in t))throw Error(`hook '${n}' does not exist`);if([`options`,`block`].includes(n))continue;let r=n,i=e.hooks[r],a=t[r];D6.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&D6.passThroughHooksRespectAsync.has(n))return(async()=>{let n=await i.call(t,e);return a.call(t,n)})();let r=i.call(t,e);return a.call(t,r)}:t[r]=(...e)=>{if(this.defaults.async)return(async()=>{let n=await i.apply(t,e);return n===!1&&(n=await a.apply(t,e)),n})();let n=i.apply(t,e);return n===!1&&(n=a.apply(t,e)),n}}n.hooks=t}if(e.walkTokens){let t=this.defaults.walkTokens,r=e.walkTokens;n.walkTokens=function(e){let n=[];return n.push(r.call(this,e)),t&&(n=n.concat(t.call(this,e))),n}}this.defaults={...this.defaults,...n}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return C6.lex(e,t??this.defaults)}parser(e,t){return E6.parse(e,t??this.defaults)}parseMarkdown(e){return(t,n)=>{let r={...n},i={...this.defaults,...r},a=this.onError(!!i.silent,!!i.async);if(this.defaults.async===!0&&r.async===!1)return a(Error(`marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.`));if(typeof t>`u`||t===null)return a(Error(`marked(): input parameter is undefined or null`));if(typeof t!=`string`)return a(Error(`marked(): input parameter is of type `+Object.prototype.toString.call(t)+`, string expected`));if(i.hooks&&(i.hooks.options=i,i.hooks.block=e),i.async)return(async()=>{let n=i.hooks?await i.hooks.preprocess(t):t,r=await(i.hooks?await i.hooks.provideLexer(e):e?C6.lex:C6.lexInline)(n,i),a=i.hooks?await i.hooks.processAllTokens(r):r;i.walkTokens&&await Promise.all(this.walkTokens(a,i.walkTokens));let o=await(i.hooks?await i.hooks.provideParser(e):e?E6.parse:E6.parseInline)(a,i);return i.hooks?await i.hooks.postprocess(o):o})().catch(a);try{i.hooks&&(t=i.hooks.preprocess(t));let n=(i.hooks?i.hooks.provideLexer(e):e?C6.lex:C6.lexInline)(t,i);i.hooks&&(n=i.hooks.processAllTokens(n)),i.walkTokens&&this.walkTokens(n,i.walkTokens);let r=(i.hooks?i.hooks.provideParser(e):e?E6.parse:E6.parseInline)(n,i);return i.hooks&&(r=i.hooks.postprocess(r)),r}catch(e){return a(e)}}}onError(e,t){return n=>{if(n.message+=`
|
|
984
|
-
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+g6(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},k6=new O6;function A6(e,t){return k6.parse(e,t)}A6.options=A6.setOptions=function(e){return k6.setOptions(e),A6.defaults=k6.defaults,z3(A6.defaults),A6},A6.getDefaults=L3,A6.defaults=R3,A6.use=function(...e){return k6.use(...e),A6.defaults=k6.defaults,z3(A6.defaults),A6},A6.walkTokens=function(e,t){return k6.walkTokens(e,t)},A6.parseInline=k6.parseInline,A6.Parser=E6,A6.parser=E6.parse,A6.Renderer=w6,A6.TextRenderer=T6,A6.Lexer=C6,A6.lexer=C6.lex,A6.Tokenizer=S6,A6.Hooks=D6,A6.parse=A6,A6.options,A6.setOptions,A6.use,A6.walkTokens,A6.parseInline,E6.parse,C6.lex;function j6(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function pxe(e,t){let n=j6(e);return t===`shtml`||([`js`,`javascript`,`ts`,`typescript`,`jsx`,`tsx`].includes(t)?n=hxe(n):t===`json`?n=gxe(n):[`bash`,`sh`,`shell`,`zsh`].includes(t)&&(n=_xe(n))),n}function mxe(e){let t=[];return{html:e.replace(/<span class="tok-(?:comment|string)">[\s\S]*?<\/span>/g,e=>{let n=String.fromCharCode(57344+t.length);return t.push(e),n}),restore:e=>e.replace(/[\ue000-\uf8ff]/g,e=>t[e.charCodeAt(0)-57344]??e)}}function hxe(e){e=e.replace(/(\/\/[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/(\/\*[\s\S]*?\*\/)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?'|`[^`]*?`)/g,`<span class="tok-string">$1</span>`);let t=mxe(e);return e=t.html,e=e.replace(RegExp(`\\b(${`const.let.var.function.return.if.else.for.while.class.extends.import.export.from.default.new.this.async.await.try.catch.throw.typeof.instanceof.interface.type.enum.implements.abstract.public.private.protected.readonly.static.void.null.undefined.true.false`.split(`.`).join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g,`<span class="tok-fn">$1</span>`),t.restore(e)}function gxe(e){return e=e.replace(/("[^&]*?")\s*:/g,`<span class="tok-keyword">$1</span>:`),e=e.replace(/:\s*("[^&]*?")/g,`: <span class="tok-string">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b(true|false|null)\b/g,`<span class="tok-keyword">$1</span>`),e}function _xe(e){return e=e.replace(/(#[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?')/g,`<span class="tok-string">$1</span>`),e=e.replace(RegExp(`\\b(${[`if`,`then`,`else`,`fi`,`for`,`do`,`done`,`while`,`case`,`esac`,`echo`,`export`,`cd`,`ls`,`mkdir`,`rm`,`cp`,`mv`,`cat`,`grep`,`npm`,`node`,`git`].join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e}var vxe=new O6({gfm:!0,breaks:!0,async:!1,renderer:{code({text:e,lang:t}){let n=t??``,r=pxe(e,n);return`<pre><code${n?` class="language-${j6(n)}"`:``}>${r}</code></pre>\n`},link({href:e,title:t,tokens:n}){let r=e??``;if(r.startsWith(`javascript:`))return this.parser.parseInline(n);let i=t?` title="${j6(t)}"`:``,a=this.parser.parseInline(n);return`<a href="${j6(r)}"${i} target="_blank" rel="noopener noreferrer">${a}</a>`},image({href:e,title:t,text:n}){let r=e??``,i=n?` alt="${j6(n)}"`:``,a=t?` title="${j6(t)}"`:``;return`<img src="${j6(r)}"${i}${a}>`}}}),yxe={ALLOWED_TAGS:`a.b.i.em.strong.p.br.code.pre.ul.ol.li.h1.h2.h3.h4.h5.h6.table.thead.tbody.tr.th.td.del.blockquote.hr.img.span.div.details.summary.input`.split(`.`),ALLOWED_ATTR:[`href`,`src`,`alt`,`title`,`class`,`target`,`rel`,`type`,`checked`,`disabled`],ALLOW_DATA_ATTR:!1};function bxe(e){return Obe(e,yxe)}function xxe(e){return e.replace(/<a\s([^>]*?)>/g,(e,t)=>{let n=t;return/(^|\s)target\s*=/i.test(n)?n=n.replace(/(^|\s)target\s*=\s*(['"])[^'"]*\2/gi,`$1target="_blank"`):n+=` target="_blank"`,/(^|\s)rel\s*=/i.test(n)?n=n.replace(/(^|\s)rel\s*=\s*(['"])[^'"]*\2/gi,`$1rel="noopener noreferrer"`):n+=` rel="noopener noreferrer"`,`<a ${n}>`})}var Sxe=/<p><strong>Error:<\/strong>\s*([\s\S]*?)<\/p>/g,Cxe=/<pre><code class="language-shtml">[\s\S]*?<\/code><\/pre>/g,wxe=`<div class="msg__dip-pending" role="status" aria-live="polite" aria-label="Pouring a dip"><span class="msg__dip-pending-label">Pouring a dip…</span><span class="msg__dip-pending-status" aria-hidden="true"></span></div>`;function M6(e){return xxe(bxe(vxe.parse(e)))}function Txe(e){return e.replace(Sxe,(e,t)=>`<div class="msg__error" role="alert"><div class="msg__error-label">Error</div><div class="msg__error-body">${t}</div></div>`)}function Exe(e){return e.replace(Cxe,wxe)}function N6(e){return M6(e)}function P6(e,t=!1){let n=Txe(M6(e));return t&&(n=Exe(n)),n}function Dxe(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`leader-offer`,label:`Enable multi-browser sync`,caption:`Connect another browser to this session.`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??Oxe(t.state)??`Mirroring another browser.`}}function Oxe(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function F6(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}function I6(e,t,n){return{temperature:t?.temperature,maxTokens:t?.maxTokens,signal:t?.signal,apiKey:n||t?.apiKey,transport:t?.transport,cacheRetention:t?.cacheRetention,sessionId:t?.sessionId,headers:t?.headers,onPayload:t?.onPayload,onResponse:t?.onResponse,timeoutMs:t?.timeoutMs,websocketConnectTimeoutMs:t?.websocketConnectTimeoutMs,maxRetries:t?.maxRetries,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata}}function L6(e){return e===`xhigh`?`high`:e}function R6(e,t,n,r){let i={minimal:1024,low:2048,medium:8192,high:16384,...r}[L6(n)],a=e===void 0?t:Math.min(e+i,t);return a<=i&&(i=Math.max(0,a-1024)),{maxTokens:a,thinkingBudget:i}}var kxe=`(image omitted: model does not support images)`,Axe=`(tool image omitted: model does not support images)`;function z6(e,t){let n=[],r=!1;for(let i of e){if(i.type===`image`){r||n.push({type:`text`,text:t}),r=!0;continue}n.push(i),r=i.text===t}return n}function jxe(e,t){return t.input.includes(`image`)?e:e.map(e=>e.role===`user`&&Array.isArray(e.content)?{...e,content:z6(e.content,kxe)}:e.role===`toolResult`?{...e,content:z6(e.content,Axe)}:e)}function B6(e,t,n){let r=new Map,i=jxe(e,t).map(e=>{if(e.role===`user`)return e;if(e.role===`toolResult`){let t=r.get(e.toolCallId);return t&&t!==e.toolCallId?{...e,toolCallId:t}:e}if(e.role===`assistant`){let i=e,a=i.provider===t.provider&&i.api===t.api&&i.model===t.id,o=i.content.flatMap(e=>{if(e.type===`thinking`)return e.redacted?a?e:[]:a&&e.thinkingSignature?e:!e.thinking||e.thinking.trim()===``?[]:a?e:{type:`text`,text:e.thinking};if(e.type===`text`)return a?e:{type:`text`,text:e.text};if(e.type===`toolCall`){let o=e,s=o;if(!a&&o.thoughtSignature&&(s={...o},delete s.thoughtSignature),!a&&n){let e=n(o.id,t,i);e!==o.id&&(r.set(o.id,e),s={...s,id:e})}return s}return e});return{...i,content:o}}return e}),a=[],o=[],s=new Set,c=()=>{if(o.length>0){for(let e of o)s.has(e.id)||a.push({role:`toolResult`,toolCallId:e.id,toolName:e.name,content:[{type:`text`,text:`No result provided`}],isError:!0,timestamp:Date.now()});o=[],s=new Set}};for(let e=0;e<i.length;e++){let t=i[e];if(t.role===`assistant`){c();let e=t;if(e.stopReason===`error`||e.stopReason===`aborted`)continue;let n=e.content.filter(e=>e.type===`toolCall`);n.length>0&&(o=n,s=new Set),a.push(t)}else t.role===`toolResult`?(s.add(t.toolCallId),a.push(t)):(t.role===`user`&&c(),a.push(t))}return c(),a}var Mxe=[`claude-opus-4-7`,`opus-4-7`,`claude-opus-4-8`,`opus-4-8`];function Nxe(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function V6(e,t){return!Nxe(e,t).some(e=>Mxe.some(t=>e.includes(t)))}function Pxe(e,t,n){if(n.temperature===void 0||V6(e,t))return n;let{temperature:r,...i}=n;return i}var Fxe=s({bedrockCampRegionFromBaseUrl:()=>H6,config:()=>Ixe,isBedrockCampCompatible:()=>U6,register:()=>aSe,streamBedrockCamp:()=>Q6,streamSimpleBedrockCamp:()=>$6}),Ixe={id:`bedrock-camp`,name:`AWS Bedrock`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`,defaultModelId:`claude-sonnet-4-6`},Lxe=/^(us|eu|global|apac)\./,Rxe=/\.anthropic\.claude-(opus|sonnet|haiku)-4/,zxe=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function H6(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(zxe)?.[1]??null}catch{return null}}function Bxe(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):!1}function U6(e,t){if(!Lxe.test(e.id)||!Rxe.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return Bxe(n,t)}function Vxe(e,t){return V6(e,t)}function Hxe(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function W6(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function G6(e,t,n){return W6(e,t).some(e=>n.some(t=>e.includes(t)))}function Uxe(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function K6(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function Wxe(e,t,n){let r=[],i=B6(e.messages,t,Uxe);for(let e=0;e<i.length;e++){let n=i[e];switch(n.role){case`user`:r.push({role:`user`,content:typeof n.content==`string`?[{text:K6(n.content)}]:n.content.map(e=>{if(e.type===`text`)return{text:K6(e.text)};if(e.type===`image`)return{image:q6(e.mimeType,e.data)};throw Error(`Unknown user content type: ${e.type}`)})});break;case`assistant`:{if(n.content.length===0)continue;let e=[];for(let r of n.content)switch(r.type){case`text`:if(r.text.trim().length===0)continue;e.push({text:K6(r.text)});break;case`toolCall`:e.push({toolUse:{toolUseId:r.id,name:r.name,input:r.arguments}});break;case`thinking`:if(r.thinking.trim().length===0)continue;Kxe(t)?!r.thinkingSignature||r.thinkingSignature.trim().length===0?e.push({text:K6(r.thinking)}):e.push({reasoningContent:{reasoningText:{text:K6(r.thinking),signature:r.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:K6(r.thinking)}}});break}if(e.length===0)continue;r.push({role:`assistant`,content:e});break}case`toolResult`:{let t=[];t.push({toolResult:{toolUseId:n.toolCallId,content:n.content.map(e=>e.type===`image`?{image:q6(e.mimeType,e.data)}:{text:K6(e.text??e.json??JSON.stringify(e))}),status:n.isError?`error`:`success`}});let a=e+1;for(;a<i.length&&i[a].role===`toolResult`;){let e=i[a];t.push({toolResult:{toolUseId:e.toolCallId,content:e.content.map(e=>e.type===`image`?{image:q6(e.mimeType,e.data)}:{text:K6(e.text??e.json??JSON.stringify(e))}),status:e.isError?`error`:`success`}}),a++}e=a-1,r.push({role:`user`,content:t});break}}}if(n!==`none`&&X6(t)&&r.length>0){let e=r[r.length-1];e.role===`user`&&Array.isArray(e.content)&&e.content.push(Z6(n))}return r}function q6(e,t){return{source:{bytes:t},format:Gxe(e)}}function Gxe(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:throw Error(`Unsupported image MIME type: ${e}`)}}function Kxe(e){return Y6(e)}function J6(e,t){return G6(e,t,[`opus-4-6`,`opus-4-7`,`sonnet-4-6`])}function qxe(e,t){return G6(e,t,[`opus-4-7`])}function Jxe(e,t){return G6(e,t,[`opus-4-6`])}function Yxe(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function Xxe(e,t,n){if(e===`xhigh`&&qxe(t,n))return`xhigh`;switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return Jxe(t,n)?`max`:`high`;default:return`high`}}function Zxe(e){if(H6(e.baseUrl)?.toLowerCase().startsWith(`us-gov-`))return!0;let t=e.id.toLowerCase();return t.startsWith(`us-gov.`)||t.startsWith(`arn:aws-us-gov:`)}function Qxe(e,t){if(!t.reasoning||!e.reasoning||!Y6(e))return;let n=Zxe(e)?void 0:t.thinkingDisplay??`summarized`;if(J6(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:Xxe(t.reasoning,e.id,e.name)}};let r={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},i=t.reasoning===`xhigh`?`high`:t.reasoning,a={thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[i]??r[t.reasoning],...n===void 0?{}:{display:n}}};return(t.interleavedThinking??!0)&&(a.anthropic_beta=[`interleaved-thinking-2025-05-14`]),a}function Y6(e){let t=e.id.toLowerCase(),n=e.name?.toLowerCase()??``;return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)||n.includes(`anthropic.claude`)||n.includes(`anthropic/claude`)||n.includes(`claude`)}function X6(e){let t=W6(e.id,e.name);return t.some(e=>e.includes(`claude`))?!!(t.some(e=>e.includes(`-4-`))||t.some(e=>e.includes(`claude-3-7-sonnet`))||t.some(e=>e.includes(`claude-3-5-haiku`))):!1}function Z6(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function $xe(e,t,n){if(!e)return;let r=[{text:K6(e)}];return n!==`none`&&X6(t)&&r.push(Z6(n)),r}function eSe(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function tSe(e,t){let n=`Bedrock CAMP API error (${e})`;return e===429?n=`Throttling error: ${n}`:e===503?n=`Service unavailable: ${n}`:e===502||e===504||e>=500?n=`Internal server error: ${n}`:e===400&&(n=`Validation error: ${n}`),`${n}: ${t}`}function nSe(e,t,n,r){r.push({type:`start`,partial:n});let i=e.output?.message;if(i?.content)for(let e=0;e<i.content.length;e++){let t=i.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};n.content.push(e);let i=n.content.length-1;r.push({type:`text_start`,contentIndex:i,partial:n}),r.push({type:`text_delta`,contentIndex:i,delta:t.text,partial:n}),r.push({type:`text_end`,contentIndex:i,content:t.text,partial:n})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};n.content.push(e);let i=n.content.length-1;r.push({type:`toolcall_start`,contentIndex:i,partial:n}),r.push({type:`toolcall_end`,contentIndex:i,toolCall:e,partial:n})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};n.content.push(e);let i=n.content.length-1;r.push({type:`thinking_start`,contentIndex:i,partial:n}),r.push({type:`thinking_delta`,contentIndex:i,delta:e.thinking,partial:n}),r.push({type:`thinking_end`,contentIndex:i,content:e.thinking,partial:n})}}e.usage&&(n.usage.input=e.usage.inputTokens||0,n.usage.output=e.usage.outputTokens||0,n.usage.cacheRead=e.usage.cacheReadInputTokens||0,n.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,n.usage.totalTokens=e.usage.totalTokens||n.usage.input+n.usage.output,Wc(t,n.usage)),n.stopReason=eSe(e.stopReason||`end_turn`)}function rSe(e){return e??`short`}function iSe(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}var Q6=(e,t,n={})=>{let r=Jc();return(async()=>{let i={role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,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:`stop`,timestamp:Date.now()};try{let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s=rSe(n.cacheRetention),c={};n.maxTokens!==void 0&&(c.maxTokens=n.maxTokens),n.temperature!==void 0&&Vxe(e.id,e.name)&&(c.temperature=n.temperature);let l={modelId:e.id,messages:Wxe(t,e,s),system:$xe(t.systemPrompt,e,s),inferenceConfig:c,toolConfig:Yxe(t.tools,n.toolChoice),additionalModelRequestFields:Qxe(e,n),...n.requestMetadata===void 0?{}:{requestMetadata:n.requestMetadata}};if(l.system||delete l.system,l.toolConfig||delete l.toolConfig,l.additionalModelRequestFields||delete l.additionalModelRequestFields,n.onPayload){let t=await n.onPayload(l,e);t!==void 0&&(l=t)}let u=`${o.replace(/\/$/,``)}/model/${e.id}/converse`,d={"Content-Type":`application/json`,Authorization:`Bearer ${a}`,...n.headers??{}},f=await fetch(u,{method:`POST`,headers:d,body:JSON.stringify(l),signal:n.signal});if(n.onResponse&&await n.onResponse({status:f.status,headers:iSe(f)},e),!f.ok){let e=await f.text();throw Error(tSe(f.status,e))}if(nSe(await f.json(),e,i,r),i.stopReason===`error`||i.stopReason===`aborted`)throw Error(`An unknown error occurred`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialJson;i.stopReason=n.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},$6=(e,t,n)=>{let r=I6(e,n,void 0),i=n?Hxe(n):{};if(!n?.reasoning)return Q6(e,t,{...r,...i,reasoning:void 0});if(Y6(e)){if(J6(e.id,e.name))return Q6(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=R6(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return Q6(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[L6(n.reasoning)]:a.budgetTokens}})}return Q6(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function aSe(){Ac({api:`bedrock-camp-converse`,stream:Q6,streamSimple:$6})}var oSe=s({copyTextToClipboard:()=>e8});async function e8(e){if(!e)return!1;if(typeof navigator<`u`&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;try{let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed; opacity:0; pointer-events:none; left:-9999px;`,document.body.appendChild(t),t.select();let n=document.execCommand?.(`copy`)??!1;return document.body.removeChild(t),n}catch{return!1}}var t8=null,n8=!1;function sSe(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function r8(){if(!n8&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let e=sSe();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${e}`),e===`extension`?(t8=(await I(()=>import(`./rum-DW84CvBs.js`),[])).default,typeof window<`u`&&(window.addEventListener(`error`,e=>{a8(`js`,o8(e.message??``))}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;a8(`js`,o8(t instanceof Error?t.message:String(t)))}))):(typeof window<`u`&&(window.SAMPLE_PAGEVIEWS_AT_RATE=`high`),t8=(await I(()=>import(`./src-C9oNvq2b.js`),[])).sampleRUM),n8=!0,t8&&t8(`navigate`,{source:typeof document<`u`?document.referrer:``,target:e})}catch{}}function cSe(e,t){t8?.(`formsubmit`,{source:e,target:t})}function lSe(e){t8?.(`viewblock`,{source:e})}function i8(e){t8?.(`viewmedia`,{source:e})}function a8(e,t){t8?.(`error`,{source:e,target:t})}function uSe(e){t8?.(`signup`,{source:e})}function o8(e){return(e??``).slice(0,200).replace(/(\/[a-z]+)(?:\/[^\s/]+)+/gi,`$1/.../`)}var s8=`slicc_oauth_extra_domains`;function c8(e){try{let t=e.getItem(s8);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function dSe(e,t){try{e.setItem(s8,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);var l8=s({addAccount:()=>I8,applyProviderDefaults:()=>D8,clearAllSettings:()=>$8,describeInvalidJoinUrl:()=>F6,downloadProviders:()=>Q8,exportProviders:()=>Z8,getAccounts:()=>A8,getAllAvailableModels:()=>k8,getAllExtraOAuthDomains:()=>N8,getApiKey:()=>X8,getApiKeyForProvider:()=>U8,getApiVersionForProvider:()=>K8,getAvailableProviders:()=>b8,getBaseUrlForProvider:()=>W8,getDeploymentForProvider:()=>G8,getExtraOAuthDomains:()=>j8,getOAuthAccountInfo:()=>T8,getProviderConfig:()=>S8,getProviderModels:()=>w8,getSelectedModelId:()=>q8,getSelectedProvider:()=>Y8,isModelHiddenFromPicker:()=>O8,logoutOAuthAccount:()=>z8,maskOAuthTokenWithRetry:()=>B8,migrateLegacyAuthOnlySelection:()=>y8,persistOAuthMaskViaServiceWorker:()=>V8,providerOffersLlmModels:()=>x8,removeAccount:()=>R8,resolveCurrentModel:()=>n5,resolveModelById:()=>t5,saveOAuthAccount:()=>H8,setExtraOAuthDomains:()=>M8,setSelectedModelId:()=>J8,showProviderSettings:()=>a5}),u8=Vc,d8=Uc;function f8(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function p8(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){E8.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}var m8=`slicc_accounts`,h8=`selected-model`,g8=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],fSe=new Set([`github`]);function _8(e){let t;try{t=Hc()}catch{return!1}return t.includes(e)&&!nb(e)}var v8=!1;function pSe(){if(!v8){v8=!0;for(let e of g8)try{localStorage.removeItem(e)}catch{}y8()}}function y8(){try{let e=localStorage.getItem(h8);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(fSe.has(n)||_8(n))&&localStorage.removeItem(h8)}}}catch{}try{let e=localStorage.getItem(m8);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&_8(e.providerId)));n.length!==t.length&&localStorage.setItem(m8,JSON.stringify(n))}catch{}}function b8(){let e=Hc().filter(nb),t=Qie();return[...new Set([...e,...t])].filter(e=>!ab(e)?.hidden)}function x8(e){try{if(w8(e).length>0)return!0}catch{}try{if(Uc(e).length>0)return!0}catch{}let t=ab(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function S8(e){return ab(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function C8(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function w8(e){try{if(e===`bedrock-camp`){let e=H6(W8(`bedrock-camp`));return d8(`amazon-bedrock`).filter(t=>U6(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=S8(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return E8.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of Hc())try{for(let t of d8(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=e5(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&C8(o,s),C8(o,n),o})}if(t.isOAuth){let n=d8(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&C8(i,a),i})}return d8(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return E8.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function T8(e){let t=A8().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}var mSe=Object.assign({})[`/packages/webapp/providers.json`]??[],E8=Wv(`provider-settings`);function D8(e=mSe){if(e.length===0||A8().length>0)return;let t=new Set(b8());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){E8.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}I8(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(h8)&&localStorage.setItem(h8,`${n.providerId}:${n.model}`)}var hSe=[/haiku/i];function O8(e){return hSe.some(t=>t.test(e))}function gSe(e){return e.filter(e=>!O8(e.id))}function k8(){let e=A8();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=S8(n.providerId);if(e.hidden||_8(n.providerId))continue;let r=gSe(w8(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function A8(){pSe();let e=localStorage.getItem(m8);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function j8(e){return c8(localStorage)[e]??[]}function M8(e,t){let n=c8(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,dSe(localStorage,n)}function N8(){return c8(localStorage)}function P8(e){localStorage.setItem(m8,JSON.stringify(e))}async function F8(e){if(tb()){P8(e);return}let t=eb();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(m8,r)}catch(e){E8.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function I8(e,t,n,r,i){let a=A8().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),P8(a)}async function L8(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&E8.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&E8.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&E8.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){E8.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function R8(e){let t=A8().find(t=>t.providerId===e),n=S8(e);t&&n?.isOAuth&&await z8(e),await L8(e),await F8(A8().filter(t=>t.providerId!==e));let r=localStorage.getItem(h8)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(h8)}async function z8(e){let t=A8().find(t=>t.providerId===e);if(!t)return;let n=S8(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){E8.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await I(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-DbPObLKr.js`);return{openIdpLogoutUrl:e}},[]);await t(r).catch(t=>{E8.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await F8(A8().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await L8(e)}}async function B8(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function V8(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await B8(()=>t.sendMaskRequest(r),n);if(!i){E8.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function H8(e){let t=A8().find(t=>t.providerId===e.providerId),n=A8().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await F8(n);let r=S8(e.providerId)?.oauthTokenDomains??[],i=j8(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await V8({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&E8.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&E8.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:A8,saveAccounts:F8});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=A8(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await F8(r))}else E8.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){E8.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var _Se=`local`;function U8(e){let t=A8().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(S8(e).optionalApiKey?_Se:null):null}function W8(e){return A8().find(t=>t.providerId===e)?.baseUrl??null}function G8(e){return A8().find(t=>t.providerId===e)?.deployment??null}function K8(e){return A8().find(t=>t.providerId===e)?.apiVersion??null}function q8(){let e=localStorage.getItem(h8)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function J8(e){if(e.includes(`:`))localStorage.setItem(h8,e);else{let t=Y8();localStorage.setItem(h8,`${t}:${e}`)}}function vSe(){return localStorage.getItem(h8)||``}function Y8(){let e=vSe(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=A8();return n.length>0?n[0].providerId:`anthropic`}function X8(){return U8(Y8())}function Z8(){let e=A8(),t=Y8(),n=q8();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}function Q8(){let e=JSON.stringify(Z8(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}async function $8(){let e=A8();await Promise.allSettled(e.map(e=>R8(e.providerId))),localStorage.removeItem(m8),localStorage.removeItem(h8);for(let e of g8)localStorage.removeItem(e)}function ySe(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function e5(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${ySe(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function t5(e){if(!e)return n5();let t=Y8(),n=W8(t),r=S8(t);try{let i=u8(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=w8(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(E8.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=w8(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:e5(t,e,n)}return n5()}}function n5(){let e=Y8(),t=q8(),n=W8(e),r=w8(e),i=S8(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=S8(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=u8(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){E8.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?e5(e,o,n):u8(`anthropic`,`claude-sonnet-4-0`)}}function bSe(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function r5(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var i5={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`],logout:[`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,`M16 17l5-5-5-5`,`M21 12H9`],login:[`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,`M10 17l5-5-5-5`,`M15 12H3`]};function a5(e){return uSe(`button`),new Promise(t=>{let n=localStorage.getItem(m8)??``,r=document.createElement(`div`);r.className=`dialog-overlay`;let i=document.createElement(`div`);i.className=`dialog`,i.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`;let a=()=>{e?.startInAddAccount?(r.remove(),t((localStorage.getItem(m8)??``)!==n)):o()};e?.startInAddAccount?s():A8().length>0?o():e?.autoJoinUrl?c(e.autoJoinUrl):e?.preferTrayJoin?l():s(),r.appendChild(i),document.body.appendChild(r);function o(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let a=A8(),c=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;if(a.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,i.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of a){let n=S8(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a);let l=document.createElement(`div`);l.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,t.loggedOut?(l.textContent=t.userName?`Logged out — was ${t.userName}`:`Logged out`,l.style.color=`var(--s2-content-disabled)`):t.userName?l.textContent=t.userName:t.accessToken?l.textContent=`Logged in`:l.textContent=bSe(t.apiKey),t.baseUrl&&(l.textContent+=` • `+t.baseUrl),i.appendChild(l),r.appendChild(i);let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let d=document.createElement(`button`);if(d.style.cssText=c,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(r5(i5.pen)),d.addEventListener(`mouseenter`,()=>{d.style.color=`var(--s2-accent)`,d.style.borderColor=`var(--s2-accent)`}),d.addEventListener(`mouseleave`,()=>{d.style.color=`var(--s2-content-secondary)`,d.style.borderColor=`var(--s2-border-subtle)`}),d.addEventListener(`click`,()=>{s(t)}),u.appendChild(d),n.isOAuth){let e=t.loggedOut===!0,r=document.createElement(`button`);r.style.cssText=c,e?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(r5(i5.login)),r.addEventListener(`mouseenter`,()=>{r.style.color=`var(--s2-accent)`,r.style.borderColor=`var(--s2-accent)`}),r.addEventListener(`mouseleave`,()=>{r.style.color=`var(--s2-content-secondary)`,r.style.borderColor=`var(--s2-border-subtle)`}),r.addEventListener(`click`,async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await I(async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await import(`./oauth-service-DbPObLKr.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},[]),r={forceReauth:!0};if(n.onOAuthLoginIntercepted){let e=await t();e&&await n.onOAuthLoginIntercepted(e,o,r)}else if(n.onOAuthLogin){let t=e();await n.onOAuthLogin(t,o,r)}})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(r5(i5.logout)),r.addEventListener(`mouseenter`,()=>{r.style.color=`var(--s2-warning, #f59e0b)`,r.style.borderColor=`var(--s2-warning, #f59e0b)`}),r.addEventListener(`mouseleave`,()=>{r.style.color=`var(--s2-content-secondary)`,r.style.borderColor=`var(--s2-border-subtle)`}),r.addEventListener(`click`,async()=>{await z8(t.providerId),o()})),u.appendChild(r)}let f=document.createElement(`button`);f.style.cssText=c,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(r5(i5.trash)),f.addEventListener(`mouseenter`,()=>{f.style.color=`var(--s2-negative)`,f.style.borderColor=`var(--s2-negative)`}),f.addEventListener(`mouseleave`,()=>{f.style.color=`var(--s2-content-secondary)`,f.style.borderColor=`var(--s2-border-subtle)`}),f.addEventListener(`click`,async()=>{await R8(t.providerId),o()}),u.appendChild(f),r.appendChild(u),e.appendChild(r)}i.appendChild(e)}let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 8px;`;let d=document.createElement(`button`);d.className=a.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,d.style.flex=`1`,d.textContent=`Add Account`,d.addEventListener(`click`,()=>s()),u.appendChild(d);let f=document.createElement(`button`);f.className=`dialog__btn dialog__btn--secondary`,f.style.flex=`1`,f.textContent=`Export`,f.addEventListener(`click`,()=>Q8()),u.appendChild(f),i.appendChild(u);let p=document.createElement(`hr`);p.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(p);let m=document.createElement(`div`);m.className=`dialog__desc`,m.style.cssText=`font-weight: 600; margin-bottom: 8px;`,m.textContent=`Tray`,i.appendChild(m);let h=ZP(),g=h.state!==`inactive`,_=Tb(window.localStorage);if(g||_){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${g?h.state:`configured`}`,h.error&&(e.textContent+=` — ${h.error}`,e.style.color=`var(--slicc-cone)`),i.appendChild(e)}let v=document.createElement(`button`);v.className=`dialog__btn dialog__btn--secondary`,v.textContent=g||_?`Reconnect to other browser`:`Connect to another browser`,v.addEventListener(`click`,()=>l()),i.appendChild(v);let ee=document.createElement(`hr`);ee.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(ee);let y=document.createElement(`button`);y.className=`dialog__btn`,y.textContent=`Get Started`,y.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(m8)??``)!==n)}),i.appendChild(y)}function s(s){i.innerHTML=``;let c=!!s,u=document.createElement(`div`);u.className=`dialog__title`,u.textContent=c?`Edit Account`:`Add Account`,i.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Provider:`,i.appendChild(d);let f=document.createElement(`select`);if(f.className=`dialog__input`,f.style.marginBottom=`8px`,c){let e=S8(s.providerId),t=document.createElement(`option`);t.value=s.providerId,t.textContent=e.name,f.appendChild(t),f.disabled=!0,f.style.opacity=`0.7`}else{let t=document.createElement(`option`);t.value=``,t.textContent=`Select a provider…`,t.disabled=!0,t.selected=!0,t.hidden=!0,f.appendChild(t);let n=b8(),r=new Set(A8().map(e=>e.providerId)),i=[...n].sort((e,t)=>{let n=S8(e).name,r=S8(t).name;return n.localeCompare(r)});for(let t of i){if(r.has(t))continue;if(e?.providerFilter){if(!e.providerFilter(t))continue}else if(!x8(t))continue;let n=S8(t),i=document.createElement(`option`);i.value=t,i.textContent=n.name,f.appendChild(i)}}i.appendChild(f);let p=document.createElement(`div`);p.className=`dialog__desc`,p.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(p);let m=document.createElement(`div`);m.style.cssText=`margin-bottom: 16px; display: none;`;let h=document.createElement(`button`);h.className=`dialog__btn`,h.textContent=`Login`,h.style.cssText=`width: 100%; margin-bottom: 8px;`,m.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,m.appendChild(g);let _=()=>{let e=m,t=g,n=h;return r=>new Promise(i=>{let a=n.style.display,o=t.style.display;n.style.display=`none`,t.style.display=`none`;let s=document.createElement(`div`);s.setAttribute(`data-slicc-device-code-prompt`,``),s.style.cssText=`display:flex;flex-direction:column;gap:8px`;let c=document.createElement(`div`);c.className=`dialog__desc`,c.textContent=`Verification code`,c.style.cssText=`font-size: 11px; color: var(--s2-content-tertiary);`;let l=document.createElement(`div`);l.textContent=r.userCode,l.style.cssText=[`font: 600 22px ui-monospace, SFMono-Regular, Menlo, monospace`,`letter-spacing: 2px`,`color: var(--s2-content-primary, #e6edf3)`,`background: var(--s2-bg-secondary, #161b22)`,`border: 1px solid var(--s2-border, #30363d)`,`border-radius: 6px`,`padding: 10px 12px`,`text-align: center`,`user-select: all`,`cursor: text`].join(`;`);let u=document.createElement(`div`);u.className=`dialog__desc`,u.style.cssText=`font-size: 12px; color: var(--s2-content-secondary);`,u.textContent=`Click Copy & Continue — we will open the GitHub authorization page in a new tab. Paste this code there if it is not already filled in.`;let d=document.createElement(`div`);d.style.cssText=`display:flex;gap:8px;justify-content:flex-end;margin-top:4px`;let f=document.createElement(`button`);f.type=`button`,f.className=`dialog__btn`,f.textContent=`Cancel`;let p=document.createElement(`button`);p.type=`button`,p.className=`dialog__btn dialog__btn--primary`,p.textContent=`Copy & Continue`;let m=()=>{try{s.remove()}catch{}n.style.display=a,t.style.display=o};f.addEventListener(`click`,()=>{m(),i(`cancel`)}),p.addEventListener(`click`,()=>{(async()=>{try{await e8(r.userCode)}catch{}m(),t.style.display=o,t.textContent=`Waiting for you to authorize in the new tab…`,i(`continue`)})()}),d.appendChild(f),d.appendChild(p),s.appendChild(c),s.appendChild(l),s.appendChild(u),s.appendChild(d),e.appendChild(s)})};h.addEventListener(`click`,async()=>{let e=f.value;if(!e)return;let t=S8(e);if(!t.onOAuthLogin&&!t.onOAuthLoginIntercepted)return;let n=A8().some(t=>t.providerId===e),r=W8(e);if(t.requiresBaseUrl&&!ne.value.trim()&&!r){g.textContent=`Base URL is required.`,g.style.color=`var(--slicc-cone)`,ne.focus();return}t.requiresBaseUrl&&ne.value.trim()&&I8(e,``,ne.value.trim()),g.textContent=`Opening login window...`;try{if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DbPObLKr.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),n=await e();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await t.onOAuthLoginIntercepted(n,a,{presentDeviceCode:_()})}else if(t.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DbPObLKr.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}}catch(t){if(!n)try{await R8(e)}catch{}E8.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),g.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),c&&s.userName&&(g.textContent=`Logged in as ${s.userName}`,h.textContent=`Re-login`),i.appendChild(m);let v=document.createElement(`div`),ee=document.createElement(`div`);ee.className=`dialog__desc`,v.appendChild(ee);let y=document.createElement(`input`);y.className=`dialog__input`,y.type=`password`,y.autocomplete=`off`,y.spellcheck=!1,c&&(y.value=s.apiKey),v.appendChild(y),i.appendChild(v);let b=document.createElement(`div`),te=document.createElement(`div`);te.className=`dialog__desc`,te.textContent=`Base URL:`,b.appendChild(te);let ne=document.createElement(`input`);ne.className=`dialog__input`,ne.type=`text`,ne.autocomplete=`off`,ne.spellcheck=!1,c&&s.baseUrl&&(ne.value=s.baseUrl),b.appendChild(ne);let re=document.createElement(`div`);re.className=`dialog__desc`,re.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(re),i.appendChild(b);let x=document.createElement(`div`);x.style.display=`none`;let ie=document.createElement(`div`);ie.className=`dialog__desc`,ie.textContent=`Deployment:`,x.appendChild(ie);let S=document.createElement(`input`);S.className=`dialog__input`,S.type=`text`,S.autocomplete=`off`,S.spellcheck=!1,c&&s.deployment&&(S.value=s.deployment),x.appendChild(S);let C=document.createElement(`div`);C.className=`dialog__desc`,C.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,x.appendChild(C),i.appendChild(x);let ae=document.createElement(`div`);ae.style.display=`none`;let oe=document.createElement(`div`);oe.className=`dialog__desc`,oe.textContent=`API Version:`,ae.appendChild(oe);let se=document.createElement(`input`);se.className=`dialog__input`,se.type=`text`,se.autocomplete=`off`,se.spellcheck=!1,c&&s.apiVersion&&(se.value=s.apiVersion),ae.appendChild(se);let ce=document.createElement(`div`);ce.className=`dialog__desc`,ce.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,ae.appendChild(ce),i.appendChild(ae);let w=document.createElement(`div`);w.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(w);let T=document.createElement(`button`);T.className=`dialog__btn`,T.textContent=c?`Save`:`Add`;function E(){let e=f.value;if(!e){p.textContent=``,m.style.display=`none`,v.style.display=`none`,b.style.display=`none`,x.style.display=`none`,ae.style.display=`none`,T.style.display=`none`;return}let t=S8(e);if(p.textContent=t.description,t.isOAuth)m.style.display=``,v.style.display=`none`,b.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(ne.placeholder=t.baseUrlPlaceholder||`https://...`,re.textContent=t.baseUrlDescription||``),h.textContent=`Login with ${t.name}`,T.style.display=`none`;else{m.style.display=`none`,ee.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,y.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;v.style.display=e?``:`none`,ne.placeholder=t.baseUrlPlaceholder||`https://...`,re.textContent=t.baseUrlDescription||``,b.style.display=t.requiresBaseUrl?``:`none`,T.style.display=``}t.requiresDeployment?(x.style.display=``,S.placeholder=t.deploymentPlaceholder||`deployment-name`,C.textContent=t.deploymentDescription||``):x.style.display=`none`,t.requiresApiVersion?(ae.style.display=``,!se.value&&t.apiVersionDefault&&(se.value=t.apiVersionDefault),se.placeholder=t.apiVersionDefault||`api-version`,ce.textContent=t.apiVersionDescription||``):ae.style.display=`none`}f.addEventListener(`change`,()=>{w.style.display=`none`,E()}),E();function D(){let e=f.value;if(!e)return;let t=S8(e);if(t.requiresApiKey&&y.value.trim().length<5){w.textContent=`API key is required (at least 5 characters).`,w.style.display=``,y.focus();return}if(t.requiresBaseUrl&&!ne.value.trim()){w.textContent=`Base URL is required for this provider.`,w.style.display=``,ne.focus();return}if(t.requiresDeployment&&!S.value.trim()){w.textContent=`Deployment name is required for this provider.`,w.style.display=``,S.focus();return}I8(e,y.value.trim(),ne.value.trim()||void 0,S.value.trim()||void 0,se.value.trim()||void 0),a()}T.addEventListener(`click`,D);let O=e=>{e.key===`Enter`&&D()};y.addEventListener(`keydown`,O),ne.addEventListener(`keydown`,O),S.addEventListener(`keydown`,O),se.addEventListener(`keydown`,O),i.appendChild(T);let le=A8().length>0;if(e?.startInAddAccount){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Cancel`,e.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(m8)??``)!==n)}),i.appendChild(e)}else if(!c&&!le){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Connect to another browser`,e.addEventListener(`click`,()=>{l()}),i.appendChild(e)}else if(le){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{o()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=f.value;if(!e)return;let t=S8(e);t.requiresApiKey?y.focus():t.requiresBaseUrl&&ne.focus()})}function c(e){i.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect this browser?`,i.appendChild(n);let a=document.createElement(`div`);a.className=`dialog__desc`,a.style.marginBottom=`12px`,a.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,i.appendChild(a);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,o.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,i.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,i.appendChild(c);let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let n=wb(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(f8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else p8(n.joinUrl,c);c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`;let i=setTimeout(()=>{r.remove(),t(!1)},800);c.dataset.dismissTimer=String(i)}),i.appendChild(l);let u=document.createElement(`button`);u.className=`dialog__btn dialog__btn--secondary`,u.style.marginTop=`8px`,u.textContent=`Set up an account instead`,u.addEventListener(`click`,()=>{s()}),i.appendChild(u)}function l(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Connect to another browser`,i.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,i.appendChild(n);let a=document.createElement(`details`);a.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let o=document.createElement(`summary`);o.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,o.textContent=`How do I get the sync URL?`,a.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let l=document.createElement(`ol`);l.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,l.appendChild(t)}c.appendChild(l),a.appendChild(c),i.appendChild(a);let u=document.createElement(`div`);u.className=`dialog__desc`,u.textContent=`Sync URL:`,i.appendChild(u);let d=document.createElement(`input`);d.className=`dialog__input`,d.type=`text`,d.autocomplete=`off`,d.spellcheck=!1,d.placeholder=`https://www.sliccy.ai/join/<token>`,i.appendChild(d);let f=document.createElement(`div`);f.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(f);let p=document.createElement(`div`);p.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let m=document.createElement(`button`);m.className=`dialog__btn`,m.textContent=`Connect`,m.addEventListener(`click`,()=>{let e=d.value.trim();if(!e){f.textContent=`Paste a sync URL to continue.`,f.style.display=``,d.focus();return}let n=wb(window.localStorage,e);if(!n){f.textContent=F6(e),f.style.display=``,d.focus();return}if(f8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else p8(n.joinUrl,p);p.textContent=`Connecting…`,p.style.display=``,p.style.color=`var(--s2-content-secondary)`;let i=setTimeout(()=>{r.remove(),t(!1)},800);p.dataset.dismissTimer=String(i)}),i.appendChild(m),i.appendChild(p);let h=document.createElement(`button`);h.className=`dialog__btn dialog__btn--secondary`,h.style.marginTop=`8px`,h.textContent=`Back`,h.addEventListener(`click`,()=>{s()}),i.appendChild(h),d.addEventListener(`input`,()=>{f.style.display=`none`}),d.addEventListener(`keydown`,e=>{e.key===`Enter`&&m.click()}),requestAnimationFrame(()=>d.focus())}})}var xSe=`slicc:adobe-daily-uuid:`,o5=new Map;function SSe(){return new Date().toISOString().slice(0,10)}function CSe(){try{let e=globalThis.localStorage;return!e||typeof e.getItem!=`function`||typeof e.setItem!=`function`?null:e}catch{return null}}function s5(e){let t=SSe(),n=CSe(),r=xSe+e;if(n){let e=null;try{e=n.getItem(r)}catch{e=null}if(e)try{let n=JSON.parse(e);if(n.date===t&&typeof n.uuid==`string`)return n.uuid}catch{}let i=crypto.randomUUID();try{n.setItem(r,JSON.stringify({uuid:i,date:t}))}catch{}return i}let i=o5.get(e);if(i&&i.date===t)return i.uuid;let a=crypto.randomUUID();return o5.set(e,{uuid:a,date:t}),a}var c5=Wv(`quick-llm`);async function l5(e){let t=X8();if(!t)return c5.debug(`No API key for active provider — skipping`),null;let n=Y8(),r=q8(),i;if(i=e.modelId?u5(n,e.modelId)??u5(n,r):wSe(n,r),!i)return c5.debug(`No model available for provider`,{providerId:n}),null;let a={role:`user`,content:e.prompt,timestamp:Date.now()},o={};i.provider===`adobe`&&(o[`X-Session-Id`]=OSe());try{let n=(await Dl(i,{systemPrompt:e.system,messages:[a]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(o).length>0?o:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return c5.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function wSe(e,t){let n=w8(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ESe(r.id),a=n.filter(e=>TSe(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function TSe(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function ESe(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function u5(e,t){return w8(e).find(e=>e.id===t)}var DSe=`ui-quick-llm`;function OSe(){return s5(DSe)}var kSe=`browser-coding-agent`,ASe=1,d5=`sessions`;function jSe(){return new Promise((e,t)=>{let n=indexedDB.open(kSe,ASe);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(d5)||e.createObjectStore(d5,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var f5=class{db=null;async init(){this.db=await jSe()}ensureDb(){if(!this.db)throw Error(`SessionStore not initialized. Call init() first.`);return this.db}async save(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readwrite`);i.objectStore(d5).put(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readonly`).objectStore(d5).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async list(){let e=this.ensureDb();return new Promise((t,n)=>{let r=e.transaction(d5,`readonly`).objectStore(d5).getAll();r.onsuccess=()=>{t(r.result.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>e.id))},r.onerror=()=>n(r.error)})}async delete(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readwrite`);i.objectStore(d5).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async saveMessages(e,t){let n=await this.load(e),r=n?{...n,messages:t,updatedAt:Date.now()}:{id:e,messages:t,createdAt:Date.now(),updatedAt:Date.now()};await this.save(r)}},p5=[`#000000`,`#cd3131`,`#0dbc79`,`#e5e510`,`#2472c8`,`#bc3fbc`,`#11a8cd`,`#e5e5e5`],m5=[`#666666`,`#f14c4c`,`#23d18b`,`#f5f543`,`#3b8eea`,`#d670d6`,`#29b8db`,`#ffffff`],h5=()=>({fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,strike:!1,inverse:!1}),g5=e=>Math.max(0,Math.min(255,Math.floor(e)||0));function MSe(e){if(e<0||e>255)return``;if(e<8)return p5[e];if(e<16)return m5[e-8];if(e<232){let t=e-16,n=[0,95,135,175,215,255];return`rgb(${n[Math.floor(t/36)]},${n[Math.floor(t%36/6)]},${n[t%6]})`}let t=8+(e-232)*10;return`rgb(${t},${t},${t})`}function _5(e,t){let n=e[t+1];if(n===5){let n=e[t+2];return{color:typeof n==`number`?MSe(n):null,consumed:3}}return n===2?{color:`rgb(${g5(e[t+2]??0)},${g5(e[t+3]??0)},${g5(e[t+4]??0)})`,consumed:5}:{color:null,consumed:2}}function NSe(e,t){let n={...e},r=t.length===0?[0]:t;for(let e=0;e<r.length;e++){let t=r[e];if(t===0)Object.assign(n,h5());else if(t===1)n.bold=!0;else if(t===2)n.dim=!0;else if(t===3)n.italic=!0;else if(t===4)n.underline=!0;else if(t===7)n.inverse=!0;else if(t===9)n.strike=!0;else if(t===22)n.bold=!1,n.dim=!1;else if(t===23)n.italic=!1;else if(t===24)n.underline=!1;else if(t===27)n.inverse=!1;else if(t===29)n.strike=!1;else if(t>=30&&t<=37)n.fg=p5[t-30];else if(t===38){let t=_5(r,e);t.color&&(n.fg=t.color),e+=t.consumed-1}else if(t===39)n.fg=null;else if(t>=40&&t<=47)n.bg=p5[t-40];else if(t===48){let t=_5(r,e);t.color&&(n.bg=t.color),e+=t.consumed-1}else t===49?n.bg=null:t>=90&&t<=97?n.fg=m5[t-90]:t>=100&&t<=107&&(n.bg=m5[t-100])}return n}function PSe(e){let t=e.fg,n=e.bg;if(e.inverse){let e=t;t=n??`#e6e6e6`,n=e??`#0d0d0f`}let r=[];t&&r.push(`color:${t}`),n&&r.push(`background-color:${n}`),e.bold&&r.push(`font-weight:600`),e.dim&&r.push(`opacity:.7`),e.italic&&r.push(`font-style:italic`);let i=[];return e.underline&&i.push(`underline`),e.strike&&i.push(`line-through`),i.length&&r.push(`text-decoration:${i.join(` `)}`),r.join(`;`)}var FSe=e=>!!(e.fg||e.bg||e.bold||e.dim||e.italic||e.underline||e.strike||e.inverse),v5=(e,t)=>{let n=j6(e);return FSe(t)?`<span style="${PSe(t)}">${n}</span>`:n},y5=/\x1b\[[?!#>]?[\d;]*[@-~]|\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,ISe=/^\x1b\[([\d;]*)m$/;function LSe(e){if(!e)return``;let t=``,n=0,r=h5();y5.lastIndex=0;let i;for(;(i=y5.exec(e))!==null;){let a=e.slice(n,i.index);a&&(t+=v5(a,r));let o=ISe.exec(i[0]);if(o){let e=o[1]===``?[]:o[1].split(`;`).map(e=>Number(e)||0);r=NSe(r,e)}n=i.index+i[0].length}let a=e.slice(n);return a&&(t+=v5(a,r)),t}function RSe(e){let t=e;return t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)"([^"]{8,})"/gi,`$1"***"`),t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)'([^']{8,})'/gi,`$1'***'`),t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)([^\s"'`]{8,})/gi,`$1***`),t=t.replace(/(Authorization:\s*Bearer\s+)([^\s"'`]{8,})/gi,`$1***`),t=t.replace(/(?<![A-Za-z0-9+/])(ghp_[A-Za-z0-9]{36}|gh[a-z]_[A-Za-z0-9]{36}|[A-Fa-f0-9]{40,}|[A-Za-z0-9+/]{40,}={0,2})(?![A-Za-z0-9+/=])/g,`***`),t}var zSe={icon:K4,title:`tool`,preview:e=>T5(e,80)},BSe={read_file:{icon:AY,title:`read`,preview:e=>w5(e,`path`)??``,renderBody:KSe},write_file:{icon:yY,title:`write`,preview:e=>w5(e,`path`)??``},edit_file:{icon:gY,title:`edit`,preview:e=>w5(e,`path`)??``,renderBody:ZSe},bash:{icon:v4,title:`bash`,preview:e=>{let t=w5(e,`command`)??``;return t?RSe(`$ ${E5(t,120)}`):``},renderBody:XSe},browser:{icon:LZ,title:`browser`,preview:e=>T5(e,80)},javascript:{icon:yK,title:`javascript`,preview:e=>E5((w5(e,`code`)??``).replace(/\s+/g,` `),100)},send_message:{icon:R0,title:`message`,preview:e=>{let t=w5(e,`text`)??``;return t?`"${E5(t,100)}"`:``}},feed_scoop:{icon:z4,title:`feed`,preview:e=>w5(e,`scoop_name`)??``},scoop_scoop:{icon:e$,title:`scoop`,preview:e=>w5(e,`name`)??``},drop_scoop:{icon:D4,title:`drop`,preview:e=>w5(e,`scoop_name`)??``},scoop_mute:{icon:H4,title:`mute`,preview:e=>D5(e)},scoop_unmute:{icon:V4,title:`unmute`,preview:e=>D5(e)},scoop_wait:{icon:qQ,title:`wait`,preview:e=>{let t=D5(e),n=w5(e,`timeout_ms`);return n===void 0||n===``?t:t?`${t} (${n}ms)`:`${n}ms`}},list_scoops:{icon:R1,title:`list scoops`,preview:()=>``},list_tasks:{icon:y1,title:`list tasks`,preview:()=>``},register_scoop:{icon:F4,title:`register`,preview:e=>w5(e,`name`)??``},schedule_task:{icon:JG,title:`schedule`,preview:e=>w5(e,`cron`)??w5(e,`name`)??``},update_global_memory:{icon:cH,title:`memory`,preview:e=>E5((w5(e,`content`)??``).split(`
|
|
984
|
+
Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+g6(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},k6=new O6;function A6(e,t){return k6.parse(e,t)}A6.options=A6.setOptions=function(e){return k6.setOptions(e),A6.defaults=k6.defaults,z3(A6.defaults),A6},A6.getDefaults=L3,A6.defaults=R3,A6.use=function(...e){return k6.use(...e),A6.defaults=k6.defaults,z3(A6.defaults),A6},A6.walkTokens=function(e,t){return k6.walkTokens(e,t)},A6.parseInline=k6.parseInline,A6.Parser=E6,A6.parser=E6.parse,A6.Renderer=w6,A6.TextRenderer=T6,A6.Lexer=C6,A6.lexer=C6.lex,A6.Tokenizer=S6,A6.Hooks=D6,A6.parse=A6,A6.options,A6.setOptions,A6.use,A6.walkTokens,A6.parseInline,E6.parse,C6.lex;function j6(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}function pxe(e,t){let n=j6(e);return t===`shtml`||([`js`,`javascript`,`ts`,`typescript`,`jsx`,`tsx`].includes(t)?n=hxe(n):t===`json`?n=gxe(n):[`bash`,`sh`,`shell`,`zsh`].includes(t)&&(n=_xe(n))),n}function mxe(e){let t=[];return{html:e.replace(/<span class="tok-(?:comment|string)">[\s\S]*?<\/span>/g,e=>{let n=String.fromCharCode(57344+t.length);return t.push(e),n}),restore:e=>e.replace(/[\ue000-\uf8ff]/g,e=>t[e.charCodeAt(0)-57344]??e)}}function hxe(e){e=e.replace(/(\/\/[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/(\/\*[\s\S]*?\*\/)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?'|`[^`]*?`)/g,`<span class="tok-string">$1</span>`);let t=mxe(e);return e=t.html,e=e.replace(RegExp(`\\b(${`const.let.var.function.return.if.else.for.while.class.extends.import.export.from.default.new.this.async.await.try.catch.throw.typeof.instanceof.interface.type.enum.implements.abstract.public.private.protected.readonly.static.void.null.undefined.true.false`.split(`.`).join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b([a-zA-Z_$][\w$]*)\s*(?=\()/g,`<span class="tok-fn">$1</span>`),t.restore(e)}function gxe(e){return e=e.replace(/("[^&]*?")\s*:/g,`<span class="tok-keyword">$1</span>:`),e=e.replace(/:\s*("[^&]*?")/g,`: <span class="tok-string">$1</span>`),e=e.replace(/\b(\d+\.?\d*)\b/g,`<span class="tok-number">$1</span>`),e=e.replace(/\b(true|false|null)\b/g,`<span class="tok-keyword">$1</span>`),e}function _xe(e){return e=e.replace(/(#[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/("[^&]*?"|'[^&]*?')/g,`<span class="tok-string">$1</span>`),e=e.replace(RegExp(`\\b(${[`if`,`then`,`else`,`fi`,`for`,`do`,`done`,`while`,`case`,`esac`,`echo`,`export`,`cd`,`ls`,`mkdir`,`rm`,`cp`,`mv`,`cat`,`grep`,`npm`,`node`,`git`].join(`|`)})\\b`,`g`),`<span class="tok-keyword">$1</span>`),e}var vxe=new O6({gfm:!0,breaks:!0,async:!1,renderer:{code({text:e,lang:t}){let n=t??``,r=pxe(e,n);return`<pre><code${n?` class="language-${j6(n)}"`:``}>${r}</code></pre>\n`},link({href:e,title:t,tokens:n}){let r=e??``;if(r.startsWith(`javascript:`))return this.parser.parseInline(n);let i=t?` title="${j6(t)}"`:``,a=this.parser.parseInline(n);return`<a href="${j6(r)}"${i} target="_blank" rel="noopener noreferrer">${a}</a>`},image({href:e,title:t,text:n}){let r=e??``,i=n?` alt="${j6(n)}"`:``,a=t?` title="${j6(t)}"`:``;return`<img src="${j6(r)}"${i}${a}>`}}}),yxe={ALLOWED_TAGS:`a.b.i.em.strong.p.br.code.pre.ul.ol.li.h1.h2.h3.h4.h5.h6.table.thead.tbody.tr.th.td.del.blockquote.hr.img.span.div.details.summary.input`.split(`.`),ALLOWED_ATTR:[`href`,`src`,`alt`,`title`,`class`,`target`,`rel`,`type`,`checked`,`disabled`],ALLOW_DATA_ATTR:!1};function bxe(e){return Obe(e,yxe)}function xxe(e){return e.replace(/<a\s([^>]*?)>/g,(e,t)=>{let n=t;return/(^|\s)target\s*=/i.test(n)?n=n.replace(/(^|\s)target\s*=\s*(['"])[^'"]*\2/gi,`$1target="_blank"`):n+=` target="_blank"`,/(^|\s)rel\s*=/i.test(n)?n=n.replace(/(^|\s)rel\s*=\s*(['"])[^'"]*\2/gi,`$1rel="noopener noreferrer"`):n+=` rel="noopener noreferrer"`,`<a ${n}>`})}var Sxe=/<p><strong>Error:<\/strong>\s*([\s\S]*?)<\/p>/g,Cxe=/<pre><code class="language-shtml">[\s\S]*?<\/code><\/pre>/g,wxe=`<div class="msg__dip-pending" role="status" aria-live="polite" aria-label="Pouring a dip"><span class="msg__dip-pending-label">Pouring a dip…</span><span class="msg__dip-pending-status" aria-hidden="true"></span></div>`;function M6(e){return xxe(bxe(vxe.parse(e)))}function Txe(e){return e.replace(Sxe,(e,t)=>`<div class="msg__error" role="alert"><div class="msg__error-label">Error</div><div class="msg__error-body">${t}</div></div>`)}function Exe(e){return e.replace(Cxe,wxe)}function N6(e){return M6(e)}function P6(e,t=!1){let n=Txe(M6(e));return t&&(n=Exe(n)),n}function Dxe(e,t){if(e.state===`inactive`&&t.state===`inactive`)return{kind:`leader-offer`,label:`Enable multi-browser sync`,caption:`Connect another browser to this session.`};if(e.state===`leader`&&e.session?.joinUrl)return{kind:`leader-copy`,joinUrl:e.session.joinUrl,label:`Enable multi-browser sync`,caption:`Share this URL to connect more browsers.`};if(e.state!==`inactive`){let t=e.state===`connecting`?`Setting up multi-browser sync…`:e.state===`reconnecting`?`Reconnecting…`:`Sync service unreachable.`;return{kind:`leader-pending`,label:`Multi-browser sync`,caption:e.error??t}}return{kind:`follower`,label:`Multi-browser sync`,caption:t.error??t.lastError??Oxe(t.state)??`Mirroring another browser.`}}function Oxe(e){switch(e){case`connected`:return`Connected — mirroring another browser.`;case`connecting`:return`Connecting to the other browser…`;case`reconnecting`:return`Reconnecting…`;case`disconnected`:return`Disconnected from the other browser.`;default:return null}}function F6(e){let t=e.trim();if(!t)return`Paste a sync URL to continue.`;let n=null;try{n=new URL(t)}catch{return`That doesn’t look like a URL. Paste the full https://… link from the other browser.`}return n.protocol!==`https:`&&n.protocol!==`http:`?`Sync URLs must start with https://.`:n.pathname.includes(`/join/`)?`That sync URL is malformed. Re-copy it from the other browser and try again.`:`This URL is missing the /join/… capability. Use “Enable multi-browser sync” on the other browser.`}function I6(e,t,n){return{temperature:t?.temperature,maxTokens:t?.maxTokens,signal:t?.signal,apiKey:n||t?.apiKey,transport:t?.transport,cacheRetention:t?.cacheRetention,sessionId:t?.sessionId,headers:t?.headers,onPayload:t?.onPayload,onResponse:t?.onResponse,timeoutMs:t?.timeoutMs,websocketConnectTimeoutMs:t?.websocketConnectTimeoutMs,maxRetries:t?.maxRetries,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata}}function L6(e){return e===`xhigh`?`high`:e}function R6(e,t,n,r){let i={minimal:1024,low:2048,medium:8192,high:16384,...r}[L6(n)],a=e===void 0?t:Math.min(e+i,t);return a<=i&&(i=Math.max(0,a-1024)),{maxTokens:a,thinkingBudget:i}}var kxe=`(image omitted: model does not support images)`,Axe=`(tool image omitted: model does not support images)`;function z6(e,t){let n=[],r=!1;for(let i of e){if(i.type===`image`){r||n.push({type:`text`,text:t}),r=!0;continue}n.push(i),r=i.text===t}return n}function jxe(e,t){return t.input.includes(`image`)?e:e.map(e=>e.role===`user`&&Array.isArray(e.content)?{...e,content:z6(e.content,kxe)}:e.role===`toolResult`?{...e,content:z6(e.content,Axe)}:e)}function B6(e,t,n){let r=new Map,i=jxe(e,t).map(e=>{if(e.role===`user`)return e;if(e.role===`toolResult`){let t=r.get(e.toolCallId);return t&&t!==e.toolCallId?{...e,toolCallId:t}:e}if(e.role===`assistant`){let i=e,a=i.provider===t.provider&&i.api===t.api&&i.model===t.id,o=i.content.flatMap(e=>{if(e.type===`thinking`)return e.redacted?a?e:[]:a&&e.thinkingSignature?e:!e.thinking||e.thinking.trim()===``?[]:a?e:{type:`text`,text:e.thinking};if(e.type===`text`)return a?e:{type:`text`,text:e.text};if(e.type===`toolCall`){let o=e,s=o;if(!a&&o.thoughtSignature&&(s={...o},delete s.thoughtSignature),!a&&n){let e=n(o.id,t,i);e!==o.id&&(r.set(o.id,e),s={...s,id:e})}return s}return e});return{...i,content:o}}return e}),a=[],o=[],s=new Set,c=()=>{if(o.length>0){for(let e of o)s.has(e.id)||a.push({role:`toolResult`,toolCallId:e.id,toolName:e.name,content:[{type:`text`,text:`No result provided`}],isError:!0,timestamp:Date.now()});o=[],s=new Set}};for(let e=0;e<i.length;e++){let t=i[e];if(t.role===`assistant`){c();let e=t;if(e.stopReason===`error`||e.stopReason===`aborted`)continue;let n=e.content.filter(e=>e.type===`toolCall`);n.length>0&&(o=n,s=new Set),a.push(t)}else t.role===`toolResult`?(s.add(t.toolCallId),a.push(t)):(t.role===`user`&&c(),a.push(t))}return c(),a}var Mxe=[`claude-opus-4-7`,`opus-4-7`,`claude-opus-4-8`,`opus-4-8`];function Nxe(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function V6(e,t){return!Nxe(e,t).some(e=>Mxe.some(t=>e.includes(t)))}function Pxe(e,t,n){if(n.temperature===void 0||V6(e,t))return n;let{temperature:r,...i}=n;return i}var Fxe=s({bedrockCampRegionFromBaseUrl:()=>H6,config:()=>Ixe,isBedrockCampCompatible:()=>U6,register:()=>aSe,streamBedrockCamp:()=>Q6,streamSimpleBedrockCamp:()=>$6}),Ixe={id:`bedrock-camp`,name:`AWS Bedrock`,description:`Claude on AWS Bedrock via CAMP Bearer token`,requiresApiKey:!0,apiKeyPlaceholder:`ABSK...`,apiKeyEnvVar:`BEDROCK_CAMP_API_KEY`,requiresBaseUrl:!0,baseUrlPlaceholder:`https://bedrock-runtime.us-west-2.amazonaws.com`,baseUrlDescription:`Bedrock runtime endpoint from CAMP portal`,defaultModelId:`claude-sonnet-4-6`},Lxe=/^(us|eu|global|apac)\./,Rxe=/\.anthropic\.claude-(opus|sonnet|haiku)-4/,zxe=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function H6(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(zxe)?.[1]??null}catch{return null}}function Bxe(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):!1}function U6(e,t){if(!Lxe.test(e.id)||!Rxe.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return Bxe(n,t)}function Vxe(e,t){return V6(e,t)}function Hxe(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function W6(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function G6(e,t,n){return W6(e,t).some(e=>n.some(t=>e.includes(t)))}function Uxe(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function K6(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function Wxe(e,t,n){let r=[],i=B6(e.messages,t,Uxe);for(let e=0;e<i.length;e++){let n=i[e];switch(n.role){case`user`:r.push({role:`user`,content:typeof n.content==`string`?[{text:K6(n.content)}]:n.content.map(e=>{if(e.type===`text`)return{text:K6(e.text)};if(e.type===`image`)return{image:q6(e.mimeType,e.data)};throw Error(`Unknown user content type: ${e.type}`)})});break;case`assistant`:{if(n.content.length===0)continue;let e=[];for(let r of n.content)switch(r.type){case`text`:if(r.text.trim().length===0)continue;e.push({text:K6(r.text)});break;case`toolCall`:e.push({toolUse:{toolUseId:r.id,name:r.name,input:r.arguments}});break;case`thinking`:if(r.thinking.trim().length===0)continue;Kxe(t)?!r.thinkingSignature||r.thinkingSignature.trim().length===0?e.push({text:K6(r.thinking)}):e.push({reasoningContent:{reasoningText:{text:K6(r.thinking),signature:r.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:K6(r.thinking)}}});break}if(e.length===0)continue;r.push({role:`assistant`,content:e});break}case`toolResult`:{let t=[];t.push({toolResult:{toolUseId:n.toolCallId,content:n.content.map(e=>e.type===`image`?{image:q6(e.mimeType,e.data)}:{text:K6(e.text??e.json??JSON.stringify(e))}),status:n.isError?`error`:`success`}});let a=e+1;for(;a<i.length&&i[a].role===`toolResult`;){let e=i[a];t.push({toolResult:{toolUseId:e.toolCallId,content:e.content.map(e=>e.type===`image`?{image:q6(e.mimeType,e.data)}:{text:K6(e.text??e.json??JSON.stringify(e))}),status:e.isError?`error`:`success`}}),a++}e=a-1,r.push({role:`user`,content:t});break}}}if(n!==`none`&&X6(t)&&r.length>0){let e=r[r.length-1];e.role===`user`&&Array.isArray(e.content)&&e.content.push(Z6(n))}return r}function q6(e,t){return{source:{bytes:t},format:Gxe(e)}}function Gxe(e){switch(e){case`image/jpeg`:case`image/jpg`:return`jpeg`;case`image/png`:return`png`;case`image/gif`:return`gif`;case`image/webp`:return`webp`;default:throw Error(`Unsupported image MIME type: ${e}`)}}function Kxe(e){return Y6(e)}function J6(e,t){return G6(e,t,[`opus-4-6`,`opus-4-7`,`sonnet-4-6`])}function qxe(e,t){return G6(e,t,[`opus-4-7`])}function Jxe(e,t){return G6(e,t,[`opus-4-6`])}function Yxe(e,t){if(!e?.length||t===`none`)return;let n=e.map(e=>({toolSpec:{name:e.name,description:e.description,inputSchema:{json:e.parameters}}})),r;switch(t){case`auto`:r={auto:{}};break;case`any`:r={any:{}};break;default:t&&typeof t==`object`&&t.type===`tool`&&(r={tool:{name:t.name}})}return{tools:n,toolChoice:r}}function Xxe(e,t,n){if(e===`xhigh`&&qxe(t,n))return`xhigh`;switch(e){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;case`xhigh`:return Jxe(t,n)?`max`:`high`;default:return`high`}}function Zxe(e){if(H6(e.baseUrl)?.toLowerCase().startsWith(`us-gov-`))return!0;let t=e.id.toLowerCase();return t.startsWith(`us-gov.`)||t.startsWith(`arn:aws-us-gov:`)}function Qxe(e,t){if(!t.reasoning||!e.reasoning||!Y6(e))return;let n=Zxe(e)?void 0:t.thinkingDisplay??`summarized`;if(J6(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:Xxe(t.reasoning,e.id,e.name)}};let r={minimal:1024,low:2048,medium:8192,high:16384,xhigh:16384},i=t.reasoning===`xhigh`?`high`:t.reasoning,a={thinking:{type:`enabled`,budget_tokens:t.thinkingBudgets?.[i]??r[t.reasoning],...n===void 0?{}:{display:n}}};return(t.interleavedThinking??!0)&&(a.anthropic_beta=[`interleaved-thinking-2025-05-14`]),a}function Y6(e){let t=e.id.toLowerCase(),n=e.name?.toLowerCase()??``;return t.includes(`anthropic.claude`)||t.includes(`anthropic/claude`)||n.includes(`anthropic.claude`)||n.includes(`anthropic/claude`)||n.includes(`claude`)}function X6(e){let t=W6(e.id,e.name);return t.some(e=>e.includes(`claude`))?!!(t.some(e=>e.includes(`-4-`))||t.some(e=>e.includes(`claude-3-7-sonnet`))||t.some(e=>e.includes(`claude-3-5-haiku`))):!1}function Z6(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function $xe(e,t,n){if(!e)return;let r=[{text:K6(e)}];return n!==`none`&&X6(t)&&r.push(Z6(n)),r}function eSe(e){switch(e){case`end_turn`:case`stop_sequence`:return`stop`;case`max_tokens`:case`model_context_window_exceeded`:return`length`;case`tool_use`:return`toolUse`;default:return`error`}}function tSe(e,t){let n=`Bedrock CAMP API error (${e})`;return e===429?n=`Throttling error: ${n}`:e===503?n=`Service unavailable: ${n}`:e===502||e===504||e>=500?n=`Internal server error: ${n}`:e===400&&(n=`Validation error: ${n}`),`${n}: ${t}`}function nSe(e,t,n,r){r.push({type:`start`,partial:n});let i=e.output?.message;if(i?.content)for(let e=0;e<i.content.length;e++){let t=i.content[e];if(t.text!==void 0){let e={type:`text`,text:t.text};n.content.push(e);let i=n.content.length-1;r.push({type:`text_start`,contentIndex:i,partial:n}),r.push({type:`text_delta`,contentIndex:i,delta:t.text,partial:n}),r.push({type:`text_end`,contentIndex:i,content:t.text,partial:n})}else if(t.toolUse){let e={type:`toolCall`,id:t.toolUse.toolUseId||``,name:t.toolUse.name||``,arguments:t.toolUse.input||{}};n.content.push(e);let i=n.content.length-1;r.push({type:`toolcall_start`,contentIndex:i,partial:n}),r.push({type:`toolcall_end`,contentIndex:i,toolCall:e,partial:n})}else if(t.reasoningContent?.reasoningText){let e={type:`thinking`,thinking:t.reasoningContent.reasoningText.text||``,thinkingSignature:t.reasoningContent.reasoningText.signature||``};n.content.push(e);let i=n.content.length-1;r.push({type:`thinking_start`,contentIndex:i,partial:n}),r.push({type:`thinking_delta`,contentIndex:i,delta:e.thinking,partial:n}),r.push({type:`thinking_end`,contentIndex:i,content:e.thinking,partial:n})}}e.usage&&(n.usage.input=e.usage.inputTokens||0,n.usage.output=e.usage.outputTokens||0,n.usage.cacheRead=e.usage.cacheReadInputTokens||0,n.usage.cacheWrite=e.usage.cacheWriteInputTokens||0,n.usage.totalTokens=e.usage.totalTokens||n.usage.input+n.usage.output,Wc(t,n.usage)),n.stopReason=eSe(e.stopReason||`end_turn`)}function rSe(e){return e??`short`}function iSe(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}var Q6=(e,t,n={})=>{let r=Jc();return(async()=>{let i={role:`assistant`,content:[],api:`bedrock-camp-converse`,provider:e.provider,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:`stop`,timestamp:Date.now()};try{let a=n.apiKey;if(!a)throw Error(`API key is required for Bedrock CAMP`);let o=e.baseUrl;if(!o)throw Error(`Base URL is required for Bedrock CAMP`);let s=rSe(n.cacheRetention),c={};n.maxTokens!==void 0&&(c.maxTokens=n.maxTokens),n.temperature!==void 0&&Vxe(e.id,e.name)&&(c.temperature=n.temperature);let l={modelId:e.id,messages:Wxe(t,e,s),system:$xe(t.systemPrompt,e,s),inferenceConfig:c,toolConfig:Yxe(t.tools,n.toolChoice),additionalModelRequestFields:Qxe(e,n),...n.requestMetadata===void 0?{}:{requestMetadata:n.requestMetadata}};if(l.system||delete l.system,l.toolConfig||delete l.toolConfig,l.additionalModelRequestFields||delete l.additionalModelRequestFields,n.onPayload){let t=await n.onPayload(l,e);t!==void 0&&(l=t)}let u=`${o.replace(/\/$/,``)}/model/${e.id}/converse`,d={"Content-Type":`application/json`,Authorization:`Bearer ${a}`,...n.headers??{}},f=await fetch(u,{method:`POST`,headers:d,body:JSON.stringify(l),signal:n.signal});if(n.onResponse&&await n.onResponse({status:f.status,headers:iSe(f)},e),!f.ok){let e=await f.text();throw Error(tSe(f.status,e))}if(nSe(await f.json(),e,i,r),i.stopReason===`error`||i.stopReason===`aborted`)throw Error(`An unknown error occurred`);r.push({type:`done`,reason:i.stopReason,message:i}),r.end()}catch(e){for(let e of i.content)delete e.index,delete e.partialJson;i.stopReason=n.signal?.aborted?`aborted`:`error`,i.errorMessage=e instanceof Error?e.message:JSON.stringify(e),r.push({type:`error`,reason:i.stopReason,error:i}),r.end()}})(),r},$6=(e,t,n)=>{let r=I6(e,n,void 0),i=n?Hxe(n):{};if(!n?.reasoning)return Q6(e,t,{...r,...i,reasoning:void 0});if(Y6(e)){if(J6(e.id,e.name))return Q6(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=R6(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return Q6(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[L6(n.reasoning)]:a.budgetTokens}})}return Q6(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function aSe(){Ac({api:`bedrock-camp-converse`,stream:Q6,streamSimple:$6})}var oSe=s({copyTextToClipboard:()=>e8});async function e8(e){if(!e)return!1;if(typeof navigator<`u`&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(e),!0}catch{}if(typeof document>`u`)return!1;try{let t=document.createElement(`textarea`);t.value=e,t.setAttribute(`readonly`,``),t.style.cssText=`position:fixed; opacity:0; pointer-events:none; left:-9999px;`,document.body.appendChild(t),t.select();let n=document.execCommand?.(`copy`)??!1;return document.body.removeChild(t),n}catch{return!1}}var t8=null,n8=!1;function sSe(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function r8(){if(!n8&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let e=sSe();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${e}`),e===`extension`?(t8=(await I(()=>import(`./rum-DW84CvBs.js`),[])).default,typeof window<`u`&&(window.addEventListener(`error`,e=>{a8(`js`,o8(e.message??``))}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;a8(`js`,o8(t instanceof Error?t.message:String(t)))}))):(typeof window<`u`&&(window.SAMPLE_PAGEVIEWS_AT_RATE=`high`),t8=(await I(()=>import(`./src-C9oNvq2b.js`),[])).sampleRUM),n8=!0,t8&&t8(`navigate`,{source:typeof document<`u`?document.referrer:``,target:e})}catch{}}function cSe(e,t){t8?.(`formsubmit`,{source:e,target:t})}function lSe(e){t8?.(`viewblock`,{source:e})}function i8(e){t8?.(`viewmedia`,{source:e})}function a8(e,t){t8?.(`error`,{source:e,target:t})}function uSe(e){t8?.(`signup`,{source:e})}function o8(e){return(e??``).slice(0,200).replace(/(\/[a-z]+)(?:\/[^\s/]+)+/gi,`$1/.../`)}var s8=`slicc_oauth_extra_domains`;function c8(e){try{let t=e.getItem(s8);if(!t)return{};let n=JSON.parse(t);if(typeof n!=`object`||!n||Array.isArray(n))return{};let r={};for(let[e,t]of Object.entries(n)){if(typeof e!=`string`||!Array.isArray(t))continue;let n=t.filter(e=>typeof e==`string`&&e.length>0);n.length>0&&(r[e]=n)}return r}catch{return{}}}function dSe(e,t){try{e.setItem(s8,JSON.stringify(t))}catch(e){throw Error(`Failed to persist OAuth extras (localStorage quota exceeded?): ${e instanceof Error?e.message:String(e)}`)}}[`ghp_`,`gho_`,`ghu_`,`ghs_`,`ghr_`,`github_pat_`,`sk-`,`pk-`,`xoxb-`,`xoxp-`,`xoxa-`,`xoxs-`,`AKIA`,`ABIA`,`ACCA`,`ASIA`,`sk-ant-`,`Bearer `].sort((e,t)=>t.length-e.length);var l8=s({addAccount:()=>I8,applyProviderDefaults:()=>D8,clearAllSettings:()=>$8,describeInvalidJoinUrl:()=>F6,downloadProviders:()=>Q8,exportProviders:()=>Z8,getAccounts:()=>A8,getAllAvailableModels:()=>k8,getAllExtraOAuthDomains:()=>N8,getApiKey:()=>X8,getApiKeyForProvider:()=>U8,getApiVersionForProvider:()=>K8,getAvailableProviders:()=>b8,getBaseUrlForProvider:()=>W8,getDeploymentForProvider:()=>G8,getExtraOAuthDomains:()=>j8,getOAuthAccountInfo:()=>T8,getProviderConfig:()=>S8,getProviderModels:()=>w8,getSelectedModelId:()=>q8,getSelectedProvider:()=>Y8,isModelHiddenFromPicker:()=>O8,logoutOAuthAccount:()=>z8,maskOAuthTokenWithRetry:()=>B8,migrateLegacyAuthOnlySelection:()=>y8,persistOAuthMaskViaServiceWorker:()=>V8,providerOffersLlmModels:()=>x8,removeAccount:()=>R8,resolveCurrentModel:()=>n5,resolveModelById:()=>t5,saveOAuthAccount:()=>H8,setExtraOAuthDomains:()=>M8,setSelectedModelId:()=>J8,showProviderSettings:()=>a5}),u8=Vc,d8=Uc;function f8(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function p8(e,t){let n=`tray-join-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,r=!1,i,a=()=>{r||(r=!0,i!==void 0&&clearTimeout(i),window.removeEventListener(`slicc:tray-join-failed`,o))},o=r=>{let i=r.detail;if(i.requestId!==void 0&&i.requestId!==n)return;if(a(),!t.isConnected){E8.error(`Tray-join failure arrived after dialog dismissed (UX swallowed half-state)`,{joinUrl:e,error:i.error,requestId:n});return}let o=t.dataset.dismissTimer;if(o){let e=Number(o);Number.isFinite(e)&&clearTimeout(e),delete t.dataset.dismissTimer}t.textContent=`Sync failed: ${i.error}. Reload the page and try again.`,t.style.color=`var(--slicc-cone)`};return window.addEventListener(`slicc:tray-join-failed`,o),i=setTimeout(a,1e4),window.dispatchEvent(new CustomEvent(`slicc:tray-join`,{detail:{joinUrl:e,requestId:n}})),a}var m8=`slicc_accounts`,h8=`selected-model`,g8=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],fSe=new Set([`github`]);function _8(e){let t;try{t=Hc()}catch{return!1}return t.includes(e)&&!nb(e)}var v8=!1;function pSe(){if(!v8){v8=!0;for(let e of g8)try{localStorage.removeItem(e)}catch{}y8()}}function y8(){try{let e=localStorage.getItem(h8);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(fSe.has(n)||_8(n))&&localStorage.removeItem(h8)}}}catch{}try{let e=localStorage.getItem(m8);if(!e)return;let t=JSON.parse(e);if(!Array.isArray(t))return;let n=t.filter(e=>!(typeof e==`object`&&e&&typeof e.providerId==`string`&&_8(e.providerId)));n.length!==t.length&&localStorage.setItem(m8,JSON.stringify(n))}catch{}}function b8(){let e=Hc().filter(nb),t=Qie();return[...new Set([...e,...t])].filter(e=>!ab(e)?.hidden)}function x8(e){try{if(w8(e).length>0)return!0}catch{}try{if(Uc(e).length>0)return!0}catch{}let t=ab(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function S8(e){return ab(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function C8(e,t){t.context_window!==void 0&&(e.contextWindow=t.context_window),t.max_tokens!==void 0&&(e.maxTokens=t.max_tokens),t.reasoning!==void 0&&(e.reasoning=t.reasoning),t.input!==void 0&&(e.input=t.input),t.compat!==void 0&&(e.compat={...e.compat??{},...t.compat}),t.thinkingLevelMap!==void 0&&(e.thinkingLevelMap={...e.thinkingLevelMap??{},...t.thinkingLevelMap})}function w8(e){try{if(e===`bedrock-camp`){let e=H6(W8(`bedrock-camp`));return d8(`amazon-bedrock`).filter(t=>U6(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=S8(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return E8.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of Hc())try{for(let t of d8(e))r.set(t.id,t)}catch{}return n.map(n=>{let i=`${e}-${n.api===`openai`?`openai`:`anthropic`}`,a=r.get(n.id),o;a?o={...a,api:i,provider:e}:(o=e5(e,n.id,``,i),n.name&&(o.name=n.name));let s=t.modelOverrides?.[n.id];return s&&C8(o,s),C8(o,n),o})}if(t.isOAuth){let n=d8(`anthropic`),r=`${e}-anthropic`;return n.map(n=>{let i={...n,api:r,provider:e},a=t.modelOverrides?.[n.id];return a&&C8(i,a),i})}return d8(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return E8.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function T8(e){let t=A8().find(t=>t.providerId===e);if(!t?.accessToken)return null;let n=!!t.tokenExpiresAt&&Date.now()>t.tokenExpiresAt-6e4;return{token:t.accessToken,maskedValue:t.maskedValue,expiresAt:t.tokenExpiresAt,userName:t.userName,userAvatar:t.userAvatar,expired:n}}var mSe=Object.assign({})[`/packages/webapp/providers.json`]??[],E8=Wv(`provider-settings`);function D8(e=mSe){if(e.length===0||A8().length>0)return;let t=new Set(b8());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){E8.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}I8(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(h8)&&localStorage.setItem(h8,`${n.providerId}:${n.model}`)}var hSe=[/haiku/i];function O8(e){return hSe.some(t=>t.test(e))}function gSe(e){return e.filter(e=>!O8(e.id))}function k8(){let e=A8();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=S8(n.providerId);if(e.hidden||_8(n.providerId))continue;let r=gSe(w8(n.providerId));if(r.length===0)continue;let i={providerId:n.providerId,providerName:e.name,models:r};t.set(n.providerId,i)}return[...t.values()]}function A8(){pSe();let e=localStorage.getItem(m8);if(!e)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`object`&&!!e&&typeof e.providerId==`string`&&typeof e.apiKey==`string`):[]}catch{return[]}}function j8(e){return c8(localStorage)[e]??[]}function M8(e,t){let n=c8(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,dSe(localStorage,n)}function N8(){return c8(localStorage)}function P8(e){localStorage.setItem(m8,JSON.stringify(e))}async function F8(e){if(tb()){P8(e);return}let t=eb();if(!t)throw Error(`saveAccountsAsync: no DOM and no panel-rpc client — cannot persist to page localStorage`);let n=JSON.stringify(e),{storedJson:r}=await t.call(`save-oauth-accounts`,{accountsJson:n});try{localStorage.setItem(m8,r)}catch(e){E8.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function I8(e,t,n,r,i){let a=A8().filter(t=>t.providerId!==e),o={providerId:e,apiKey:t};n&&(o.baseUrl=n),r&&(o.deployment=r),i&&(o.apiVersion=i),a.push(o),P8(a)}async function L8(e){let t=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(t){let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.delete`,name:`oauth.${e}.token`},n=>{chrome.runtime.lastError&&E8.error(`SW secrets.delete transport failed`,{providerId:e,error:chrome.runtime.lastError.message}),t(n??{})})});t.error&&E8.error(`SW secrets.delete returned error`,{providerId:e,error:t.error})}else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&E8.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(n){E8.error(`OAuth replica removal failed`,{providerId:e,isExtension:t,error:n instanceof Error?n.message:String(n)})}}async function R8(e){let t=A8().find(t=>t.providerId===e),n=S8(e);t&&n?.isOAuth&&await z8(e),await L8(e),await F8(A8().filter(t=>t.providerId!==e));let r=localStorage.getItem(h8)??``,i=r.indexOf(`:`);i>0&&r.slice(0,i)===e&&localStorage.removeItem(h8)}async function z8(e){let t=A8().find(t=>t.providerId===e);if(!t)return;let n=S8(e);if(n?.isOAuth){if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){E8.warn(`onOAuthLogout failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})}if(n.getOAuthLogoutUrl){let r=n.getOAuthLogoutUrl(t);if(r){let{openIdpLogoutUrl:t}=await I(async()=>{let{openIdpLogoutUrl:e}=await import(`./oauth-service-BbWxnAZu.js`);return{openIdpLogoutUrl:e}},[]);await t(r).catch(t=>{E8.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await F8(A8().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t)),await L8(e)}}async function B8(e,t={}){let n=Math.max(1,t.attempts??3),r=t.delayMs??150,i=t.sleep??(e=>new Promise(t=>setTimeout(t,e))),a;for(let t=0;t<n;t++){let o=await e();if(o.maskedValue)return{maskedValue:o.maskedValue};o.error&&(a=o.error),t<n-1&&await i(r)}return{lastError:a}}async function V8(e,t,n){let r={providerId:e.providerId,accessToken:e.accessToken,domains:e.domains.join(`,`)},{maskedValue:i,lastError:a}=await B8(()=>t.sendMaskRequest(r),n);if(!i){E8.error(`OAuth mask give-up: no masked value after retries`,{providerId:e.providerId,reason:a??`no error reported (cold SW or empty reply)`});return}let o=t.getAccounts(),s=o.find(t=>t.providerId===e.providerId);s&&(s.maskedValue=i,await t.saveAccounts(o))}async function H8(e){let t=A8().find(t=>t.providerId===e.providerId),n=A8().filter(t=>t.providerId!==e.providerId);n.push({providerId:e.providerId,apiKey:``,accessToken:e.accessToken,refreshToken:e.refreshToken,tokenExpiresAt:e.tokenExpiresAt,userName:e.userName,userAvatar:e.userAvatar,baseUrl:e.baseUrl??t?.baseUrl}),await F8(n);let r=S8(e.providerId)?.oauthTokenDomains??[],i=j8(e.providerId),a=new Set,o=[];for(let e of[...r,...i]){let t=e.toLowerCase();a.has(t)||(a.add(t),o.push(e))}if(o.length===0)return;let s=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(s)await V8({providerId:e.providerId,accessToken:e.accessToken,domains:o},{sendMaskRequest:t=>new Promise(n=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,...t},t=>{chrome.runtime.lastError&&E8.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t?.error&&E8.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),n(t??{})})}),getAccounts:A8,saveAccounts:F8});else if(!globalThis.__slicc_connect_mode){let t=await fetch(`/api/secrets/oauth-update`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({providerId:e.providerId,accessToken:e.accessToken,domains:o})});if(t.ok){let n=await t.json(),r=A8(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await F8(r))}else E8.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){E8.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var _Se=`local`;function U8(e){let t=A8().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(S8(e).optionalApiKey?_Se:null):null}function W8(e){return A8().find(t=>t.providerId===e)?.baseUrl??null}function G8(e){return A8().find(t=>t.providerId===e)?.deployment??null}function K8(e){return A8().find(t=>t.providerId===e)?.apiVersion??null}function q8(){let e=localStorage.getItem(h8)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function J8(e){if(e.includes(`:`))localStorage.setItem(h8,e);else{let t=Y8();localStorage.setItem(h8,`${t}:${e}`)}}function vSe(){return localStorage.getItem(h8)||``}function Y8(){let e=vSe(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=A8();return n.length>0?n[0].providerId:`anthropic`}function X8(){return U8(Y8())}function Z8(){let e=A8(),t=Y8(),n=q8();return e.map(e=>{let r={providerId:e.providerId,apiKey:e.apiKey};return e.baseUrl&&(r.baseUrl=e.baseUrl),e.providerId===t&&n&&(r.model=n),r})}function Q8(){let e=JSON.stringify(Z8(),null,2),t=new Blob([e],{type:`application/json`}),n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=`providers.json`,r.click(),URL.revokeObjectURL(n)}async function $8(){let e=A8();await Promise.allSettled(e.map(e=>R8(e.providerId))),localStorage.removeItem(m8),localStorage.removeItem(h8);for(let e of g8)localStorage.removeItem(e)}function ySe(e){return/^(?:gpt[-.]?|o[0-9]|chatgpt)/i.test(e)?`openai`:`anthropic`}function e5(e,t,n,r){return{id:t,name:t,provider:e,api:r??`${e}-${ySe(t)}`,baseUrl:n??``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},reasoning:!0}}function t5(e){if(!e)return n5();let t=Y8(),n=W8(t),r=S8(t);try{let i=u8(r.isOAuth||t===`azure-ai-foundry`?`anthropic`:t===`bedrock-camp`?`amazon-bedrock`:t,e);if(!i?.id)throw Error(`Model ${e} not found`);let a=i;return r.isOAuth?a=w8(t).find(t=>t.id===e)||{...a,api:`${t}-anthropic`,provider:t}:t===`bedrock-camp`&&(a={...a,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(a={...a,baseUrl:n}),a}catch(i){if(E8.debug(`resolveModelById: pi-ai lookup miss, using provider fallback`,{providerId:t,modelId:e,error:i instanceof Error?i.message:String(i)}),r.isOAuth){let r=w8(t).find(t=>t.id===e);return r?n?{...r,baseUrl:n}:r:e5(t,e,n)}return n5()}}function n5(){let e=Y8(),t=q8(),n=W8(e),r=w8(e),i=S8(e),a=i.defaultModelId?r.find(e=>e.id.toLowerCase().includes(i.defaultModelId.toLowerCase()))?.id:void 0,o=t||a||r[0]?.id||`claude-sonnet-4-6`;try{let t=S8(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=u8(i,o);if(!a?.id)throw Error(`Model ${o} not found in ${i} registry`);let s=a;return t.isOAuth?s=r.find(e=>e.id===o)||{...s,api:`${e}-anthropic`,provider:e}:e===`bedrock-camp`&&(s={...s,api:`bedrock-camp-converse`,provider:`bedrock-camp`}),n&&(s={...s,baseUrl:n}),s}catch(t){E8.debug(`resolveCurrentModel: pi-ai lookup miss, using provider fallback`,{providerId:e,effectiveModelId:o,error:t instanceof Error?t.message:String(t)});let a=r.find(e=>e.id===o);return a?n?{...a,baseUrl:n}:a:i.isOAuth?e5(e,o,n):u8(`anthropic`,`claude-sonnet-4-0`)}}function bSe(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function r5(e){let t=`http://www.w3.org/2000/svg`,n=document.createElementNS(t,`svg`);n.setAttribute(`width`,`14`),n.setAttribute(`height`,`14`),n.setAttribute(`viewBox`,`0 0 20 20`),n.setAttribute(`fill`,`none`),n.setAttribute(`stroke`,`currentColor`),n.setAttribute(`stroke-width`,`1.5`),n.setAttribute(`stroke-linecap`,`round`),n.setAttribute(`stroke-linejoin`,`round`);for(let r of e){let e=document.createElementNS(t,`path`);e.setAttribute(`d`,r),n.appendChild(e)}return n}var i5={pen:[`M14.3 3.3a1.5 1.5 0 0 1 2.1 0l.3.3a1.5 1.5 0 0 1 0 2.1L7.7 14.8l-3.2.7.7-3.2z`],trash:[`M4 6h12`,`M8 6V4a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v2`,`M6 6v10a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V6`],logout:[`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,`M16 17l5-5-5-5`,`M21 12H9`],login:[`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,`M10 17l5-5-5-5`,`M15 12H3`]};function a5(e){return uSe(`button`),new Promise(t=>{let n=localStorage.getItem(m8)??``,r=document.createElement(`div`);r.className=`dialog-overlay`;let i=document.createElement(`div`);i.className=`dialog`,i.style.cssText=`max-width: 480px; width: 90vw; padding: 32px;`;let a=()=>{e?.startInAddAccount?(r.remove(),t((localStorage.getItem(m8)??``)!==n)):o()};e?.startInAddAccount?s():A8().length>0?o():e?.autoJoinUrl?c(e.autoJoinUrl):e?.preferTrayJoin?l():s(),r.appendChild(i),document.body.appendChild(r);function o(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let a=A8(),c=`background: transparent; border: 1px solid var(--s2-border-subtle); color: var(--s2-content-secondary); border-radius: var(--s2-radius-s); padding: 6px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: color 0.15s, border-color 0.15s;`;if(a.length===0){let e=document.createElement(`div`);e.className=`dialog__desc`,e.textContent=`No accounts configured.`,i.appendChild(e)}else{let e=document.createElement(`div`);e.style.cssText=`margin-bottom: 16px;`;for(let t of a){let n=S8(t.providerId),r=document.createElement(`div`);r.style.cssText=`display: flex; align-items: center; justify-content: space-between; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); margin-bottom: 8px; border: 1px solid var(--s2-border-subtle);`;let i=document.createElement(`div`);i.style.cssText=`flex: 1; min-width: 0;`;let a=document.createElement(`div`);a.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,a.textContent=n.name,i.appendChild(a);let l=document.createElement(`div`);l.style.cssText=`font-size: 11px; color: var(--s2-content-disabled); font-family: monospace; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;`,t.loggedOut?(l.textContent=t.userName?`Logged out — was ${t.userName}`:`Logged out`,l.style.color=`var(--s2-content-disabled)`):t.userName?l.textContent=t.userName:t.accessToken?l.textContent=`Logged in`:l.textContent=bSe(t.apiKey),t.baseUrl&&(l.textContent+=` • `+t.baseUrl),i.appendChild(l),r.appendChild(i);let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 4px; margin-left: 12px; flex-shrink: 0;`;let d=document.createElement(`button`);if(d.style.cssText=c,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(r5(i5.pen)),d.addEventListener(`mouseenter`,()=>{d.style.color=`var(--s2-accent)`,d.style.borderColor=`var(--s2-accent)`}),d.addEventListener(`mouseleave`,()=>{d.style.color=`var(--s2-content-secondary)`,d.style.borderColor=`var(--s2-border-subtle)`}),d.addEventListener(`click`,()=>{s(t)}),u.appendChild(d),n.isOAuth){let e=t.loggedOut===!0,r=document.createElement(`button`);r.style.cssText=c,e?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(r5(i5.login)),r.addEventListener(`mouseenter`,()=>{r.style.color=`var(--s2-accent)`,r.style.borderColor=`var(--s2-accent)`}),r.addEventListener(`mouseleave`,()=>{r.style.color=`var(--s2-content-secondary)`,r.style.borderColor=`var(--s2-border-subtle)`}),r.addEventListener(`click`,async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await I(async()=>{let{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}=await import(`./oauth-service-BbWxnAZu.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},[]),r={forceReauth:!0};if(n.onOAuthLoginIntercepted){let e=await t();e&&await n.onOAuthLoginIntercepted(e,o,r)}else if(n.onOAuthLogin){let t=e();await n.onOAuthLogin(t,o,r)}})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(r5(i5.logout)),r.addEventListener(`mouseenter`,()=>{r.style.color=`var(--s2-warning, #f59e0b)`,r.style.borderColor=`var(--s2-warning, #f59e0b)`}),r.addEventListener(`mouseleave`,()=>{r.style.color=`var(--s2-content-secondary)`,r.style.borderColor=`var(--s2-border-subtle)`}),r.addEventListener(`click`,async()=>{await z8(t.providerId),o()})),u.appendChild(r)}let f=document.createElement(`button`);f.style.cssText=c,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(r5(i5.trash)),f.addEventListener(`mouseenter`,()=>{f.style.color=`var(--s2-negative)`,f.style.borderColor=`var(--s2-negative)`}),f.addEventListener(`mouseleave`,()=>{f.style.color=`var(--s2-content-secondary)`,f.style.borderColor=`var(--s2-border-subtle)`}),f.addEventListener(`click`,async()=>{await R8(t.providerId),o()}),u.appendChild(f),r.appendChild(u),e.appendChild(r)}i.appendChild(e)}let u=document.createElement(`div`);u.style.cssText=`display: flex; gap: 8px;`;let d=document.createElement(`button`);d.className=a.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,d.style.flex=`1`,d.textContent=`Add Account`,d.addEventListener(`click`,()=>s()),u.appendChild(d);let f=document.createElement(`button`);f.className=`dialog__btn dialog__btn--secondary`,f.style.flex=`1`,f.textContent=`Export`,f.addEventListener(`click`,()=>Q8()),u.appendChild(f),i.appendChild(u);let p=document.createElement(`hr`);p.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(p);let m=document.createElement(`div`);m.className=`dialog__desc`,m.style.cssText=`font-weight: 600; margin-bottom: 8px;`,m.textContent=`Tray`,i.appendChild(m);let h=ZP(),g=h.state!==`inactive`,_=Tb(window.localStorage);if(g||_){let e=document.createElement(`div`);e.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px;`,e.textContent=`Follower: ${g?h.state:`configured`}`,h.error&&(e.textContent+=` — ${h.error}`,e.style.color=`var(--slicc-cone)`),i.appendChild(e)}let v=document.createElement(`button`);v.className=`dialog__btn dialog__btn--secondary`,v.textContent=g||_?`Reconnect to other browser`:`Connect to another browser`,v.addEventListener(`click`,()=>l()),i.appendChild(v);let ee=document.createElement(`hr`);ee.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(ee);let y=document.createElement(`button`);y.className=`dialog__btn`,y.textContent=`Get Started`,y.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(m8)??``)!==n)}),i.appendChild(y)}function s(s){i.innerHTML=``;let c=!!s,u=document.createElement(`div`);u.className=`dialog__title`,u.textContent=c?`Edit Account`:`Add Account`,i.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.textContent=`Provider:`,i.appendChild(d);let f=document.createElement(`select`);if(f.className=`dialog__input`,f.style.marginBottom=`8px`,c){let e=S8(s.providerId),t=document.createElement(`option`);t.value=s.providerId,t.textContent=e.name,f.appendChild(t),f.disabled=!0,f.style.opacity=`0.7`}else{let t=document.createElement(`option`);t.value=``,t.textContent=`Select a provider…`,t.disabled=!0,t.selected=!0,t.hidden=!0,f.appendChild(t);let n=b8(),r=new Set(A8().map(e=>e.providerId)),i=[...n].sort((e,t)=>{let n=S8(e).name,r=S8(t).name;return n.localeCompare(r)});for(let t of i){if(r.has(t))continue;if(e?.providerFilter){if(!e.providerFilter(t))continue}else if(!x8(t))continue;let n=S8(t),i=document.createElement(`option`);i.value=t,i.textContent=n.name,f.appendChild(i)}}i.appendChild(f);let p=document.createElement(`div`);p.className=`dialog__desc`,p.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(p);let m=document.createElement(`div`);m.style.cssText=`margin-bottom: 16px; display: none;`;let h=document.createElement(`button`);h.className=`dialog__btn`,h.textContent=`Login`,h.style.cssText=`width: 100%; margin-bottom: 8px;`,m.appendChild(h);let g=document.createElement(`div`);g.className=`dialog__desc`,g.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,m.appendChild(g);let _=()=>{let e=m,t=g,n=h;return r=>new Promise(i=>{let a=n.style.display,o=t.style.display;n.style.display=`none`,t.style.display=`none`;let s=document.createElement(`div`);s.setAttribute(`data-slicc-device-code-prompt`,``),s.style.cssText=`display:flex;flex-direction:column;gap:8px`;let c=document.createElement(`div`);c.className=`dialog__desc`,c.textContent=`Verification code`,c.style.cssText=`font-size: 11px; color: var(--s2-content-tertiary);`;let l=document.createElement(`div`);l.textContent=r.userCode,l.style.cssText=[`font: 600 22px ui-monospace, SFMono-Regular, Menlo, monospace`,`letter-spacing: 2px`,`color: var(--s2-content-primary, #e6edf3)`,`background: var(--s2-bg-secondary, #161b22)`,`border: 1px solid var(--s2-border, #30363d)`,`border-radius: 6px`,`padding: 10px 12px`,`text-align: center`,`user-select: all`,`cursor: text`].join(`;`);let u=document.createElement(`div`);u.className=`dialog__desc`,u.style.cssText=`font-size: 12px; color: var(--s2-content-secondary);`,u.textContent=`Click Copy & Continue — we will open the GitHub authorization page in a new tab. Paste this code there if it is not already filled in.`;let d=document.createElement(`div`);d.style.cssText=`display:flex;gap:8px;justify-content:flex-end;margin-top:4px`;let f=document.createElement(`button`);f.type=`button`,f.className=`dialog__btn`,f.textContent=`Cancel`;let p=document.createElement(`button`);p.type=`button`,p.className=`dialog__btn dialog__btn--primary`,p.textContent=`Copy & Continue`;let m=()=>{try{s.remove()}catch{}n.style.display=a,t.style.display=o};f.addEventListener(`click`,()=>{m(),i(`cancel`)}),p.addEventListener(`click`,()=>{(async()=>{try{await e8(r.userCode)}catch{}m(),t.style.display=o,t.textContent=`Waiting for you to authorize in the new tab…`,i(`continue`)})()}),d.appendChild(f),d.appendChild(p),s.appendChild(c),s.appendChild(l),s.appendChild(u),s.appendChild(d),e.appendChild(s)})};h.addEventListener(`click`,async()=>{let e=f.value;if(!e)return;let t=S8(e);if(!t.onOAuthLogin&&!t.onOAuthLoginIntercepted)return;let n=A8().some(t=>t.providerId===e),r=W8(e);if(t.requiresBaseUrl&&!ne.value.trim()&&!r){g.textContent=`Base URL is required.`,g.style.color=`var(--slicc-cone)`,ne.focus();return}t.requiresBaseUrl&&ne.value.trim()&&I8(e,``,ne.value.trim()),g.textContent=`Opening login window...`;try{if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),n=await e();if(!n)throw Error(`No controlled-browser CDP transport available — open SLICC in standalone mode or the Chrome extension.`);await t.onOAuthLoginIntercepted(n,a,{presentDeviceCode:_()})}else if(t.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}}catch(t){if(!n)try{await R8(e)}catch{}E8.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),g.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),c&&s.userName&&(g.textContent=`Logged in as ${s.userName}`,h.textContent=`Re-login`),i.appendChild(m);let v=document.createElement(`div`),ee=document.createElement(`div`);ee.className=`dialog__desc`,v.appendChild(ee);let y=document.createElement(`input`);y.className=`dialog__input`,y.type=`password`,y.autocomplete=`off`,y.spellcheck=!1,c&&(y.value=s.apiKey),v.appendChild(y),i.appendChild(v);let b=document.createElement(`div`),te=document.createElement(`div`);te.className=`dialog__desc`,te.textContent=`Base URL:`,b.appendChild(te);let ne=document.createElement(`input`);ne.className=`dialog__input`,ne.type=`text`,ne.autocomplete=`off`,ne.spellcheck=!1,c&&s.baseUrl&&(ne.value=s.baseUrl),b.appendChild(ne);let re=document.createElement(`div`);re.className=`dialog__desc`,re.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(re),i.appendChild(b);let x=document.createElement(`div`);x.style.display=`none`;let ie=document.createElement(`div`);ie.className=`dialog__desc`,ie.textContent=`Deployment:`,x.appendChild(ie);let S=document.createElement(`input`);S.className=`dialog__input`,S.type=`text`,S.autocomplete=`off`,S.spellcheck=!1,c&&s.deployment&&(S.value=s.deployment),x.appendChild(S);let C=document.createElement(`div`);C.className=`dialog__desc`,C.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,x.appendChild(C),i.appendChild(x);let ae=document.createElement(`div`);ae.style.display=`none`;let oe=document.createElement(`div`);oe.className=`dialog__desc`,oe.textContent=`API Version:`,ae.appendChild(oe);let se=document.createElement(`input`);se.className=`dialog__input`,se.type=`text`,se.autocomplete=`off`,se.spellcheck=!1,c&&s.apiVersion&&(se.value=s.apiVersion),ae.appendChild(se);let ce=document.createElement(`div`);ce.className=`dialog__desc`,ce.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,ae.appendChild(ce),i.appendChild(ae);let w=document.createElement(`div`);w.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(w);let T=document.createElement(`button`);T.className=`dialog__btn`,T.textContent=c?`Save`:`Add`;function E(){let e=f.value;if(!e){p.textContent=``,m.style.display=`none`,v.style.display=`none`,b.style.display=`none`,x.style.display=`none`,ae.style.display=`none`,T.style.display=`none`;return}let t=S8(e);if(p.textContent=t.description,t.isOAuth)m.style.display=``,v.style.display=`none`,b.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(ne.placeholder=t.baseUrlPlaceholder||`https://...`,re.textContent=t.baseUrlDescription||``),h.textContent=`Login with ${t.name}`,T.style.display=`none`;else{m.style.display=`none`,ee.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,y.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;v.style.display=e?``:`none`,ne.placeholder=t.baseUrlPlaceholder||`https://...`,re.textContent=t.baseUrlDescription||``,b.style.display=t.requiresBaseUrl?``:`none`,T.style.display=``}t.requiresDeployment?(x.style.display=``,S.placeholder=t.deploymentPlaceholder||`deployment-name`,C.textContent=t.deploymentDescription||``):x.style.display=`none`,t.requiresApiVersion?(ae.style.display=``,!se.value&&t.apiVersionDefault&&(se.value=t.apiVersionDefault),se.placeholder=t.apiVersionDefault||`api-version`,ce.textContent=t.apiVersionDescription||``):ae.style.display=`none`}f.addEventListener(`change`,()=>{w.style.display=`none`,E()}),E();function D(){let e=f.value;if(!e)return;let t=S8(e);if(t.requiresApiKey&&y.value.trim().length<5){w.textContent=`API key is required (at least 5 characters).`,w.style.display=``,y.focus();return}if(t.requiresBaseUrl&&!ne.value.trim()){w.textContent=`Base URL is required for this provider.`,w.style.display=``,ne.focus();return}if(t.requiresDeployment&&!S.value.trim()){w.textContent=`Deployment name is required for this provider.`,w.style.display=``,S.focus();return}I8(e,y.value.trim(),ne.value.trim()||void 0,S.value.trim()||void 0,se.value.trim()||void 0),a()}T.addEventListener(`click`,D);let O=e=>{e.key===`Enter`&&D()};y.addEventListener(`keydown`,O),ne.addEventListener(`keydown`,O),S.addEventListener(`keydown`,O),se.addEventListener(`keydown`,O),i.appendChild(T);let le=A8().length>0;if(e?.startInAddAccount){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Cancel`,e.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(m8)??``)!==n)}),i.appendChild(e)}else if(!c&&!le){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Connect to another browser`,e.addEventListener(`click`,()=>{l()}),i.appendChild(e)}else if(le){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{o()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=f.value;if(!e)return;let t=S8(e);t.requiresApiKey?y.focus():t.requiresBaseUrl&&ne.focus()})}function c(e){i.innerHTML=``;let n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=`Connect this browser?`,i.appendChild(n);let a=document.createElement(`div`);a.className=`dialog__desc`,a.style.marginBottom=`12px`,a.textContent=`You’ve been invited to mirror another SLICC browser. Click below to start syncing.`,i.appendChild(a);let o=document.createElement(`div`);o.className=`dialog__desc`,o.style.cssText=`font-family: monospace; font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 16px; padding: 8px; background: var(--s2-bg-secondary); border-radius: 4px;`,o.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,i.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,i.appendChild(c);let l=document.createElement(`button`);l.className=`dialog__btn`,l.textContent=`Connect`,l.addEventListener(`click`,()=>{let n=wb(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(f8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else p8(n.joinUrl,c);c.textContent=`Connecting…`,c.style.display=``,c.style.color=`var(--s2-content-secondary)`;let i=setTimeout(()=>{r.remove(),t(!1)},800);c.dataset.dismissTimer=String(i)}),i.appendChild(l);let u=document.createElement(`button`);u.className=`dialog__btn dialog__btn--secondary`,u.style.marginTop=`8px`,u.textContent=`Set up an account instead`,u.addEventListener(`click`,()=>{s()}),i.appendChild(u)}function l(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Connect to another browser`,i.appendChild(e);let n=document.createElement(`div`);n.className=`dialog__desc`,n.style.marginBottom=`12px`,n.textContent=`Paste a multi-browser sync URL to mirror another SLICC browser.`,i.appendChild(n);let a=document.createElement(`details`);a.style.cssText=`margin-bottom: 12px; font-size: 12px; color: var(--s2-content-secondary);`;let o=document.createElement(`summary`);o.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,o.textContent=`How do I get the sync URL?`,a.appendChild(o);let c=document.createElement(`div`);c.style.cssText=`margin-top: 8px; padding: 10px 12px; background: var(--s2-bg-layer-2); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5;`;let l=document.createElement(`ol`);l.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`On the other SLICC, click the avatar (top right).`,`Choose “Enable multi-browser sync” — the URL is copied automatically.`,`Paste it below. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,l.appendChild(t)}c.appendChild(l),a.appendChild(c),i.appendChild(a);let u=document.createElement(`div`);u.className=`dialog__desc`,u.textContent=`Sync URL:`,i.appendChild(u);let d=document.createElement(`input`);d.className=`dialog__input`,d.type=`text`,d.autocomplete=`off`,d.spellcheck=!1,d.placeholder=`https://www.sliccy.ai/join/<token>`,i.appendChild(d);let f=document.createElement(`div`);f.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(f);let p=document.createElement(`div`);p.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`;let m=document.createElement(`button`);m.className=`dialog__btn`,m.textContent=`Connect`,m.addEventListener(`click`,()=>{let e=d.value.trim();if(!e){f.textContent=`Paste a sync URL to continue.`,f.style.display=``,d.focus();return}let n=wb(window.localStorage,e);if(!n){f.textContent=F6(e),f.style.display=``,d.focus();return}if(f8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else p8(n.joinUrl,p);p.textContent=`Connecting…`,p.style.display=``,p.style.color=`var(--s2-content-secondary)`;let i=setTimeout(()=>{r.remove(),t(!1)},800);p.dataset.dismissTimer=String(i)}),i.appendChild(m),i.appendChild(p);let h=document.createElement(`button`);h.className=`dialog__btn dialog__btn--secondary`,h.style.marginTop=`8px`,h.textContent=`Back`,h.addEventListener(`click`,()=>{s()}),i.appendChild(h),d.addEventListener(`input`,()=>{f.style.display=`none`}),d.addEventListener(`keydown`,e=>{e.key===`Enter`&&m.click()}),requestAnimationFrame(()=>d.focus())}})}var xSe=`slicc:adobe-daily-uuid:`,o5=new Map;function SSe(){return new Date().toISOString().slice(0,10)}function CSe(){try{let e=globalThis.localStorage;return!e||typeof e.getItem!=`function`||typeof e.setItem!=`function`?null:e}catch{return null}}function s5(e){let t=SSe(),n=CSe(),r=xSe+e;if(n){let e=null;try{e=n.getItem(r)}catch{e=null}if(e)try{let n=JSON.parse(e);if(n.date===t&&typeof n.uuid==`string`)return n.uuid}catch{}let i=crypto.randomUUID();try{n.setItem(r,JSON.stringify({uuid:i,date:t}))}catch{}return i}let i=o5.get(e);if(i&&i.date===t)return i.uuid;let a=crypto.randomUUID();return o5.set(e,{uuid:a,date:t}),a}var c5=Wv(`quick-llm`);async function l5(e){let t=X8();if(!t)return c5.debug(`No API key for active provider — skipping`),null;let n=Y8(),r=q8(),i;if(i=e.modelId?u5(n,e.modelId)??u5(n,r):wSe(n,r),!i)return c5.debug(`No model available for provider`,{providerId:n}),null;let a={role:`user`,content:e.prompt,timestamp:Date.now()},o={};i.provider===`adobe`&&(o[`X-Session-Id`]=OSe());try{let n=(await Dl(i,{systemPrompt:e.system,messages:[a]},{apiKey:t,maxTokens:e.maxTokens??60,temperature:e.temperature??.3,signal:e.signal,headers:Object.keys(o).length>0?o:void 0})).content.filter(e=>e.type===`text`).map(e=>e.text).join(``).trim();return n.length>0?n:null}catch(e){return c5.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function wSe(e,t){let n=w8(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ESe(r.id),a=n.filter(e=>TSe(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function TSe(e,t,n){if(e.id===t.id)return!1;let r=t.cost?.input??1/0;if((e.cost?.input??1/0)>=r)return!1;let i=e.id.toLowerCase();switch(n){case`claude`:return i.includes(`haiku`);case`gpt`:return/(^|-)mini(-|$)|(^|-)nano(-|$)/.test(i);case`gemini`:return i.includes(`flash`);case`grok`:return/(^|-)mini(-|$)|(^|-)fast(-|$)/.test(i);case`unknown`:return!0}}function ESe(e){let t=e.toLowerCase();return t.includes(`claude`)?`claude`:t.includes(`gemini`)?`gemini`:t.includes(`grok`)?`grok`:/^(gpt|o\d)/.test(t)?`gpt`:`unknown`}function u5(e,t){return w8(e).find(e=>e.id===t)}var DSe=`ui-quick-llm`;function OSe(){return s5(DSe)}var kSe=`browser-coding-agent`,ASe=1,d5=`sessions`;function jSe(){return new Promise((e,t)=>{let n=indexedDB.open(kSe,ASe);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(d5)||e.createObjectStore(d5,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var f5=class{db=null;async init(){this.db=await jSe()}ensureDb(){if(!this.db)throw Error(`SessionStore not initialized. Call init() first.`);return this.db}async save(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readwrite`);i.objectStore(d5).put(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async load(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readonly`).objectStore(d5).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}async list(){let e=this.ensureDb();return new Promise((t,n)=>{let r=e.transaction(d5,`readonly`).objectStore(d5).getAll();r.onsuccess=()=>{t(r.result.sort((e,t)=>t.updatedAt-e.updatedAt).map(e=>e.id))},r.onerror=()=>n(r.error)})}async delete(e){let t=this.ensureDb();return new Promise((n,r)=>{let i=t.transaction(d5,`readwrite`);i.objectStore(d5).delete(e),i.oncomplete=()=>n(),i.onerror=()=>r(i.error)})}async saveMessages(e,t){let n=await this.load(e),r=n?{...n,messages:t,updatedAt:Date.now()}:{id:e,messages:t,createdAt:Date.now(),updatedAt:Date.now()};await this.save(r)}},p5=[`#000000`,`#cd3131`,`#0dbc79`,`#e5e510`,`#2472c8`,`#bc3fbc`,`#11a8cd`,`#e5e5e5`],m5=[`#666666`,`#f14c4c`,`#23d18b`,`#f5f543`,`#3b8eea`,`#d670d6`,`#29b8db`,`#ffffff`],h5=()=>({fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,strike:!1,inverse:!1}),g5=e=>Math.max(0,Math.min(255,Math.floor(e)||0));function MSe(e){if(e<0||e>255)return``;if(e<8)return p5[e];if(e<16)return m5[e-8];if(e<232){let t=e-16,n=[0,95,135,175,215,255];return`rgb(${n[Math.floor(t/36)]},${n[Math.floor(t%36/6)]},${n[t%6]})`}let t=8+(e-232)*10;return`rgb(${t},${t},${t})`}function _5(e,t){let n=e[t+1];if(n===5){let n=e[t+2];return{color:typeof n==`number`?MSe(n):null,consumed:3}}return n===2?{color:`rgb(${g5(e[t+2]??0)},${g5(e[t+3]??0)},${g5(e[t+4]??0)})`,consumed:5}:{color:null,consumed:2}}function NSe(e,t){let n={...e},r=t.length===0?[0]:t;for(let e=0;e<r.length;e++){let t=r[e];if(t===0)Object.assign(n,h5());else if(t===1)n.bold=!0;else if(t===2)n.dim=!0;else if(t===3)n.italic=!0;else if(t===4)n.underline=!0;else if(t===7)n.inverse=!0;else if(t===9)n.strike=!0;else if(t===22)n.bold=!1,n.dim=!1;else if(t===23)n.italic=!1;else if(t===24)n.underline=!1;else if(t===27)n.inverse=!1;else if(t===29)n.strike=!1;else if(t>=30&&t<=37)n.fg=p5[t-30];else if(t===38){let t=_5(r,e);t.color&&(n.fg=t.color),e+=t.consumed-1}else if(t===39)n.fg=null;else if(t>=40&&t<=47)n.bg=p5[t-40];else if(t===48){let t=_5(r,e);t.color&&(n.bg=t.color),e+=t.consumed-1}else t===49?n.bg=null:t>=90&&t<=97?n.fg=m5[t-90]:t>=100&&t<=107&&(n.bg=m5[t-100])}return n}function PSe(e){let t=e.fg,n=e.bg;if(e.inverse){let e=t;t=n??`#e6e6e6`,n=e??`#0d0d0f`}let r=[];t&&r.push(`color:${t}`),n&&r.push(`background-color:${n}`),e.bold&&r.push(`font-weight:600`),e.dim&&r.push(`opacity:.7`),e.italic&&r.push(`font-style:italic`);let i=[];return e.underline&&i.push(`underline`),e.strike&&i.push(`line-through`),i.length&&r.push(`text-decoration:${i.join(` `)}`),r.join(`;`)}var FSe=e=>!!(e.fg||e.bg||e.bold||e.dim||e.italic||e.underline||e.strike||e.inverse),v5=(e,t)=>{let n=j6(e);return FSe(t)?`<span style="${PSe(t)}">${n}</span>`:n},y5=/\x1b\[[?!#>]?[\d;]*[@-~]|\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,ISe=/^\x1b\[([\d;]*)m$/;function LSe(e){if(!e)return``;let t=``,n=0,r=h5();y5.lastIndex=0;let i;for(;(i=y5.exec(e))!==null;){let a=e.slice(n,i.index);a&&(t+=v5(a,r));let o=ISe.exec(i[0]);if(o){let e=o[1]===``?[]:o[1].split(`;`).map(e=>Number(e)||0);r=NSe(r,e)}n=i.index+i[0].length}let a=e.slice(n);return a&&(t+=v5(a,r)),t}function RSe(e){let t=e;return t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)"([^"]{8,})"/gi,`$1"***"`),t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)'([^']{8,})'/gi,`$1'***'`),t=t.replace(/([A-Z_]*(?:TOKEN|KEY|SECRET|PASSWORD|AUTH|BEARER|API_KEY|ACCESS_TOKEN)[=:]\s*)([^\s"'`]{8,})/gi,`$1***`),t=t.replace(/(Authorization:\s*Bearer\s+)([^\s"'`]{8,})/gi,`$1***`),t=t.replace(/(?<![A-Za-z0-9+/])(ghp_[A-Za-z0-9]{36}|gh[a-z]_[A-Za-z0-9]{36}|[A-Fa-f0-9]{40,}|[A-Za-z0-9+/]{40,}={0,2})(?![A-Za-z0-9+/=])/g,`***`),t}var zSe={icon:K4,title:`tool`,preview:e=>T5(e,80)},BSe={read_file:{icon:AY,title:`read`,preview:e=>w5(e,`path`)??``,renderBody:KSe},write_file:{icon:yY,title:`write`,preview:e=>w5(e,`path`)??``},edit_file:{icon:gY,title:`edit`,preview:e=>w5(e,`path`)??``,renderBody:ZSe},bash:{icon:v4,title:`bash`,preview:e=>{let t=w5(e,`command`)??``;return t?RSe(`$ ${E5(t,120)}`):``},renderBody:XSe},browser:{icon:LZ,title:`browser`,preview:e=>T5(e,80)},javascript:{icon:yK,title:`javascript`,preview:e=>E5((w5(e,`code`)??``).replace(/\s+/g,` `),100)},send_message:{icon:R0,title:`message`,preview:e=>{let t=w5(e,`text`)??``;return t?`"${E5(t,100)}"`:``}},feed_scoop:{icon:z4,title:`feed`,preview:e=>w5(e,`scoop_name`)??``},scoop_scoop:{icon:e$,title:`scoop`,preview:e=>w5(e,`name`)??``},drop_scoop:{icon:D4,title:`drop`,preview:e=>w5(e,`scoop_name`)??``},scoop_mute:{icon:H4,title:`mute`,preview:e=>D5(e)},scoop_unmute:{icon:V4,title:`unmute`,preview:e=>D5(e)},scoop_wait:{icon:qQ,title:`wait`,preview:e=>{let t=D5(e),n=w5(e,`timeout_ms`);return n===void 0||n===``?t:t?`${t} (${n}ms)`:`${n}ms`}},list_scoops:{icon:R1,title:`list scoops`,preview:()=>``},list_tasks:{icon:y1,title:`list tasks`,preview:()=>``},register_scoop:{icon:F4,title:`register`,preview:e=>w5(e,`name`)??``},schedule_task:{icon:JG,title:`schedule`,preview:e=>w5(e,`cron`)??w5(e,`name`)??``},update_global_memory:{icon:cH,title:`memory`,preview:e=>E5((w5(e,`content`)??``).split(`
|
|
985
985
|
`).find(e=>e.trim().length>0)??``,100)},delegate_to_scoop:{icon:u2,title:`delegate`,preview:e=>w5(e,`scoop_name`)??``}};function b5(e){return BSe[e]??{...zSe,title:e}}function x5(e){return e.result===void 0?`running`:e.isError?`error`:`success`}function VSe(e){return O5(b5(e).icon)}function S5(){return O5(CK)}function HSe(e){return e.length===0?[]:e.length<3?e.map(e=>({kind:`single`,toolCall:e})):[{kind:`cluster`,toolCalls:[...e]}]}function USe(e){return C5(e.map(e=>b5(e.name).title))}function C5(e){return E5(e.join(`, `),120)}function WSe(e){let t=b5(e.name);if(t.renderBody)try{return t.renderBody(e)}catch{}return GSe(e)}function w5(e,t){if(!e||typeof e!=`object`)return;let n=e[t];if(typeof n==`string`)return n;if(typeof n==`number`||typeof n==`boolean`)return String(n)}function T5(e,t){if(e==null)return``;if(typeof e==`string`)return E5(e,t);try{return E5(JSON.stringify(e),t)}catch{return E5(String(e),t)}}function E5(e,t){return e.length<=t?e:e.slice(0,t-1).trimEnd()+`…`}function D5(e){if(!e||typeof e!=`object`)return``;let t=e.scoop_names;return Array.isArray(t)?E5(t.filter(e=>typeof e==`string`).join(`, `),100):``}function O5(e){let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`xmlns`,`http://www.w3.org/2000/svg`),t.setAttribute(`width`,`14`),t.setAttribute(`height`,`14`),t.setAttribute(`viewBox`,`0 0 24 24`),t.setAttribute(`fill`,`none`),t.setAttribute(`stroke`,`currentColor`),t.setAttribute(`stroke-width`,`2`),t.setAttribute(`stroke-linecap`,`round`),t.setAttribute(`stroke-linejoin`,`round`);for(let[n,r]of e){let e=document.createElementNS(`http://www.w3.org/2000/svg`,n);for(let[t,n]of Object.entries(r))e.setAttribute(t,String(n));t.appendChild(e)}return t}function GSe(e){let t=document.createElement(`div`);return t.className=`tool-call__body`,e.input!==void 0&&t.appendChild(qSe(e.input)),e.result!==void 0&&t.appendChild(k5(e)),t}function KSe(e){let t=document.createElement(`div`);return t.className=`tool-call__body`,e.result!==void 0&&t.appendChild(k5(e)),t}function k5(e){let t=document.createElement(`pre`);return t.className=`tool-call__result${e.isError?` tool-call__result--error`:``}`,t.textContent=e.result??``,t}function qSe(e){let t=document.createElement(`pre`);return t.className=`tool-call__yaml`,t.innerHTML=A5(e,0),t}function A5(e,t){let n=` `.repeat(t);if(e==null)return`${n}<span class="tool-call__yaml-null">~</span>`;if(typeof e==`string`)return YSe(e,t);if(typeof e==`number`||typeof e==`boolean`)return`${n}<span class="tool-call__yaml-scalar">${j6(String(e))}</span>`;if(Array.isArray(e))return e.length===0?`${n}<span class="tool-call__yaml-scalar">[]</span>`:e.map(e=>j5(e)?`${n}- ${M5(e)}`:`${n}- ${A5(e,t+1).replace(/^\s+/,``)}`).join(`
|
|
986
986
|
`);if(typeof e==`object`){let r=Object.entries(e);return r.length===0?`${n}<span class="tool-call__yaml-scalar">{}</span>`:r.map(([e,n])=>JSe(e,n,t)).join(`
|
|
987
987
|
`)}return`${n}${j6(String(e))}`}function JSe(e,t,n){let r=` `.repeat(n),i=`<span class="tool-call__yaml-key">${j6(e)}</span>`;return j5(t)?`${r}${i}: ${M5(t)}`:Array.isArray(t)&&t.length===0?`${r}${i}: <span class="tool-call__yaml-scalar">[]</span>`:typeof t==`object`&&t&&Object.keys(t).length===0?`${r}${i}: <span class="tool-call__yaml-scalar">{}</span>`:`${r}${i}:\n${A5(t,n+1)}`}function j5(e){return typeof e!=`object`||!e}function M5(e){if(e==null)return`<span class="tool-call__yaml-null">~</span>`;if(typeof e==`string`){if(e.includes(`
|
|
@@ -1652,7 +1652,7 @@ ${n}
|
|
|
1652
1652
|
`,this.container.appendChild(i)}};function v7(e){let t=Date.parse(e);if(Number.isNaN(t))return e;let n=Math.max(0,Math.floor((Date.now()-t)/1e3));return n<60?`just now`:n<3600?`${Math.floor(n/60)}m ago`:n<86400?`${Math.floor(n/3600)}h ago`:n<604800?`${Math.floor(n/86400)}d ago`:new Date(t).toLocaleDateString()}var rwe=class{container;terminalViewEl;previewViewEl;previewEmptyEl;previewBtn;shell=null;activeView=`terminal`;onClearTerminal;constructor(e,t={}){this.container=e,this.onClearTerminal=t.onClearTerminal??null,this.render()}async mountShell(e){this.shell?.setPreviewStateListener?.(null),this.shell=e;let t=document.createElement(`div`);t.className=`terminal-panel__mount`,this.terminalViewEl.appendChild(t),await e.mount(t);let n=t.querySelector(`.terminal-panel__terminal-host`),r=t.querySelector(`.terminal-panel__preview`);if(!n||!r)throw Error(`terminal mount did not create expected hosts`);this.terminalViewEl.replaceChildren(n),this.previewViewEl.replaceChildren(this.previewEmptyEl),this.previewViewEl.appendChild(r),e.setPreviewStateListener(e=>this.handlePreviewStateChange(e))}async mountRemoteShell(e){this.shell?.setPreviewStateListener?.(null),this.shell=e;let t=document.createElement(`div`);t.className=`terminal-panel__mount`,this.terminalViewEl.appendChild(t),await e.mount(t);let n=t.querySelector(`.terminal-panel__terminal-host`),r=t.querySelector(`.terminal-panel__preview`);if(!n)throw Error(`remote terminal mount did not create expected host`);this.terminalViewEl.replaceChildren(n),this.previewViewEl.replaceChildren(this.previewEmptyEl),r&&this.previewViewEl.appendChild(r),e.setPreviewStateListener(e=>this.handlePreviewStateChange(e))}clearTerminal(){this.shell?.clearTerminal()}async runCommand(e){return this.shell?(/^\s*imgcat(?:\s|$)/.test(e)||this.setActiveView(`terminal`),this.shell.executeCommandInTerminal(e)):{stdout:``,stderr:`terminal is unavailable
|
|
1653
1653
|
`,exitCode:1}}refit(){this.shell?.refit()}getBodyElement(){return this.container}render(){this.container.innerHTML=``,this.container.classList.add(`terminal-panel`);let e=document.createElement(`div`);e.className=`file-browser__header`;let t=document.createElement(`span`);if(t.className=`file-browser__header-title`,t.textContent=`Terminal`,e.appendChild(t),this.onClearTerminal){let t=document.createElement(`button`);t.className=`file-browser__header-btn`,t.dataset.tooltip=`Clear Terminal`,t.setAttribute(`aria-label`,`Clear Terminal`),t.innerHTML=`<svg width="14" height="14" viewBox="0 0 20 20" fill="none"><path d="m8.249,15.021c-.4,0-.733-.317-.748-.72l-.25-6.5c-.017-.414.307-.763.72-.778.01-.001.021-.001.03-.001.4,0,.733.317.748.72l.25,6.5c.017.414-.307.763-.72.778-.01.001-.021.001-.03.001Z" fill="currentColor"/><path d="m11.751,15.021c-.01,0-.02,0-.03-.001-.413-.016-.736-.364-.72-.778l.25-6.5c.015-.403.348-.72.748-.72.01,0,.02,0,.03.001.413.016.736.364.72.778l-.25,6.5c-.015.403-.348.72-.748.72Z" fill="currentColor"/><path d="m17,4h-3.5v-.75c0-1.24-1.01-2.25-2.25-2.25h-2.5c-1.24,0-2.25,1.01-2.25,2.25v.75h-3.5c-.414,0-.75.336-.75.75s.336.75.75.75h.52l.422,10.342c.048,1.21,1.036,2.158,2.248,2.158h7.619c1.212,0,2.2-.948,2.248-2.158l.422-10.342h.52c.414,0,.75-.336.75-.75s-.336-.75-.75-.75Zm-9-.75c0-.413.337-.75.75-.75h2.5c.413,0,.75.337.75.75v.75h-4v-.75Zm6.56,12.531c-.017.403-.346.719-.75.719h-7.619c-.404,0-.733-.316-.75-.719l-.42-10.281h9.959l-.42,10.281Z" fill="currentColor"/></svg>`,t.addEventListener(`click`,()=>this.onClearTerminal()),e.appendChild(t)}this.previewBtn=document.createElement(`button`),this.previewBtn.className=`file-browser__header-btn`,this.previewBtn.setAttribute(`aria-label`,`Toggle preview`),this.previewBtn.dataset.tooltip=`Preview`,this.previewBtn.disabled=!0;let n=`http://www.w3.org/2000/svg`,r=document.createElementNS(n,`svg`);r.setAttribute(`width`,`16`),r.setAttribute(`height`,`16`),r.setAttribute(`viewBox`,`0 0 20 20`),r.setAttribute(`fill`,`none`),r.setAttribute(`stroke`,`currentColor`),r.setAttribute(`stroke-width`,`1.5`),r.setAttribute(`stroke-linecap`,`round`),r.setAttribute(`stroke-linejoin`,`round`);let i=document.createElementNS(n,`path`);i.setAttribute(`d`,`M2 10s3-6 8-6 8 6 8 6-3 6-8 6-8-6-8-6z`),r.appendChild(i);let a=document.createElementNS(n,`circle`);a.setAttribute(`cx`,`10`),a.setAttribute(`cy`,`10`),a.setAttribute(`r`,`2.5`),r.appendChild(a),this.previewBtn.appendChild(r),this.previewBtn.addEventListener(`click`,()=>{this.previewBtn.disabled||this.setActiveView(this.activeView===`preview`?`terminal`:`preview`)}),e.appendChild(this.previewBtn),this.container.appendChild(e),this.terminalViewEl=document.createElement(`div`),this.terminalViewEl.className=`terminal-panel__view`,this.container.appendChild(this.terminalViewEl),this.previewViewEl=document.createElement(`div`),this.previewViewEl.className=`terminal-panel__view`,this.container.appendChild(this.previewViewEl),this.previewEmptyEl=document.createElement(`div`),this.previewEmptyEl.className=`terminal-panel__empty-state`,this.previewEmptyEl.textContent=`Run imgcat to preview media here.`,this.previewViewEl.appendChild(this.previewEmptyEl),this.setActiveView(`terminal`)}dispose(){this.shell?.setPreviewStateListener?.(null),this.shell?.dispose(),this.container.innerHTML=``}setActiveView(e){this.activeView=e,this.previewBtn.classList.toggle(`file-browser__header-btn--active`,e===`preview`),this.terminalViewEl.style.display=e===`terminal`?`flex`:`none`,this.previewViewEl.style.display=e===`preview`?`flex`:`none`,e===`terminal`&&this.refit()}handlePreviewStateChange(e){this.previewBtn.disabled=!e,this.previewEmptyEl.style.display=e?`none`:`flex`,e?this.setActiveView(`preview`):this.activeView===`preview`&&this.setActiveView(`terminal`)}};function iwe(e){let t=(e??``).trim();if(!t)return``;let n=t.replace(/\s*\([^)]*\)\s*$/,``).trim()||t,r=n.indexOf(`@`);if(r>0){let e=n.slice(0,r),t=n.slice(r+1),i=e.split(/[._+-]/).filter(Boolean);return((i[0]?.[0]??e[0]??``)+(i.length>1?i[i.length-1][0]:t.match(/[a-z0-9]/i)?.[0]??``)).toUpperCase()}let i=n.split(/\s+/).filter(Boolean);return i.length>=2?(i[0][0]+i[i.length-1][0]).toUpperCase():n.slice(0,2).toUpperCase()}var awe=class{entries=new Map;listeners=new Set;register(e){this.entries.set(e.id,{descriptor:e}),this.notify()}unregister(e){this.entries.delete(e),this.notify()}get(e){return this.entries.get(e)}getByZone(e){let t=[];for(let n of this.entries.values())n.descriptor.zone===e&&t.push(n.descriptor);return t}getClosed(){let e=[];for(let t of this.entries.values())t.descriptor.zone===null&&e.push(t.descriptor);return e}setZone(e,t){let n=this.entries.get(e);n&&(n.descriptor.zone=t,this.notify())}ids(){return Array.from(this.entries.keys())}has(e){return this.entries.has(e)}onChange(e){return this.listeners.add(e),()=>this.listeners.delete(e)}notify(){for(let e of this.listeners)e()}},owe=class{zoneId;rail;contentArea;callbacks;storageKey;topSection;bottomSection;addBtn=null;entries=new Map;activeId=null;fullpage=!1;overflowObserver=null;defaultFullpage=!1;headerSection=null;constructor(e,t,n,r={},i={}){this.rail=e,this.contentArea=t,this.zoneId=n,this.callbacks=r,this.storageKey=`slicc-${n}-rail`,this.defaultFullpage=i.defaultFullpage??!1,this.rail.classList.add(`rail`),this.topSection=document.createElement(`div`),this.topSection.className=`rail__section rail__section--top`,this.bottomSection=document.createElement(`div`),this.bottomSection.className=`rail__section rail__section--bottom`,this.rail.appendChild(this.topSection),this.rail.appendChild(this.bottomSection),this.contentArea.classList.add(`rail-content--collapsed`),this.contentArea.style.display=`none`}addItem(e){if(this.entries.has(e.id))return;let t=this.createItemButton(e),n=e.position===`bottom`?this.bottomSection:this.topSection;e.closable&&e.position===`top`&&this.addBtn?n.insertBefore(t,this.addBtn):n.appendChild(t),e.element.style.display=`none`,this.contentArea.appendChild(e.element),this.entries.set(e.id,{btn:t,container:e.element,item:e}),this.updateOverflowState()}removeItem(e){let t=this.entries.get(e);t&&(t.btn.remove(),t.container.remove(),this.entries.delete(e),this.activeId===e&&(this.activeId=null,this.collapse()),this.updateOverflowState())}hasItem(e){return this.entries.has(e)}setItemIcon(e,t){let n=this.entries.get(e);n&&n.btn.setIcon(t)}markItemAttention(e){let t=this.entries.get(e);t&&t.btn.classList.add(`rail__item--attention`)}clearItemAttention(e){let t=this.entries.get(e);t&&t.btn.classList.remove(`rail__item--attention`)}activateItem(e,t={}){let n=this.entries.get(e);if(n){this.clearItemAttention(e),this.activeId=e;for(let[t,{btn:n,container:r}]of this.entries){let i=t===e;n.classList.toggle(`rail__item--active`,i),r.style.display=i?`flex`:`none`}this.contentArea.classList.remove(`rail-content--collapsed`),this.contentArea.style.display=`flex`;try{localStorage.setItem(this.storageKey,e)}catch{}this.setFullpage(t.fullpage??this.defaultFullpage),n.item.onActivate?.(),this.callbacks.onItemActivate?.(e)}}collapse(){if(this.activeId){let e=this.entries.get(this.activeId);e&&(e.btn.classList.remove(`rail__item--active`),e.container.style.display=`none`)}this.activeId=null,this.contentArea.classList.add(`rail-content--collapsed`),this.contentArea.style.display=`none`,this.fullpage&&this.setFullpage(!1);try{localStorage.removeItem(this.storageKey)}catch{}this.callbacks.onCollapse?.()}isCollapsed(){return this.activeId===null}setFullpage(e){this.fullpage!==e&&(this.fullpage=e,this.callbacks.onFullpageToggle?.(e))}isFullpage(){return this.fullpage}getActiveItemId(){return this.activeId}enableAddButton(){if(this.addBtn)return;let e=document.createElement(`button`);e.className=`rail__item rail__item--add`,e.dataset.tooltip=`Add panel`,e.dataset.tooltipPos=`left`,e.setAttribute(`aria-label`,`Add panel`),e.innerHTML=`<svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M8 3v10M3 8h10"/></svg>`,e.addEventListener(`click`,e=>{e.preventDefault(),this.callbacks.onAddClick?.()}),this.topSection.appendChild(e),this.addBtn=e,e.style.display=`none`,typeof ResizeObserver<`u`&&(this.overflowObserver=new ResizeObserver(()=>this.updateOverflowState()),this.overflowObserver.observe(this.rail),this.overflowObserver.observe(this.topSection)),this.updateOverflowState()}updateOverflowState(){if(!this.addBtn)return;let e=this.rail.clientHeight||this.rail.offsetHeight,t=this.bottomSection.offsetHeight,n=Array.from(this.topSection.children).filter(e=>e!==this.addBtn).reduce((e,t)=>e+t.offsetHeight,0);if(e<=0||n<=0){this.addBtn.style.display=`none`;return}let r=n>e-t-8;this.addBtn.style.display=r?``:`none`}createItemButton(e){let t=document.createElement(`slicc-press-button`);return t.className=`rail__item`,t.dataset.itemId=e.id,t.setAttribute(`label`,e.label),t.setAttribute(`tooltip`,e.label),t.setAttribute(`tooltip-pos`,`left`),t.setAttribute(`disable-double-click`,``),t.innerHTML=e.icon,this.attachActivationHandlers(t,e.id),t}attachActivationHandlers(e,t){e.addEventListener(`long-press`,()=>this.activateItem(t,{fullpage:!0})),e.addEventListener(`short-click`,()=>{let e=this.defaultFullpage;this.activeId===t&&(e?this.fullpage:!this.fullpage)?this.collapse():this.activateItem(t,{fullpage:e})})}mountTopWidget(e){if(this.headerSection&&=(this.headerSection.remove(),null),!e)return;let t=document.createElement(`div`);t.className=`rail__section rail__section--header`,t.appendChild(e),this.rail.insertBefore(t,this.topSection),this.headerSection=t}restoreActive(){let e=null;try{e=localStorage.getItem(this.storageKey)}catch{}e&&this.entries.has(e)?this.activateItem(e,{fullpage:!1}):this.collapse()}destroy(){this.overflowObserver?.disconnect(),this.overflowObserver=null}__test__={longPressMs:L5}};function swe(e,t,n){let r=document.querySelector(`.sprinkle-picker`);if(r){r.remove();return}let{registry:i,callbacks:a,getAvailableSprinkles:o}=n,s=i.getClosed(),c=o?.()??[];if(s.length===0&&c.length===0)return;let l=document.createElement(`div`);l.className=`sprinkle-picker`,l.style.cssText=`position: absolute; min-width: 160px; max-height: 300px; overflow-y: auto; background: var(--s2-bg-layer-2); border: 1px solid var(--s2-border-default); border-radius: var(--s2-radius-l); padding: 4px 0; box-shadow: var(--s2-shadow-elevated); z-index: 1000;`;let u=()=>{l.remove(),document.removeEventListener(`pointerdown`,f,!0),document.removeEventListener(`keydown`,p,!0)};for(let e of s){let n=y7(e.label,()=>{a.onSelectPanel(e.id,t),u()});l.appendChild(n)}if(s.length>0&&c.length>0){let e=document.createElement(`div`);e.style.cssText=`height: 1px; background: var(--s2-border-default); margin: 4px 0;`,l.appendChild(e)}for(let e of c){let n=y7(e.title,()=>{a.onSelectSprinkle(e.name,t),u()});l.appendChild(n)}let d=e.getBoundingClientRect();l.style.top=`${d.bottom+4}px`,l.style.left=`${d.left}px`,document.body.appendChild(l);let f=e=>{l.contains(e.target)||u()},p=e=>{e.key===`Escape`&&u()};requestAnimationFrame(()=>{document.addEventListener(`pointerdown`,f,!0),document.addEventListener(`keydown`,p,!0)})}function y7(e,t){let n=document.createElement(`div`);return n.className=`sprinkle-picker__item`,n.style.cssText=`padding: 6px 12px; cursor: pointer; font-size: 12px; color: var(--s2-content-default); border-radius: var(--s2-radius-s); margin: 0 4px; transition: background 130ms ease;`,n.textContent=e,n.addEventListener(`mouseenter`,()=>{n.style.background=`var(--s2-bg-elevated)`}),n.addEventListener(`mouseleave`,()=>{n.style.background=``}),n.addEventListener(`click`,t),n}function cwe(e){document.querySelectorAll(`.dialog-overlay[data-sync-dialog]`).forEach(e=>{e.remove()});let t=document.createElement(`div`);t.className=`dialog-overlay`,t.dataset.syncDialog=`1`;let n=document.createElement(`div`);n.className=`dialog`,t.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__title`,r.textContent=`Multi-browser sync is on`,n.appendChild(r);let i=document.createElement(`div`);i.className=`dialog__desc`,i.textContent=e.copied?`The sync URL is copied to your clipboard. Paste it into another SLICC browser to mirror this one.`:`Couldn’t copy automatically. Use the button below to copy the sync URL, then paste it into another SLICC browser.`,n.appendChild(i);let a=document.createElement(`div`);a.style.cssText=`margin-bottom: 12px; padding: 10px 12px; background: var(--s2-bg-layer-1); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle); line-height: 1.5; font-size: 12px; color: var(--s2-content-secondary);`;let o=document.createElement(`ol`);o.style.cssText=`margin: 0; padding-left: 20px;`;for(let e of[`Open SLICC in another browser.`,`Click the avatar (top right) → “Connect to another browser”.`,`Paste the URL there. Both browsers must be on the same SLICC version.`]){let t=document.createElement(`li`);t.textContent=e,o.appendChild(t)}a.appendChild(o),n.appendChild(a);let s=document.createElement(`div`);s.style.cssText=`font-family: var(--s2-font-mono); font-size: 11px; color: var(--s2-content-secondary); word-break: break-all; margin-bottom: 12px; padding: 8px 12px; background: var(--s2-bg-sunken); border-radius: var(--s2-radius-default); border: 1px solid var(--s2-border-subtle);`,s.textContent=e.joinUrl,n.appendChild(s);let c=document.createElement(`div`);c.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); margin-bottom: 8px; display: none;`,n.appendChild(c),e.copied&&(c.textContent=`URL copied to clipboard.`,c.style.display=``);let l=document.createElement(`button`);l.className=`dialog__btn dialog__btn--secondary`,l.style.marginBottom=`8px`,l.textContent=e.copied?`Copy again`:`Copy URL`,l.addEventListener(`click`,async()=>{let t=await e8(e.joinUrl);c.textContent=t?`URL copied to clipboard.`:`Couldn’t copy. Select and copy manually.`,c.style.color=t?`var(--s2-content-secondary)`:`var(--slicc-cone)`,c.style.display=``}),n.appendChild(l);let u=document.createElement(`button`);if(u.className=`dialog__btn`,u.textContent=`Done`,u.addEventListener(`click`,()=>t.remove()),n.appendChild(u),e.onReset){let t=document.createElement(`button`);t.className=`dialog__btn dialog__btn--secondary`,t.style.marginTop=`8px`,t.textContent=`Reset URL (disconnect connected browsers)`,t.addEventListener(`click`,async()=>{t.disabled=!0,u.disabled=!0,l.disabled=!0,c.textContent=`Resetting sync URL…`,c.style.color=`var(--s2-content-secondary)`,c.style.display=``;try{await e.onReset(),c.textContent=`Sync URL reset. Reopen this dialog from the avatar to share the new URL.`,c.style.color=`var(--s2-content-secondary)`,s.textContent=`—`,l.disabled=!0}catch(e){c.textContent=`Reset failed: ${e instanceof Error?e.message:String(e)}`,c.style.color=`var(--slicc-cone)`,t.disabled=!1,u.disabled=!1,l.disabled=!1}}),n.appendChild(t)}t.addEventListener(`click`,e=>{e.target===t&&t.remove()}),document.body.appendChild(t)}var b7=Wv(`ui.layout`),x7=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z"></path><path d="M20 3v4"></path><path d="M22 5h-4"></path><path d="M4 17v2"></path><path d="M5 18H3"></path></svg>`,S7=class e{root;isExtension;scoopsEl;leftEl;rightEl;verticalDivider;terminalContainer;iframeContainer;threadHeaderEl;threadHeaderName;newSessionBtn=null;rightContentEl;railEl;primaryRail;layoutRootEl;tabContainers=new Map;activeTab=`chat`;memoryContainer;terminalIconSvg=``;memoryIconSvg=``;scoopSwitcher=null;scoopSwitcherEl=null;popoutButtonEl;popoutClickHandler;detachedActiveOverlayEl;avatarEl;logoSvg=null;logoImg=null;logoScoopCount=-1;headerHamburger=null;panels;registry=new awe;onModelChange;onThinkingLevelChange;refreshModels;onModelsRefreshed;onScoopSelect;onClearChat;onClearFilesystem;onFrozenSessionOpen;onSprinkleClose;onSprinkleActivate;getAvailableSprinkles;onOpenSprinkle;resolveSprinkleIcon;constructor(e,t=!1){this.root=e,this.isExtension=t,this.buildSplitLayout()}setScoopSwitcherOrchestrator(e){this.scoopSwitcher?.setOrchestrator(e)}setScoopSwitcherTranscriptSource(e){if(!this.scoopSwitcher)return;let t=new Y5(e);this.scoopSwitcher.setLabeler(t,e)}setScoopsRailTranscriptSource(e){this.panels.scoops?.setScopeTranscriptSource(e)}updateScoopSwitcherStatus(e,t){this.scoopSwitcher?.updateStatus(e,t)}setScoopSwitcherSelected(e){this.scoopSwitcher?.setSelected(e)}refreshScoopSwitcher(){this.scoopSwitcher?.refresh()}setShowPopoutButton(e){if(!e){this.popoutButtonEl?.remove(),this.popoutButtonEl=void 0;return}if(this.popoutButtonEl)return;let t=this.isExtension?this.root.querySelector(`.thread-header`):this.root.querySelector(`.header`);if(!t)return;let n=document.createElement(`button`);n.type=`button`,n.className=`header__popout-btn`,n.title=`Open in a new tab`,n.textContent=`⤴`,n.setAttribute(`aria-label`,`Pop out to a new tab`),n.addEventListener(`click`,()=>{n.disabled=!0,this.popoutClickHandler?.()}),t.appendChild(n),this.popoutButtonEl=n}setPopoutClickHandler(e){this.popoutClickHandler=e}resetPopoutButton(){this.popoutButtonEl&&(this.popoutButtonEl.disabled=!1)}showDetachedActiveOverlay(){if(this.detachedActiveOverlayEl)return;let e=document.createElement(`div`);e.className=`layout-detached-overlay`,e.setAttribute(`role`,`alertdialog`),e.setAttribute(`aria-modal`,`true`);let t=document.createElement(`p`);t.textContent=`Detached in another tab. Close this window to continue.`;let n=document.createElement(`button`);n.type=`button`,n.className=`layout-detached-overlay-close`,n.textContent=`Close this window`,n.addEventListener(`click`,()=>{window.close()}),e.appendChild(t),e.appendChild(n),this.root.appendChild(e),this.detachedActiveOverlayEl=e}setThreadHeaderName(e){this.threadHeaderName?.isConnected&&(this.threadHeaderName.textContent=e)}setNewSessionGlow(e){if(!this.newSessionBtn)return;let t=e>=.85,n=e>=.5;this.newSessionBtn.classList.toggle(`glow`,n),this.newSessionBtn.classList.toggle(`glow--hot`,t)}setActiveTab(e){if(this.activeTab=e,e===`chat`){this.primaryRail?.collapse?.();return}this.primaryRail?.activateItem(e)}getActiveTab(){return this.activeTab}isTerminalOpen(){return this.primaryRail.getActiveItemId()===`terminal`}setAgentProcessing(e){this.threadHeaderEl?.classList.toggle(`thread-header--processing`,e)}openTerminal(){this.primaryRail.getActiveItemId()?.startsWith(`sprinkle-`)||this.primaryRail.activateItem(`terminal`)}initModelSelection(){let e=()=>{let e=k8(),t=localStorage.getItem(`selected-model`)??``,n=t.indexOf(`:`),r=n>0?t.slice(0,n):``,i=n>0?t.slice(n+1):t,a=!!r&&e.some(e=>e.providerId===r&&e.models.some(e=>e.id===i));if(!(t&&a)){for(let t of e)if(t.models.length>0){let{defaultModelId:e}=S8(t.providerId),n=(e?t.models.find(t=>t.id.toLowerCase().includes(e.toLowerCase())):void 0)??t.models[0];J8(`${t.providerId}:${n.id}`);return}t&&e.length===0&&localStorage.removeItem(`selected-model`)}};e(),this.refreshModels=()=>{e(),this.panels?.chat?.refreshModelSelector(),this.refreshAvatar(),this.onModelsRefreshed?.()}}buildScoopSwitcher(){return this.scoopSwitcherEl=document.createElement(`div`),this.scoopSwitcherEl.className=`scoop-switcher`,this.scoopSwitcher=new OCe(this.scoopSwitcherEl,{onScoopSelect:e=>this.onScoopSelect?.(e),onDeleteScoop:e=>{this.panels?.scoops?.deleteScoop?.(e)}}),this.scoopSwitcherEl}buildHeader(e){if(this.initModelSelection(),this.isExtension)return;let t=document.createElement(`div`);t.className=`header`;let n=document.createElement(`div`);n.className=`header__row`;let r=document.createElement(`div`);r.className=`header__brand`;{let e=document.createElement(`button`);e.className=`scoops-hamburger`,e.dataset.tooltip=`Toggle navigation`,e.dataset.tooltipPos=`right`,e.setAttribute(`aria-label`,`Toggle navigation`),e.innerHTML=`<svg width="16" height="16" viewBox="0 0 20 20" fill="currentColor"><path d="M9.61805 16.2451C9.31922 15.958 9.30945 15.4834 9.59754 15.1855L14.5839 10.002L9.58485 4.80469C9.29677 4.50684 9.30653 4.03223 9.60536 3.74512C9.90223 3.45801 10.3778 3.4668 10.6649 3.76563L16.1649 9.48243C16.4452 9.77247 16.4452 10.2315 16.1649 10.5215L10.6776 16.2246C10.5311 16.3779 10.3339 16.4551 10.1376 16.4551C9.95008 16.4551 9.76258 16.3857 9.61805 16.2451Z"/><path d="M3.86805 16.2451C3.56922 15.958 3.55945 15.4834 3.84754 15.1855L8.83387 10.002L3.83485 4.80469C3.54677 4.50684 3.55653 4.03223 3.85536 3.74512C4.15223 3.45801 4.62782 3.4668 4.91493 3.76563L10.4149 9.48243C10.6952 9.77247 10.6952 10.2315 10.4149 10.5215L4.92763 16.2246C4.78114 16.3779 4.58388 16.4551 4.38759 16.4551C4.20008 16.4551 4.01258 16.3857 3.86805 16.2451Z"/></svg>`,this.headerHamburger=e,e.addEventListener(`click`,()=>{this.panels?.scoops?.toggleExpanded(),e.innerHTML=this.scoopsEl?.classList.contains(`layout__scoops--expanded`)?`<svg width="16" height="16" viewBox="0 0 20 20" fill="currentColor"><path d="M9.86241 16.4551C9.66612 16.4551 9.46886 16.3779 9.32237 16.2246L3.83507 10.5215C3.5548 10.2315 3.5548 9.77247 3.83507 9.48243L9.33507 3.76563C9.62218 3.4668 10.0978 3.45801 10.3946 3.74512C10.6935 4.03223 10.7032 4.50684 10.4151 4.80469L5.41613 10.002L10.4025 15.1855C10.6906 15.4834 10.6808 15.958 10.382 16.2451C10.2374 16.3857 10.0499 16.4551 9.86241 16.4551Z"/><path d="M15.6124 16.4551C15.4161 16.4551 15.2189 16.3779 15.0724 16.2246L9.58507 10.5215C9.3048 10.2315 9.3048 9.77247 9.58507 9.48243L15.0851 3.76563C15.3722 3.4668 15.8478 3.45801 16.1446 3.74512C16.4435 4.03223 16.4532 4.50684 16.1652 4.80469L11.1661 10.002L16.1525 15.1855C16.4406 15.4834 16.4308 15.958 16.132 16.2451C15.9874 16.3857 15.7999 16.4551 15.6124 16.4551Z"/></svg>`:`<svg width="16" height="16" viewBox="0 0 20 20" fill="currentColor"><path d="M9.61805 16.2451C9.31922 15.958 9.30945 15.4834 9.59754 15.1855L14.5839 10.002L9.58485 4.80469C9.29677 4.50684 9.30653 4.03223 9.60536 3.74512C9.90223 3.45801 10.3778 3.4668 10.6649 3.76563L16.1649 9.48243C16.4452 9.77247 16.4452 10.2315 16.1649 10.5215L10.6776 16.2246C10.5311 16.3779 10.3339 16.4551 10.1376 16.4551C9.95008 16.4551 9.76258 16.3857 9.61805 16.2451Z"/><path d="M3.86805 16.2451C3.56922 15.958 3.55945 15.4834 3.84754 15.1855L8.83387 10.002L3.83485 4.80469C3.54677 4.50684 3.55653 4.03223 3.85536 3.74512C4.15223 3.45801 4.62782 3.4668 4.91493 3.76563L10.4149 9.48243C10.6952 9.77247 10.6952 10.2315 10.4149 10.5215L4.92763 16.2246C4.78114 16.3779 4.58388 16.4551 4.38759 16.4551C4.20008 16.4551 4.01258 16.3857 3.86805 16.2451Z"/></svg>`}),r.appendChild(e)}let i=document.createElement(`div`);i.className=`header__title`,i.textContent=`slicc`,r.appendChild(i),n.appendChild(r);let a=document.createElement(`div`);a.className=`header__spacer`,n.appendChild(a),this.avatarEl=this.buildUserAvatar(),n.appendChild(this.avatarEl),t.appendChild(n),e.appendChild(t)}static SCOOP_COLORS=[`#f000a0`,`#00f0f0`,`#90f000`,`#15d675`,`#e68619`];sliccLogo(e=22){let t=document.createElement(`img`);return t.width=e,t.height=e,t.src=`/logos/sliccy-color-0scoops-128x128.png`,t.alt=`slicc`,t.classList.add(`header__logo`),t.style.objectFit=`contain`,this.logoImg=t,t}static SCOOP_R=5;static SCOOP_SPACING=8.5;static ROW_STEP=7.5;pyramidLayout(t){if(t===0)return[];let{SCOOP_SPACING:n,ROW_STEP:r}=e,i=1;for(;i*(i+1)/2<t;)i++;let a=[],o=t,s=i;for(;o>0;){let e=Math.min(o,s);a.push(e),o-=e,s--}let c=[],l=19-e.SCOOP_R;for(let e of a){let t=16-(e-1)*n/2;for(let r=0;r<e;r++)c.push({cx:t+r*n,cy:l});l-=r}return c}updateLogoScoops(e){let t=e.filter(e=>!e.isCone),n=this.logoScoopCount;if(n===t.length&&n>=0)return;this.logoScoopCount=t.length;let r=Math.min(Math.max(t.length,0),10);this.logoImg&&(this.logoImg.src=`/logos/sliccy-color-${r}scoops-128x128.png`),this.updateFaviconForScoops(t.length)}updateFaviconForScoops(e){let t=Math.min(Math.max(e,0),10),n=document.querySelector(`link[rel="icon"]`);n&&(n.href=`/logos/sliccy-color-${t}scoops-32x32.png`);let r=typeof chrome<`u`?chrome:null;r?.action?.setIcon&&r.action.setIcon({path:{16:`logos/sliccy-color-${t}scoops-16x16.png`,32:`logos/sliccy-color-${t}scoops-32x32.png`,48:`logos/sliccy-color-${t}scoops-48x48.png`,128:`logos/sliccy-color-${t}scoops-128x128.png`}}).catch(()=>{})}getInitials(e){return iwe(e)}appendTrayMenu(e){let t=Dxe(Mb(),ZP()),n=document.createElement(`div`);if(n.className=`avatar-popover__separator`,e.appendChild(n),t.kind===`leader-offer`){let n=document.createElement(`button`);n.className=`avatar-popover__item`,n.textContent=t.label,n.addEventListener(`click`,async()=>{e.remove();try{let[{leaveTray:e},{resolveTrayWorkerBaseUrl:t,DEFAULT_PRODUCTION_TRAY_WORKER_BASE_URL:n,DEFAULT_STAGING_TRAY_WORKER_BASE_URL:r}]=await Promise.all([I(()=>Promise.resolve().then(()=>nF),void 0),I(()=>Promise.resolve().then(()=>oae),void 0)]),i=await t({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:n});if(!i)throw Error(`Could not resolve a tray worker URL`);await e({workerBaseUrl:i})}catch(e){let t=e instanceof Error?e.message:String(e);b7.error(`enable-tray failed`,{error:t}),C7(`enable`,t)}}),e.appendChild(n);let r=document.createElement(`div`);r.className=`avatar-popover__caption`,r.textContent=t.caption,e.appendChild(r);return}if(t.kind===`leader-copy`){let n=document.createElement(`button`);n.className=`avatar-popover__item`,n.textContent=t.label,n.addEventListener(`click`,async()=>{e.remove();let n=await e8(t.joinUrl);cwe({joinUrl:t.joinUrl,copied:n,onReset:lF()})}),e.appendChild(n);let r=document.createElement(`div`);r.className=`avatar-popover__caption`,r.textContent=t.caption,e.appendChild(r)}else if(t.kind===`leader-pending`){let n=document.createElement(`button`);n.className=`avatar-popover__item`,n.textContent=t.label,n.disabled=!0,n.style.opacity=`0.6`,n.style.cursor=`not-allowed`,e.appendChild(n);let r=document.createElement(`div`);r.className=`avatar-popover__caption`,r.textContent=t.caption,e.appendChild(r)}else if(t.kind===`follower`){let n=document.createElement(`div`);n.className=`avatar-popover__item`,n.textContent=t.label,n.style.cursor=`default`,e.appendChild(n);let r=document.createElement(`div`);r.className=`avatar-popover__caption`,r.textContent=t.caption,e.appendChild(r)}let r=document.createElement(`button`);r.className=`avatar-popover__item avatar-popover__item--danger`,r.textContent=t.kind===`follower`?`Disconnect from leader`:`Stop multi-browser sync`,r.addEventListener(`click`,async()=>{e.remove();try{let{leaveTray:e}=await I(async()=>{let{leaveTray:e}=await Promise.resolve().then(()=>nF);return{leaveTray:e}},void 0);await e()}catch(e){let t=e instanceof Error?e.message:String(e);b7.error(`leave-tray failed`,{error:t}),C7(`leave`,t)}}),e.appendChild(r)}buildUserAvatar(){let e=document.createElement(`div`);e.className=`header__avatar`,e.setAttribute(`aria-label`,`Account`),e.dataset.tooltip=`Account`;let t=A8().find(e=>!e.loggedOut&&(e.userName||e.userAvatar));if(t?.userAvatar){let n=document.createElement(`img`);n.src=t.userAvatar,n.alt=t.userName??`User`,n.addEventListener(`error`,()=>{e.removeChild(n),t.userName&&(e.classList.add(`header__avatar--initials`),e.textContent=this.getInitials(t.userName))}),e.appendChild(n)}else t?.userName?(e.classList.add(`header__avatar--initials`),e.textContent=this.getInitials(t.userName)):(e.classList.add(`header__avatar--placeholder`),e.innerHTML=`<svg width="16" height="16" viewBox="0 0 20 20" fill="currentColor"><path d="M10 10c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v1c0 .55.45 1 1 1h14c.55 0 1-.45 1-1v-1c0-2.66-5.33-4-8-4z"/></svg>`);return e.addEventListener(`click`,()=>this.showAvatarPopover()),e}refreshAvatar(){if(!this.avatarEl)return;let e=this.avatarEl.parentElement;if(!e)return;let t=this.buildUserAvatar();e.replaceChild(t,this.avatarEl),this.avatarEl=t}showAvatarPopover(){let e=document.querySelector(`.avatar-popover`);if(e){e.remove();return}let t=document.createElement(`div`);t.className=`avatar-popover`;let n=A8(),r=n.find(e=>!e.loggedOut&&(e.userName||e.accessToken||e.apiKey));if(r){let e=document.createElement(`div`);e.className=`avatar-popover__user`;let n=document.createElement(`div`);n.className=`avatar-popover__name`,n.textContent=r.userName||`Logged in`,e.appendChild(n);let i=document.createElement(`div`);i.className=`avatar-popover__provider`,i.textContent=S8(r.providerId).name,e.appendChild(i),t.appendChild(e);let a=document.createElement(`button`);a.className=`avatar-popover__item`,a.textContent=`Sign out`,a.addEventListener(`click`,async()=>{S8(r.providerId)?.isOAuth?await z8(r.providerId):await R8(r.providerId),t.remove(),this.refreshAvatar(),this.refreshModels?.()}),t.appendChild(a)}if(this.appendTrayMenu(t),n.length>0){let e=document.createElement(`div`);e.className=`avatar-popover__separator`,t.appendChild(e);let n=document.createElement(`button`);n.className=`avatar-popover__item avatar-popover__item--danger`,n.textContent=`Clear all accounts`,n.addEventListener(`click`,async()=>{await $8(),t.remove(),this.refreshAvatar(),this.refreshModels?.()}),t.appendChild(n)}let i=document.createElement(`div`);i.className=`avatar-popover__separator`,t.appendChild(i);let a=document.createElement(`button`);a.className=`avatar-popover__item`,a.textContent=`New session`,a.addEventListener(`click`,async()=>{t.remove(),this.onClearChat?await this.onClearChat({freeze:!0}):await this.panels?.chat?.clearSession(),location.reload()}),t.appendChild(a);let o=document.createElement(`div`);o.className=`avatar-popover__separator`,t.appendChild(o);let s=document.createElement(`button`);s.className=`avatar-popover__item`,s.textContent=`Account settings…`,s.addEventListener(`click`,async()=>{t.remove(),X8()||await $8(),await a5()&&(this.refreshAvatar(),this.refreshModels?.())}),t.appendChild(s),document.body.appendChild(t);let c=this.avatarEl.getBoundingClientRect();t.style.top=`${c.bottom+4}px`,t.style.right=`${window.innerWidth-c.right}px`;let l=e=>{if(e instanceof KeyboardEvent){if(e.key!==`Escape`)return}else if(t.contains(e.target)||this.avatarEl.contains(e.target))return;t.remove(),document.removeEventListener(`mousedown`,l),document.removeEventListener(`keydown`,l)};requestAnimationFrame(()=>{document.addEventListener(`mousedown`,l),document.addEventListener(`keydown`,l)})}buildSplitLayout(){for(;this.root.firstChild;)this.root.removeChild(this.root.firstChild);this.buildHeader(this.root);let e=document.createElement(`div`);e.className=`layout`,this.layoutRootEl=e,this.scoopsEl=document.createElement(`div`),this.scoopsEl.className=`layout__scoops`,this.isExtension&&(this.scoopsEl.style.display=`none`),e.appendChild(this.scoopsEl),this.leftEl=document.createElement(`div`),this.leftEl.className=`layout__left`,this.threadHeaderEl=document.createElement(`div`),this.threadHeaderEl.className=`thread-header`,this.isExtension&&this.threadHeaderEl.classList.add(`thread-header--with-switcher`);let t=document.createElement(`div`);if(t.className=`thread-header__title`,this.isExtension){let e=this.buildScoopSwitcher();t.appendChild(e),this.threadHeaderName=document.createElement(`span`)}else{let e=document.createElement(`span`);e.className=`thread-header__icon`,e.innerHTML=`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M3 4h14a1 1 0 0 1 1 1v8a1 1 0 0 1-1 1H7l-4 3V5a1 1 0 0 1 1-1z"/><path d="M7 8h6"/><path d="M7 11h3"/></svg>`,t.appendChild(e),this.threadHeaderName=document.createElement(`span`),this.threadHeaderName.className=`thread-header__name`,this.threadHeaderName.textContent=`sliccy`,t.appendChild(this.threadHeaderName)}this.threadHeaderEl.appendChild(t);let n=document.createElement(`slicc-press-button`);n.className=`thread-header__panel-toggle thread-header__new-session`,n.setAttribute(`tooltip`,`Click — new session, keep memory
|
|
1654
1654
|
Double-click — fastest reset, memory extracts in background
|
|
1655
|
-
Long press — discard without saving`),n.setAttribute(`label`,`New session. Click to start a new session and keep memory. Double-click for fastest reset — memory extracts in background. Long press to discard without saving.`),this.newSessionBtn=n,n.innerHTML=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"/></svg>`;let r=async e=>{this.onClearChat?await this.onClearChat(e):await this.panels.chat.clearSession(),location.reload()};n.addEventListener(`short-click`,()=>void r({freeze:!0})),n.addEventListener(`long-press`,()=>void r({freeze:!1})),n.addEventListener(`double-click`,()=>void r({freeze:`quick`}));let i=document.createElement(`div`);i.className=`thread-header__actions`,i.appendChild(n),this.threadHeaderEl.appendChild(i),this.leftEl.appendChild(this.threadHeaderEl);let a=document.createElement(`div`);a.style.cssText=`display: flex; flex-direction: column; flex: 1; min-height: 0;`,this.leftEl.appendChild(a),e.appendChild(this.leftEl),this.verticalDivider=document.createElement(`div`),this.verticalDivider.className=`layout__divider layout__divider--vertical`,e.appendChild(this.verticalDivider),this.rightContentEl=document.createElement(`div`),this.rightContentEl.className=`rail-content rail-content--collapsed`,e.appendChild(this.rightContentEl),this.railEl=document.createElement(`div`),this.railEl.setAttribute(`aria-label`,`Side panel rail`),e.appendChild(this.railEl),this.rightEl=this.rightContentEl,this.primaryRail=new owe(this.railEl,this.rightContentEl,`primary`,{onItemActivate:e=>{e===`terminal`&&this.panels?.terminal?.refit(),e===`memory`&&this.panels?.memory?.refresh(),e.startsWith(`sprinkle-`)&&this.onSprinkleActivate?.(e.slice(9))},onItemClose:e=>{let t=e.startsWith(`sprinkle-`)?e.slice(9):e;this.onSprinkleClose?.(t)},onAddClick:()=>this.showPickerForZone(`primary`,this.railEl),onFullpageToggle:e=>{this.layoutRootEl.classList.toggle(`layout--rail-fullpage`,e)}},{defaultFullpage:this.isExtension}),this.isExtension&&(this.avatarEl=this.buildUserAvatar(),this.avatarEl.classList.add(`rail__avatar`),this.primaryRail.mountTopWidget(this.avatarEl)),this.terminalContainer=document.createElement(`div`),this.terminalContainer.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: hidden; flex: 1;`;let o=document.createElement(`div`);o.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: hidden; flex: 1;`,this.memoryContainer=document.createElement(`div`),this.memoryContainer.style.cssText=`display: flex; flex-direction: column; min-height: 0; flex: 1;`,this.terminalIconSvg=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" x2="20" y1="19" y2="19"></line></svg>`,this.memoryIconSvg=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M9 13a4.5 4.5 0 0 0 3-4"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M12 13h4"></path><path d="M12 18h6a2 2 0 0 1 2 2v1"></path><path d="M12 8h8"></path><path d="M16 8V5a2 2 0 0 1 2-2"></path><circle cx="16" cy="13" r=".5"></circle><circle cx="18" cy="3" r=".5"></circle><circle cx="20" cy="21" r=".5"></circle><circle cx="20" cy="8" r=".5"></circle></svg>`,this.primaryRail.addItem({id:`terminal`,label:`Terminal`,icon:this.terminalIconSvg,element:this.terminalContainer,position:`bottom`,onActivate:()=>this.panels?.terminal?.refit()}),this.primaryRail.addItem({id:`files`,label:`Files`,icon:`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"></path></svg>`,element:o,position:`bottom`}),this.primaryRail.addItem({id:`memory`,label:`Memory`,icon:this.memoryIconSvg,element:this.memoryContainer,position:`bottom`,onActivate:()=>this.panels?.memory?.refresh()}),this.primaryRail.enableAddButton(),this.iframeContainer=document.createElement(`div`),this.iframeContainer.id=`scoop-iframes`,this.iframeContainer.style.display=`none`,e.appendChild(this.iframeContainer),this.root.appendChild(e),this.panels={chat:new hCe(a),terminal:new rwe(this.terminalContainer,{onClearTerminal:()=>{this.panels.terminal.clearTerminal(),this.openTerminal()}}),fileBrowser:new SCe(o,{onRunCommand:async e=>{await this.runFileBrowserCommand(e),this.openTerminal()}}),memory:new CCe(this.memoryContainer),scoops:new nwe(this.scoopsEl,{onScoopSelect:e=>{this.onScoopSelect?.(e),this.threadHeaderName.textContent=e.assistantLabel},onSendMessage:()=>{},onScoopsChanged:e=>this.updateLogoScoops(e),onFrozenSessionOpen:e=>this.onFrozenSessionOpen?.(e)})},this.panels.chat.onModelChange=e=>this.onModelChange?.(e),this.panels.chat.onThinkingLevelChange=e=>this.onThinkingLevelChange?.(e),this.setupVerticalDrag(),window.addEventListener(`resize`,()=>{})}getIframeContainer(){return this.iframeContainer}async runFileBrowserCommand(e){let t=await this.panels.terminal.runCommand(e);t.exitCode!==0&&t.stderr&&console.warn(`[Layout] File browser command failed:`,t.stderr.trim())}setupVerticalDrag(){if(!this.verticalDivider)return;let e=!1,t=t=>{if(!e)return;let n=this.root.querySelector(`.layout`)?.getBoundingClientRect();if(!n)return;let r=t.clientX-n.left-58,i=n.width-58,a=Math.max(.3,Math.min(.7,r/i));this.leftEl.style.flex=`${a*100} 0 0`,this.rightEl.style.flex=`${(1-a)*100} 0 0`},n=()=>{e=!1,this.verticalDivider.classList.remove(`active`),document.body.style.cursor=``,document.body.style.userSelect=``,window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n),this.panels?.terminal?.refit()};this.verticalDivider.addEventListener(`mousedown`,r=>{r.preventDefault(),e=!0,this.verticalDivider.classList.add(`active`),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)})}updateAddButtons(){}showPickerForZone(e,t){let n=new Set;for(let e of this.registry.ids())e.startsWith(`sprinkle-`)&&this.registry.get(e)?.descriptor.zone!==null&&n.add(e.slice(9));let r=(this.getAvailableSprinkles?.()??[]).filter(e=>!n.has(e.name));swe(t,e,{registry:this.registry,callbacks:{onSelectPanel:(e,t)=>{this.openPanelInZone(e,t)},onSelectSprinkle:(e,t)=>{this.onOpenSprinkle?.(e,t)}},getAvailableSprinkles:()=>r})}openPanelInZone(e,t){let n=this.registry.get(e);n&&(this.registry.setZone(e,t),this.primaryRail.addItem({id:n.descriptor.id,label:n.descriptor.label,icon:x7,element:n.descriptor.element,position:`top`,closable:n.descriptor.closable,onActivate:n.descriptor.onActivate}),this.primaryRail.activateItem(e))}dynamicSprinkles=new Map;registerSprinkle(e,t,n,r){let i=`sprinkle-${e}`;if(this.dynamicSprinkles.has(e)&&this.primaryRail.hasItem(i))return;let a=r??`primary`,o=document.createElement(`div`);o.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: auto; flex: 1;`,this.registry.has(i)||this.registry.register({id:i,label:t,zone:a,closable:!0,element:o,onClose:()=>this.onSprinkleClose?.(e)}),this.primaryRail.hasItem(i)||this.primaryRail.addItem({id:i,label:t,icon:x7,element:o,position:`top`,closable:!0}),this.dynamicSprinkles.set(e,o),n&&this.resolveSprinkleIcon&&this.resolveSprinkleIcon(n).then(e=>{e&&this.primaryRail.setItemIcon(i,e)}).catch(()=>{}),this.updateAddButtons()}unregisterSprinkle(e){let t=`sprinkle-${e}`;this.primaryRail.removeItem(t),this.registry.unregister(t),this.dynamicSprinkles.delete(e),this.updateAddButtons()}addSprinkle(e,t,n,r,i){let a=`sprinkle-${e}`,o=this.dynamicSprinkles.get(e);!o||!this.primaryRail.hasItem(a)?(this.registerSprinkle(e,t,i?.icon,r),o=this.dynamicSprinkles.get(e)):i?.icon&&this.resolveSprinkleIcon&&this.resolveSprinkleIcon(i.icon).then(e=>{e&&this.primaryRail.setItemIcon(a,e)}).catch(()=>{}),o.appendChild(n),i?.attention?this.primaryRail.markItemAttention(a):this.primaryRail.activateItem(a),this.updateAddButtons()}removeSprinkle(e){let t=`sprinkle-${e}`;this.primaryRail.removeItem(t),this.registry.unregister(t),this.dynamicSprinkles.delete(e),this.updateAddButtons()}closeSprinkleContent(e){let t=`sprinkle-${e}`,n=this.dynamicSprinkles.get(e);if(n)for(;n.firstChild;)n.firstChild.remove();this.primaryRail?.getActiveItemId()===t&&this.primaryRail.collapse()}minimizeSprinkle(e){this.primaryRail?.getActiveItemId()===`sprinkle-${e}`&&this.primaryRail.collapse()}dispose(){for(this.panels.chat.dispose(),this.panels.terminal.dispose(),this.panels.fileBrowser.dispose(),this.panels.memory.dispose(),this.panels.scoops.dispose();this.root.firstChild;)this.root.removeChild(this.root.firstChild)}};function C7(e,t){let n=document.createElement(`div`);n.setAttribute(`role`,`alert`),n.style.cssText=`position: fixed; top: 12px; left: 50%; transform: translateX(-50%); max-width: 520px; padding: 10px 14px; background: var(--slicc-cone, #c63b2c); color: white; font-size: 13px; border-radius: 6px; z-index: 99999; box-shadow: 0 4px 12px rgba(0,0,0,0.25); cursor: pointer;`,n.textContent=`Multi-browser sync: couldn’t ${e===`leave`?`leave`:`enable`} (${t}). Click to dismiss.`,n.addEventListener(`click`,()=>n.remove()),document.body.appendChild(n),setTimeout(()=>n.remove(),8e3)}var w7=Wv(`new-session`),T7=`ui-new-session`;async function E7(e){let t=X8()??void 0,n;try{n=n5()}catch(e){w7.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let r=n?.provider===`adobe`?{"X-Session-Id":s5(T7)}:void 0,i=new f5;try{await i.init()}catch(e){return w7.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}return i7({sessionStore:i,vfs:e.vfs,model:n,apiKey:t,headers:r})}async function D7(e){let t=new f5;try{await t.init()}catch(e){return w7.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}return i7({sessionStore:t,vfs:e.vfs,mode:`quick`})}async function lwe(e){let t={found:0,enriched:[]},n=[];try{n=await ZCe(e.vfs)}catch(e){return w7.warn(`Failed to list pending enrichments`,{error:e instanceof Error?e.message:String(e)}),t}if(t.found=n.length,n.length===0)return t;let r=X8()??void 0,i;try{i=n5()}catch(e){return w7.info(`No active model — skipping background enrichment`,{error:e instanceof Error?e.message:String(e)}),t}if(!r||!i)return w7.info(`LLM credentials unavailable — leaving pending entries for later boot`,{pending:n.length}),t;let a=i.provider===`adobe`?{"X-Session-Id":s5(T7)}:void 0;for(let o of n)try{let n=await QCe(e.vfs,o,{model:i,apiKey:r,headers:a});n&&t.enriched.push(n)}catch(e){w7.warn(`Background enrichment threw (entry stays pending)`,{filename:o.filename,error:e instanceof Error?e.message:String(e)})}return w7.info(`Background enrichment pass complete`,{found:t.found,enriched:t.enriched.length}),t}function O7(e,t={}){if(t.isWriter===!1){w7.info(`Background enrichment skipped (OPFS follower — read-only tab)`);return}let n=()=>{lwe({vfs:e}).catch(()=>{})},r=globalThis.requestIdleCallback;typeof r==`function`?r(n):setTimeout(n,0)}function k7(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function A7(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}var j7=class{logger;failureMessage;recoveryMessage;throttleMs;sustainedRelogMs;recoveryDebounceTicks;now;lastErrorLogAt=-1/0;inFailingState=!1;consecutiveSuccesses=0;constructor(e,t){if(!t.failureMessage.trim())throw RangeError(`ThrottledErrorTracker: failureMessage must be non-empty`);if(!t.recoveryMessage.trim())throw RangeError(`ThrottledErrorTracker: recoveryMessage must be non-empty`);let n=t.throttleMs??6e4;if(!Number.isFinite(n)||n<0)throw RangeError(`ThrottledErrorTracker: throttleMs must be a non-negative finite number, got ${n}`);let r=t.sustainedRelogMs??3e5;if(!Number.isFinite(r)||r<0)throw RangeError(`ThrottledErrorTracker: sustainedRelogMs must be a non-negative finite number, got ${r}`);let i=t.recoveryDebounceTicks??5;if(!Number.isInteger(i)||i<1)throw RangeError(`ThrottledErrorTracker: recoveryDebounceTicks must be a positive integer, got ${i}`);this.logger=e,this.failureMessage=t.failureMessage,this.recoveryMessage=t.recoveryMessage,this.throttleMs=n,this.sustainedRelogMs=r,this.recoveryDebounceTicks=i,this.now=t.now??(()=>performance.now())}reportFailure(e){let t=this.inFailingState;this.inFailingState=!0,this.consecutiveSuccesses=0;let n=this.now(),r=n-this.lastErrorLogAt;if(r>(t?this.sustainedRelogMs:this.throttleMs)){let i=t,a=i?`${this.failureMessage} (sustained)`:this.failureMessage;try{try{this.logger.error(a,i?{error:e instanceof Error?e.message:String(e),elapsedMs:Math.round(r)}:{error:e instanceof Error?e.message:String(e)})}catch(t){try{console.error(`[throttled-error-tracker] logger.error threw`,t,{originalMessage:a,originalError:e instanceof Error?e.message:String(e)})}catch{}}}finally{this.lastErrorLogAt=n}}}reportSuccess(){if(this.inFailingState&&(this.consecutiveSuccesses++,!(this.consecutiveSuccesses<this.recoveryDebounceTicks)))try{try{this.logger.error(this.recoveryMessage,{kind:`recovery`})}catch(e){try{console.error(`[throttled-error-tracker] logger.error (recovery) threw`,e,{originalMessage:this.recoveryMessage})}catch{}}}finally{this.inFailingState=!1,this.consecutiveSuccesses=0,this.lastErrorLogAt=-1/0}}},M7=Wv(`tray-sync`),uwe=`slicc-cherry`;function dwe(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}var N7=32*1024;function P7(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let i=JSON.stringify(n);if(i.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let a=Math.ceil(i.length/N7),o=!0;for(let n=0;n<a;n++){let r=i.slice(n*N7,(n+1)*N7);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:a})){o=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${a} (response was ${i.length} bytes)`});break}}return o}function F7(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}var I7=32*1024;function fwe(e,t,n){let r=JSON.stringify({messages:t,scoopJid:n});if(r.length<=65536)return e.send({type:`snapshot`,messages:t,scoopJid:n});let i=Math.ceil(r.length/I7),a=!0;for(let t=0;t<i;t++){let o=r.slice(t*I7,(t+1)*I7);if(!e.send({type:`snapshot_chunk`,chunkData:o,chunkIndex:t,totalChunks:i,scoopJid:n})){a=!1,M7.error(`Failed to send snapshot chunk`,{chunkIndex:t,totalChunks:i,totalSize:r.length});break}}return M7.debug(`Snapshot sent in chunks`,{totalChunks:i,totalSize:r.length}),a}function pwe(e,t){if(e||={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.chunks[t.chunkIndex]||(e.chunks[t.chunkIndex]=t.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return M7.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:t.scoopJid},buffer:null}}return{result:null,buffer:e}}var L7=class{channel;listeners=[];closed=!1;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);for(let e of this.listeners)e(t)}catch(e){M7.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}send(e){if(this.closed)return!1;try{return this.channel.send(JSON.stringify(e)),!0}catch(t){return M7.error(`Failed to send tray sync message`,{type:e.type,error:t instanceof Error?t.message:String(t)}),!1}}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}};function mwe(e){return new L7(e)}function hwe(e){return new L7(e)}var R7=class{sender;timeoutMs;pending=new Map;eventListeners=new Map;chunkBuffers=new Map;_state=`connected`;requestCounter=0;constructor(e,t=3e4){this.sender=e,this.timeoutMs=t}get state(){return this._state}async connect(){}disconnect(){this._state=`disconnected`;for(let[,{reject:e,timer:t}]of this.pending)clearTimeout(t),e(Error(`Transport disconnected`));this.pending.clear()}async send(e,t,n,r){if(this._state===`disconnected`)throw Error(`Transport disconnected`);let i=`remote-${++this.requestCounter}-${Date.now()}`,a=r??this.timeoutMs;return new Promise((r,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`Remote CDP request timed out after ${a}ms: ${e}`))},a);this.pending.set(i,{resolve:r,reject:o,timer:s}),this.sender.sendCDPRequest(i,e,t,n)})}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n)),n.add(t)}off(e,t){this.eventListeners.get(e)?.delete(t)}once(e,t){return new Promise((n,r)=>{let i=t??this.timeoutMs,a=setTimeout(()=>{this.off(e,o),r(Error(`Remote CDP event timed out: ${e}`))},i),o=t=>{clearTimeout(a),this.off(e,o),n(t)};this.on(e,o)})}handleResponse(e,t,n,r,i,a){let o=this.pending.get(e);if(!o)return;let s=F7(this.chunkBuffers,{type:`cdp.response`,requestId:e,result:t,error:n,chunkData:r,chunkIndex:i,totalChunks:a});s&&(this.pending.delete(e),clearTimeout(o.timer),s.error?o.reject(Error(s.error)):o.resolve(s.result??{}))}handleEvent(e,t){let n=this.eventListeners.get(e);if(n)for(let e of n)e(t)}},z7=Wv(`data-channel-keepalive`),B7=class{sendPing;onDead;intervalMs;maxMissed;timer=null;missedPongs=0;awaitingPong=!1;stopped=!1;constructor(e){this.sendPing=e.sendPing,this.onDead=e.onDead,this.intervalMs=e.intervalMs??1e4,this.maxMissed=e.maxMissed??3}start(){this.timer||this.stopped||(this.timer=setInterval(()=>this.tick(),this.intervalMs))}stop(){this.stopped=!0,this.timer&&=(clearInterval(this.timer),null)}receivePong(){this.awaitingPong=!1,this.missedPongs=0}receivePing(){this.missedPongs=0,this.awaitingPong=!1}get missed(){return this.missedPongs}tick(){if(!this.stopped){if(this.awaitingPong&&(this.missedPongs++,z7.debug(`Missed pong`,{missedPongs:this.missedPongs,maxMissed:this.maxMissed}),this.missedPongs>=this.maxMissed)){z7.warn(`Channel declared dead`,{missedPongs:this.missedPongs}),this.stop(),this.onDead();return}this.awaitingPong=!0,this.sendPing()}}},V7=64*1024;async function H7(e,t){try{switch(t.op){case`readFile`:return await gwe(e,t.path,t.encoding);case`writeFile`:return[await _we(e,t.path,t.content,t.encoding)];case`stat`:return[await vwe(e,t.path)];case`readDir`:return[await ywe(e,t.path)];case`mkdir`:return[await bwe(e,t.path,t.recursive)];case`rm`:return[await xwe(e,t.path,t.recursive)];case`exists`:return[await Swe(e,t.path)];case`walk`:return[await Cwe(e,t.path)];default:return[{ok:!1,error:`Unknown fs operation: ${t.op}`}]}}catch(e){return[wwe(e)]}}async function gwe(e,t,n){return(n??`utf-8`)===`utf-8`?U7(await e.readFile(t,{encoding:`utf-8`}),`utf-8`):U7(Twe(await e.readFile(t,{encoding:`binary`})),`base64`)}async function _we(e,t,n,r){if(r===`base64`){let r=Ewe(n);await e.writeFile(t,r)}else await e.writeFile(t,n);return{ok:!0,data:{type:`void`}}}async function vwe(e,t){return{ok:!0,data:{type:`stat`,stat:await e.stat(t)}}}async function ywe(e,t){return{ok:!0,data:{type:`dirEntries`,entries:await e.readDir(t)}}}async function bwe(e,t,n){return await e.mkdir(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function xwe(e,t,n){return await e.rm(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function Swe(e,t){return{ok:!0,data:{type:`exists`,exists:await e.exists(t)}}}async function Cwe(e,t){let n=[];for await(let r of e.walk(t))n.push(r);return{ok:!0,data:{type:`paths`,paths:n}}}function U7(e,t){if(e.length<=V7)return[{ok:!0,data:{type:`file`,content:e,encoding:t}}];let n=Math.ceil(e.length/V7),r=[];for(let i=0;i<n;i++){let a=i*V7,o=e.slice(a,a+V7);r.push({ok:!0,data:{type:`file`,content:o,encoding:t},chunkIndex:i,totalChunks:n})}return r}function wwe(e){return e instanceof Error&&`code`in e?{ok:!1,error:e.message,code:e.code}:{ok:!1,error:e instanceof Error?e.message:String(e)}}function Twe(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Ewe(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var W7=Wv(`tray-follower-sync`),Dwe=15e3,Owe=class{options;sync;eventListeners=new Set;unsubscribe;keepalive;latestSnapshot=null;sentMessageIds=new Set;targetEntries=[];remoteTransports=new Map;cdpChunkBuffers=new Map;snapshotChunkBuffer=null;remoteCDPSessions=new Set;cdpEventCleanups=[];tabOpenResolvers=new Map;fsResolvers=new Map;latestSprinkles=[];sprinkleContentCache=new Map;pendingSprinkleFetches=new Map;inflightSprinkleByName=new Map;sprinkleContentWaiters=new Map;cacheEpoch=0;fetchEpoch=new Map;constructor(e,t={}){this.options=t;let n=t.sprinkleFetchTimeoutMs;if(n!==void 0&&(!Number.isFinite(n)||n<0))throw RangeError(`sprinkleFetchTimeoutMs must be a non-negative finite number (0 disables the timer); got ${n}`);this.sync=hwe(e),this.unsubscribe=this.sync.onMessage(e=>{this.handleLeaderMessage(e)}),this.keepalive=new B7({sendPing:()=>this.sync.send({type:`ping`}),onDead:()=>{W7.warn(`Leader keepalive dead, cleaning up`),this.handleDisconnect(`Keepalive timeout — leader not responding`),this.options.onDead?.()}}),this.keepalive.start(),e.addEventListener(`close`,()=>{W7.warn(`Data channel closed`),this.handleDisconnect(`Data channel closed`)}),e.addEventListener(`error`,()=>{W7.warn(`Data channel error`),this.handleDisconnect(`Data channel error`)})}sendMessage(e,t,n){let r=t??`follower-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.sentMessageIds.add(r);let i=n?.length?Iv(n):n;this.sync.send({type:`user_message`,text:e,messageId:r,attachments:i}),W7.info(`Sent user message to leader`,{messageId:r})}onEvent(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}stop(){this.sync.send({type:`abort`}),W7.info(`Sent abort to leader`)}requestSnapshot(){this.sync.send({type:`request_snapshot`})}getLatestSnapshot(){return this.latestSnapshot}close(){this.disconnected||(this.disconnected=!0,this.keepalive.stop(),this.unsubscribe(),this.sync.close(),this.eventListeners.clear(),this.cleanupCDPEventForwarding(),this.rejectPendingRequests(`Follower sync closed`),W7.info(`Follower sync closed`))}rejectPendingRequests(e){this.rejectPendingSprinkleFetches(e);let t=Error(e);for(let{reject:e}of this.tabOpenResolvers.values())e(t);this.tabOpenResolvers.clear();for(let{reject:e}of this.fsResolvers.values())e(t);this.fsResolvers.clear(),this.cdpChunkBuffers.clear();for(let e of this.remoteTransports.values())e.disconnect();this.remoteTransports.clear()}advertiseTargets(e,t){this.sync.send({type:`targets.advertise`,targets:e,runtimeId:t})}getTargets(){return this.targetEntries}sendCherryHostEvent(e,t){this.sync.send({type:`cherry.host_event`,targetId:this.options.selfRuntimeId??``,name:e,detail:t})}getSprinkles(){return this.latestSprinkles}refreshSprinkles(){this.sync.send({type:`sprinkles.refresh`})}fetchSprinkleContent(e){let t=this.sprinkleContentCache.get(e);if(t!==void 0)return Promise.resolve(t);let n=this.options.sprinkleFetchTimeoutMs??Dwe;return new Promise((t,r)=>{let i=Symbol(`sprinkle-waiter`),a,o=e=>{a!==void 0&&clearTimeout(a),t(e)},s=e=>{a!==void 0&&clearTimeout(a),r(e)},c=this.sprinkleContentWaiters.get(e)??[];if(c.push({id:i,resolve:o,reject:s}),this.sprinkleContentWaiters.set(e,c),n>0&&(a=setTimeout(()=>{let t=this.sprinkleContentWaiters.get(e);if(t){let r=t.findIndex(e=>e.id===i);r>=0&&t.splice(r,1),t.length===0&&(this.sprinkleContentWaiters.delete(e),this.cancelSprinkleFetch(e,`Sprinkle fetch for "${e}" timed out after ${n}ms`))}r(Error(`Sprinkle fetch for "${e}" timed out after ${n}ms`))},n)),this.inflightSprinkleByName.has(e))return;let l=`sprinkle-fetch-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.inflightSprinkleByName.set(e,l),this.pendingSprinkleFetches.set(l,{sprinkleName:e,chunks:new Map,totalChunks:1}),this.fetchEpoch.set(l,this.cacheEpoch),this.sync.send({type:`sprinkle.fetch`,requestId:l,sprinkleName:e})})}sendSprinkleLick(e,t,n){this.sync.send({type:`sprinkle.lick`,sprinkleName:e,body:t,targetScoop:n})||W7.warn(`sendSprinkleLick dropped: tray channel closed`,{sprinkleName:e})}forwardLick(e){let t=this.sync.send({type:`lick`,event:e});return t||W7.warn(`forwardLick dropped: tray channel closed`,{type:e.type}),t}clearSprinkleCache(e){e===void 0?this.sprinkleContentCache.clear():this.sprinkleContentCache.delete(e)}cancelSprinkleFetch(e,t=`fetch cancelled`){let n=this.sprinkleContentWaiters.get(e)??[];this.sprinkleContentWaiters.delete(e);let r=this.inflightSprinkleByName.get(e);if(r!==void 0&&(this.inflightSprinkleByName.delete(e),this.pendingSprinkleFetches.delete(r),this.fetchEpoch.delete(r)),n.length===0)return;let i=Error(t);for(let e of n)e.reject(i)}disconnected=!1;handleDisconnect(e){this.disconnected||(this.disconnected=!0,eF({...ZP(),state:`error`,error:e}),this.emitEvent({type:`error`,error:`Connection to leader lost: ${e}`}),this.keepalive.stop(),this.cleanupCDPEventForwarding(),this.unsubscribe(),this.sync.close(),this.rejectPendingRequests(`Follower sync disconnected: ${e}`),this.options.onDisconnect?.(e))}handleLeaderMessage(e){switch(e.type){case`snapshot`:W7.info(`Snapshot received from leader`,{messageCount:e.messages.length,scoopJid:e.scoopJid}),this.snapshotChunkBuffer=null,this.latestSnapshot={messages:e.messages,scoopJid:e.scoopJid},this.options.onSnapshot?.(e.messages,e.scoopJid);break;case`snapshot_chunk`:{let t=pwe(this.snapshotChunkBuffer,e);this.snapshotChunkBuffer=t.buffer,t.result&&(W7.info(`Chunked snapshot reassembled from leader`,{messageCount:t.result.messages.length,scoopJid:t.result.scoopJid}),this.latestSnapshot=t.result,this.options.onSnapshot?.(t.result.messages,t.result.scoopJid));break}case`agent_event`:this.emitEvent(e.event);break;case`user_message_echo`:if(this.sentMessageIds.has(e.messageId)){this.sentMessageIds.delete(e.messageId),W7.debug(`Skipping own message echo`,{messageId:e.messageId});break}W7.info(`User message echo received`,{messageId:e.messageId,scoopJid:e.scoopJid}),this.options.onUserMessage?.(e.text,e.messageId,e.scoopJid,e.attachments);break;case`status`:this.options.onStatus?.(e.scoopStatus);break;case`error`:W7.warn(`Error from leader`,{error:e.error}),this.emitEvent({type:`error`,error:e.error});break;case`targets.registry`:W7.info(`Target registry received from leader`,{targetCount:e.targets.length}),this.targetEntries=e.targets,this.options.onTargetsUpdated?.(this.targetEntries);break;case`cdp.request`:{let{requestId:t,localTargetId:n,method:r,params:i,sessionId:a}=e;this.executeLocalCDP(t,n,r,i,a);break}case`cdp.response`:this.routeCDPResponse(e);break;case`cdp.event`:for(let t of this.remoteTransports.values())t.handleEvent(e.method,e.params);break;case`tab.open`:this.executeLocalTabOpen(e.requestId,e.url);break;case`tab.opened`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.resolve(e.targetId));break}case`tab.open.error`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.reject(Error(e.error)));break}case`fs.request`:this.executeLocalFs(e.requestId,e.request);break;case`fs.response`:this.routeFsResponse(e.requestId,e.response);break;case`sprinkles.list`:W7.info(`Sprinkles list received from leader`,{sprinkleCount:e.sprinkles.length}),this.sprinkleContentCache.clear(),this.cacheEpoch++,this.latestSprinkles=e.sprinkles,this.options.onSprinklesList?.(e.sprinkles);break;case`sprinkle.content`:this.handleSprinkleContent(e);break;case`sprinkle.update`:W7.debug(`Sprinkle update received`,{sprinkleName:e.sprinkleName}),this.options.onSprinkleUpdate?.(e.sprinkleName,e.data);break;case`cherry.slicc_event`:this.options.onCherrySliccEvent?.(e.name,e.detail);break;case`ping`:this.keepalive.receivePing(),this.sync.send({type:`pong`});break;case`pong`:this.keepalive.receivePong(),tF(Date.now());break;default:W7.debug(`Unknown leader message type`,{type:e.type});break}}handleSprinkleContent(e){let{requestId:t,sprinkleName:n,content:r,chunkIndex:i,totalChunks:a,error:o}=e;if(o){W7.warn(`sprinkle.content error from leader`,{sprinkleName:n,error:o}),this.pendingSprinkleFetches.delete(t),this.inflightSprinkleByName.delete(n),this.fetchEpoch.delete(t);let e=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let t of e)t.reject(Error(o));return}if(!this.pendingSprinkleFetches.has(t)){W7.debug(`Dropping sprinkle.content for unknown requestId`,{sprinkleName:n,requestId:t});return}let s=null;if(i!==void 0&&a!==void 0){if(i<0||i>=a){W7.warn(`Dropping sprinkle.content with out-of-range chunkIndex`,{sprinkleName:n,chunkIndex:i,totalChunks:a});return}let e=this.pendingSprinkleFetches.get(t);if(e.totalChunks=a,e.chunks.has(i)?W7.warn(`Dropping duplicate sprinkle.content chunk`,{sprinkleName:n,chunkIndex:i}):e.chunks.set(i,r),e.chunks.size>=a){let r=[];for(let t=0;t<a;t++){let i=e.chunks.get(t);if(i===void 0){W7.warn(`Chunked sprinkle.content missing chunk after assembly`,{sprinkleName:n,missingIndex:t});return}r.push(i)}s=r.join(``),this.pendingSprinkleFetches.delete(t)}}else s=r,this.pendingSprinkleFetches.delete(t);if(s===null)return;let c=this.fetchEpoch.get(t);this.fetchEpoch.delete(t),c===this.cacheEpoch&&this.sprinkleContentCache.set(n,s),this.inflightSprinkleByName.delete(n);let l=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let e of l)e.resolve(s)}rejectPendingSprinkleFetches(e){let t=Error(e);for(let[,e]of this.sprinkleContentWaiters)for(let n of e)n.reject(t);this.sprinkleContentWaiters.clear(),this.pendingSprinkleFetches.clear(),this.inflightSprinkleByName.clear(),this.fetchEpoch.clear()}emitEvent(e){for(let t of this.eventListeners)try{t(e)}catch(t){W7.error(`Listener error`,{eventType:e.type,error:t instanceof Error?t.message:String(t)})}}createRemoteTransport(e,t){let n=new R7({sendCDPRequest:(n,r,i,a)=>{this.sync.send({type:`cdp.request`,requestId:n,targetRuntimeId:e,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}openRemoteTab(e,t){let n=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.tabOpenResolvers.set(n,{resolve:r,reject:i}),this.sync.send({type:`tab.open`,requestId:n,targetRuntimeId:e,url:t})})}async executeLocalTabOpen(e,t){let n=this.options.browserTransport;if(!n){this.sync.send({type:`tab.open.error`,requestId:e,error:`Follower has no browser transport`});return}try{let r=(await n.send(`Target.createTarget`,{url:t,background:!0})).targetId;if(typeof r!=`string`||r.length===0){this.sync.send({type:`tab.open.error`,requestId:e,error:`Target.createTarget did not return a usable targetId`});return}this.sync.send({type:`tab.opened`,requestId:e,targetId:r}),this.options.onTargetsChanged?.()}catch(t){this.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}async executeLocalCDP(e,t,n,r,i){let a=this.options.browserTransport;if(!a){this.sync.send({type:`cdp.response`,requestId:e,error:`Follower has no browser transport`});return}try{let t=await a.send(n,r,i);if(n===`Target.attachToTarget`&&t.sessionId){let e=t.sessionId;this.remoteCDPSessions.add(e),this.setupCDPEventForwarding(a,e),W7.debug(`Tracking remote CDP session`,{remoteSessionId:e})}n===`Target.detachFromTarget`&&i&&this.remoteCDPSessions.has(i)&&(this.remoteCDPSessions.delete(i),W7.debug(`Removed remote CDP session on detach`,{sessionId:i})),P7(this.sync,e,t)}catch(t){this.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}setupCDPEventForwarding(e,t){for(let n of[`Page.frameNavigated`,`Page.loadEventFired`,`Page.domContentEventFired`,`Network.responseReceived`,`Network.loadingFinished`,`Network.requestWillBeSent`]){let r=e=>{if(e.sessionId!==t||!this.remoteCDPSessions.has(t))return;let{sessionId:r,...i}=e;this.sync.send({type:`cdp.event`,method:n,params:i,sessionId:t})};e.on(n,r),this.cdpEventCleanups.push(()=>e.off(n,r))}}cleanupCDPEventForwarding(){for(let e of this.cdpEventCleanups)e();this.cdpEventCleanups.length=0,this.remoteCDPSessions.clear()}routeCDPResponse(e){let t=F7(this.cdpChunkBuffers,e);if(t)for(let n of this.remoteTransports.values())n.handleResponse(e.requestId,t.result,t.error)}async executeLocalFs(e,t){let n=this.options.vfs;if(!n){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Follower has no VFS`}});return}let r;try{r=await H7(n,t)}catch(t){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:t instanceof Error?t.message:String(t)}});return}for(let t of r)this.sync.send({type:`fs.response`,requestId:e,response:t})}routeFsResponse(e,t){let n=this.fsResolvers.get(e);if(!n)return;n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}sendFsRequest(e,t){let n=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.fsResolvers.set(n,{resolve:r,reject:i,responses:[]}),this.sync.send({type:`fs.request`,requestId:n,targetRuntimeId:e,request:t})})}},G7=Wv(`tray-follower`);function K7(e){let t=new URL(e);return t.searchParams.set(`json`,`true`),t.toString()}async function kwe(e){let t=K7(e.joinUrl),n=await Fwe(await(e.fetchImpl??fetch)(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:e.controllerId,runtime:e.runtime})}));return G7.info(`Follower tray attach response`,{trayId:n.trayId,action:n.result.action,code:n.result.code,participantCount:n.participantCount}),Awe(n)}function Awe(e){let t={trayId:e.trayId,controllerId:e.controllerId,participantCount:e.participantCount,leader:e.leader,action:e.result.action,code:e.result.code,iceServers:e.iceServers};return e.result.action===`wait`?{...t,retryAfterMs:e.result.retryAfterMs}:e.result.action===`signal`?{...t,bootstrap:e.result.bootstrap}:e.result.action===`fail`?{...t,error:e.result.error}:t}async function jwe(e){return q7(await J7(e,{action:`poll`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,cursor:e.cursor}))}async function Mwe(e){return q7(await J7(e,{action:`answer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,answer:e.answer}))}async function Nwe(e){return q7(await J7(e,{action:`ice-candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:e.candidate}))}async function Pwe(e){return q7(await J7(e,{action:`retry`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,runtime:e.runtime}))}function q7(e){return{trayId:e.trayId,controllerId:e.controllerId,participantCount:e.participantCount,leader:e.leader,bootstrap:e.bootstrap,events:e.events}}async function Fwe(e){let t=null,n=null;try{t=await e.text(),n=JSON.parse(t)}catch{}if(!Iwe(n)){let n=t?t.slice(0,200):`(empty)`;throw G7.warn(`Tray follower attach returned an invalid response`,{status:e.status,body:n}),Error(`Tray follower attach returned an invalid response (${e.status}): ${n}`)}return n}async function J7(e,t){let n=K7(e.joinUrl),r=await(e.fetchImpl??fetch)(n,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),i=await r.json().catch(()=>null);if(!Lwe(i))throw Error(`Tray follower bootstrap returned an invalid response (${r.status})`);return i}function Iwe(e){if(!e||typeof e!=`object`)return!1;let t=e;if(typeof t.trayId!=`string`||typeof t.controllerId!=`string`||t.role!==`follower`||typeof t.participantCount!=`number`)return!1;let n=t.result;if(!n||typeof n!=`object`)return!1;let r=n;return r.action===`wait`?(r.code===`LEADER_NOT_ELECTED`||r.code===`LEADER_NOT_CONNECTED`)&&typeof r.retryAfterMs==`number`:r.action===`signal`?r.code===`LEADER_CONNECTED`&&Y7(r.bootstrap):r.action===`fail`?(r.code===`INVALID_JOIN_CAPABILITY`||r.code===`TRAY_EXPIRED`)&&typeof r.error==`string`:!1}function Lwe(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.trayId==`string`&&typeof t.controllerId==`string`&&t.role===`follower`&&typeof t.participantCount==`number`&&Y7(t.bootstrap)&&Array.isArray(t.events)}function Y7(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.controllerId==`string`&&typeof t.bootstrapId==`string`&&typeof t.attempt==`number`&&typeof t.state==`string`&&typeof t.expiresAt==`string`&&typeof t.cursor==`number`&&typeof t.maxRetries==`number`&&typeof t.retriesRemaining==`number`}var X7=Wv(`tray-webrtc`),Rwe=`tray-control`,zwe=250,Bwe=class{options;peerConnectionFactory;dataChannelLabel;peers=new Map;iceServers;constructor(e){this.options=e,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>Z7(this.iceServers)),this.dataChannelLabel=e.dataChannelLabel??Rwe}setIceServers(e){this.iceServers=e}async handleControlMessage(e){e.type===`follower.join_requested`?(e.iceServers&&!this.iceServers&&(this.iceServers=e.iceServers),await this.handleJoinRequested(e)):e.type===`bootstrap.answer`?await this.peers.get(e.bootstrapId)?.peer.setRemoteDescription(e.answer):e.type===`bootstrap.ice_candidate`&&await this.peers.get(e.bootstrapId)?.peer.addIceCandidate(e.candidate)}getPeers(){return Array.from(this.peers.values()).map(({state:e})=>({...e}))}getChannel(e){return this.peers.get(e)?.channel??null}stop(){for(let e of this.peers.values())e.peer.close();this.peers.clear()}async handleJoinRequested(e){this.closeControllerPeers(e.controllerId);let t=this.peerConnectionFactory(),n={controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,state:`connecting`,connectedAt:null,runtime:e.runtime},r=t.createDataChannel(this.dataChannelLabel);this.peers.set(e.bootstrapId,{state:n,peer:t,channel:r}),t.addEventListener(`icecandidate`,({candidate:t})=>{let n=$7(t);n&&this.options.sendControlMessage({type:`bootstrap.ice_candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:n})}),t.addEventListener(`connectionstatechange`,()=>{let n=this.peers.get(e.bootstrapId);n&&(n.state.state===`connected`?(t.connectionState===`disconnected`||t.connectionState===`failed`)&&(X7.warn(`Leader peer connection state changed post-connect`,{bootstrapId:e.bootstrapId,state:t.connectionState}),this.options.onPeerDisconnected?.(e.bootstrapId,`Peer connection ${t.connectionState}`)):t.connectionState===`failed`&&this.failPeer(e,`Leader peer connection failed before the data channel opened`))}),r.addEventListener(`open`,()=>{let t=this.peers.get(e.bootstrapId);!t||t.state.state===`connected`||(t.state.state=`connected`,t.state.connectedAt=new Date().toISOString(),this.options.onPeerConnected?.({...t.state},t.channel))}),r.addEventListener(`close`,()=>{let t=this.peers.get(e.bootstrapId);t&&(t.state.state===`connected`?(X7.warn(`Leader data channel closed post-connect`,{bootstrapId:e.bootstrapId}),this.options.onPeerDisconnected?.(e.bootstrapId,`Data channel closed`)):this.failPeer(e,`Leader data channel closed before opening`))}),r.addEventListener(`error`,()=>{let t=this.peers.get(e.bootstrapId);t&&(t.state.state===`connected`?(X7.warn(`Leader data channel error post-connect`,{bootstrapId:e.bootstrapId}),this.options.onPeerDisconnected?.(e.bootstrapId,`Data channel error`)):this.failPeer(e,`Leader data channel failed before opening`))});try{let n=await t.createOffer();await t.setLocalDescription(n),this.options.sendControlMessage({type:`bootstrap.offer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,offer:Q7(t.localDescription??n,`offer`)})}catch(t){this.failPeer(e,t instanceof Error?t.message:String(t))}}closeControllerPeers(e){for(let[t,n]of this.peers.entries())n.state.controllerId===e&&(n.peer.close(),this.peers.delete(t))}failPeer(e,t){let n=this.peers.get(e.bootstrapId);if(n){n.peer.close(),this.peers.delete(e.bootstrapId);try{this.options.sendControlMessage({type:`bootstrap.failed`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,code:`WEBRTC_BOOTSTRAP_FAILED`,message:t,retryable:!0,retryAfterMs:1e3})}catch(e){X7.warn(`Failed to report tray bootstrap failure`,{error:e instanceof Error?e.message:String(e)})}}}},Vwe=class{options;fetchImpl;peerConnectionFactory;controllerIdFactory;sleep;pollIntervalMs;iceServers;activePeer=null;stopped=!1;constructor(e){this.options=e,this.fetchImpl=e.fetchImpl??fetch,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>Z7(this.iceServers)),this.controllerIdFactory=e.controllerIdFactory??(()=>crypto.randomUUID()),this.sleep=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),this.pollIntervalMs=e.pollIntervalMs??zwe}async start(){this.stopped=!1;let e=this.controllerIdFactory(),t=Date.now();eF({state:`connecting`,joinUrl:this.options.joinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:t,lastError:null}),X7.info(`Follower tray join starting`,{joinUrl:this.options.joinUrl});let n=0;for(;;){e9(this.stopped),n++;let t;try{t=await kwe({joinUrl:this.options.joinUrl,controllerId:e,runtime:this.options.runtime,fetchImpl:this.fetchImpl})}catch(e){let t=e instanceof Error?e.message:String(e);throw eF({...ZP(),attachAttempts:n,lastError:t}),e}if(eF({...ZP(),attachAttempts:n,lastAttachCode:t.code}),t.action===`wait`){let e=t.retryAfterMs??1e3;X7.info(`Follower tray attach waiting`,{attempt:n,code:t.code,retryAfterMs:e}),n%10==0&&X7.warn(`Follower tray attach still waiting after ${n} attempts`,{attempt:n,code:t.code,retryAfterMs:e}),await this.sleep(e);continue}if(t.action===`fail`||!t.bootstrap){let e=t.error??`Tray follower attach failed (${t.code})`;throw eF({state:`error`,joinUrl:this.options.joinUrl,trayId:null,error:e,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:e}),X7.warn(`Follower tray attach failed`,{error:e}),Error(e)}t.iceServers&&(this.iceServers=t.iceServers);try{let r=await this.completeBootstrap(t.trayId,e,t.bootstrap);return eF({state:`connected`,joinUrl:this.options.joinUrl,trayId:r.trayId,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:null}),X7.info(`Follower tray connected`,{trayId:r.trayId,controllerId:e}),r}catch(e){let r=e instanceof Error?e.message:String(e);throw eF({state:`error`,joinUrl:this.options.joinUrl,trayId:t.trayId,error:r,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:r}),X7.warn(`Follower tray bootstrap failed`,{error:r}),e}}}stop(){this.stopped=!0,this.activePeer?.peer.close(),this.activePeer?.channel?.close(),this.activePeer=null,eF({state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null})}async completeBootstrap(e,t,n){let r=n,i=0;for(this.activePeer=this.createFollowerPeer(t,r.bootstrapId);;){if(e9(this.stopped),this.activePeer.open&&this.activePeer.channel)return{trayId:e,controllerId:t,bootstrapId:r.bootstrapId,channel:this.activePeer.channel};if(this.activePeer.openError)throw Error(this.activePeer.openError);let n=await jwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,cursor:i,fetchImpl:this.fetchImpl});r=n.bootstrap,i=r.cursor;try{for(let e of n.events)if(e.type===`bootstrap.offer`){await this.activePeer.peer.setRemoteDescription(e.offer);let n=await this.activePeer.peer.createAnswer();await this.activePeer.peer.setLocalDescription(n),await Mwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,answer:Q7(this.activePeer.peer.localDescription??n,`answer`),fetchImpl:this.fetchImpl})}else if(e.type===`bootstrap.ice_candidate`)await this.activePeer.peer.addIceCandidate(e.candidate);else if(e.type===`bootstrap.failed`)throw Error(e.failure.message)}catch(e){if(r.failure?.retryable&&r.retriesRemaining>0){r=(await Pwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,runtime:this.options.runtime,fetchImpl:this.fetchImpl})).bootstrap,i=0,this.activePeer.peer.close(),this.activePeer=this.createFollowerPeer(t,r.bootstrapId);continue}throw e}this.activePeer.open||await this.sleep(this.pollIntervalMs)}}createFollowerPeer(e,t){let n=this.peerConnectionFactory(),r={peer:n,channel:null,open:!1,openError:null};return n.addEventListener(`connectionstatechange`,()=>{r.open&&(n.connectionState===`disconnected`||n.connectionState===`failed`)&&(X7.warn(`Follower peer connection state changed post-connect`,{bootstrapId:t,state:n.connectionState}),this.options.onDisconnected?.(`Peer connection ${n.connectionState}`))}),n.addEventListener(`datachannel`,({channel:e})=>{r.channel=e,e.addEventListener(`open`,()=>{r.open=!0}),e.addEventListener(`close`,()=>{r.open?(X7.warn(`Follower data channel closed post-connect`,{bootstrapId:t}),this.options.onDisconnected?.(`Data channel closed`)):r.openError=`Follower data channel closed before opening`}),e.addEventListener(`error`,()=>{r.open?(X7.warn(`Follower data channel error post-connect`,{bootstrapId:t}),this.options.onDisconnected?.(`Data channel error`)):r.openError=`Follower data channel failed before opening`})}),n.addEventListener(`icecandidate`,({candidate:n})=>{let r=$7(n);r&&Nwe({joinUrl:this.options.joinUrl,controllerId:e,bootstrapId:t,candidate:r,fetchImpl:this.fetchImpl}).catch(e=>{X7.warn(`Failed to send follower ICE candidate`,{error:e instanceof Error?e.message:String(e)})})}),r}};function Hwe(e,t){let n=t.baseDelayMs??1e3,r=t.backoffMultiplier??2,i=t.maxDelayMs??3e4,a=t.maxAttempts??10,o=t.sleep??e.sleep??(e=>new Promise(t=>setTimeout(t,e))),s=!1,c=!1,l=null,u={cancel(){s=!0,c=!1,l?.stop(),l=null},get reconnecting(){return c}},d=()=>{let t=new Vwe({...e,sleep:o,onDisconnected:e=>{s||(X7.warn(`Follower disconnected, starting reconnect loop`,{reason:e}),f(e))}});return l=t,{manager:t,connectionPromise:t.start()}},f=async u=>{if(s||c)return;c=!0,l?.stop(),l=null;let f=0,p=n,m=u??`Unknown disconnect`;for(;!s&&f<a&&(f++,t.onReconnecting?.(f),eF({...ZP(),state:`reconnecting`,error:null,reconnectAttempts:f}),X7.info(`Reconnect attempt`,{attempt:f,delay:p}),await o(p),!s);){let n=null;try{let r=d();n=r.manager;let i=await r.connectionPromise;if(s){n.stop();break}c=!1,eF({...ZP(),state:`connected`,joinUrl:e.joinUrl,trayId:i.trayId,error:null,lastPingTime:null,reconnectAttempts:0,connectingSince:null,lastError:null}),X7.info(`Reconnect successful`,{attempt:f,trayId:i.trayId}),t.onConnected(i);return}catch(e){m=e instanceof Error?e.message:String(e),X7.warn(`Reconnect attempt failed`,{attempt:f,error:m}),n?.stop(),l=null}p=Math.min(p*r,i)}s||(c=!1,eF({...ZP(),state:`error`,error:`Reconnect failed after ${f} attempts: ${m}`,reconnectAttempts:f}),X7.warn(`Reconnect gave up`,{attempts:f,lastError:m}),t.onGaveUp?.(m))},{connectionPromise:p}=d();return p.then(e=>{s||t.onConnected(e)}).catch(e=>{s||X7.error(`Initial follower connection failed`,{error:e instanceof Error?e.message:String(e)})}),u}function Z7(e){if(typeof RTCPeerConnection>`u`)throw Error(`RTCPeerConnection is not available in this runtime`);let t=e?.length?{iceServers:e}:void 0;return new RTCPeerConnection(t)}function Q7(e,t){if(!e||e.type!==t||typeof e.sdp!=`string`)throw Error(`Expected a local ${t} description before signaling`);return{type:e.type,sdp:e.sdp}}function $7(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.candidate==`string`?{candidate:t.candidate,sdpMid:typeof t.sdpMid==`string`?t.sdpMid:null,sdpMLineIndex:typeof t.sdpMLineIndex==`number`?t.sdpMLineIndex:null,usernameFragment:typeof t.usernameFragment==`string`?t.usernameFragment:null}:null}function e9(e){if(e)throw Error(`Tray follower stopped before WebRTC bootstrap completed`)}function t9(e){if(!e)throw Error(`canonicalRuntimeId: bootstrapId is required`);return e.startsWith(`follower-`)?e:`follower-${e}`}var Uwe=s({SprinkleFollowerController:()=>r9}),n9=Wv(`sprinkle-follower`),r9=class{sync;addSprinkle;removeSprinkle;zone;open=new Map;opening=new Set;latestDesiredOpen=new Set;pendingUpdates=new Map;updateListeners=new Map;disposed=!1;constructor(e){this.sync=e.sync,this.addSprinkle=e.addSprinkle,this.removeSprinkle=e.removeSprinkle,this.zone=e.zone}async updateAvailable(e){if(this.disposed)return;let t=new Map;for(let n of e)n.open&&t.set(n.name,n);this.latestDesiredOpen=new Set(t.keys());for(let e of[...this.open.keys()])t.has(e)||this.closeLocally(e);for(let e of[...this.pendingUpdates.keys()])t.has(e)||this.pendingUpdates.delete(e);let n=[];for(let[e,r]of t)this.open.has(e)||this.opening.has(e)||n.push(this.openLocally(e,r));await Promise.allSettled(n)}handleSprinkleUpdate(e,t){if(this.disposed)return;let n=this.open.get(e);if(n){n.renderer.pushUpdate(t),this.fanOutToListeners(e,t);return}if(this.opening.has(e)){this.pendingUpdates.set(e,t);return}n9.debug(`Dropping sprinkle.update for unknown sprinkle`,{sprinkleName:e})}dispose(){if(!this.disposed){this.disposed=!0;for(let e of[...this.open.keys()])this.closeLocally(e);this.pendingUpdates.clear(),this.latestDesiredOpen.clear(),this.updateListeners.clear()}}async openLocally(e,t){this.opening.add(e);let n;try{n=await this.sync.fetchSprinkleContent(e)}catch(t){this.opening.delete(e),this.pendingUpdates.delete(e),n9.warn(`Failed to fetch sprinkle content from leader`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)});return}if(this.disposed||!this.latestDesiredOpen.has(e)){this.opening.delete(e),this.pendingUpdates.delete(e);return}let r=document.createElement(`div`);r.className=`sprinkle-panel`,r.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;`,r.dataset.sprinkle=e;let i=new yL(r,this.createBridge(e));this.addSprinkle(e,t.title,r,this.zone);try{await i.render(n,e)}catch(t){n9.warn(`Sprinkle render failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}if(this.disposed||!this.latestDesiredOpen.has(e)){this.updateListeners.delete(e),this.opening.delete(e),this.pendingUpdates.delete(e);try{i.dispose()}catch(t){n9.warn(`Sprinkle dispose threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}r.remove();try{this.removeSprinkle(e)}catch(t){n9.warn(`removeSprinkle callback threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}return}this.open.set(e,{renderer:i,container:r}),this.opening.delete(e);let a=this.pendingUpdates.get(e);a!==void 0&&(this.pendingUpdates.delete(e),i.pushUpdate(a),this.fanOutToListeners(e,a))}fanOutToListeners(e,t){let n=this.updateListeners.get(e);if(n)for(let r of[...n])try{r(t)}catch(t){n9.warn(`Sprinkle update listener threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}}closeLocally(e){this.updateListeners.delete(e),this.pendingUpdates.delete(e);let t=this.open.get(e);if(t){try{t.renderer.dispose()}catch(t){n9.warn(`Sprinkle dispose threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}t.container.remove(),this.open.delete(e);try{this.removeSprinkle(e)}catch(t){n9.warn(`removeSprinkle callback threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}}}createBridge(e){return{name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data;this.sync.sendSprinkleLick(e,{action:n,data:r})},on:(t,n)=>{if(t!==`update`)return;let r=this.updateListeners.get(e);r||(r=new Set,this.updateListeners.set(e,r)),r.add(n)},off:(t,n)=>{t===`update`&&this.updateListeners.get(e)?.delete(n)},readFile:()=>Promise.reject(Error(`readFile not supported in follower-rendered sprinkle`)),writeFile:()=>Promise.reject(Error(`writeFile not supported in follower-rendered sprinkle`)),readDir:()=>Promise.reject(Error(`readDir not supported in follower-rendered sprinkle`)),exists:()=>Promise.resolve(!1),stat:()=>Promise.reject(Error(`stat not supported in follower-rendered sprinkle`)),mkdir:()=>Promise.reject(Error(`mkdir not supported in follower-rendered sprinkle`)),rm:()=>Promise.reject(Error(`rm not supported in follower-rendered sprinkle`)),screenshot:()=>Promise.reject(Error(`screenshot not supported in follower-rendered sprinkle`)),setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch(t){n9.warn(`Sprinkle setState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch(t){return n9.warn(`Sprinkle getState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)}),null}},open:e=>{let t=/^https?:|^chrome-extension:/.test(e)?e:Y4(e);window.open(t,`_blank`)},close:()=>this.closeLocally(e),minimize:()=>{},stopCone:()=>{this.sync.sendSprinkleLick(e,{action:`__stopCone__`})},attachImage:()=>{},captureScreen:()=>Promise.reject(Error(`captureScreen not supported in follower-rendered sprinkle`))}}},i9=Wv(`page-follower-tray`);function Wwe(e,t){return t===`slicc-cherry`?e.map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:`cherry`,capabilities:{navigate:!0,network:!1,screenshot:!0}})):e.map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}function a9(e){let t=e._refreshIntervalMs??5e3,n=null,r=null,i=null,a=null,o=()=>{i&&=(clearInterval(i),null),r&&=(r.dispose(),null),n&&=(e.onForwardingToggle?.(!1),e.browserAPI.setTrayTargetProvider(null),n.close(),null)};return a=Hwe({joinUrl:e.joinUrl,runtime:e.runtime??`slicc-standalone`,fetchImpl:e._fetchImpl,peerConnectionFactory:e._peerConnectionFactory,sleep:e._sleep},{onConnected:a=>{o();let s=t9(a.bootstrapId),c=null,l=new Owe(a.channel,{browserTransport:e.browserAPI.getTransport(),browserAPI:e.browserAPI,onSnapshot:e.onSnapshot,onUserMessage:e.onUserMessage,onStatus:e.onStatus,onCherrySliccEvent:e.onCherrySliccEvent,selfRuntimeId:s,onTargetsChanged:()=>void d(),onSprinklesList:t=>{e.onSprinklesList?.(t),c?.updateAvailable(t)},onSprinkleUpdate:(e,t)=>c?.handleSprinkleUpdate(e,t),onDisconnect:e=>{i9.warn(`Follower sync disconnected`,{reason:e}),o()}});e.addSprinkle&&e.removeSprinkle&&(c=new r9({sync:l,addSprinkle:e.addSprinkle,removeSprinkle:e.removeSprinkle}),r=c);let u=new j7(i9,{failureMessage:`Follower CDP target listing failed (best-effort, throttled)`,recoveryMessage:`Follower CDP target listing recovered (stable for debounce window)`}),d=async()=>{let t;try{t=await e.browserAPI.listPages()}catch(e){u.reportFailure(e);return}if(n===l){u.reportSuccess();try{l.advertiseTargets(Wwe(t,e.runtime??`slicc-standalone`),s)}catch(e){i9.error(`Follower target advertisement broadcast failed (sync.advertiseTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}};n=l,e.browserAPI.setTrayTargetProvider(l),e.setChatAgent(l),e.onForwardingToggle?.(!0),l.requestSnapshot(),i=setInterval(()=>void d(),t),d(),i9.info(`Follower sync wired`,{trayId:a.trayId})},onReconnecting:e=>{i9.info(`Follower reconnecting`,{attempt:e})},onGaveUp:e=>{i9.warn(`Follower reconnect gave up`,{lastError:e}),o()},sleep:e._sleep}),{stop(){o(),a?.cancel(),a=null},get currentSync(){return n}}}Wv(`lick-manager`);var Gwe=new Set([`navigate`]),Kwe=class{runtimes=new Map;dirty=!1;setTargets(e,t){this.runtimes.set(e,t),this.dirty=!0}removeRuntime(e){this.runtimes.delete(e)&&(this.dirty=!0)}getEntries(){this.dirty=!1;let e=[];for(let[t,n]of this.runtimes)for(let r of n)e.push({targetId:`${t}:${r.targetId}`,localTargetId:r.targetId,runtimeId:t,title:r.title,url:r.url,isLocal:!1,kind:r.kind??`browser`,capabilities:r.capabilities});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}},o9=Wv(`tray-leader-sync`);function qwe(e){return e?e.includes(`ios`)?`ios`:e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}function s9(e,t){switch(e){case`extension`:return`extension follower`;case`standalone`:return`standalone follower`;case`electron`:return`Electron follower`;case`ios`:return`iOS follower`;default:return t?`follower (${t})`:`follower`}}function c9(e){return e.kind===`cherry`}function Jwe(e,t){return e.filter(e=>c9(e)&&t.requireNetwork?e.capabilities?.network===!0:!0)}var Ywe=class e{options;followers=new Map;registry=new Kwe;runtimeToBootstrap=new Map;pendingCDPRoutes=new Map;cdpChunkBuffers=new Map;remoteTransports=new Map;pendingTabOpenRoutes=new Map;tabOpenResolvers=new Map;pendingFsRoutes=new Map;fsResolvers=new Map;constructor(e){this.options=e}addFollower(e,t,n){this.removeFollower(e);let r=mwe(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new B7({sendPing:()=>r.send({type:`ping`}),onDead:()=>{o9.warn(`Follower keepalive dead, removing follower`,{bootstrapId:e}),this.removeFollower(e),this.options.onFollowerDead?.(e)}});a.start(),this.followers.set(e,{bootstrapId:e,sync:r,unsubscribe:i,keepalive:a,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:Date.now(),floatType:qwe(n?.runtime)}),o9.info(`Follower added to sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size),this.sendSnapshotToFollower(e),this.sendScoopsListToFollower(e),this.sendSprinklesListToFollower(e);let o=this.getConnectedEntries();o.length>0&&r.send({type:`targets.registry`,targets:o})}removeFollower(e){let t=this.followers.get(e);if(t){t.keepalive.stop(),t.unsubscribe(),t.sync.close(),this.followers.delete(e),this.followerBroadcastErrorLogAt.delete(e);for(let[t,n]of this.runtimeToBootstrap)if(n===e){this.cleanupRemoteTransports(t),this.registry.removeRuntime(t),this.runtimeToBootstrap.delete(t);break}this.registry.hasChanged()&&this.broadcastTargetRegistry(),o9.info(`Follower removed from sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size)}}followerBroadcastErrorLogAt=new Map;static BROADCAST_ERROR_THROTTLE_MS=6e4;broadcastToAllFollowers(t){let n=performance.now();for(let[r,i]of this.followers)try{i.sync.send(t),this.followerBroadcastErrorLogAt.delete(r)}catch(i){n-(this.followerBroadcastErrorLogAt.get(r)??-1/0)>e.BROADCAST_ERROR_THROTTLE_MS&&(this.followerBroadcastErrorLogAt.set(r,n),o9.error(`Broadcast send to follower failed (channel may be stuck)`,{bootstrapId:r,messageType:t.type,error:i instanceof Error?i.message:String(i)}))}}broadcastEvent(e){if(this.followers.size===0)return;let t={type:`agent_event`,event:e,scoopJid:this.options.getScoopJid()};this.broadcastToAllFollowers(t)}broadcastUserMessage(e,t,n){if(this.followers.size===0)return;let r={type:`user_message_echo`,text:e,messageId:t,scoopJid:this.options.getScoopJid(),attachments:n?.length?Iv(n):n};this.broadcastToAllFollowers(r)}broadcastStatus(e){if(this.followers.size===0)return;let t={type:`status`,scoopStatus:e};this.broadcastToAllFollowers(t)}async sendSnapshotToFollower(e,t){let n=this.followers.get(e);if(!n)return;let r=t??n.selectedScoopJid??this.options.getScoopJid(),i;if(this.options.getMessagesForScoop&&r!==this.options.getScoopJid())try{i=await Promise.resolve(this.options.getMessagesForScoop(r))}catch(e){o9.warn(`getMessagesForScoop failed, falling back to active scoop`,{targetJid:r,error:e instanceof Error?e.message:String(e)}),i=this.options.getMessages()}else i=this.options.getMessages();n.selectedScoopJid=r,fwe(n.sync,i,r),o9.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:i.length,scoopJid:r})}sendScoopsListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getScoops;if(n)try{let e=n(),r=this.options.getScoopJid();t.sync.send({type:`scoops.list`,scoops:e,activeScoopJid:r})}catch(t){o9.warn(`Failed to send scoops.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}sendSprinklesListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getSprinkles;if(n)try{let e=n();t.sync.send({type:`sprinkles.list`,sprinkles:e})}catch(t){o9.warn(`Failed to send sprinkles.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}broadcastScoopsList(){if(this.followers.size===0)return;let e=this.options.getScoops;if(!e)return;let t;try{t=e()}catch(e){o9.warn(`Failed to compute scoops list`,{error:e instanceof Error?e.message:String(e)});return}let n=this.options.getScoopJid(),r={type:`scoops.list`,scoops:t,activeScoopJid:n};this.broadcastToAllFollowers(r)}broadcastSprinklesList(){if(this.followers.size===0)return;let e=this.options.getSprinkles;if(!e)return;let t;try{t=e()}catch(e){o9.warn(`Failed to compute sprinkles list`,{error:e instanceof Error?e.message:String(e)});return}let n={type:`sprinkles.list`,sprinkles:t};this.broadcastToAllFollowers(n)}broadcastSprinkleUpdate(e,t){if(this.followers.size===0)return;let n={type:`sprinkle.update`,sprinkleName:e,data:t};this.broadcastToAllFollowers(n)}static SPRINKLE_CHUNK_SIZE=32*1024;static SPRINKLE_CHUNK_THRESHOLD=64*1024;async handleSprinkleFetch(t,n,r){let i=this.followers.get(t);if(!i)return;let a=this.options.readSprinkleContent;if(!a){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Leader has no sprinkle content reader`});return}let o=null;try{o=await Promise.resolve(a(r))}catch(e){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:e instanceof Error?e.message:String(e)});return}if(o==null){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Sprinkle not found: ${r}`});return}if(o.length<=e.SPRINKLE_CHUNK_THRESHOLD){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:o});return}let s=e.SPRINKLE_CHUNK_SIZE,c=Math.ceil(o.length/s);for(let e=0;e<c;e++){let t=o.slice(e*s,(e+1)*s);i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:t,chunkIndex:e,totalChunks:c})}}handleFollowerMessage(e,t){switch(t.type){case`user_message`:{o9.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?Iv(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n);break}case`abort`:o9.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:o9.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{o9.info(`Follower selected scoop`,{bootstrapId:e,scoopJid:t.scoopJid});let n=this.followers.get(e);n&&(n.selectedScoopJid=t.scoopJid,this.sendSnapshotToFollower(e,t.scoopJid));break}case`sprinkles.refresh`:o9.info(`Follower requested sprinkles refresh`,{bootstrapId:e}),this.sendSprinklesListToFollower(e);break;case`sprinkle.fetch`:this.handleSprinkleFetch(e,t.requestId,t.sprinkleName);break;case`sprinkle.lick`:{o9.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});let n=this.followers.get(e),r=s9(n?.floatType??`unknown`,n?.runtime);try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop,r)}catch(e){o9.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break}case`lick`:{let n=t.event;if(!n||!Gwe.has(n.type)){o9.warn(`Rejecting malformed or non-forwardable lick from follower`,{bootstrapId:e,type:n?.type});break}let r=this.followers.get(e),{targetScoop:i,...a}=n,o={...a,originFollowerId:e,originLabel:s9(r?.floatType??`unknown`,r?.runtime)};try{this.options.onForwardedLick?.(o,e)}catch(e){o9.warn(`onForwardedLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break}case`targets.advertise`:o9.info(`Follower targets advertised`,{bootstrapId:e,runtimeId:t.runtimeId,targetCount:t.targets.length});for(let e of[...this.remoteTransports.keys()]){let n=e.substring(0,e.indexOf(`:`));n!==`leader`&&!this.runtimeToBootstrap.has(n)&&n!==t.runtimeId&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),o9.debug(`Cleaned up orphaned remote transport on advertise`,{key:e}))}this.runtimeToBootstrap.set(t.runtimeId,e),this.registry.setTargets(t.runtimeId,t.targets),this.broadcastTargetRegistry();break;case`cdp.request`:{let{requestId:n,targetRuntimeId:r,localTargetId:i,method:a,params:o,sessionId:s}=t;r===`leader`?this.executeLocalCDP(n,i,a,o,s,e):this.forwardCDPRequest(n,r,i,a,o,s,e);break}case`cdp.response`:this.handleCDPResponse(t);break;case`cdp.event`:this.handleCDPEvent(e,t.method,t.params,t.sessionId);break;case`tab.open`:{let{requestId:n,targetRuntimeId:r,url:i}=t;r===`leader`?this.executeLocalTabOpen(n,i,e):this.forwardTabOpen(n,r,i,e);break}case`tab.opened`:this.handleTabOpenResponse(t.requestId,t.targetId);break;case`tab.open.error`:this.handleTabOpenError(t.requestId,t.error);break;case`fs.request`:{let{requestId:n,targetRuntimeId:r,request:i}=t;r===`leader`?this.executeLocalFs(n,i,e):this.forwardFsRequest(n,r,i,e);break}case`fs.response`:this.handleFsResponse(t.requestId,t.response);break;case`cherry.host_event`:this.routeCherryHostEvent(e,t);break;case`ping`:{let t=this.followers.get(e);t&&(t.keepalive.receivePing(),t.lastActivity=Date.now(),t.sync.send({type:`pong`}));break}case`pong`:{let t=this.followers.get(e);t&&(t.keepalive.receivePong(),t.lastActivity=Date.now());break}}}setLocalTargets(e){this.registry.setTargets(`leader`,e),this.registry.hasChanged()&&this.broadcastTargetRegistry()}broadcastTargetRegistry(){if(this.followers.size===0)return;let e={type:`targets.registry`,targets:this.getConnectedEntries()};this.broadcastToAllFollowers(e)}getTargets(){return this.getConnectedEntries()}getConnectedEntries(){return this.registry.getEntries().filter(e=>{if(e.runtimeId===`leader`)return!0;let t=this.runtimeToBootstrap.get(e.runtimeId);return t?this.followers.has(t):!1})}createRemoteTransport(e,t){let n=new R7({sendCDPRequest:(n,r,i,a)=>{let o=this.runtimeToBootstrap.get(e),s=o?this.followers.get(o):void 0;if(!s){this.remoteTransports.get(`${e}:${t}`)?.handleResponse(n,void 0,`Target runtime "${e}" not connected`);return}this.pendingCDPRoutes.set(n,{requesterBootstrapId:`__leader__`,requestId:n}),s.sync.send({type:`cdp.request`,requestId:n,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}cleanupRemoteTransports(e){let t=`${e}:`;for(let e of[...this.remoteTransports.keys()])e.startsWith(t)&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),o9.debug(`Cleaned up stale remote transport`,{key:e}));try{this.options.onRemoteTransportsCleaned?.(e)}catch(t){o9.warn(`onRemoteTransportsCleaned handler threw`,{runtimeId:e,error:t instanceof Error?t.message:String(t)})}}getConnectedFollowers(){return[...this.runtimeToBootstrap.entries()].map(([e,t])=>{let n=this.followers.get(t);return{runtimeId:e,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:n?.lastActivity,floatType:n?.floatType}})}canRuntimeServeTeleport(e,t){if(t.runtime===`slicc-cherry`)return!1;let n=this.registry.getEntries().filter(t=>t.runtimeId===e);return n.length===0?!0:Jwe(n,{requireNetwork:!0}).length>0}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.followers.get(n);r&&this.canRuntimeServeTeleport(t,r)&&e.push({runtimeId:t,bootstrapId:n,floatType:r.floatType,lastActivity:r.lastActivity})}if(e.length===0)return null;let t=e.filter(e=>e.floatType===`standalone`),n=t.length>0?t:e;return n.sort((e,t)=>t.lastActivity-e.lastActivity),n[0]}get hasFollowers(){return this.followers.size>0}stop(){for(let e of[...this.followers.keys()])this.removeFollower(e)}async executeLocalCDP(e,t,n,r,i,a){let o=this.followers.get(a);if(!o)return;let s=this.options.browserTransport;if(!s){o.sync.send({type:`cdp.response`,requestId:e,error:`Leader has no browser transport`});return}try{let t=await s.send(n,r,i);P7(o.sync,e,t)}catch(t){o.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardCDPRequest(e,t,n,r,i,a,o){let s=this.runtimeToBootstrap.get(t),c=s?this.followers.get(s):void 0,l=this.followers.get(o);if(!c){l&&l.sync.send({type:`cdp.response`,requestId:e,error:`Target runtime "${t}" not connected`});return}this.pendingCDPRoutes.set(e,{requesterBootstrapId:o,requestId:e}),c.sync.send({type:`cdp.request`,requestId:e,localTargetId:n,method:r,params:i,sessionId:a})}handleCDPResponse(e){let{requestId:t}=e,n=this.pendingCDPRoutes.get(t);if(!n)return;let r=F7(this.cdpChunkBuffers,e);if(!r)return;if(this.pendingCDPRoutes.delete(t),n.requesterBootstrapId===`__leader__`){for(let e of this.remoteTransports.values())e.handleResponse(t,r.result,r.error);return}let i=this.followers.get(n.requesterBootstrapId);i&&P7(i.sync,t,r.result,r.error)}handleCDPEvent(e,t,n,r){let i;for(let[t,n]of this.runtimeToBootstrap)if(n===e){i=t;break}if(!i)return;let a=`${i}:`;for(let[e,r]of this.remoteTransports)e.startsWith(a)&&r.handleEvent(t,n)}runtimeIdForBootstrap(e){for(let[t,n]of this.runtimeToBootstrap)if(n===e)return t}routeCherryHostEvent(e,t){if(!dwe(t))return;let n=this.options.onCherryHostEvent;if(!n){o9.debug(`cherry.host_event received but no onCherryHostEvent wired`,{bootstrapId:e,name:t.name});return}let r=this.runtimeIdForBootstrap(e);try{n(r,t.name,t.detail)}catch(n){o9.warn(`Failed to route cherry.host_event to cone`,{bootstrapId:e,name:t.name,error:n instanceof Error?n.message:String(n)})}}emitCherrySliccEvent(e,t,n){let r=e.indexOf(`:`),i=r>=0?e.slice(0,r):e,a=this.runtimeToBootstrap.get(i),o=a?this.followers.get(a):void 0;return o?o.sync.send({type:`cherry.slicc_event`,targetId:e,name:t,detail:n}):(o9.warn(`emitCherrySliccEvent: owning follower not connected`,{targetId:e,name:t}),!1)}canRuntimeOpenTab(e){let t=this.registry.getEntries().filter(t=>t.runtimeId===e);return t.length===0?!0:t.some(e=>!c9(e))}openRemoteTab(e,t){let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.reject(Error(`Target runtime "${e}" not connected`));if(!this.canRuntimeOpenTab(e))return Promise.reject(Error(`Target runtime "${e}" is a cherry host that cannot open tabs`));let i=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.tabOpenResolvers.set(i,{resolve:e,reject:n}),this.pendingTabOpenRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i}),r.sync.send({type:`tab.open`,requestId:i,url:t})})}async executeLocalTabOpen(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.browserTransport;if(!i){r.sync.send({type:`tab.open.error`,requestId:e,error:`Leader has no browser transport`});return}try{let n=(await i.send(`Target.createTarget`,{url:t,background:!0})).targetId;r.sync.send({type:`tab.opened`,requestId:e,targetId:`leader:${n}`})}catch(t){r.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardTabOpen(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" not connected`});return}if(!this.canRuntimeOpenTab(t)){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" is a cherry host that cannot open tabs`});return}this.pendingTabOpenRoutes.set(e,{requesterBootstrapId:r,requestId:e}),a.sync.send({type:`tab.open`,requestId:e,url:n})}handleTabOpenResponse(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.resolve(t));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.opened`,requestId:e,targetId:t})}handleTabOpenError(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.reject(Error(t)));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.open.error`,requestId:e,error:t})}async executeLocalFs(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.vfs;if(!i){r.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Leader has no VFS`}});return}let a=await H7(i,t);for(let t of a)r.sync.send({type:`fs.response`,requestId:e,response:t})}forwardFsRequest(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Target runtime "${t}" not connected`}});return}this.pendingFsRoutes.set(e,{requesterBootstrapId:r,requestId:e,chunks:[],totalChunks:1}),a.sync.send({type:`fs.request`,requestId:e,request:n})}handleFsResponse(e,t){let n=this.pendingFsRoutes.get(e);if(!n){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}return}if(n.requesterBootstrapId===`__leader__`){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),this.pendingFsRoutes.delete(e),n.resolve(n.responses))}return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`fs.response`,requestId:e,response:t}),n.chunks.push(t),n.totalChunks=t.ok&&t.totalChunks||1,n.chunks.length>=n.totalChunks&&this.pendingFsRoutes.delete(e)}sendFsRequest(e,t){if(e===`leader`){let e=this.options.vfs;return e?H7(e,t):Promise.resolve([{ok:!1,error:`Leader has no VFS`}])}let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.resolve([{ok:!1,error:`Target runtime "${e}" not connected`}]);let i=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.fsResolvers.set(i,{resolve:e,reject:n,responses:[]}),this.pendingFsRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i,chunks:[],totalChunks:1}),r.sync.send({type:`fs.request`,requestId:i,request:t})})}},l9=Wv(`page-leader-tray`);function u9(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i,a;a=new Ywe({getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onForwardedLick:e.onForwardedLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerCountChanged:e.onFollowerCountChanged,onRemoteTransportsCleaned:e.onRemoteTransportsCleaned,onCherryHostEvent:e.onCherryHostEvent,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs}),e.browserAPI.setTrayTargetProvider(a),i=new Bwe({sendControlMessage:e=>r.sendControlMessage(e),onPeerConnected:(e,t)=>{l9.info(`Tray follower data channel opened`,{controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,runtime:e.runtime}),a.addFollower(e.bootstrapId,t,{runtime:e.runtime,connectedAt:e.connectedAt??void 0})},onPeerDisconnected:(e,t)=>{l9.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}}),r=new Cae({workerBaseUrl:e.workerBaseUrl,runtime:e.runtime??`slicc-standalone`,...e.kind?{kind:e.kind}:{},...e.onLeaderReady?{onLeaderReady:e.onLeaderReady}:{},fetchImpl:n,...e._storeOverride?{store:e._storeOverride}:{},...e._webSocketFactory?{webSocketFactory:e._webSocketFactory}:{},onControlMessage:t=>{if(t.type===`webhook.event`){e.sendWebhookEvent(t.webhookId,t.headers,t.body);return}i.handleControlMessage(t).catch(e=>{l9.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{l9.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{l9.info(`Leader tray reconnected`,{trayId:e.trayId}),u(e)},onReconnectGaveUp:(e,t)=>{l9.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t})}});let o=e.onAgentEvent(e=>a.broadcastEvent(e)),s=[],c=new j7(l9,{failureMessage:`Leader CDP target refresh failed (best-effort, throttled)`,recoveryMessage:`Leader CDP target refresh recovered (stable for debounce window)`}),l=async()=>{let t;try{t=await e.browserAPI.listPages()}catch(e){c.reportFailure(e);return}c.reportSuccess();try{let e=t.map(e=>({targetId:e.targetId,title:e.title,url:e.url}));a.setLocalTargets(e)}catch(e){l9.error(`Leader target broadcast failed (sync.setLocalTargets threw)`,{error:e instanceof Error?e.message:String(e)})}};s.push(setInterval(l,t)),l(),s.push(setInterval(()=>{try{a.broadcastScoopsList(),a.broadcastSprinklesList()}catch(e){l9.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t));function u(t){let n=e._historyOverride??Xwe();if(n)try{let e=Db(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){l9.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}return r.start().then(e=>{u(e)}).catch(e=>{l9.error(`Leader tray start failed`,{error:e instanceof Error?e.message:String(e)})}),{stop(){o();for(let e of s)clearInterval(e);a.stop(),i.stop(),r.stop()},async reset(){return a.stop(),i.stop(),r.stop(),await r.clearSession(),u(await r.start()),Mb()},leader:r,peers:i,sync:a}}function Xwe(){return typeof window>`u`||!window.history||!window.location?null:{get href(){return window.location.href},replaceState(e,t,n){window.history.replaceState(e,t,n)}}}function d9(e){let{channel:t,getReader:n,logger:r}=e,i=e=>{let i=e.data;if(i?.type!==`preview-vfs-read`)return;let{id:a,path:o,asText:s}=i;(async()=>{try{let e=s?`utf-8`:`binary`,r=await n().readFile(o,{encoding:e});t.postMessage({type:`preview-vfs-response`,id:a,content:r})}catch(e){let n=e instanceof Error?e.message:String(e);n.includes(`ENOENT`)||r?.error(`Preview VFS read failed`,{path:o,error:n}),t.postMessage({type:`preview-vfs-response`,id:a,error:n})}})()};return t.addEventListener(`message`,i),{dispose:()=>t.removeEventListener(`message`,i)}}function Zwe(e){let t=new Map,n=(e,t)=>`${e}:${t}`,r=(r,i)=>{let a=n(r,i),o=t.get(a);if(!o){let n=e.getSync();if(!n)throw Error(`remote-cdp: leader tray not started`);o={runtimeId:r,localTargetId:i,transport:n.createRemoteTransport(r,i),forwarders:new Map},t.set(a,o)}return o},i=n=>{let r=t.get(n);if(!r)return;for(let[e,t]of r.forwarders)r.transport.off(e,t.listener);r.forwarders.clear();let i=e.getSync();i?.removeRemoteTransport?i.removeRemoteTransport(r.runtimeId,r.localTargetId):r.transport.disconnect(),t.delete(n)};return{async send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o}){return r(e,t).transport.send(n,i,a,o)},async subscribe({runtimeId:t,localTargetId:n,event:i}){let a=r(t,n),o=a.forwarders.get(i);if(o)return o.count+=1,{ok:!0};let s=r=>e.postEvent({runtimeId:t,localTargetId:n,method:i,params:r});return a.transport.on(i,s),a.forwarders.set(i,{listener:s,count:1}),{ok:!0}},async unsubscribe({runtimeId:e,localTargetId:r,event:i}){let a=t.get(n(e,r)),o=a?.forwarders.get(i);return!a||!o?{ok:!0}:(--o.count,o.count<=0&&(a.transport.off(i,o.listener),a.forwarders.delete(i)),{ok:!0})},async detach({runtimeId:e,localTargetId:t}){return i(n(e,t)),{ok:!0}},async openTab({runtimeId:t,url:n}){let r=e.getSync();if(!r?.openRemoteTab)throw Error(`remote-cdp: openRemoteTab not available`);return{targetId:await r.openRemoteTab(t,n)}},cleanupRuntime(e){let n=`${e}:`;for(let e of[...t.keys()])e.startsWith(n)&&i(e)},disposeAll(){for(let e of[...t.keys()])i(e)}}}var Qwe=[{id:`chat`,label:`Chat`},{id:`terminal`,label:`Terminal`},{id:`files`,label:`Files`},{id:`memory`,label:`Memory`}],f9=`chat`,$we=new Set(Qwe.map(e=>e.id));function eTe(e){return $we.has(e)}function tTe(e,t){if(t){try{if(new URL(e).searchParams.get(`detached`)===`1`)return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:rTe(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function nTe(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function p9(e){try{let t=new URL(e).searchParams.get(`tab`);return t&&eTe(t)?t:f9}catch{return f9}}function rTe(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function iTe(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`slicc-electron-overlay:set-tab`}function m9(e){return e.toLowerCase().endsWith(II)}function aTe(e){return Array.from(e).find(e=>m9(e.name))??null}function h9(e){if(!e)return!1;if(e.items){for(let t of Array.from(e.items))if(t.kind===`file`)return!0}return!1}function oTe(e){if(!e)return null;if(e.files){let t=aTe(e.files);if(t)return t}if(!e.items)return null;for(let t of Array.from(e.items)){if(t.kind&&t.kind!==`file`)continue;let e=t.getAsFile?.();if(e&&m9(e.name))return e}return null}function sTe(e){if(!e)return[];let t=[],n=new Set,r=e=>{!e||n.has(e)||m9(e.name)||(n.add(e),t.push(e))};if(e.files)for(let t of Array.from(e.files))r(t);if(e.items)for(let t of Array.from(e.items))t.kind&&t.kind!==`file`||r(t.getAsFile?.());return t}var g9=Wv(`sprinkle-icon`),cTe=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">`,lTe=`</svg>`,_9=null;function uTe(){return _9||=I(()=>Promise.resolve().then(()=>Wye).then(e=>e.icons),void 0),_9}function dTe(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function v9(e){return String(e).replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`)}function fTe(e){return`${cTe}${e.map(([e,t])=>{let n=Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}="${v9(t)}"`);return n.length?`<${e} ${n.join(` `)}/>`:`<${e}/>`}).join(``)}${lTe}`}async function pTe(e){let t=dTe(e),n=(await uTe())[t];return n?fTe(n):null}function mTe(e){return/^\s*<svg\b/i.test(e)}function hTe(e){return/^data:/i.test(e)}function gTe(e){return e.startsWith(`/`)}function y9(e){return/\.(svg|png|jpe?g|webp|gif|ico)$/i.test(e)}function _Te(e){return/^[a-z][a-z0-9-]*$/.test(e)}function b9(e){return`<img src="${v9(e)}" width="16" height="16" alt="" style="display:block;width:16px;height:16px;object-fit:contain"/>`}async function x9(e,t){if(!e)return null;if(mTe(e))return b9(S9(e));if(hTe(e))return b9(e);if(gTe(e)&&t){try{if(y9(e)&&e.toLowerCase().endsWith(`.svg`)){let n=await t.readFile(e,{encoding:`utf-8`}),r=C9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));return r?b9(S9(r)):null}if(y9(e)){let n=await t.readFile(e,{encoding:`binary`}),r=n instanceof Uint8Array?n:new Uint8Array;return b9(`data:${vTe(e)};base64,${w9(r)}`)}let n=await t.readFile(e,{encoding:`utf-8`}),r=C9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));if(r)return b9(S9(r))}catch(t){g9.warn(`Failed to read sprinkle icon from VFS`,{path:e,error:t instanceof Error?t.message:String(t)})}return null}if(_Te(e)){let t=await pTe(e);if(t)return t;g9.warn(`Unknown Lucide icon name`,{spec:e})}return null}function S9(e){return`data:image/svg+xml;base64,${w9(new TextEncoder().encode(e))}`}function C9(e){let t=e.match(/<svg\b[\s\S]*?<\/svg>/i);return t?t[0]:null}function vTe(e){let t=e.toLowerCase();return t.endsWith(`.png`)?`image/png`:t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`image/jpeg`:t.endsWith(`.webp`)?`image/webp`:t.endsWith(`.gif`)?`image/gif`:t.endsWith(`.ico`)?`image/x-icon`:`application/octet-stream`}function w9(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode.apply(null,Array.from(e.subarray(r,r+n)));return typeof btoa<`u`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var yTe=class{listeners=new Map;lickHandler;fs;closeHandler;minimizeHandler;stopConeHandler;attachImageHandler;captureScreenHandler;constructor(e,t,n,r,i,a,o){this.fs=e,this.lickHandler=t,this.closeHandler=n,this.minimizeHandler=r,this.stopConeHandler=i,this.attachImageHandler=a,this.captureScreenHandler=o}createAPI(e){let t={name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data,i={type:`sprinkle`,sprinkleName:e,targetScoop:STe(e),timestamp:new Date().toISOString(),body:{action:n,data:r}};this.lickHandler(i)},on:(t,n)=>{let r=`${e}:${t}`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{let r=`${e}:${t}`;this.listeners.get(r)?.delete(n)},readFile:async e=>await this.fs.readFile(e,{encoding:`utf-8`}),writeFile:async(e,t)=>{await this.fs.writeFile(e,t)},readDir:async e=>(await this.fs.readDir(e)).map(e=>({name:e.name,type:e.type})),exists:async e=>this.fs.exists(e),stat:async e=>{let t=await this.fs.stat(e);return{type:t.type,size:t.size}},mkdir:async e=>{await this.fs.mkdir(e,{recursive:!0})},rm:async e=>{await this.fs.rm(e)},screenshot:async e=>{let n=t._container;if(!n)return``;let r=e?n.querySelector(e):n;if(!r)throw Error(`Element not found: `+(e||`container`));let i=r.getBoundingClientRect(),a=Math.ceil(i.width),o=Math.ceil(i.height);if(a===0||o===0)throw Error(`Element has zero dimensions`);let s=document.createElement(`canvas`),c=window.devicePixelRatio||1;s.width=a*c,s.height=o*c;let l=s.getContext(`2d`);l.scale(c,c);let u=r.cloneNode(!0),d=`<svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${o}"><foreignObject width="100%" height="100%">${new XMLSerializer().serializeToString(u)}</foreignObject></svg>`;return new Promise((e,t)=>{let n=new Image;n.onload=()=>{l.drawImage(n,0,0),e(s.toDataURL(`image/png`))},n.onerror=()=>t(Error(`Screenshot rendering failed`)),n.src=`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(d)})},setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch{}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch{return null}},open:e=>{let t=/^https?:|^chrome-extension:/.test(e)?e:Y4(e);window.open(t,`_blank`)},close:()=>this.closeHandler(e),minimize:()=>this.minimizeHandler(e),stopCone:()=>this.stopConeHandler(),attachImage:(e,t,n)=>this.attachImageHandler(e,t,n),captureScreen:()=>this.captureScreenHandler()};return t}pushUpdate(e,t){let n=`${e}:update`,r=this.listeners.get(n);if(r)for(let e of r){let n=r;setTimeout(()=>{if(n.has(e))try{e(t)}catch{}},0)}}removeSprinkle(e){for(let t of this.listeners.keys())t.startsWith(`${e}:`)&&this.listeners.delete(t)}},bTe=`slicc-sprinkle-routes`;function xTe(){try{let e=localStorage.getItem(bTe);return e?JSON.parse(e):{}}catch{return{}}}function STe(e){return xTe()[e]}var CTe=[`/shared/sprinkles`],wTe=new Set([`welcome`,`connect-llm`]);async function TTe(e){let t=new Map;for(let n of CTe)await e.exists(n)&&await T9(e,n,t);return await T9(e,`/`,t),t}async function T9(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=ETe(r);if(!wTe.has(t)&&!n.has(t)){let i;try{i=await e.readFile(r,{encoding:`utf-8`})??``}catch{i=``}n.set(t,{name:t,path:r,title:DTe(i,t),autoOpen:OTe(i),icon:kTe(i)})}}}function ETe(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function DTe(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function OTe(e){return/data-sprinkle-autoopen\b/.test(e)}function kTe(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=ATe(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=E9(i,`href`);if(a!==void 0)return a.trim()}let r=E9(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function ATe(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function E9(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var jTe=s({SprinkleManager:()=>P9,readOpenSprinklesFromUrl:()=>A9,writeOpenSprinklesToUrl:()=>j9}),D9=Wv(`sprinkle-manager`),O9=`slicc-open-sprinkles`,k9=`sprinkles`;function A9(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(k9);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function j9(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(k9):t.searchParams.set(k9,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var M9=`slicc-known-sprinkles`,N9=`slicc-autoopened-once`,MTe=[`/workspace`,`/shared`,`/scoops`],NTe=250,P9=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,n,r,i={}){this.fs=e;let a=async()=>{let e=`image/png`,t=tb(),n=eb();if(!t&&!n)throw Error(`Screen capture unavailable in this environment`);if(t&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let r,i,a;if(t){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),i=n.videoWidth,a=n.videoHeight;let o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);s.drawImage(n,0,0,i,a),r=await(await new Promise((t,n)=>{o.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await n.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:5*6e4});r=t.bytes,i=t.width,a=t.height}let o=new Uint8Array(r),s=[],c=8192;for(let e=0;e<o.length;e+=c)s.push(String.fromCharCode(...o.subarray(e,e+c)));return{base64:btoa(s.join(``)),width:i,height:a,mimeType:e}};this.bridge=new yTe(e,t,e=>this.close(e),e=>this.minimize(e),r,i.onAttachImage??(()=>{}),a),this.callbacks=n,this.autoOpenBehavior=i.autoOpenBehavior??`activate`,this.onSendToSprinkle=i.onSendToSprinkle,this.inlineSprinkles=i.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&D9.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=A9();if(e!==null){for(let t of e)try{await this.open(t)}catch{D9.warn(`Failed to restore sprinkle`,{name:t})}return}else{let e=localStorage.getItem(O9);if(e)try{let t=JSON.parse(e);for(let e of t)try{await this.open(e)}catch{D9.warn(`Failed to restore sprinkle`,{name:e})}}finally{try{localStorage.removeItem(O9)}catch{}}else{let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(r.autoOpen&&!t.has(r.name))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{D9.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}}}catch{}await this.surfaceUnseenSprinkles()}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:i.autoOpen?n:!0}),i.autoOpen&&r.add(i.name),D9.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{D9.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){try{let e=localStorage.getItem(M9);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(M9,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(N9);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(N9,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(O9,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,j9([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<NTe))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name))if(i=!0,a.autoOpen){if(n.has(a.name)){D9.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),D9.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{D9.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),D9.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{D9.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await TTe(this.fs),D9.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){D9.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){D9.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){D9.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){D9.info(`Sprinkle already open`,{name:e});return}let r=this.availableSprinkles.get(e);if(r||=(await this.refresh(),this.availableSprinkles.get(e)),!r)throw Error(`Sprinkle not found: ${e}`);let i=await this.fs.readFile(r.path,{encoding:`utf-8`});if(i==null)throw Error(`Failed to read sprinkle content: ${r.path} (file may be corrupted or missing)`);let a=typeof i==`string`?i:new TextDecoder(`utf-8`).decode(i),o=document.createElement(`div`);o.className=`sprinkle-panel`,o.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;`,o.dataset.sprinkle=e,this.openSprinkles.set(e,{renderer:null,container:o}),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,r.title,o,t,{...n,icon:r.icon});let s=new yL(o,this.bridge.createAPI(e));await s.render(a,e),this.openSprinkles.get(e).renderer=s,this.persistOpenSprinkles(),lSe(e),D9.info(`Sprinkle opened`,{name:e,title:r.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),D9.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t){if(this.attentionOnly.has(e)){this.markActivated(e);return}if(!this.openSprinkles.has(e))try{await this.open(e,t)}catch(t){D9.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),D9.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),D9.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}setupWatcher(e){let t=null,n=()=>{t||=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{D9.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=MTe.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),n));this.watcherUnsub=()=>{for(let e of r)e();t&&=(clearTimeout(t),null)}}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t){let n=this.openSprinkles.get(e);if(!n){D9.warn(`Cannot send to closed sprinkle`,{name:e});return}if(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),this.onSendToSprinkle)try{this.onSendToSprinkle(e,t)}catch(t){D9.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}},PTe=100,F9=6,I9=null,L9=null,R9=null;function FTe(){return I9||(I9=document.createElement(`div`),I9.className=`s2-tooltip`,document.body.appendChild(I9)),I9}function ITe(e){let t=e.getAttribute(`data-tooltip`);if(!t)return;let n=FTe();n.textContent=t,n.classList.remove(`s2-tooltip--visible`),n.style.left=`0`,n.style.top=`0`;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect(),a=e.getAttribute(`data-tooltip-pos`)||`bottom`,o,s;a===`top`?(o=r.top-i.height-F9,s=r.left+r.width/2-i.width/2):a===`right`?(o=r.top+r.height/2-i.height/2,s=r.right+F9):a===`left`?(o=r.top+r.height/2-i.height/2,s=r.left-i.width-F9):(o=r.bottom+F9,s=r.left+r.width/2-i.width/2),a===`bottom`&&o+i.height>window.innerHeight-4?o=r.top-i.height-F9:a===`top`&&o<4?o=r.bottom+F9:a===`left`&&s<4?s=r.right+F9:a===`right`&&s+i.width>window.innerWidth-4&&(s=r.left-i.width-F9),s<4&&(s=4),s+i.width>window.innerWidth-4&&(s=window.innerWidth-i.width-4),o<4&&(o=4),o+i.height>window.innerHeight-4&&(o=window.innerHeight-i.height-4),n.style.top=`${o}px`,n.style.left=`${s}px`,n.classList.add(`s2-tooltip--visible`)}function z9(){L9&&=(clearTimeout(L9),null),R9=null,I9?.classList.remove(`s2-tooltip--visible`)}function LTe(){document.addEventListener(`pointerover`,e=>{let t=e.target.closest?.(`[data-tooltip]`);t&&t===R9||(z9(),t&&(R9=t,L9=setTimeout(()=>ITe(t),PTe)))},!0),document.addEventListener(`pointerout`,e=>{if(!R9)return;let t=e.relatedTarget;t&&R9.contains(t)||z9()},!0),document.addEventListener(`pointerdown`,z9,!0)}var B9=Wv(`welcome-sentinel`),RTe=`/shared/.welcomed`;function zTe(e){if(!e.isWriter){B9.info(`Welcome sentinel write skipped (OPFS follower — read-only tab)`);return}e.writableFs.writeFile(RTe,`1`).catch(e=>B9.warn(`Failed to persist welcome completion marker`,e))}var $=Wv(`main`),V9=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),H9=`slicc:welcome-flow-fired`;function U9(){try{let e=typeof localStorage<`u`?localStorage.getItem(H9):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function W9(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(H9,JSON.stringify([...e]))}catch{}}function G9(e,t,n,r){if(V9.has(e)&&t.has(e)){$.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}V9.has(e)&&(t.add(e),W9(t)),n()}var K9=`slicc-pending-mount`,q9=`pendingMount`,J9=new Set([`welcome`]);function Y9(){try{let e=new URLSearchParams(window.location.search).get(`ui-fixture`);return e===null?!1:e===``||e===`1`||e.toLowerCase()===`true`}catch{return!1}}async function X9(e){let[{createChatFixture:t,FIXTURE_SESSION_ID:n,FIXTURE_SCOOP_NAME:r}]=await Promise.all([I(()=>import(`./chat-fixture-CLDS_yKK.js`),[])]);await e.switchToContext(n,!0,r),e.loadMessages(t());let i=new URLSearchParams(window.location.search).get(`compacting`);(i===`summarizing`||i===`extracting-memory`)&&e.setCompactionState?.(i),$.info(`Loaded UI fixture session for design iteration`)}async function BTe(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(K9,1);n.onupgradeneeded=()=>n.result.createObjectStore(`handles`),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),n=t.transaction(`handles`,`readwrite`);n.objectStore(`handles`).put(e,q9),await new Promise(e=>n.oncomplete=()=>e()),t.close()}async function Z9(e){let t;try{t=await new Promise((e,t)=>{let n=indexedDB.open(K9,1);n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}catch{return}let n=t.transaction(`handles`,`readwrite`),r=await new Promise(e=>{let t=n.objectStore(`handles`).get(q9);t.onsuccess=()=>e(t.result),t.onerror=()=>e(void 0)});if(r){n.objectStore(`handles`).delete(q9),await new Promise(e=>n.oncomplete=()=>e());let t=`/mnt/${r.name}`,i=jy.fromHandle(r,{mountId:My()});await e.mount(t,i),$.info(`Mounted folder from welcome onboarding`,{name:r.name,path:t})}t.close()}function VTe(){let e=document.createElement(`div`);e.className=`skill-drop-overlay`;let t=document.createElement(`div`);t.className=`skill-drop-overlay__card`;let n=document.createElement(`div`);n.className=`skill-drop-overlay__title`,t.appendChild(n);let r=document.createElement(`div`);return r.className=`skill-drop-overlay__desc`,t.appendChild(r),e.appendChild(t),document.body.appendChild(e),{show(t,i){n.textContent=t,r.textContent=i,e.classList.add(`skill-drop-overlay--visible`)},hide(){e.classList.remove(`skill-drop-overlay--visible`)}}}function HTe(){let e=document.createElement(`div`);return e.className=`skill-drop-toast-container`,document.body.appendChild(e),(t,n)=>{let r=document.createElement(`div`);r.className=`skill-drop-toast skill-drop-toast--${n}`,r.textContent=t,e.appendChild(r),requestAnimationFrame(()=>r.classList.add(`skill-drop-toast--visible`)),window.setTimeout(()=>{r.classList.remove(`skill-drop-toast--visible`),window.setTimeout(()=>r.remove(),180)},4200)}}function UTe(e,t,n,r){let i=VTe(),a=0,o=!1,s=()=>{a=0,o||i.hide()};window.addEventListener(`dragenter`,e=>{h9(e.dataTransfer)&&(e.preventDefault(),a+=1,o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragover`,e=>{h9(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragleave`,()=>{a!==0&&(a=Math.max(0,a-1),a===0&&!o&&i.hide())}),window.addEventListener(`dragend`,s),window.addEventListener(`blur`,s),window.addEventListener(`drop`,async c=>{let l=oTe(c.dataTransfer),u=sTe(c.dataTransfer);if(!l&&u.length===0){s();return}if(c.preventDefault(),a=0,l&&o){i.hide(),t(`Another .skill installation is already in progress.`,`error`);return}if(u.length>0&&r)try{await r(u)}catch(e){t(`Failed to attach dropped files: ${e instanceof Error?e.message:String(e)}`,`error`)}if(l){o=!0,i.show(`Installing skill…`,l.name);try{let r=await XI(e,l);await n(),t(`Installed "${r.skillName}" to ${r.destinationPath} (${r.fileCount} files).`,`success`)}catch(e){t(`Failed to install dropped skill: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{o=!1,i.hide()}}else i.hide()})}async function WTe(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}async function Q9(e,t,n){if(await Fae())return;let r=e?await WTe(e):{},{getSelectedModelId:i,getProviderConfig:a,getProviderModels:o}=await I(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await Promise.resolve().then(()=>l8);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},void 0),s=(()=>{try{return i()||null}catch{return null}})(),c=(()=>{if(!s)return null;try{return o(t).find(e=>e.id===s)?.name??s}catch{return s}})(),l=null;try{l=a(t).name??null}catch{}n({action:`onboarding-complete-with-provider`,data:{profile:r,provider:t,providerName:l,model:s,modelLabel:c,validation:`preexisting`}})}async function $9(e,t){let n=t?.detached===!0,{OffscreenClient:r}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-BujqsTo-.js`);return{OffscreenClient:e}},[]),{VirtualFS:i,resolveVfsBackendFromEnv:a}=await I(async()=>{let{VirtualFS:e,resolveVfsBackendFromEnv:t}=await Promise.resolve().then(()=>FI);return{VirtualFS:e,resolveVfsBackendFromEnv:t}},void 0),{publishAgentBridgeProxy:o}=await I(async()=>{let{publishAgentBridgeProxy:e}=await import(`./agent-bridge--aoB7za4.js`);return{publishAgentBridgeProxy:e}},[]),{warnIfPanelVfsConstructionUnderOpfs:s}=await I(async()=>{let{warnIfPanelVfsConstructionUnderOpfs:e}=await import(`./panel-vfs-guard-1E455_lR.js`);return{warnIfPanelVfsConstructionUnderOpfs:e}},[]),c=new S7(e,!n);await c.panels.chat.initSession(`session-cone`),o();let l=null,u=a();s(u,$);let d=u===`opfs`,f=await i.create({dbName:`slicc-fs`,...d?{backend:`memory`}:{}});d||(c.panels.fileBrowser.setFs(f),$.info(`File browser wired to shared VFS (local IndexedDB)`)),Yy().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await Zy(e,f,$);t.length!==0&&$.warn(`Some mounts could not be recovered in the panel VFS`,{count:t.length,paths:t.map(e=>e.path)})}).catch(e=>$.warn(`Failed to restore persisted mounts in panel VFS`,e));let p=f;d9({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>p,logger:$}),UTe(f,HTe(),async()=>{await c.panels.fileBrowser.refresh()},e=>c.panels.chat.addAttachmentsFromFiles(e));{let{registerSessionCostsProvider:e}=await I(async()=>{let{registerSessionCostsProvider:e}=await import(`./cost-command-BJFKPD-9.js`);return{registerSessionCostsProvider:e}},[]);e(()=>new Promise(e=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`get-session-costs`}},t=>{if(chrome.runtime.lastError||!t?.ok){e([]);return}e(t.costs??[])})}))}let m,h=new Set,g=async e=>{l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid),c.setScoopSwitcherSelected?.(e.jid),c.panels.scoops.setSelectedJid(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await c.panels.chat.switchToContext(t,!e.isCone,n),m.requestScoopMessages(e.jid),m.isProcessing(e.jid)&&c.panels.chat.setProcessing(!0),ee(e)};m=new r({onStatusChange:(e,t)=>{c.panels.scoops.updateScoopStatus(e,t),c.updateScoopSwitcherStatus?.(e,t),l?.jid===e&&(c.setAgentProcessing(t===`processing`),t===`processing`?c.panels.chat.setProcessing(!0):t===`ready`&&c.panels.chat.setProcessing(!1))},onScoopCreated:e=>{c.panels.scoops.refreshScoops(),c.refreshScoopSwitcher?.(),l||(l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid))},onScoopListUpdate:()=>{let e=new Set(m.getScoops().map(e=>e.folder));for(let t of h)e.has(t)||c.panels.chat.deleteSessionById(`session-${t}`);if(h=e,c.panels.scoops.refreshScoops(),c.refreshScoopSwitcher?.(),!l){let e=m.getScoops().find(e=>e.isCone);e&&(l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid))}},onIncomingMessage:(e,t)=>{if(Q4(t.channel)){let n=new Date(t.timestamp).getTime(),r=t.channel;if(l?.jid===e)c.panels.chat.addLickMessage(t.id,t.content,r,n);else{let i=m.getScoops().find(t=>t.jid===e),a=i?.isCone?`session-cone`:i?`session-${i.folder}`:`session-${e}`;c.panels.chat.persistLickToSession(a,{id:t.id,content:t.content,channel:r,timestamp:n})}return}if(l?.jid===e){let e=t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content;c.panels.chat.addUserMessage(e,t.attachments)}},onScoopMessagesReplaced:(e,t)=>{l?.jid===e&&c.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{l?.jid===e&&c.panels.chat.setCompactionState(t)},onReady:async()=>{try{$.info(`Offscreen engine ready, scoop count:`,m.getScoops().length);let e=window.localStorage.getItem(yb);e&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:e,workerBaseUrl:window.localStorage.getItem(vb)}}).catch(()=>{});let t=l??m.getScoops().find(e=>e.isCone)??m.getScoops()[0];t&&(l=t,m.setSelectedScoopJid(t.jid),await g(t))}catch(e){$.error(`Failed to initialize on ready`,{error:e instanceof Error?e.message:String(e)})}}}),chrome.runtime.onMessage.addListener(e=>(!Ug(e)||e.source!==`service-worker`||e.payload.type!==`detached-active`||n||nL(m,c),!1)),n&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>{}),n||(c.setShowPopoutButton(!0),c.setPopoutClickHandler(()=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e),c.resetPopoutButton()})})),m.setLocalFS(f);let _=f;if(d){let{createRemoteVfsClient:e}=await I(async()=>{let{createRemoteVfsClient:e}=await import(`./remote-vfs-client-Cm2KnQKl.js`);return{createRemoteVfsClient:e}},[]),{createRemoteWritableVfsClient:t}=await I(async()=>{let{createRemoteWritableVfsClient:e}=await import(`./writable-vfs-client-CmIlnwCv.js`);return{createRemoteWritableVfsClient:e}},[]),n=e({transport:m.getTransport()}),r=t({transport:m.getTransport()});c.panels.fileBrowser.setFs(n),p=n,_=r,$.info(`File browser + preview-vfs wired to worker VFS RPC`)}(async()=>{try{let{RemoteTerminalView:e}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-D53aNTEz.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:t}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-ChcPNQmy.js`);return{fetchSecretEnvVars:e}},[]),n=await t(),r=new e({client:m,cwd:`/`,env:Object.keys(n).length>0?n:void 0});await c.panels.terminal.mountRemoteShell(r),window.addEventListener(`beforeunload`,()=>r.dispose(),{once:!0}),$.info(`Panel terminal mounted as RemoteTerminalView (offscreen TerminalSessionHost)`)}catch(e){$.warn(`Failed to mount remote terminal view`,e)}})(),c.panels.chat.setAttachmentWriter(tL(f));let v=m.createAgentHandle();c.panels.chat.setAgent(v),c.panels.scoops.setOrchestrator(m),c.panels.memory.setOrchestrator(m),c.setScoopSwitcherOrchestrator?.(m),c.setScoopSwitcherTranscriptSource?.(e=>m.getScoopTranscript(e)),c.setScoopsRailTranscriptSource?.(e=>m.getScoopTranscript(e)),c.onScoopSelect=g;let ee=e=>{let t=e.config?.modelId,n=t?t5(t):n5();c.panels.chat.setModelSupportsReasoning(!!n.reasoning,Kc(n).includes(`xhigh`)),c.panels.chat.setThinkingLevel(e.config?.thinkingLevel)};c.onModelChange=e=>{localStorage.setItem(`selected-model`,e),m.updateModel(),l&&ee(l)},c.onThinkingLevelChange=e=>{l&&m.setScoopThinkingLevel(l.jid,e)},c.onModelsRefreshed=()=>{l&&ee(l)},c.onClearChat=async e=>{if(e?.freeze===`quick`)try{await D7({vfs:_})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await E7({vfs:_})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await c.panels.chat.deleteSessionById(`session-cone`),await m.clearAllMessages()},c.onClearFilesystem=async()=>{m.clearFilesystem()};let{OnboardingOrchestrator:y}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-BD4FQQVL.js`);return{OnboardingOrchestrator:e}},[]),b=RL,{getAvailableProviders:te,getProviderConfig:ne,getProviderModels:re,addAccount:x,setSelectedModelId:ie,getAccounts:S,isModelHiddenFromPicker:C,providerOffersLlmModels:ae}=await I(async()=>{let{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>l8);return{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:oe,resolveDeviceCodeDecision:se}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),ce=()=>{let e=te().filter(e=>ae(e)),t=e.map(e=>{let t=ne(e);return{id:t.id,name:t.name,description:t.description,requiresApiKey:t.requiresApiKey??!0,requiresBaseUrl:t.requiresBaseUrl??!1,requiresDeployment:!!t.requiresDeployment,requiresApiVersion:!!t.requiresApiVersion,apiKeyPlaceholder:t.apiKeyPlaceholder??void 0,apiKeyEnvVar:t.apiKeyEnvVar??void 0,defaultBaseUrl:t.baseUrlPlaceholder??void 0,baseUrlDescription:t.baseUrlDescription??void 0,deploymentPlaceholder:t.deploymentPlaceholder??void 0,deploymentDescription:t.deploymentDescription??void 0,apiVersionDefault:t.apiVersionDefault??void 0,apiVersionDescription:t.apiVersionDescription??void 0,isOAuth:!!t.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),n={};for(let t of e)try{n[t]=re(t).filter(e=>!C(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}},w=null,T=()=>w||(w=new y({fs:f,postSystemMessage:e=>c.panels.chat.addSystemMessage(e),postDipReference:e=>c.panels.chat.addSystemMessage(e),getProviderCatalogue:ce,saveAccount:(e,t,n,r,i)=>x(e,t,n,r,i),setSelectedModel:e=>ie(e),resolveModelLabel:(e,t)=>{try{return re(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>b(e),fireFinalLick:e=>{k7(m),G9(String(e?.action??``),E,()=>m.sendSprinkleLick(`welcome`,e),`orchestrator-ext`)},launchOAuth:async(e,t)=>{try{let n=ne(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&x(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DbPObLKr.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),t=await e();if(!t)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await n.onOAuthLoginIntercepted(t,()=>void 0,{presentDeviceCode:oe({broadcastToDip:b})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DbPObLKr.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:A7(e,n,re,C)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),w),E=U9(),D=e=>{if(e.type!==`sprinkle`)return!1;let t=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(t&&V9.has(t)){if(E.has(t))return $.debug(`Suppressing duplicate welcome lick (ext)`,{action:t}),!0;E.add(t),W9(E)}if(!(t===`first-run`||t===`onboarding-complete`||t===`connect-ready`||t===`connect-attempt`||t===`oauth-attempt`||t===`device-code-decision`||t===`shortcut-migrate`))return!1;let n=e.body,r=t;if(r===`device-code-decision`){let e=n?.data?.decision;return se(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return T().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=T(),t=n?.data??{};return t.mountWorkspace&&Z9(f).catch(e=>$.warn(`Failed to mount workspace from onboarding`,e)),e.handleOnboardingComplete(t).catch(e=>$.warn(`OnboardingOrchestrator failed`,e)),!0}if(r===`connect-ready`){let e=S();if(e.length>0){let t=e[0],n=(()=>{try{return ne(t.providerId)}catch{return null}})();return b({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(f,t.providerId,e=>{G9(String(e.action??``),E,()=>m.sendSprinkleLick(`welcome`,e),`fast-forward-ext`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return T().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&T().handleConnectAttempt({provider:String(e.provider??``),apiKey:String(e.apiKey??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null,deployment:typeof e.deployment==`string`&&e.deployment?String(e.deployment):null,apiVersion:typeof e.apiVersion==`string`&&e.apiVersion?String(e.apiVersion):null,model:e.model==null?null:String(e.model)}).catch(e=>$.warn(`handleConnectAttempt failed`,e)),!0}if(r===`oauth-attempt`){let e=n?.data;return e&&T().handleOAuthAttempt({provider:String(e.provider??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null}).catch(e=>$.warn(`handleOAuthAttempt failed`,e)),!0}return r===`shortcut-migrate`?(f.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};c.panels.chat.onDipLick=(e,t)=>{D({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||m.sendSprinkleLick(`inline`,{action:e,data:t})};let O=new P9(f,async e=>{if(e.type===`sprinkle`){if(D(e)){e.body?.action===`shortcut-migrate`&&O.close(`welcome`);return}if(e.sprinkleName===`welcome`&&e.body?.action===`request-mount`){try{let e=await Ty();if(e.cancelled){O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(e.error){$.warn(`Mount picker popup failed`,e.error),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(!e.handleInIdb||typeof e.idbKey!=`string`){$.warn(`Mount picker popup returned unexpected result`,e),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}let t=await Dy(e.idbKey);if(!t){$.warn(`Mount picker popup did not store a handle`),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}await Oy(t),await BTe(t),O.sendToSprinkle(`welcome`,{action:`mount-complete`,dirName:t.name})}catch(e){$.warn(`Mount picker failed`,e),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`})}return}m.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>c.addSprinkle(e,t,n,r,i),removeSprinkle:e=>c.removeSprinkle(e),minimizeSprinkle:e=>c.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>c.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>c.unregisterSprinkle(e),closeSprinkleContent:e=>c.closeSprinkleContent(e)},()=>{let e=m.getScoops().find(e=>e.isCone);e&&m.stopScoop(e.jid)},{autoOpenBehavior:`attention`,onAttachImage:(e,t,n)=>c.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9});window.__slicc_sprinkleManager=O,window.__slicc_reloadSkills=()=>(chrome.runtime.sendMessage({source:`panel`,payload:{type:`reload-skills`}}),Promise.resolve()),m.setSprinkleOpHandler(e=>{let{id:t,op:n,name:r,data:i}=e;console.log(`[main-ext] sprinkle-op handler called`,{id:t,op:n,name:r}),(async()=>{try{let e;switch(n){case`list`:await O.refresh(),e=O.available();break;case`opened`:e=O.opened();break;case`refresh`:await O.refresh(),e=O.available().length;break;case`open`:await O.open(r),e=!0;break;case`close`:O.close(r),e=!0;break;case`send`:O.sendToSprinkle(r,i),e=!0;break;case`openNewAutoOpen`:await O.openNewAutoOpenSprinkles(),e=!0;break}console.log(`[main-ext] sprinkle-op response sending`,{id:t,op:n,result:typeof e}),chrome.runtime.sendMessage({source:`panel`,payload:{type:`sprinkle-op-response`,id:t,result:e}}).catch(()=>{})}catch(e){chrome.runtime.sendMessage({source:`panel`,payload:{type:`sprinkle-op-response`,id:t,error:e instanceof Error?e.message:String(e)}}).catch(()=>{})}})()}),await O.refresh(),c.onSprinkleClose=e=>O.close(e),c.onSprinkleActivate=e=>{O.activate(e)},c.getAvailableSprinkles=()=>[],c.onOpenSprinkle=(e,t)=>O.open(e,t),c.resolveSprinkleIcon=e=>x9(e,f),c.updateAddButtons(),await O.restoreOpenSprinkles();let{PanelFollowerSprinkleProxy:le}=await I(async()=>{let{PanelFollowerSprinkleProxy:e}=await import(`./follower-sprinkle-bridge-BnXbVmXR.js`);return{PanelFollowerSprinkleProxy:e}},[]),{SprinkleFollowerController:k}=await I(async()=>{let{SprinkleFollowerController:e}=await Promise.resolve().then(()=>Uwe);return{SprinkleFollowerController:e}},void 0),A={send(e){chrome.runtime.sendMessage(e).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||$.error(`Panel → offscreen sendMessage failed`,{error:t})})}},j={onMessage(e){let t=t=>(!t||typeof t!=`object`||!(`source`in t)||!(`payload`in t)||e(t),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)}},ue=null;ue=new k({sync:new le(A,j,{onSprinklesList:e=>void ue?.updateAvailable(e),onSprinkleUpdate:(e,t)=>ue?.handleSprinkleUpdate(e,t)}),addSprinkle:(e,t,n,r,i)=>c.addSprinkle(e,t,n,r,i),removeSprinkle:e=>c.removeSprinkle(e)});let de=XL({sender:{send(e){chrome.runtime.sendMessage(e).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||$.error(`Panel → offscreen sendMessage failed (leader)`,{error:t})})}},subscriber:{onMessage(e){let t=t=>(!t||typeof t!=`object`||!(`source`in t)||!(`payload`in t)||e(t),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)}},sprinkleManager:O,client:m,chat:c.panels.chat,log:$});if(window.addEventListener(`beforeunload`,()=>de.dispose(),{once:!0}),!f.getWatcher()){let{FsWatcher:e}=await I(async()=>{let{FsWatcher:e}=await Promise.resolve().then(()=>FI);return{FsWatcher:e}},void 0);f.setWatcher(new e)}let fe=f.getWatcher();fe&&O.setupWatcher(fe),!await f.exists(`/shared/.welcomed`)&&localStorage.getItem(`slicc-welcomed`)&&(await f.writeFile(`/shared/.welcomed`,`1`).catch(()=>{}),localStorage.removeItem(`slicc-welcomed`)),Tb(window.localStorage)||Ub(f).then(e=>{e.isFirstRun&&(E.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),E.delete(`first-run`),W9(E)),E.add(`first-run`),W9(E),T().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e)),$.info(`SprinkleManager initialized (extension mode)`),m.requestState(),$.info(`Extension UI connected to offscreen agent engine`);let{installNukeReloadListener:pe}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-Be-RNfyH.js`);return{installNukeReloadListener:e}},[]);pe(),Y9()&&await X9(c.panels.chat),r8().catch(()=>{}),O7(_)}async function GTe(e,t){let n=t===`electron-overlay`;$.info(`starting standalone with kernel worker`);let{spawnKernelWorker:r}=await I(async()=>{let{spawnKernelWorker:e}=await import(`./spawn-BQcHMJGU.js`);return{spawnKernelWorker:e}},__vite__mapDeps([31,32])),{installPageStorageSync:i}=await I(async()=>{let{installPageStorageSync:e}=await import(`./page-storage-sync-BMnuL0eG.js`);return{installPageStorageSync:e}},[]),{VirtualFS:a,resolveVfsBackendFromEnv:o}=await I(async()=>{let{VirtualFS:e,resolveVfsBackendFromEnv:t}=await Promise.resolve().then(()=>FI);return{VirtualFS:e,resolveVfsBackendFromEnv:t}},void 0),{BrowserAPI:s}=await I(async()=>{let{BrowserAPI:e}=await import(`./cdp-DzsLEquc.js`);return{BrowserAPI:e}},[]),{createMigrationSplash:c}=await I(async()=>{let{createMigrationSplash:e}=await import(`./migration-splash-D-cAt2r9.js`);return{createMigrationSplash:e}},[]),l=await kb(),u=nTe(n?`electron-overlay`:`standalone`,l!==null)?bb:null;await Ob({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:u,runtimeConfigFetcher:async()=>l});let d=new S7(e,n);if(n){let e=p9(window.location.href);d.setActiveTab(e);let t=document.createElement(`style`);t.id=`slicc-electron-overlay-runtime-style`,t.textContent=`
|
|
1655
|
+
Long press — discard without saving`),n.setAttribute(`label`,`New session. Click to start a new session and keep memory. Double-click for fastest reset — memory extracts in background. Long press to discard without saving.`),this.newSessionBtn=n,n.innerHTML=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z"/></svg>`;let r=async e=>{this.onClearChat?await this.onClearChat(e):await this.panels.chat.clearSession(),location.reload()};n.addEventListener(`short-click`,()=>void r({freeze:!0})),n.addEventListener(`long-press`,()=>void r({freeze:!1})),n.addEventListener(`double-click`,()=>void r({freeze:`quick`}));let i=document.createElement(`div`);i.className=`thread-header__actions`,i.appendChild(n),this.threadHeaderEl.appendChild(i),this.leftEl.appendChild(this.threadHeaderEl);let a=document.createElement(`div`);a.style.cssText=`display: flex; flex-direction: column; flex: 1; min-height: 0;`,this.leftEl.appendChild(a),e.appendChild(this.leftEl),this.verticalDivider=document.createElement(`div`),this.verticalDivider.className=`layout__divider layout__divider--vertical`,e.appendChild(this.verticalDivider),this.rightContentEl=document.createElement(`div`),this.rightContentEl.className=`rail-content rail-content--collapsed`,e.appendChild(this.rightContentEl),this.railEl=document.createElement(`div`),this.railEl.setAttribute(`aria-label`,`Side panel rail`),e.appendChild(this.railEl),this.rightEl=this.rightContentEl,this.primaryRail=new owe(this.railEl,this.rightContentEl,`primary`,{onItemActivate:e=>{e===`terminal`&&this.panels?.terminal?.refit(),e===`memory`&&this.panels?.memory?.refresh(),e.startsWith(`sprinkle-`)&&this.onSprinkleActivate?.(e.slice(9))},onItemClose:e=>{let t=e.startsWith(`sprinkle-`)?e.slice(9):e;this.onSprinkleClose?.(t)},onAddClick:()=>this.showPickerForZone(`primary`,this.railEl),onFullpageToggle:e=>{this.layoutRootEl.classList.toggle(`layout--rail-fullpage`,e)}},{defaultFullpage:this.isExtension}),this.isExtension&&(this.avatarEl=this.buildUserAvatar(),this.avatarEl.classList.add(`rail__avatar`),this.primaryRail.mountTopWidget(this.avatarEl)),this.terminalContainer=document.createElement(`div`),this.terminalContainer.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: hidden; flex: 1;`;let o=document.createElement(`div`);o.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: hidden; flex: 1;`,this.memoryContainer=document.createElement(`div`),this.memoryContainer.style.cssText=`display: flex; flex-direction: column; min-height: 0; flex: 1;`,this.terminalIconSvg=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" x2="20" y1="19" y2="19"></line></svg>`,this.memoryIconSvg=`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z"></path><path d="M9 13a4.5 4.5 0 0 0 3-4"></path><path d="M6.003 5.125A3 3 0 0 0 6.401 6.5"></path><path d="M3.477 10.896a4 4 0 0 1 .585-.396"></path><path d="M6 18a4 4 0 0 1-1.967-.516"></path><path d="M12 13h4"></path><path d="M12 18h6a2 2 0 0 1 2 2v1"></path><path d="M12 8h8"></path><path d="M16 8V5a2 2 0 0 1 2-2"></path><circle cx="16" cy="13" r=".5"></circle><circle cx="18" cy="3" r=".5"></circle><circle cx="20" cy="21" r=".5"></circle><circle cx="20" cy="8" r=".5"></circle></svg>`,this.primaryRail.addItem({id:`terminal`,label:`Terminal`,icon:this.terminalIconSvg,element:this.terminalContainer,position:`bottom`,onActivate:()=>this.panels?.terminal?.refit()}),this.primaryRail.addItem({id:`files`,label:`Files`,icon:`<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M20 20a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.9a2 2 0 0 1-1.69-.9L9.6 3.9A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13a2 2 0 0 0 2 2Z"></path></svg>`,element:o,position:`bottom`}),this.primaryRail.addItem({id:`memory`,label:`Memory`,icon:this.memoryIconSvg,element:this.memoryContainer,position:`bottom`,onActivate:()=>this.panels?.memory?.refresh()}),this.primaryRail.enableAddButton(),this.iframeContainer=document.createElement(`div`),this.iframeContainer.id=`scoop-iframes`,this.iframeContainer.style.display=`none`,e.appendChild(this.iframeContainer),this.root.appendChild(e),this.panels={chat:new hCe(a),terminal:new rwe(this.terminalContainer,{onClearTerminal:()=>{this.panels.terminal.clearTerminal(),this.openTerminal()}}),fileBrowser:new SCe(o,{onRunCommand:async e=>{await this.runFileBrowserCommand(e),this.openTerminal()}}),memory:new CCe(this.memoryContainer),scoops:new nwe(this.scoopsEl,{onScoopSelect:e=>{this.onScoopSelect?.(e),this.threadHeaderName.textContent=e.assistantLabel},onSendMessage:()=>{},onScoopsChanged:e=>this.updateLogoScoops(e),onFrozenSessionOpen:e=>this.onFrozenSessionOpen?.(e)})},this.panels.chat.onModelChange=e=>this.onModelChange?.(e),this.panels.chat.onThinkingLevelChange=e=>this.onThinkingLevelChange?.(e),this.setupVerticalDrag(),window.addEventListener(`resize`,()=>{})}getIframeContainer(){return this.iframeContainer}async runFileBrowserCommand(e){let t=await this.panels.terminal.runCommand(e);t.exitCode!==0&&t.stderr&&console.warn(`[Layout] File browser command failed:`,t.stderr.trim())}setupVerticalDrag(){if(!this.verticalDivider)return;let e=!1,t=t=>{if(!e)return;let n=this.root.querySelector(`.layout`)?.getBoundingClientRect();if(!n)return;let r=t.clientX-n.left-58,i=n.width-58,a=Math.max(.3,Math.min(.7,r/i));this.leftEl.style.flex=`${a*100} 0 0`,this.rightEl.style.flex=`${(1-a)*100} 0 0`},n=()=>{e=!1,this.verticalDivider.classList.remove(`active`),document.body.style.cursor=``,document.body.style.userSelect=``,window.removeEventListener(`mousemove`,t),window.removeEventListener(`mouseup`,n),this.panels?.terminal?.refit()};this.verticalDivider.addEventListener(`mousedown`,r=>{r.preventDefault(),e=!0,this.verticalDivider.classList.add(`active`),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,window.addEventListener(`mousemove`,t),window.addEventListener(`mouseup`,n)})}updateAddButtons(){}showPickerForZone(e,t){let n=new Set;for(let e of this.registry.ids())e.startsWith(`sprinkle-`)&&this.registry.get(e)?.descriptor.zone!==null&&n.add(e.slice(9));let r=(this.getAvailableSprinkles?.()??[]).filter(e=>!n.has(e.name));swe(t,e,{registry:this.registry,callbacks:{onSelectPanel:(e,t)=>{this.openPanelInZone(e,t)},onSelectSprinkle:(e,t)=>{this.onOpenSprinkle?.(e,t)}},getAvailableSprinkles:()=>r})}openPanelInZone(e,t){let n=this.registry.get(e);n&&(this.registry.setZone(e,t),this.primaryRail.addItem({id:n.descriptor.id,label:n.descriptor.label,icon:x7,element:n.descriptor.element,position:`top`,closable:n.descriptor.closable,onActivate:n.descriptor.onActivate}),this.primaryRail.activateItem(e))}dynamicSprinkles=new Map;registerSprinkle(e,t,n,r){let i=`sprinkle-${e}`;if(this.dynamicSprinkles.has(e)&&this.primaryRail.hasItem(i))return;let a=r??`primary`,o=document.createElement(`div`);o.style.cssText=`display: flex; flex-direction: column; min-height: 0; overflow: auto; flex: 1;`,this.registry.has(i)||this.registry.register({id:i,label:t,zone:a,closable:!0,element:o,onClose:()=>this.onSprinkleClose?.(e)}),this.primaryRail.hasItem(i)||this.primaryRail.addItem({id:i,label:t,icon:x7,element:o,position:`top`,closable:!0}),this.dynamicSprinkles.set(e,o),n&&this.resolveSprinkleIcon&&this.resolveSprinkleIcon(n).then(e=>{e&&this.primaryRail.setItemIcon(i,e)}).catch(()=>{}),this.updateAddButtons()}unregisterSprinkle(e){let t=`sprinkle-${e}`;this.primaryRail.removeItem(t),this.registry.unregister(t),this.dynamicSprinkles.delete(e),this.updateAddButtons()}addSprinkle(e,t,n,r,i){let a=`sprinkle-${e}`,o=this.dynamicSprinkles.get(e);!o||!this.primaryRail.hasItem(a)?(this.registerSprinkle(e,t,i?.icon,r),o=this.dynamicSprinkles.get(e)):i?.icon&&this.resolveSprinkleIcon&&this.resolveSprinkleIcon(i.icon).then(e=>{e&&this.primaryRail.setItemIcon(a,e)}).catch(()=>{}),o.appendChild(n),i?.attention?this.primaryRail.markItemAttention(a):this.primaryRail.activateItem(a),this.updateAddButtons()}removeSprinkle(e){let t=`sprinkle-${e}`;this.primaryRail.removeItem(t),this.registry.unregister(t),this.dynamicSprinkles.delete(e),this.updateAddButtons()}closeSprinkleContent(e){let t=`sprinkle-${e}`,n=this.dynamicSprinkles.get(e);if(n)for(;n.firstChild;)n.firstChild.remove();this.primaryRail?.getActiveItemId()===t&&this.primaryRail.collapse()}minimizeSprinkle(e){this.primaryRail?.getActiveItemId()===`sprinkle-${e}`&&this.primaryRail.collapse()}dispose(){for(this.panels.chat.dispose(),this.panels.terminal.dispose(),this.panels.fileBrowser.dispose(),this.panels.memory.dispose(),this.panels.scoops.dispose();this.root.firstChild;)this.root.removeChild(this.root.firstChild)}};function C7(e,t){let n=document.createElement(`div`);n.setAttribute(`role`,`alert`),n.style.cssText=`position: fixed; top: 12px; left: 50%; transform: translateX(-50%); max-width: 520px; padding: 10px 14px; background: var(--slicc-cone, #c63b2c); color: white; font-size: 13px; border-radius: 6px; z-index: 99999; box-shadow: 0 4px 12px rgba(0,0,0,0.25); cursor: pointer;`,n.textContent=`Multi-browser sync: couldn’t ${e===`leave`?`leave`:`enable`} (${t}). Click to dismiss.`,n.addEventListener(`click`,()=>n.remove()),document.body.appendChild(n),setTimeout(()=>n.remove(),8e3)}var w7=Wv(`new-session`),T7=`ui-new-session`;async function E7(e){let t=X8()??void 0,n;try{n=n5()}catch(e){w7.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let r=n?.provider===`adobe`?{"X-Session-Id":s5(T7)}:void 0,i=new f5;try{await i.init()}catch(e){return w7.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}return i7({sessionStore:i,vfs:e.vfs,model:n,apiKey:t,headers:r})}async function D7(e){let t=new f5;try{await t.init()}catch(e){return w7.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}return i7({sessionStore:t,vfs:e.vfs,mode:`quick`})}async function lwe(e){let t={found:0,enriched:[]},n=[];try{n=await ZCe(e.vfs)}catch(e){return w7.warn(`Failed to list pending enrichments`,{error:e instanceof Error?e.message:String(e)}),t}if(t.found=n.length,n.length===0)return t;let r=X8()??void 0,i;try{i=n5()}catch(e){return w7.info(`No active model — skipping background enrichment`,{error:e instanceof Error?e.message:String(e)}),t}if(!r||!i)return w7.info(`LLM credentials unavailable — leaving pending entries for later boot`,{pending:n.length}),t;let a=i.provider===`adobe`?{"X-Session-Id":s5(T7)}:void 0;for(let o of n)try{let n=await QCe(e.vfs,o,{model:i,apiKey:r,headers:a});n&&t.enriched.push(n)}catch(e){w7.warn(`Background enrichment threw (entry stays pending)`,{filename:o.filename,error:e instanceof Error?e.message:String(e)})}return w7.info(`Background enrichment pass complete`,{found:t.found,enriched:t.enriched.length}),t}function O7(e,t={}){if(t.isWriter===!1){w7.info(`Background enrichment skipped (OPFS follower — read-only tab)`);return}let n=()=>{lwe({vfs:e}).catch(()=>{})},r=globalThis.requestIdleCallback;typeof r==`function`?r(n):setTimeout(n,0)}function k7(e){for(let t of[`slicc_accounts`,`selected-model`]){let n=localStorage.getItem(t);n!=null&&e.sendRaw({type:`local-storage-set`,key:t,value:n})}}function A7(e,t,n,r){let i=n(e).filter(e=>!r(e.id)),a=t.defaultModelId?i.find(e=>e.id===t.defaultModelId):void 0,o=t.defaultModelId?i.find(e=>e.id.toLowerCase().includes(t.defaultModelId.toLowerCase())):void 0,s=a??o??i[0];return s?`${e}:${s.id}`:void 0}var j7=class{logger;failureMessage;recoveryMessage;throttleMs;sustainedRelogMs;recoveryDebounceTicks;now;lastErrorLogAt=-1/0;inFailingState=!1;consecutiveSuccesses=0;constructor(e,t){if(!t.failureMessage.trim())throw RangeError(`ThrottledErrorTracker: failureMessage must be non-empty`);if(!t.recoveryMessage.trim())throw RangeError(`ThrottledErrorTracker: recoveryMessage must be non-empty`);let n=t.throttleMs??6e4;if(!Number.isFinite(n)||n<0)throw RangeError(`ThrottledErrorTracker: throttleMs must be a non-negative finite number, got ${n}`);let r=t.sustainedRelogMs??3e5;if(!Number.isFinite(r)||r<0)throw RangeError(`ThrottledErrorTracker: sustainedRelogMs must be a non-negative finite number, got ${r}`);let i=t.recoveryDebounceTicks??5;if(!Number.isInteger(i)||i<1)throw RangeError(`ThrottledErrorTracker: recoveryDebounceTicks must be a positive integer, got ${i}`);this.logger=e,this.failureMessage=t.failureMessage,this.recoveryMessage=t.recoveryMessage,this.throttleMs=n,this.sustainedRelogMs=r,this.recoveryDebounceTicks=i,this.now=t.now??(()=>performance.now())}reportFailure(e){let t=this.inFailingState;this.inFailingState=!0,this.consecutiveSuccesses=0;let n=this.now(),r=n-this.lastErrorLogAt;if(r>(t?this.sustainedRelogMs:this.throttleMs)){let i=t,a=i?`${this.failureMessage} (sustained)`:this.failureMessage;try{try{this.logger.error(a,i?{error:e instanceof Error?e.message:String(e),elapsedMs:Math.round(r)}:{error:e instanceof Error?e.message:String(e)})}catch(t){try{console.error(`[throttled-error-tracker] logger.error threw`,t,{originalMessage:a,originalError:e instanceof Error?e.message:String(e)})}catch{}}}finally{this.lastErrorLogAt=n}}}reportSuccess(){if(this.inFailingState&&(this.consecutiveSuccesses++,!(this.consecutiveSuccesses<this.recoveryDebounceTicks)))try{try{this.logger.error(this.recoveryMessage,{kind:`recovery`})}catch(e){try{console.error(`[throttled-error-tracker] logger.error (recovery) threw`,e,{originalMessage:this.recoveryMessage})}catch{}}}finally{this.inFailingState=!1,this.consecutiveSuccesses=0,this.lastErrorLogAt=-1/0}}},M7=Wv(`tray-sync`),uwe=`slicc-cherry`;function dwe(e){return typeof e==`object`&&!!e&&e.type===`cherry.host_event`}var N7=32*1024;function P7(e,t,n,r){if(r||!n)return e.send({type:`cdp.response`,requestId:t,result:n,error:r});let i=JSON.stringify(n);if(i.length<=65536)return e.send({type:`cdp.response`,requestId:t,result:n});let a=Math.ceil(i.length/N7),o=!0;for(let n=0;n<a;n++){let r=i.slice(n*N7,(n+1)*N7);if(!e.send({type:`cdp.response`,requestId:t,chunkData:r,chunkIndex:n,totalChunks:a})){o=!1,e.send({type:`cdp.response`,requestId:t,error:`Failed to send CDP response chunk ${n}/${a} (response was ${i.length} bytes)`});break}}return o}function F7(e,t){if(t.chunkIndex===void 0||t.totalChunks===void 0)return{result:t.result,error:t.error};if(t.error)return e.delete(t.requestId),{error:t.error};let n=t.requestId,r=e.get(n);if(r||(r={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.set(n,r)),r.chunks[t.chunkIndex]||(r.chunks[t.chunkIndex]=t.chunkData,r.received++),r.received>=r.totalChunks){e.delete(n);try{return{result:JSON.parse(r.chunks.join(``))}}catch(e){return{error:`Failed to reassemble CDP response: ${e instanceof Error?e.message:String(e)}`}}}return null}var I7=32*1024;function fwe(e,t,n){let r=JSON.stringify({messages:t,scoopJid:n});if(r.length<=65536)return e.send({type:`snapshot`,messages:t,scoopJid:n});let i=Math.ceil(r.length/I7),a=!0;for(let t=0;t<i;t++){let o=r.slice(t*I7,(t+1)*I7);if(!e.send({type:`snapshot_chunk`,chunkData:o,chunkIndex:t,totalChunks:i,scoopJid:n})){a=!1,M7.error(`Failed to send snapshot chunk`,{chunkIndex:t,totalChunks:i,totalSize:r.length});break}}return M7.debug(`Snapshot sent in chunks`,{totalChunks:i,totalSize:r.length}),a}function pwe(e,t){if(e||={chunks:Array(t.totalChunks),received:0,totalChunks:t.totalChunks},e.chunks[t.chunkIndex]||(e.chunks[t.chunkIndex]=t.chunkData,e.received++),e.received>=e.totalChunks)try{return{result:JSON.parse(e.chunks.join(``)),buffer:null}}catch(e){return M7.error(`Failed to reassemble snapshot`,{error:e instanceof Error?e.message:String(e)}),{result:{messages:[],scoopJid:t.scoopJid},buffer:null}}return{result:null,buffer:e}}var L7=class{channel;listeners=[];closed=!1;constructor(e){this.channel=e,this.channel.addEventListener(`message`,e=>{if(!this.closed)try{let t=JSON.parse(e.data);for(let e of this.listeners)e(t)}catch(e){M7.warn(`Failed to parse tray sync message`,{error:e instanceof Error?e.message:String(e)})}})}send(e){if(this.closed)return!1;try{return this.channel.send(JSON.stringify(e)),!0}catch(t){return M7.error(`Failed to send tray sync message`,{type:e.type,error:t instanceof Error?t.message:String(t)}),!1}}onMessage(e){return this.listeners.push(e),()=>{let t=this.listeners.indexOf(e);t>=0&&this.listeners.splice(t,1)}}close(){this.closed=!0,this.listeners.length=0,this.channel.close()}get isOpen(){return!this.closed&&this.channel.readyState===`open`}};function mwe(e){return new L7(e)}function hwe(e){return new L7(e)}var R7=class{sender;timeoutMs;pending=new Map;eventListeners=new Map;chunkBuffers=new Map;_state=`connected`;requestCounter=0;constructor(e,t=3e4){this.sender=e,this.timeoutMs=t}get state(){return this._state}async connect(){}disconnect(){this._state=`disconnected`;for(let[,{reject:e,timer:t}]of this.pending)clearTimeout(t),e(Error(`Transport disconnected`));this.pending.clear()}async send(e,t,n,r){if(this._state===`disconnected`)throw Error(`Transport disconnected`);let i=`remote-${++this.requestCounter}-${Date.now()}`,a=r??this.timeoutMs;return new Promise((r,o)=>{let s=setTimeout(()=>{this.pending.delete(i),o(Error(`Remote CDP request timed out after ${a}ms: ${e}`))},a);this.pending.set(i,{resolve:r,reject:o,timer:s}),this.sender.sendCDPRequest(i,e,t,n)})}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n)),n.add(t)}off(e,t){this.eventListeners.get(e)?.delete(t)}once(e,t){return new Promise((n,r)=>{let i=t??this.timeoutMs,a=setTimeout(()=>{this.off(e,o),r(Error(`Remote CDP event timed out: ${e}`))},i),o=t=>{clearTimeout(a),this.off(e,o),n(t)};this.on(e,o)})}handleResponse(e,t,n,r,i,a){let o=this.pending.get(e);if(!o)return;let s=F7(this.chunkBuffers,{type:`cdp.response`,requestId:e,result:t,error:n,chunkData:r,chunkIndex:i,totalChunks:a});s&&(this.pending.delete(e),clearTimeout(o.timer),s.error?o.reject(Error(s.error)):o.resolve(s.result??{}))}handleEvent(e,t){let n=this.eventListeners.get(e);if(n)for(let e of n)e(t)}},z7=Wv(`data-channel-keepalive`),B7=class{sendPing;onDead;intervalMs;maxMissed;timer=null;missedPongs=0;awaitingPong=!1;stopped=!1;constructor(e){this.sendPing=e.sendPing,this.onDead=e.onDead,this.intervalMs=e.intervalMs??1e4,this.maxMissed=e.maxMissed??3}start(){this.timer||this.stopped||(this.timer=setInterval(()=>this.tick(),this.intervalMs))}stop(){this.stopped=!0,this.timer&&=(clearInterval(this.timer),null)}receivePong(){this.awaitingPong=!1,this.missedPongs=0}receivePing(){this.missedPongs=0,this.awaitingPong=!1}get missed(){return this.missedPongs}tick(){if(!this.stopped){if(this.awaitingPong&&(this.missedPongs++,z7.debug(`Missed pong`,{missedPongs:this.missedPongs,maxMissed:this.maxMissed}),this.missedPongs>=this.maxMissed)){z7.warn(`Channel declared dead`,{missedPongs:this.missedPongs}),this.stop(),this.onDead();return}this.awaitingPong=!0,this.sendPing()}}},V7=64*1024;async function H7(e,t){try{switch(t.op){case`readFile`:return await gwe(e,t.path,t.encoding);case`writeFile`:return[await _we(e,t.path,t.content,t.encoding)];case`stat`:return[await vwe(e,t.path)];case`readDir`:return[await ywe(e,t.path)];case`mkdir`:return[await bwe(e,t.path,t.recursive)];case`rm`:return[await xwe(e,t.path,t.recursive)];case`exists`:return[await Swe(e,t.path)];case`walk`:return[await Cwe(e,t.path)];default:return[{ok:!1,error:`Unknown fs operation: ${t.op}`}]}}catch(e){return[wwe(e)]}}async function gwe(e,t,n){return(n??`utf-8`)===`utf-8`?U7(await e.readFile(t,{encoding:`utf-8`}),`utf-8`):U7(Twe(await e.readFile(t,{encoding:`binary`})),`base64`)}async function _we(e,t,n,r){if(r===`base64`){let r=Ewe(n);await e.writeFile(t,r)}else await e.writeFile(t,n);return{ok:!0,data:{type:`void`}}}async function vwe(e,t){return{ok:!0,data:{type:`stat`,stat:await e.stat(t)}}}async function ywe(e,t){return{ok:!0,data:{type:`dirEntries`,entries:await e.readDir(t)}}}async function bwe(e,t,n){return await e.mkdir(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function xwe(e,t,n){return await e.rm(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function Swe(e,t){return{ok:!0,data:{type:`exists`,exists:await e.exists(t)}}}async function Cwe(e,t){let n=[];for await(let r of e.walk(t))n.push(r);return{ok:!0,data:{type:`paths`,paths:n}}}function U7(e,t){if(e.length<=V7)return[{ok:!0,data:{type:`file`,content:e,encoding:t}}];let n=Math.ceil(e.length/V7),r=[];for(let i=0;i<n;i++){let a=i*V7,o=e.slice(a,a+V7);r.push({ok:!0,data:{type:`file`,content:o,encoding:t},chunkIndex:i,totalChunks:n})}return r}function wwe(e){return e instanceof Error&&`code`in e?{ok:!1,error:e.message,code:e.code}:{ok:!1,error:e instanceof Error?e.message:String(e)}}function Twe(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Ewe(e){let t=atob(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}var W7=Wv(`tray-follower-sync`),Dwe=15e3,Owe=class{options;sync;eventListeners=new Set;unsubscribe;keepalive;latestSnapshot=null;sentMessageIds=new Set;targetEntries=[];remoteTransports=new Map;cdpChunkBuffers=new Map;snapshotChunkBuffer=null;remoteCDPSessions=new Set;cdpEventCleanups=[];tabOpenResolvers=new Map;fsResolvers=new Map;latestSprinkles=[];sprinkleContentCache=new Map;pendingSprinkleFetches=new Map;inflightSprinkleByName=new Map;sprinkleContentWaiters=new Map;cacheEpoch=0;fetchEpoch=new Map;constructor(e,t={}){this.options=t;let n=t.sprinkleFetchTimeoutMs;if(n!==void 0&&(!Number.isFinite(n)||n<0))throw RangeError(`sprinkleFetchTimeoutMs must be a non-negative finite number (0 disables the timer); got ${n}`);this.sync=hwe(e),this.unsubscribe=this.sync.onMessage(e=>{this.handleLeaderMessage(e)}),this.keepalive=new B7({sendPing:()=>this.sync.send({type:`ping`}),onDead:()=>{W7.warn(`Leader keepalive dead, cleaning up`),this.handleDisconnect(`Keepalive timeout — leader not responding`),this.options.onDead?.()}}),this.keepalive.start(),e.addEventListener(`close`,()=>{W7.warn(`Data channel closed`),this.handleDisconnect(`Data channel closed`)}),e.addEventListener(`error`,()=>{W7.warn(`Data channel error`),this.handleDisconnect(`Data channel error`)})}sendMessage(e,t,n){let r=t??`follower-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.sentMessageIds.add(r);let i=n?.length?Iv(n):n;this.sync.send({type:`user_message`,text:e,messageId:r,attachments:i}),W7.info(`Sent user message to leader`,{messageId:r})}onEvent(e){return this.eventListeners.add(e),()=>this.eventListeners.delete(e)}stop(){this.sync.send({type:`abort`}),W7.info(`Sent abort to leader`)}requestSnapshot(){this.sync.send({type:`request_snapshot`})}getLatestSnapshot(){return this.latestSnapshot}close(){this.disconnected||(this.disconnected=!0,this.keepalive.stop(),this.unsubscribe(),this.sync.close(),this.eventListeners.clear(),this.cleanupCDPEventForwarding(),this.rejectPendingRequests(`Follower sync closed`),W7.info(`Follower sync closed`))}rejectPendingRequests(e){this.rejectPendingSprinkleFetches(e);let t=Error(e);for(let{reject:e}of this.tabOpenResolvers.values())e(t);this.tabOpenResolvers.clear();for(let{reject:e}of this.fsResolvers.values())e(t);this.fsResolvers.clear(),this.cdpChunkBuffers.clear();for(let e of this.remoteTransports.values())e.disconnect();this.remoteTransports.clear()}advertiseTargets(e,t){this.sync.send({type:`targets.advertise`,targets:e,runtimeId:t})}getTargets(){return this.targetEntries}sendCherryHostEvent(e,t){this.sync.send({type:`cherry.host_event`,targetId:this.options.selfRuntimeId??``,name:e,detail:t})}getSprinkles(){return this.latestSprinkles}refreshSprinkles(){this.sync.send({type:`sprinkles.refresh`})}fetchSprinkleContent(e){let t=this.sprinkleContentCache.get(e);if(t!==void 0)return Promise.resolve(t);let n=this.options.sprinkleFetchTimeoutMs??Dwe;return new Promise((t,r)=>{let i=Symbol(`sprinkle-waiter`),a,o=e=>{a!==void 0&&clearTimeout(a),t(e)},s=e=>{a!==void 0&&clearTimeout(a),r(e)},c=this.sprinkleContentWaiters.get(e)??[];if(c.push({id:i,resolve:o,reject:s}),this.sprinkleContentWaiters.set(e,c),n>0&&(a=setTimeout(()=>{let t=this.sprinkleContentWaiters.get(e);if(t){let r=t.findIndex(e=>e.id===i);r>=0&&t.splice(r,1),t.length===0&&(this.sprinkleContentWaiters.delete(e),this.cancelSprinkleFetch(e,`Sprinkle fetch for "${e}" timed out after ${n}ms`))}r(Error(`Sprinkle fetch for "${e}" timed out after ${n}ms`))},n)),this.inflightSprinkleByName.has(e))return;let l=`sprinkle-fetch-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;this.inflightSprinkleByName.set(e,l),this.pendingSprinkleFetches.set(l,{sprinkleName:e,chunks:new Map,totalChunks:1}),this.fetchEpoch.set(l,this.cacheEpoch),this.sync.send({type:`sprinkle.fetch`,requestId:l,sprinkleName:e})})}sendSprinkleLick(e,t,n){this.sync.send({type:`sprinkle.lick`,sprinkleName:e,body:t,targetScoop:n})||W7.warn(`sendSprinkleLick dropped: tray channel closed`,{sprinkleName:e})}forwardLick(e){let t=this.sync.send({type:`lick`,event:e});return t||W7.warn(`forwardLick dropped: tray channel closed`,{type:e.type}),t}clearSprinkleCache(e){e===void 0?this.sprinkleContentCache.clear():this.sprinkleContentCache.delete(e)}cancelSprinkleFetch(e,t=`fetch cancelled`){let n=this.sprinkleContentWaiters.get(e)??[];this.sprinkleContentWaiters.delete(e);let r=this.inflightSprinkleByName.get(e);if(r!==void 0&&(this.inflightSprinkleByName.delete(e),this.pendingSprinkleFetches.delete(r),this.fetchEpoch.delete(r)),n.length===0)return;let i=Error(t);for(let e of n)e.reject(i)}disconnected=!1;handleDisconnect(e){this.disconnected||(this.disconnected=!0,eF({...ZP(),state:`error`,error:e}),this.emitEvent({type:`error`,error:`Connection to leader lost: ${e}`}),this.keepalive.stop(),this.cleanupCDPEventForwarding(),this.unsubscribe(),this.sync.close(),this.rejectPendingRequests(`Follower sync disconnected: ${e}`),this.options.onDisconnect?.(e))}handleLeaderMessage(e){switch(e.type){case`snapshot`:W7.info(`Snapshot received from leader`,{messageCount:e.messages.length,scoopJid:e.scoopJid}),this.snapshotChunkBuffer=null,this.latestSnapshot={messages:e.messages,scoopJid:e.scoopJid},this.options.onSnapshot?.(e.messages,e.scoopJid);break;case`snapshot_chunk`:{let t=pwe(this.snapshotChunkBuffer,e);this.snapshotChunkBuffer=t.buffer,t.result&&(W7.info(`Chunked snapshot reassembled from leader`,{messageCount:t.result.messages.length,scoopJid:t.result.scoopJid}),this.latestSnapshot=t.result,this.options.onSnapshot?.(t.result.messages,t.result.scoopJid));break}case`agent_event`:this.emitEvent(e.event);break;case`user_message_echo`:if(this.sentMessageIds.has(e.messageId)){this.sentMessageIds.delete(e.messageId),W7.debug(`Skipping own message echo`,{messageId:e.messageId});break}W7.info(`User message echo received`,{messageId:e.messageId,scoopJid:e.scoopJid}),this.options.onUserMessage?.(e.text,e.messageId,e.scoopJid,e.attachments);break;case`status`:this.options.onStatus?.(e.scoopStatus);break;case`error`:W7.warn(`Error from leader`,{error:e.error}),this.emitEvent({type:`error`,error:e.error});break;case`targets.registry`:W7.info(`Target registry received from leader`,{targetCount:e.targets.length}),this.targetEntries=e.targets,this.options.onTargetsUpdated?.(this.targetEntries);break;case`cdp.request`:{let{requestId:t,localTargetId:n,method:r,params:i,sessionId:a}=e;this.executeLocalCDP(t,n,r,i,a);break}case`cdp.response`:this.routeCDPResponse(e);break;case`cdp.event`:for(let t of this.remoteTransports.values())t.handleEvent(e.method,e.params);break;case`tab.open`:this.executeLocalTabOpen(e.requestId,e.url);break;case`tab.opened`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.resolve(e.targetId));break}case`tab.open.error`:{let t=this.tabOpenResolvers.get(e.requestId);t&&(this.tabOpenResolvers.delete(e.requestId),t.reject(Error(e.error)));break}case`fs.request`:this.executeLocalFs(e.requestId,e.request);break;case`fs.response`:this.routeFsResponse(e.requestId,e.response);break;case`sprinkles.list`:W7.info(`Sprinkles list received from leader`,{sprinkleCount:e.sprinkles.length}),this.sprinkleContentCache.clear(),this.cacheEpoch++,this.latestSprinkles=e.sprinkles,this.options.onSprinklesList?.(e.sprinkles);break;case`sprinkle.content`:this.handleSprinkleContent(e);break;case`sprinkle.update`:W7.debug(`Sprinkle update received`,{sprinkleName:e.sprinkleName}),this.options.onSprinkleUpdate?.(e.sprinkleName,e.data);break;case`cherry.slicc_event`:this.options.onCherrySliccEvent?.(e.name,e.detail);break;case`ping`:this.keepalive.receivePing(),this.sync.send({type:`pong`});break;case`pong`:this.keepalive.receivePong(),tF(Date.now());break;default:W7.debug(`Unknown leader message type`,{type:e.type});break}}handleSprinkleContent(e){let{requestId:t,sprinkleName:n,content:r,chunkIndex:i,totalChunks:a,error:o}=e;if(o){W7.warn(`sprinkle.content error from leader`,{sprinkleName:n,error:o}),this.pendingSprinkleFetches.delete(t),this.inflightSprinkleByName.delete(n),this.fetchEpoch.delete(t);let e=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let t of e)t.reject(Error(o));return}if(!this.pendingSprinkleFetches.has(t)){W7.debug(`Dropping sprinkle.content for unknown requestId`,{sprinkleName:n,requestId:t});return}let s=null;if(i!==void 0&&a!==void 0){if(i<0||i>=a){W7.warn(`Dropping sprinkle.content with out-of-range chunkIndex`,{sprinkleName:n,chunkIndex:i,totalChunks:a});return}let e=this.pendingSprinkleFetches.get(t);if(e.totalChunks=a,e.chunks.has(i)?W7.warn(`Dropping duplicate sprinkle.content chunk`,{sprinkleName:n,chunkIndex:i}):e.chunks.set(i,r),e.chunks.size>=a){let r=[];for(let t=0;t<a;t++){let i=e.chunks.get(t);if(i===void 0){W7.warn(`Chunked sprinkle.content missing chunk after assembly`,{sprinkleName:n,missingIndex:t});return}r.push(i)}s=r.join(``),this.pendingSprinkleFetches.delete(t)}}else s=r,this.pendingSprinkleFetches.delete(t);if(s===null)return;let c=this.fetchEpoch.get(t);this.fetchEpoch.delete(t),c===this.cacheEpoch&&this.sprinkleContentCache.set(n,s),this.inflightSprinkleByName.delete(n);let l=this.sprinkleContentWaiters.get(n)??[];this.sprinkleContentWaiters.delete(n);for(let e of l)e.resolve(s)}rejectPendingSprinkleFetches(e){let t=Error(e);for(let[,e]of this.sprinkleContentWaiters)for(let n of e)n.reject(t);this.sprinkleContentWaiters.clear(),this.pendingSprinkleFetches.clear(),this.inflightSprinkleByName.clear(),this.fetchEpoch.clear()}emitEvent(e){for(let t of this.eventListeners)try{t(e)}catch(t){W7.error(`Listener error`,{eventType:e.type,error:t instanceof Error?t.message:String(t)})}}createRemoteTransport(e,t){let n=new R7({sendCDPRequest:(n,r,i,a)=>{this.sync.send({type:`cdp.request`,requestId:n,targetRuntimeId:e,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}openRemoteTab(e,t){let n=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.tabOpenResolvers.set(n,{resolve:r,reject:i}),this.sync.send({type:`tab.open`,requestId:n,targetRuntimeId:e,url:t})})}async executeLocalTabOpen(e,t){let n=this.options.browserTransport;if(!n){this.sync.send({type:`tab.open.error`,requestId:e,error:`Follower has no browser transport`});return}try{let r=(await n.send(`Target.createTarget`,{url:t,background:!0})).targetId;if(typeof r!=`string`||r.length===0){this.sync.send({type:`tab.open.error`,requestId:e,error:`Target.createTarget did not return a usable targetId`});return}this.sync.send({type:`tab.opened`,requestId:e,targetId:r}),this.options.onTargetsChanged?.()}catch(t){this.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}async executeLocalCDP(e,t,n,r,i){let a=this.options.browserTransport;if(!a){this.sync.send({type:`cdp.response`,requestId:e,error:`Follower has no browser transport`});return}try{let t=await a.send(n,r,i);if(n===`Target.attachToTarget`&&t.sessionId){let e=t.sessionId;this.remoteCDPSessions.add(e),this.setupCDPEventForwarding(a,e),W7.debug(`Tracking remote CDP session`,{remoteSessionId:e})}n===`Target.detachFromTarget`&&i&&this.remoteCDPSessions.has(i)&&(this.remoteCDPSessions.delete(i),W7.debug(`Removed remote CDP session on detach`,{sessionId:i})),P7(this.sync,e,t)}catch(t){this.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}setupCDPEventForwarding(e,t){for(let n of[`Page.frameNavigated`,`Page.loadEventFired`,`Page.domContentEventFired`,`Network.responseReceived`,`Network.loadingFinished`,`Network.requestWillBeSent`]){let r=e=>{if(e.sessionId!==t||!this.remoteCDPSessions.has(t))return;let{sessionId:r,...i}=e;this.sync.send({type:`cdp.event`,method:n,params:i,sessionId:t})};e.on(n,r),this.cdpEventCleanups.push(()=>e.off(n,r))}}cleanupCDPEventForwarding(){for(let e of this.cdpEventCleanups)e();this.cdpEventCleanups.length=0,this.remoteCDPSessions.clear()}routeCDPResponse(e){let t=F7(this.cdpChunkBuffers,e);if(t)for(let n of this.remoteTransports.values())n.handleResponse(e.requestId,t.result,t.error)}async executeLocalFs(e,t){let n=this.options.vfs;if(!n){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Follower has no VFS`}});return}let r;try{r=await H7(n,t)}catch(t){this.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:t instanceof Error?t.message:String(t)}});return}for(let t of r)this.sync.send({type:`fs.response`,requestId:e,response:t})}routeFsResponse(e,t){let n=this.fsResolvers.get(e);if(!n)return;n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}sendFsRequest(e,t){let n=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((r,i)=>{this.fsResolvers.set(n,{resolve:r,reject:i,responses:[]}),this.sync.send({type:`fs.request`,requestId:n,targetRuntimeId:e,request:t})})}},G7=Wv(`tray-follower`);function K7(e){let t=new URL(e);return t.searchParams.set(`json`,`true`),t.toString()}async function kwe(e){let t=K7(e.joinUrl),n=await Fwe(await(e.fetchImpl??fetch)(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:e.controllerId,runtime:e.runtime})}));return G7.info(`Follower tray attach response`,{trayId:n.trayId,action:n.result.action,code:n.result.code,participantCount:n.participantCount}),Awe(n)}function Awe(e){let t={trayId:e.trayId,controllerId:e.controllerId,participantCount:e.participantCount,leader:e.leader,action:e.result.action,code:e.result.code,iceServers:e.iceServers};return e.result.action===`wait`?{...t,retryAfterMs:e.result.retryAfterMs}:e.result.action===`signal`?{...t,bootstrap:e.result.bootstrap}:e.result.action===`fail`?{...t,error:e.result.error}:t}async function jwe(e){return q7(await J7(e,{action:`poll`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,cursor:e.cursor}))}async function Mwe(e){return q7(await J7(e,{action:`answer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,answer:e.answer}))}async function Nwe(e){return q7(await J7(e,{action:`ice-candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:e.candidate}))}async function Pwe(e){return q7(await J7(e,{action:`retry`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,runtime:e.runtime}))}function q7(e){return{trayId:e.trayId,controllerId:e.controllerId,participantCount:e.participantCount,leader:e.leader,bootstrap:e.bootstrap,events:e.events}}async function Fwe(e){let t=null,n=null;try{t=await e.text(),n=JSON.parse(t)}catch{}if(!Iwe(n)){let n=t?t.slice(0,200):`(empty)`;throw G7.warn(`Tray follower attach returned an invalid response`,{status:e.status,body:n}),Error(`Tray follower attach returned an invalid response (${e.status}): ${n}`)}return n}async function J7(e,t){let n=K7(e.joinUrl),r=await(e.fetchImpl??fetch)(n,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify(t)}),i=await r.json().catch(()=>null);if(!Lwe(i))throw Error(`Tray follower bootstrap returned an invalid response (${r.status})`);return i}function Iwe(e){if(!e||typeof e!=`object`)return!1;let t=e;if(typeof t.trayId!=`string`||typeof t.controllerId!=`string`||t.role!==`follower`||typeof t.participantCount!=`number`)return!1;let n=t.result;if(!n||typeof n!=`object`)return!1;let r=n;return r.action===`wait`?(r.code===`LEADER_NOT_ELECTED`||r.code===`LEADER_NOT_CONNECTED`)&&typeof r.retryAfterMs==`number`:r.action===`signal`?r.code===`LEADER_CONNECTED`&&Y7(r.bootstrap):r.action===`fail`?(r.code===`INVALID_JOIN_CAPABILITY`||r.code===`TRAY_EXPIRED`)&&typeof r.error==`string`:!1}function Lwe(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.trayId==`string`&&typeof t.controllerId==`string`&&t.role===`follower`&&typeof t.participantCount==`number`&&Y7(t.bootstrap)&&Array.isArray(t.events)}function Y7(e){if(!e||typeof e!=`object`)return!1;let t=e;return typeof t.controllerId==`string`&&typeof t.bootstrapId==`string`&&typeof t.attempt==`number`&&typeof t.state==`string`&&typeof t.expiresAt==`string`&&typeof t.cursor==`number`&&typeof t.maxRetries==`number`&&typeof t.retriesRemaining==`number`}var X7=Wv(`tray-webrtc`),Rwe=`tray-control`,zwe=250,Bwe=class{options;peerConnectionFactory;dataChannelLabel;peers=new Map;iceServers;constructor(e){this.options=e,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>Z7(this.iceServers)),this.dataChannelLabel=e.dataChannelLabel??Rwe}setIceServers(e){this.iceServers=e}async handleControlMessage(e){e.type===`follower.join_requested`?(e.iceServers&&!this.iceServers&&(this.iceServers=e.iceServers),await this.handleJoinRequested(e)):e.type===`bootstrap.answer`?await this.peers.get(e.bootstrapId)?.peer.setRemoteDescription(e.answer):e.type===`bootstrap.ice_candidate`&&await this.peers.get(e.bootstrapId)?.peer.addIceCandidate(e.candidate)}getPeers(){return Array.from(this.peers.values()).map(({state:e})=>({...e}))}getChannel(e){return this.peers.get(e)?.channel??null}stop(){for(let e of this.peers.values())e.peer.close();this.peers.clear()}async handleJoinRequested(e){this.closeControllerPeers(e.controllerId);let t=this.peerConnectionFactory(),n={controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,state:`connecting`,connectedAt:null,runtime:e.runtime},r=t.createDataChannel(this.dataChannelLabel);this.peers.set(e.bootstrapId,{state:n,peer:t,channel:r}),t.addEventListener(`icecandidate`,({candidate:t})=>{let n=$7(t);n&&this.options.sendControlMessage({type:`bootstrap.ice_candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:n})}),t.addEventListener(`connectionstatechange`,()=>{let n=this.peers.get(e.bootstrapId);n&&(n.state.state===`connected`?(t.connectionState===`disconnected`||t.connectionState===`failed`)&&(X7.warn(`Leader peer connection state changed post-connect`,{bootstrapId:e.bootstrapId,state:t.connectionState}),this.options.onPeerDisconnected?.(e.bootstrapId,`Peer connection ${t.connectionState}`)):t.connectionState===`failed`&&this.failPeer(e,`Leader peer connection failed before the data channel opened`))}),r.addEventListener(`open`,()=>{let t=this.peers.get(e.bootstrapId);!t||t.state.state===`connected`||(t.state.state=`connected`,t.state.connectedAt=new Date().toISOString(),this.options.onPeerConnected?.({...t.state},t.channel))}),r.addEventListener(`close`,()=>{let t=this.peers.get(e.bootstrapId);t&&(t.state.state===`connected`?(X7.warn(`Leader data channel closed post-connect`,{bootstrapId:e.bootstrapId}),this.options.onPeerDisconnected?.(e.bootstrapId,`Data channel closed`)):this.failPeer(e,`Leader data channel closed before opening`))}),r.addEventListener(`error`,()=>{let t=this.peers.get(e.bootstrapId);t&&(t.state.state===`connected`?(X7.warn(`Leader data channel error post-connect`,{bootstrapId:e.bootstrapId}),this.options.onPeerDisconnected?.(e.bootstrapId,`Data channel error`)):this.failPeer(e,`Leader data channel failed before opening`))});try{let n=await t.createOffer();await t.setLocalDescription(n),this.options.sendControlMessage({type:`bootstrap.offer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,offer:Q7(t.localDescription??n,`offer`)})}catch(t){this.failPeer(e,t instanceof Error?t.message:String(t))}}closeControllerPeers(e){for(let[t,n]of this.peers.entries())n.state.controllerId===e&&(n.peer.close(),this.peers.delete(t))}failPeer(e,t){let n=this.peers.get(e.bootstrapId);if(n){n.peer.close(),this.peers.delete(e.bootstrapId);try{this.options.sendControlMessage({type:`bootstrap.failed`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,code:`WEBRTC_BOOTSTRAP_FAILED`,message:t,retryable:!0,retryAfterMs:1e3})}catch(e){X7.warn(`Failed to report tray bootstrap failure`,{error:e instanceof Error?e.message:String(e)})}}}},Vwe=class{options;fetchImpl;peerConnectionFactory;controllerIdFactory;sleep;pollIntervalMs;iceServers;activePeer=null;stopped=!1;constructor(e){this.options=e,this.fetchImpl=e.fetchImpl??fetch,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>Z7(this.iceServers)),this.controllerIdFactory=e.controllerIdFactory??(()=>crypto.randomUUID()),this.sleep=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),this.pollIntervalMs=e.pollIntervalMs??zwe}async start(){this.stopped=!1;let e=this.controllerIdFactory(),t=Date.now();eF({state:`connecting`,joinUrl:this.options.joinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:t,lastError:null}),X7.info(`Follower tray join starting`,{joinUrl:this.options.joinUrl});let n=0;for(;;){e9(this.stopped),n++;let t;try{t=await kwe({joinUrl:this.options.joinUrl,controllerId:e,runtime:this.options.runtime,fetchImpl:this.fetchImpl})}catch(e){let t=e instanceof Error?e.message:String(e);throw eF({...ZP(),attachAttempts:n,lastError:t}),e}if(eF({...ZP(),attachAttempts:n,lastAttachCode:t.code}),t.action===`wait`){let e=t.retryAfterMs??1e3;X7.info(`Follower tray attach waiting`,{attempt:n,code:t.code,retryAfterMs:e}),n%10==0&&X7.warn(`Follower tray attach still waiting after ${n} attempts`,{attempt:n,code:t.code,retryAfterMs:e}),await this.sleep(e);continue}if(t.action===`fail`||!t.bootstrap){let e=t.error??`Tray follower attach failed (${t.code})`;throw eF({state:`error`,joinUrl:this.options.joinUrl,trayId:null,error:e,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:e}),X7.warn(`Follower tray attach failed`,{error:e}),Error(e)}t.iceServers&&(this.iceServers=t.iceServers);try{let r=await this.completeBootstrap(t.trayId,e,t.bootstrap);return eF({state:`connected`,joinUrl:this.options.joinUrl,trayId:r.trayId,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:null}),X7.info(`Follower tray connected`,{trayId:r.trayId,controllerId:e}),r}catch(e){let r=e instanceof Error?e.message:String(e);throw eF({state:`error`,joinUrl:this.options.joinUrl,trayId:t.trayId,error:r,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:r}),X7.warn(`Follower tray bootstrap failed`,{error:r}),e}}}stop(){this.stopped=!0,this.activePeer?.peer.close(),this.activePeer?.channel?.close(),this.activePeer=null,eF({state:`inactive`,joinUrl:null,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:null,lastError:null})}async completeBootstrap(e,t,n){let r=n,i=0;for(this.activePeer=this.createFollowerPeer(t,r.bootstrapId);;){if(e9(this.stopped),this.activePeer.open&&this.activePeer.channel)return{trayId:e,controllerId:t,bootstrapId:r.bootstrapId,channel:this.activePeer.channel};if(this.activePeer.openError)throw Error(this.activePeer.openError);let n=await jwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,cursor:i,fetchImpl:this.fetchImpl});r=n.bootstrap,i=r.cursor;try{for(let e of n.events)if(e.type===`bootstrap.offer`){await this.activePeer.peer.setRemoteDescription(e.offer);let n=await this.activePeer.peer.createAnswer();await this.activePeer.peer.setLocalDescription(n),await Mwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,answer:Q7(this.activePeer.peer.localDescription??n,`answer`),fetchImpl:this.fetchImpl})}else if(e.type===`bootstrap.ice_candidate`)await this.activePeer.peer.addIceCandidate(e.candidate);else if(e.type===`bootstrap.failed`)throw Error(e.failure.message)}catch(e){if(r.failure?.retryable&&r.retriesRemaining>0){r=(await Pwe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,runtime:this.options.runtime,fetchImpl:this.fetchImpl})).bootstrap,i=0,this.activePeer.peer.close(),this.activePeer=this.createFollowerPeer(t,r.bootstrapId);continue}throw e}this.activePeer.open||await this.sleep(this.pollIntervalMs)}}createFollowerPeer(e,t){let n=this.peerConnectionFactory(),r={peer:n,channel:null,open:!1,openError:null};return n.addEventListener(`connectionstatechange`,()=>{r.open&&(n.connectionState===`disconnected`||n.connectionState===`failed`)&&(X7.warn(`Follower peer connection state changed post-connect`,{bootstrapId:t,state:n.connectionState}),this.options.onDisconnected?.(`Peer connection ${n.connectionState}`))}),n.addEventListener(`datachannel`,({channel:e})=>{r.channel=e,e.addEventListener(`open`,()=>{r.open=!0}),e.addEventListener(`close`,()=>{r.open?(X7.warn(`Follower data channel closed post-connect`,{bootstrapId:t}),this.options.onDisconnected?.(`Data channel closed`)):r.openError=`Follower data channel closed before opening`}),e.addEventListener(`error`,()=>{r.open?(X7.warn(`Follower data channel error post-connect`,{bootstrapId:t}),this.options.onDisconnected?.(`Data channel error`)):r.openError=`Follower data channel failed before opening`})}),n.addEventListener(`icecandidate`,({candidate:n})=>{let r=$7(n);r&&Nwe({joinUrl:this.options.joinUrl,controllerId:e,bootstrapId:t,candidate:r,fetchImpl:this.fetchImpl}).catch(e=>{X7.warn(`Failed to send follower ICE candidate`,{error:e instanceof Error?e.message:String(e)})})}),r}};function Hwe(e,t){let n=t.baseDelayMs??1e3,r=t.backoffMultiplier??2,i=t.maxDelayMs??3e4,a=t.maxAttempts??10,o=t.sleep??e.sleep??(e=>new Promise(t=>setTimeout(t,e))),s=!1,c=!1,l=null,u={cancel(){s=!0,c=!1,l?.stop(),l=null},get reconnecting(){return c}},d=()=>{let t=new Vwe({...e,sleep:o,onDisconnected:e=>{s||(X7.warn(`Follower disconnected, starting reconnect loop`,{reason:e}),f(e))}});return l=t,{manager:t,connectionPromise:t.start()}},f=async u=>{if(s||c)return;c=!0,l?.stop(),l=null;let f=0,p=n,m=u??`Unknown disconnect`;for(;!s&&f<a&&(f++,t.onReconnecting?.(f),eF({...ZP(),state:`reconnecting`,error:null,reconnectAttempts:f}),X7.info(`Reconnect attempt`,{attempt:f,delay:p}),await o(p),!s);){let n=null;try{let r=d();n=r.manager;let i=await r.connectionPromise;if(s){n.stop();break}c=!1,eF({...ZP(),state:`connected`,joinUrl:e.joinUrl,trayId:i.trayId,error:null,lastPingTime:null,reconnectAttempts:0,connectingSince:null,lastError:null}),X7.info(`Reconnect successful`,{attempt:f,trayId:i.trayId}),t.onConnected(i);return}catch(e){m=e instanceof Error?e.message:String(e),X7.warn(`Reconnect attempt failed`,{attempt:f,error:m}),n?.stop(),l=null}p=Math.min(p*r,i)}s||(c=!1,eF({...ZP(),state:`error`,error:`Reconnect failed after ${f} attempts: ${m}`,reconnectAttempts:f}),X7.warn(`Reconnect gave up`,{attempts:f,lastError:m}),t.onGaveUp?.(m))},{connectionPromise:p}=d();return p.then(e=>{s||t.onConnected(e)}).catch(e=>{s||X7.error(`Initial follower connection failed`,{error:e instanceof Error?e.message:String(e)})}),u}function Z7(e){if(typeof RTCPeerConnection>`u`)throw Error(`RTCPeerConnection is not available in this runtime`);let t=e?.length?{iceServers:e}:void 0;return new RTCPeerConnection(t)}function Q7(e,t){if(!e||e.type!==t||typeof e.sdp!=`string`)throw Error(`Expected a local ${t} description before signaling`);return{type:e.type,sdp:e.sdp}}function $7(e){if(!e||typeof e!=`object`)return null;let t=e;return typeof t.candidate==`string`?{candidate:t.candidate,sdpMid:typeof t.sdpMid==`string`?t.sdpMid:null,sdpMLineIndex:typeof t.sdpMLineIndex==`number`?t.sdpMLineIndex:null,usernameFragment:typeof t.usernameFragment==`string`?t.usernameFragment:null}:null}function e9(e){if(e)throw Error(`Tray follower stopped before WebRTC bootstrap completed`)}function t9(e){if(!e)throw Error(`canonicalRuntimeId: bootstrapId is required`);return e.startsWith(`follower-`)?e:`follower-${e}`}var Uwe=s({SprinkleFollowerController:()=>r9}),n9=Wv(`sprinkle-follower`),r9=class{sync;addSprinkle;removeSprinkle;zone;open=new Map;opening=new Set;latestDesiredOpen=new Set;pendingUpdates=new Map;updateListeners=new Map;disposed=!1;constructor(e){this.sync=e.sync,this.addSprinkle=e.addSprinkle,this.removeSprinkle=e.removeSprinkle,this.zone=e.zone}async updateAvailable(e){if(this.disposed)return;let t=new Map;for(let n of e)n.open&&t.set(n.name,n);this.latestDesiredOpen=new Set(t.keys());for(let e of[...this.open.keys()])t.has(e)||this.closeLocally(e);for(let e of[...this.pendingUpdates.keys()])t.has(e)||this.pendingUpdates.delete(e);let n=[];for(let[e,r]of t)this.open.has(e)||this.opening.has(e)||n.push(this.openLocally(e,r));await Promise.allSettled(n)}handleSprinkleUpdate(e,t){if(this.disposed)return;let n=this.open.get(e);if(n){n.renderer.pushUpdate(t),this.fanOutToListeners(e,t);return}if(this.opening.has(e)){this.pendingUpdates.set(e,t);return}n9.debug(`Dropping sprinkle.update for unknown sprinkle`,{sprinkleName:e})}dispose(){if(!this.disposed){this.disposed=!0;for(let e of[...this.open.keys()])this.closeLocally(e);this.pendingUpdates.clear(),this.latestDesiredOpen.clear(),this.updateListeners.clear()}}async openLocally(e,t){this.opening.add(e);let n;try{n=await this.sync.fetchSprinkleContent(e)}catch(t){this.opening.delete(e),this.pendingUpdates.delete(e),n9.warn(`Failed to fetch sprinkle content from leader`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)});return}if(this.disposed||!this.latestDesiredOpen.has(e)){this.opening.delete(e),this.pendingUpdates.delete(e);return}let r=document.createElement(`div`);r.className=`sprinkle-panel`,r.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;`,r.dataset.sprinkle=e;let i=new yL(r,this.createBridge(e));this.addSprinkle(e,t.title,r,this.zone);try{await i.render(n,e)}catch(t){n9.warn(`Sprinkle render failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}if(this.disposed||!this.latestDesiredOpen.has(e)){this.updateListeners.delete(e),this.opening.delete(e),this.pendingUpdates.delete(e);try{i.dispose()}catch(t){n9.warn(`Sprinkle dispose threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}r.remove();try{this.removeSprinkle(e)}catch(t){n9.warn(`removeSprinkle callback threw during post-render cleanup`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}return}this.open.set(e,{renderer:i,container:r}),this.opening.delete(e);let a=this.pendingUpdates.get(e);a!==void 0&&(this.pendingUpdates.delete(e),i.pushUpdate(a),this.fanOutToListeners(e,a))}fanOutToListeners(e,t){let n=this.updateListeners.get(e);if(n)for(let r of[...n])try{r(t)}catch(t){n9.warn(`Sprinkle update listener threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}}closeLocally(e){this.updateListeners.delete(e),this.pendingUpdates.delete(e);let t=this.open.get(e);if(t){try{t.renderer.dispose()}catch(t){n9.warn(`Sprinkle dispose threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}t.container.remove(),this.open.delete(e);try{this.removeSprinkle(e)}catch(t){n9.warn(`removeSprinkle callback threw`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}}}createBridge(e){return{name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data;this.sync.sendSprinkleLick(e,{action:n,data:r})},on:(t,n)=>{if(t!==`update`)return;let r=this.updateListeners.get(e);r||(r=new Set,this.updateListeners.set(e,r)),r.add(n)},off:(t,n)=>{t===`update`&&this.updateListeners.get(e)?.delete(n)},readFile:()=>Promise.reject(Error(`readFile not supported in follower-rendered sprinkle`)),writeFile:()=>Promise.reject(Error(`writeFile not supported in follower-rendered sprinkle`)),readDir:()=>Promise.reject(Error(`readDir not supported in follower-rendered sprinkle`)),exists:()=>Promise.resolve(!1),stat:()=>Promise.reject(Error(`stat not supported in follower-rendered sprinkle`)),mkdir:()=>Promise.reject(Error(`mkdir not supported in follower-rendered sprinkle`)),rm:()=>Promise.reject(Error(`rm not supported in follower-rendered sprinkle`)),screenshot:()=>Promise.reject(Error(`screenshot not supported in follower-rendered sprinkle`)),setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch(t){n9.warn(`Sprinkle setState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)})}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch(t){return n9.warn(`Sprinkle getState failed`,{sprinkleName:e,error:t instanceof Error?t.message:String(t)}),null}},open:e=>{let t=/^https?:|^chrome-extension:/.test(e)?e:Y4(e);window.open(t,`_blank`)},close:()=>this.closeLocally(e),minimize:()=>{},stopCone:()=>{this.sync.sendSprinkleLick(e,{action:`__stopCone__`})},attachImage:()=>{},captureScreen:()=>Promise.reject(Error(`captureScreen not supported in follower-rendered sprinkle`))}}},i9=Wv(`page-follower-tray`);function Wwe(e,t){return t===`slicc-cherry`?e.map(e=>({targetId:e.targetId,title:e.title,url:e.url,kind:`cherry`,capabilities:{navigate:!0,network:!1,screenshot:!0}})):e.map(e=>({targetId:e.targetId,title:e.title,url:e.url}))}function a9(e){let t=e._refreshIntervalMs??5e3,n=null,r=null,i=null,a=null,o=()=>{i&&=(clearInterval(i),null),r&&=(r.dispose(),null),n&&=(e.onForwardingToggle?.(!1),e.browserAPI.setTrayTargetProvider(null),n.close(),null)};return a=Hwe({joinUrl:e.joinUrl,runtime:e.runtime??`slicc-standalone`,fetchImpl:e._fetchImpl,peerConnectionFactory:e._peerConnectionFactory,sleep:e._sleep},{onConnected:a=>{o();let s=t9(a.bootstrapId),c=null,l=new Owe(a.channel,{browserTransport:e.browserAPI.getTransport(),browserAPI:e.browserAPI,onSnapshot:e.onSnapshot,onUserMessage:e.onUserMessage,onStatus:e.onStatus,onCherrySliccEvent:e.onCherrySliccEvent,selfRuntimeId:s,onTargetsChanged:()=>void d(),onSprinklesList:t=>{e.onSprinklesList?.(t),c?.updateAvailable(t)},onSprinkleUpdate:(e,t)=>c?.handleSprinkleUpdate(e,t),onDisconnect:e=>{i9.warn(`Follower sync disconnected`,{reason:e}),o()}});e.addSprinkle&&e.removeSprinkle&&(c=new r9({sync:l,addSprinkle:e.addSprinkle,removeSprinkle:e.removeSprinkle}),r=c);let u=new j7(i9,{failureMessage:`Follower CDP target listing failed (best-effort, throttled)`,recoveryMessage:`Follower CDP target listing recovered (stable for debounce window)`}),d=async()=>{let t;try{t=await e.browserAPI.listPages()}catch(e){u.reportFailure(e);return}if(n===l){u.reportSuccess();try{l.advertiseTargets(Wwe(t,e.runtime??`slicc-standalone`),s)}catch(e){i9.error(`Follower target advertisement broadcast failed (sync.advertiseTargets threw)`,{error:e instanceof Error?e.message:String(e)})}}};n=l,e.browserAPI.setTrayTargetProvider(l),e.setChatAgent(l),e.onForwardingToggle?.(!0),l.requestSnapshot(),i=setInterval(()=>void d(),t),d(),i9.info(`Follower sync wired`,{trayId:a.trayId})},onReconnecting:e=>{i9.info(`Follower reconnecting`,{attempt:e})},onGaveUp:e=>{i9.warn(`Follower reconnect gave up`,{lastError:e}),o()},sleep:e._sleep}),{stop(){o(),a?.cancel(),a=null},get currentSync(){return n}}}Wv(`lick-manager`);var Gwe=new Set([`navigate`]),Kwe=class{runtimes=new Map;dirty=!1;setTargets(e,t){this.runtimes.set(e,t),this.dirty=!0}removeRuntime(e){this.runtimes.delete(e)&&(this.dirty=!0)}getEntries(){this.dirty=!1;let e=[];for(let[t,n]of this.runtimes)for(let r of n)e.push({targetId:`${t}:${r.targetId}`,localTargetId:r.targetId,runtimeId:t,title:r.title,url:r.url,isLocal:!1,kind:r.kind??`browser`,capabilities:r.capabilities});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}},o9=Wv(`tray-leader-sync`);function qwe(e){return e?e.includes(`ios`)?`ios`:e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}function s9(e,t){switch(e){case`extension`:return`extension follower`;case`standalone`:return`standalone follower`;case`electron`:return`Electron follower`;case`ios`:return`iOS follower`;default:return t?`follower (${t})`:`follower`}}function c9(e){return e.kind===`cherry`}function Jwe(e,t){return e.filter(e=>c9(e)&&t.requireNetwork?e.capabilities?.network===!0:!0)}var Ywe=class e{options;followers=new Map;registry=new Kwe;runtimeToBootstrap=new Map;pendingCDPRoutes=new Map;cdpChunkBuffers=new Map;remoteTransports=new Map;pendingTabOpenRoutes=new Map;tabOpenResolvers=new Map;pendingFsRoutes=new Map;fsResolvers=new Map;constructor(e){this.options=e}addFollower(e,t,n){this.removeFollower(e);let r=mwe(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new B7({sendPing:()=>r.send({type:`ping`}),onDead:()=>{o9.warn(`Follower keepalive dead, removing follower`,{bootstrapId:e}),this.removeFollower(e),this.options.onFollowerDead?.(e)}});a.start(),this.followers.set(e,{bootstrapId:e,sync:r,unsubscribe:i,keepalive:a,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:Date.now(),floatType:qwe(n?.runtime)}),o9.info(`Follower added to sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size),this.sendSnapshotToFollower(e),this.sendScoopsListToFollower(e),this.sendSprinklesListToFollower(e);let o=this.getConnectedEntries();o.length>0&&r.send({type:`targets.registry`,targets:o})}removeFollower(e){let t=this.followers.get(e);if(t){t.keepalive.stop(),t.unsubscribe(),t.sync.close(),this.followers.delete(e),this.followerBroadcastErrorLogAt.delete(e);for(let[t,n]of this.runtimeToBootstrap)if(n===e){this.cleanupRemoteTransports(t),this.registry.removeRuntime(t),this.runtimeToBootstrap.delete(t);break}this.registry.hasChanged()&&this.broadcastTargetRegistry(),o9.info(`Follower removed from sync`,{bootstrapId:e,followerCount:this.followers.size}),this.options.onFollowerCountChanged?.(this.followers.size)}}followerBroadcastErrorLogAt=new Map;static BROADCAST_ERROR_THROTTLE_MS=6e4;broadcastToAllFollowers(t){let n=performance.now();for(let[r,i]of this.followers)try{i.sync.send(t),this.followerBroadcastErrorLogAt.delete(r)}catch(i){n-(this.followerBroadcastErrorLogAt.get(r)??-1/0)>e.BROADCAST_ERROR_THROTTLE_MS&&(this.followerBroadcastErrorLogAt.set(r,n),o9.error(`Broadcast send to follower failed (channel may be stuck)`,{bootstrapId:r,messageType:t.type,error:i instanceof Error?i.message:String(i)}))}}broadcastEvent(e){if(this.followers.size===0)return;let t={type:`agent_event`,event:e,scoopJid:this.options.getScoopJid()};this.broadcastToAllFollowers(t)}broadcastUserMessage(e,t,n){if(this.followers.size===0)return;let r={type:`user_message_echo`,text:e,messageId:t,scoopJid:this.options.getScoopJid(),attachments:n?.length?Iv(n):n};this.broadcastToAllFollowers(r)}broadcastStatus(e){if(this.followers.size===0)return;let t={type:`status`,scoopStatus:e};this.broadcastToAllFollowers(t)}async sendSnapshotToFollower(e,t){let n=this.followers.get(e);if(!n)return;let r=t??n.selectedScoopJid??this.options.getScoopJid(),i;if(this.options.getMessagesForScoop&&r!==this.options.getScoopJid())try{i=await Promise.resolve(this.options.getMessagesForScoop(r))}catch(e){o9.warn(`getMessagesForScoop failed, falling back to active scoop`,{targetJid:r,error:e instanceof Error?e.message:String(e)}),i=this.options.getMessages()}else i=this.options.getMessages();n.selectedScoopJid=r,fwe(n.sync,i,r),o9.debug(`Snapshot sent to follower`,{bootstrapId:e,messageCount:i.length,scoopJid:r})}sendScoopsListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getScoops;if(n)try{let e=n(),r=this.options.getScoopJid();t.sync.send({type:`scoops.list`,scoops:e,activeScoopJid:r})}catch(t){o9.warn(`Failed to send scoops.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}sendSprinklesListToFollower(e){let t=this.followers.get(e);if(!t)return;let n=this.options.getSprinkles;if(n)try{let e=n();t.sync.send({type:`sprinkles.list`,sprinkles:e})}catch(t){o9.warn(`Failed to send sprinkles.list`,{bootstrapId:e,error:t instanceof Error?t.message:String(t)})}}broadcastScoopsList(){if(this.followers.size===0)return;let e=this.options.getScoops;if(!e)return;let t;try{t=e()}catch(e){o9.warn(`Failed to compute scoops list`,{error:e instanceof Error?e.message:String(e)});return}let n=this.options.getScoopJid(),r={type:`scoops.list`,scoops:t,activeScoopJid:n};this.broadcastToAllFollowers(r)}broadcastSprinklesList(){if(this.followers.size===0)return;let e=this.options.getSprinkles;if(!e)return;let t;try{t=e()}catch(e){o9.warn(`Failed to compute sprinkles list`,{error:e instanceof Error?e.message:String(e)});return}let n={type:`sprinkles.list`,sprinkles:t};this.broadcastToAllFollowers(n)}broadcastSprinkleUpdate(e,t){if(this.followers.size===0)return;let n={type:`sprinkle.update`,sprinkleName:e,data:t};this.broadcastToAllFollowers(n)}static SPRINKLE_CHUNK_SIZE=32*1024;static SPRINKLE_CHUNK_THRESHOLD=64*1024;async handleSprinkleFetch(t,n,r){let i=this.followers.get(t);if(!i)return;let a=this.options.readSprinkleContent;if(!a){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Leader has no sprinkle content reader`});return}let o=null;try{o=await Promise.resolve(a(r))}catch(e){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:e instanceof Error?e.message:String(e)});return}if(o==null){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:``,error:`Sprinkle not found: ${r}`});return}if(o.length<=e.SPRINKLE_CHUNK_THRESHOLD){i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:o});return}let s=e.SPRINKLE_CHUNK_SIZE,c=Math.ceil(o.length/s);for(let e=0;e<c;e++){let t=o.slice(e*s,(e+1)*s);i.sync.send({type:`sprinkle.content`,requestId:n,sprinkleName:r,content:t,chunkIndex:e,totalChunks:c})}}handleFollowerMessage(e,t){switch(t.type){case`user_message`:{o9.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?Iv(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n);break}case`abort`:o9.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:o9.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{o9.info(`Follower selected scoop`,{bootstrapId:e,scoopJid:t.scoopJid});let n=this.followers.get(e);n&&(n.selectedScoopJid=t.scoopJid,this.sendSnapshotToFollower(e,t.scoopJid));break}case`sprinkles.refresh`:o9.info(`Follower requested sprinkles refresh`,{bootstrapId:e}),this.sendSprinklesListToFollower(e);break;case`sprinkle.fetch`:this.handleSprinkleFetch(e,t.requestId,t.sprinkleName);break;case`sprinkle.lick`:{o9.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});let n=this.followers.get(e),r=s9(n?.floatType??`unknown`,n?.runtime);try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop,r)}catch(e){o9.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break}case`lick`:{let n=t.event;if(!n||!Gwe.has(n.type)){o9.warn(`Rejecting malformed or non-forwardable lick from follower`,{bootstrapId:e,type:n?.type});break}let r=this.followers.get(e),{targetScoop:i,...a}=n,o={...a,originFollowerId:e,originLabel:s9(r?.floatType??`unknown`,r?.runtime)};try{this.options.onForwardedLick?.(o,e)}catch(e){o9.warn(`onForwardedLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break}case`targets.advertise`:o9.info(`Follower targets advertised`,{bootstrapId:e,runtimeId:t.runtimeId,targetCount:t.targets.length});for(let e of[...this.remoteTransports.keys()]){let n=e.substring(0,e.indexOf(`:`));n!==`leader`&&!this.runtimeToBootstrap.has(n)&&n!==t.runtimeId&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),o9.debug(`Cleaned up orphaned remote transport on advertise`,{key:e}))}this.runtimeToBootstrap.set(t.runtimeId,e),this.registry.setTargets(t.runtimeId,t.targets),this.broadcastTargetRegistry();break;case`cdp.request`:{let{requestId:n,targetRuntimeId:r,localTargetId:i,method:a,params:o,sessionId:s}=t;r===`leader`?this.executeLocalCDP(n,i,a,o,s,e):this.forwardCDPRequest(n,r,i,a,o,s,e);break}case`cdp.response`:this.handleCDPResponse(t);break;case`cdp.event`:this.handleCDPEvent(e,t.method,t.params,t.sessionId);break;case`tab.open`:{let{requestId:n,targetRuntimeId:r,url:i}=t;r===`leader`?this.executeLocalTabOpen(n,i,e):this.forwardTabOpen(n,r,i,e);break}case`tab.opened`:this.handleTabOpenResponse(t.requestId,t.targetId);break;case`tab.open.error`:this.handleTabOpenError(t.requestId,t.error);break;case`fs.request`:{let{requestId:n,targetRuntimeId:r,request:i}=t;r===`leader`?this.executeLocalFs(n,i,e):this.forwardFsRequest(n,r,i,e);break}case`fs.response`:this.handleFsResponse(t.requestId,t.response);break;case`cherry.host_event`:this.routeCherryHostEvent(e,t);break;case`ping`:{let t=this.followers.get(e);t&&(t.keepalive.receivePing(),t.lastActivity=Date.now(),t.sync.send({type:`pong`}));break}case`pong`:{let t=this.followers.get(e);t&&(t.keepalive.receivePong(),t.lastActivity=Date.now());break}}}setLocalTargets(e){this.registry.setTargets(`leader`,e),this.registry.hasChanged()&&this.broadcastTargetRegistry()}broadcastTargetRegistry(){if(this.followers.size===0)return;let e={type:`targets.registry`,targets:this.getConnectedEntries()};this.broadcastToAllFollowers(e)}getTargets(){return this.getConnectedEntries()}getConnectedEntries(){return this.registry.getEntries().filter(e=>{if(e.runtimeId===`leader`)return!0;let t=this.runtimeToBootstrap.get(e.runtimeId);return t?this.followers.has(t):!1})}createRemoteTransport(e,t){let n=new R7({sendCDPRequest:(n,r,i,a)=>{let o=this.runtimeToBootstrap.get(e),s=o?this.followers.get(o):void 0;if(!s){this.remoteTransports.get(`${e}:${t}`)?.handleResponse(n,void 0,`Target runtime "${e}" not connected`);return}this.pendingCDPRoutes.set(n,{requesterBootstrapId:`__leader__`,requestId:n}),s.sync.send({type:`cdp.request`,requestId:n,localTargetId:t,method:r,params:i,sessionId:a})}});return this.remoteTransports.set(`${e}:${t}`,n),n}removeRemoteTransport(e,t){let n=`${e}:${t}`,r=this.remoteTransports.get(n);r&&(r.disconnect(),this.remoteTransports.delete(n))}cleanupRemoteTransports(e){let t=`${e}:`;for(let e of[...this.remoteTransports.keys()])e.startsWith(t)&&(this.remoteTransports.get(e)?.disconnect(),this.remoteTransports.delete(e),o9.debug(`Cleaned up stale remote transport`,{key:e}));try{this.options.onRemoteTransportsCleaned?.(e)}catch(t){o9.warn(`onRemoteTransportsCleaned handler threw`,{runtimeId:e,error:t instanceof Error?t.message:String(t)})}}getConnectedFollowers(){return[...this.runtimeToBootstrap.entries()].map(([e,t])=>{let n=this.followers.get(t);return{runtimeId:e,runtime:n?.runtime,connectedAt:n?.connectedAt,lastActivity:n?.lastActivity,floatType:n?.floatType}})}canRuntimeServeTeleport(e,t){if(t.runtime===`slicc-cherry`)return!1;let n=this.registry.getEntries().filter(t=>t.runtimeId===e);return n.length===0?!0:Jwe(n,{requireNetwork:!0}).length>0}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.followers.get(n);r&&this.canRuntimeServeTeleport(t,r)&&e.push({runtimeId:t,bootstrapId:n,floatType:r.floatType,lastActivity:r.lastActivity})}if(e.length===0)return null;let t=e.filter(e=>e.floatType===`standalone`),n=t.length>0?t:e;return n.sort((e,t)=>t.lastActivity-e.lastActivity),n[0]}get hasFollowers(){return this.followers.size>0}stop(){for(let e of[...this.followers.keys()])this.removeFollower(e)}async executeLocalCDP(e,t,n,r,i,a){let o=this.followers.get(a);if(!o)return;let s=this.options.browserTransport;if(!s){o.sync.send({type:`cdp.response`,requestId:e,error:`Leader has no browser transport`});return}try{let t=await s.send(n,r,i);P7(o.sync,e,t)}catch(t){o.sync.send({type:`cdp.response`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardCDPRequest(e,t,n,r,i,a,o){let s=this.runtimeToBootstrap.get(t),c=s?this.followers.get(s):void 0,l=this.followers.get(o);if(!c){l&&l.sync.send({type:`cdp.response`,requestId:e,error:`Target runtime "${t}" not connected`});return}this.pendingCDPRoutes.set(e,{requesterBootstrapId:o,requestId:e}),c.sync.send({type:`cdp.request`,requestId:e,localTargetId:n,method:r,params:i,sessionId:a})}handleCDPResponse(e){let{requestId:t}=e,n=this.pendingCDPRoutes.get(t);if(!n)return;let r=F7(this.cdpChunkBuffers,e);if(!r)return;if(this.pendingCDPRoutes.delete(t),n.requesterBootstrapId===`__leader__`){for(let e of this.remoteTransports.values())e.handleResponse(t,r.result,r.error);return}let i=this.followers.get(n.requesterBootstrapId);i&&P7(i.sync,t,r.result,r.error)}handleCDPEvent(e,t,n,r){let i;for(let[t,n]of this.runtimeToBootstrap)if(n===e){i=t;break}if(!i)return;let a=`${i}:`;for(let[e,r]of this.remoteTransports)e.startsWith(a)&&r.handleEvent(t,n)}runtimeIdForBootstrap(e){for(let[t,n]of this.runtimeToBootstrap)if(n===e)return t}routeCherryHostEvent(e,t){if(!dwe(t))return;let n=this.options.onCherryHostEvent;if(!n){o9.debug(`cherry.host_event received but no onCherryHostEvent wired`,{bootstrapId:e,name:t.name});return}let r=this.runtimeIdForBootstrap(e);try{n(r,t.name,t.detail)}catch(n){o9.warn(`Failed to route cherry.host_event to cone`,{bootstrapId:e,name:t.name,error:n instanceof Error?n.message:String(n)})}}emitCherrySliccEvent(e,t,n){let r=e.indexOf(`:`),i=r>=0?e.slice(0,r):e,a=this.runtimeToBootstrap.get(i),o=a?this.followers.get(a):void 0;return o?o.sync.send({type:`cherry.slicc_event`,targetId:e,name:t,detail:n}):(o9.warn(`emitCherrySliccEvent: owning follower not connected`,{targetId:e,name:t}),!1)}canRuntimeOpenTab(e){let t=this.registry.getEntries().filter(t=>t.runtimeId===e);return t.length===0?!0:t.some(e=>!c9(e))}openRemoteTab(e,t){let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.reject(Error(`Target runtime "${e}" not connected`));if(!this.canRuntimeOpenTab(e))return Promise.reject(Error(`Target runtime "${e}" is a cherry host that cannot open tabs`));let i=`tab-open-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.tabOpenResolvers.set(i,{resolve:e,reject:n}),this.pendingTabOpenRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i}),r.sync.send({type:`tab.open`,requestId:i,url:t})})}async executeLocalTabOpen(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.browserTransport;if(!i){r.sync.send({type:`tab.open.error`,requestId:e,error:`Leader has no browser transport`});return}try{let n=(await i.send(`Target.createTarget`,{url:t,background:!0})).targetId;r.sync.send({type:`tab.opened`,requestId:e,targetId:`leader:${n}`})}catch(t){r.sync.send({type:`tab.open.error`,requestId:e,error:t instanceof Error?t.message:String(t)})}}forwardTabOpen(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" not connected`});return}if(!this.canRuntimeOpenTab(t)){o&&o.sync.send({type:`tab.open.error`,requestId:e,error:`Target runtime "${t}" is a cherry host that cannot open tabs`});return}this.pendingTabOpenRoutes.set(e,{requesterBootstrapId:r,requestId:e}),a.sync.send({type:`tab.open`,requestId:e,url:n})}handleTabOpenResponse(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.resolve(t));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.opened`,requestId:e,targetId:t})}handleTabOpenError(e,t){let n=this.pendingTabOpenRoutes.get(e);if(!n)return;if(this.pendingTabOpenRoutes.delete(e),n.requesterBootstrapId===`__leader__`){let n=this.tabOpenResolvers.get(e);n&&(this.tabOpenResolvers.delete(e),n.reject(Error(t)));return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`tab.open.error`,requestId:e,error:t})}async executeLocalFs(e,t,n){let r=this.followers.get(n);if(!r)return;let i=this.options.vfs;if(!i){r.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Leader has no VFS`}});return}let a=await H7(i,t);for(let t of a)r.sync.send({type:`fs.response`,requestId:e,response:t})}forwardFsRequest(e,t,n,r){let i=this.runtimeToBootstrap.get(t),a=i?this.followers.get(i):void 0,o=this.followers.get(r);if(!a){o&&o.sync.send({type:`fs.response`,requestId:e,response:{ok:!1,error:`Target runtime "${t}" not connected`}});return}this.pendingFsRoutes.set(e,{requesterBootstrapId:r,requestId:e,chunks:[],totalChunks:1}),a.sync.send({type:`fs.request`,requestId:e,request:n})}handleFsResponse(e,t){let n=this.pendingFsRoutes.get(e);if(!n){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),n.resolve(n.responses))}return}if(n.requesterBootstrapId===`__leader__`){let n=this.fsResolvers.get(e);if(n){n.responses.push(t);let r=t.ok&&t.totalChunks||1;n.responses.length>=r&&(this.fsResolvers.delete(e),this.pendingFsRoutes.delete(e),n.resolve(n.responses))}return}let r=this.followers.get(n.requesterBootstrapId);r&&r.sync.send({type:`fs.response`,requestId:e,response:t}),n.chunks.push(t),n.totalChunks=t.ok&&t.totalChunks||1,n.chunks.length>=n.totalChunks&&this.pendingFsRoutes.delete(e)}sendFsRequest(e,t){if(e===`leader`){let e=this.options.vfs;return e?H7(e,t):Promise.resolve([{ok:!1,error:`Leader has no VFS`}])}let n=this.runtimeToBootstrap.get(e),r=n?this.followers.get(n):void 0;if(!r)return Promise.resolve([{ok:!1,error:`Target runtime "${e}" not connected`}]);let i=`fs-${Date.now()}-${Math.random().toString(36).slice(2,8)}`;return new Promise((e,n)=>{this.fsResolvers.set(i,{resolve:e,reject:n,responses:[]}),this.pendingFsRoutes.set(i,{requesterBootstrapId:`__leader__`,requestId:i,chunks:[],totalChunks:1}),r.sync.send({type:`fs.request`,requestId:i,request:t})})}},l9=Wv(`page-leader-tray`);function u9(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i,a;a=new Ywe({getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onForwardedLick:e.onForwardedLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerCountChanged:e.onFollowerCountChanged,onRemoteTransportsCleaned:e.onRemoteTransportsCleaned,onCherryHostEvent:e.onCherryHostEvent,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs}),e.browserAPI.setTrayTargetProvider(a),i=new Bwe({sendControlMessage:e=>r.sendControlMessage(e),onPeerConnected:(e,t)=>{l9.info(`Tray follower data channel opened`,{controllerId:e.controllerId,bootstrapId:e.bootstrapId,attempt:e.attempt,runtime:e.runtime}),a.addFollower(e.bootstrapId,t,{runtime:e.runtime,connectedAt:e.connectedAt??void 0})},onPeerDisconnected:(e,t)=>{l9.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}}),r=new Cae({workerBaseUrl:e.workerBaseUrl,runtime:e.runtime??`slicc-standalone`,...e.kind?{kind:e.kind}:{},...e.onLeaderReady?{onLeaderReady:e.onLeaderReady}:{},fetchImpl:n,...e._storeOverride?{store:e._storeOverride}:{},...e._webSocketFactory?{webSocketFactory:e._webSocketFactory}:{},onControlMessage:t=>{if(t.type===`webhook.event`){e.sendWebhookEvent(t.webhookId,t.headers,t.body);return}i.handleControlMessage(t).catch(e=>{l9.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{l9.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{l9.info(`Leader tray reconnected`,{trayId:e.trayId}),u(e)},onReconnectGaveUp:(e,t)=>{l9.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t})}});let o=e.onAgentEvent(e=>a.broadcastEvent(e)),s=[],c=new j7(l9,{failureMessage:`Leader CDP target refresh failed (best-effort, throttled)`,recoveryMessage:`Leader CDP target refresh recovered (stable for debounce window)`}),l=async()=>{let t;try{t=await e.browserAPI.listPages()}catch(e){c.reportFailure(e);return}c.reportSuccess();try{let e=t.map(e=>({targetId:e.targetId,title:e.title,url:e.url}));a.setLocalTargets(e)}catch(e){l9.error(`Leader target broadcast failed (sync.setLocalTargets threw)`,{error:e instanceof Error?e.message:String(e)})}};s.push(setInterval(l,t)),l(),s.push(setInterval(()=>{try{a.broadcastScoopsList(),a.broadcastSprinklesList()}catch(e){l9.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t));function u(t){let n=e._historyOverride??Xwe();if(n)try{let e=Db(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){l9.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}return r.start().then(e=>{u(e)}).catch(e=>{l9.error(`Leader tray start failed`,{error:e instanceof Error?e.message:String(e)})}),{stop(){o();for(let e of s)clearInterval(e);a.stop(),i.stop(),r.stop()},async reset(){return a.stop(),i.stop(),r.stop(),await r.clearSession(),u(await r.start()),Mb()},leader:r,peers:i,sync:a}}function Xwe(){return typeof window>`u`||!window.history||!window.location?null:{get href(){return window.location.href},replaceState(e,t,n){window.history.replaceState(e,t,n)}}}function d9(e){let{channel:t,getReader:n,logger:r}=e,i=e=>{let i=e.data;if(i?.type!==`preview-vfs-read`)return;let{id:a,path:o,asText:s}=i;(async()=>{try{let e=s?`utf-8`:`binary`,r=await n().readFile(o,{encoding:e});t.postMessage({type:`preview-vfs-response`,id:a,content:r})}catch(e){let n=e instanceof Error?e.message:String(e);n.includes(`ENOENT`)||r?.error(`Preview VFS read failed`,{path:o,error:n}),t.postMessage({type:`preview-vfs-response`,id:a,error:n})}})()};return t.addEventListener(`message`,i),{dispose:()=>t.removeEventListener(`message`,i)}}function Zwe(e){let t=new Map,n=(e,t)=>`${e}:${t}`,r=(r,i)=>{let a=n(r,i),o=t.get(a);if(!o){let n=e.getSync();if(!n)throw Error(`remote-cdp: leader tray not started`);o={runtimeId:r,localTargetId:i,transport:n.createRemoteTransport(r,i),forwarders:new Map},t.set(a,o)}return o},i=n=>{let r=t.get(n);if(!r)return;for(let[e,t]of r.forwarders)r.transport.off(e,t.listener);r.forwarders.clear();let i=e.getSync();i?.removeRemoteTransport?i.removeRemoteTransport(r.runtimeId,r.localTargetId):r.transport.disconnect(),t.delete(n)};return{async send({runtimeId:e,localTargetId:t,method:n,params:i,sessionId:a,timeout:o}){return r(e,t).transport.send(n,i,a,o)},async subscribe({runtimeId:t,localTargetId:n,event:i}){let a=r(t,n),o=a.forwarders.get(i);if(o)return o.count+=1,{ok:!0};let s=r=>e.postEvent({runtimeId:t,localTargetId:n,method:i,params:r});return a.transport.on(i,s),a.forwarders.set(i,{listener:s,count:1}),{ok:!0}},async unsubscribe({runtimeId:e,localTargetId:r,event:i}){let a=t.get(n(e,r)),o=a?.forwarders.get(i);return!a||!o?{ok:!0}:(--o.count,o.count<=0&&(a.transport.off(i,o.listener),a.forwarders.delete(i)),{ok:!0})},async detach({runtimeId:e,localTargetId:t}){return i(n(e,t)),{ok:!0}},async openTab({runtimeId:t,url:n}){let r=e.getSync();if(!r?.openRemoteTab)throw Error(`remote-cdp: openRemoteTab not available`);return{targetId:await r.openRemoteTab(t,n)}},cleanupRuntime(e){let n=`${e}:`;for(let e of[...t.keys()])e.startsWith(n)&&i(e)},disposeAll(){for(let e of[...t.keys()])i(e)}}}var Qwe=[{id:`chat`,label:`Chat`},{id:`terminal`,label:`Terminal`},{id:`files`,label:`Files`},{id:`memory`,label:`Memory`}],f9=`chat`,$we=new Set(Qwe.map(e=>e.id));function eTe(e){return $we.has(e)}function tTe(e,t){if(t){try{if(new URL(e).searchParams.get(`detached`)===`1`)return`extension-detached`}catch{}return`extension`}try{let t=new URL(e);return t.searchParams.get(`connect`)===`1`?`connect`:t.searchParams.get(`runtime`)===`hosted-leader`?`hosted-leader`:t.searchParams.get(`cherry`)===`1`?`cherry`:rTe(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function nTe(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function p9(e){try{let t=new URL(e).searchParams.get(`tab`);return t&&eTe(t)?t:f9}catch{return f9}}function rTe(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function iTe(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`slicc-electron-overlay:set-tab`}function m9(e){return e.toLowerCase().endsWith(II)}function aTe(e){return Array.from(e).find(e=>m9(e.name))??null}function h9(e){if(!e)return!1;if(e.items){for(let t of Array.from(e.items))if(t.kind===`file`)return!0}return!1}function oTe(e){if(!e)return null;if(e.files){let t=aTe(e.files);if(t)return t}if(!e.items)return null;for(let t of Array.from(e.items)){if(t.kind&&t.kind!==`file`)continue;let e=t.getAsFile?.();if(e&&m9(e.name))return e}return null}function sTe(e){if(!e)return[];let t=[],n=new Set,r=e=>{!e||n.has(e)||m9(e.name)||(n.add(e),t.push(e))};if(e.files)for(let t of Array.from(e.files))r(t);if(e.items)for(let t of Array.from(e.items))t.kind&&t.kind!==`file`||r(t.getAsFile?.());return t}var g9=Wv(`sprinkle-icon`),cTe=`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">`,lTe=`</svg>`,_9=null;function uTe(){return _9||=I(()=>Promise.resolve().then(()=>Wye).then(e=>e.icons),void 0),_9}function dTe(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function v9(e){return String(e).replace(/&/g,`&`).replace(/"/g,`"`).replace(/'/g,`'`).replace(/</g,`<`).replace(/>/g,`>`)}function fTe(e){return`${cTe}${e.map(([e,t])=>{let n=Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}="${v9(t)}"`);return n.length?`<${e} ${n.join(` `)}/>`:`<${e}/>`}).join(``)}${lTe}`}async function pTe(e){let t=dTe(e),n=(await uTe())[t];return n?fTe(n):null}function mTe(e){return/^\s*<svg\b/i.test(e)}function hTe(e){return/^data:/i.test(e)}function gTe(e){return e.startsWith(`/`)}function y9(e){return/\.(svg|png|jpe?g|webp|gif|ico)$/i.test(e)}function _Te(e){return/^[a-z][a-z0-9-]*$/.test(e)}function b9(e){return`<img src="${v9(e)}" width="16" height="16" alt="" style="display:block;width:16px;height:16px;object-fit:contain"/>`}async function x9(e,t){if(!e)return null;if(mTe(e))return b9(S9(e));if(hTe(e))return b9(e);if(gTe(e)&&t){try{if(y9(e)&&e.toLowerCase().endsWith(`.svg`)){let n=await t.readFile(e,{encoding:`utf-8`}),r=C9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));return r?b9(S9(r)):null}if(y9(e)){let n=await t.readFile(e,{encoding:`binary`}),r=n instanceof Uint8Array?n:new Uint8Array;return b9(`data:${vTe(e)};base64,${w9(r)}`)}let n=await t.readFile(e,{encoding:`utf-8`}),r=C9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));if(r)return b9(S9(r))}catch(t){g9.warn(`Failed to read sprinkle icon from VFS`,{path:e,error:t instanceof Error?t.message:String(t)})}return null}if(_Te(e)){let t=await pTe(e);if(t)return t;g9.warn(`Unknown Lucide icon name`,{spec:e})}return null}function S9(e){return`data:image/svg+xml;base64,${w9(new TextEncoder().encode(e))}`}function C9(e){let t=e.match(/<svg\b[\s\S]*?<\/svg>/i);return t?t[0]:null}function vTe(e){let t=e.toLowerCase();return t.endsWith(`.png`)?`image/png`:t.endsWith(`.jpg`)||t.endsWith(`.jpeg`)?`image/jpeg`:t.endsWith(`.webp`)?`image/webp`:t.endsWith(`.gif`)?`image/gif`:t.endsWith(`.ico`)?`image/x-icon`:`application/octet-stream`}function w9(e){let t=``,n=32768;for(let r=0;r<e.length;r+=n)t+=String.fromCharCode.apply(null,Array.from(e.subarray(r,r+n)));return typeof btoa<`u`?btoa(t):Buffer.from(t,`binary`).toString(`base64`)}var yTe=class{listeners=new Map;lickHandler;fs;closeHandler;minimizeHandler;stopConeHandler;attachImageHandler;captureScreenHandler;constructor(e,t,n,r,i,a,o){this.fs=e,this.lickHandler=t,this.closeHandler=n,this.minimizeHandler=r,this.stopConeHandler=i,this.attachImageHandler=a,this.captureScreenHandler=o}createAPI(e){let t={name:e,lick:t=>{let n=typeof t==`string`?t:t.action,r=typeof t==`string`?void 0:t.data,i={type:`sprinkle`,sprinkleName:e,targetScoop:STe(e),timestamp:new Date().toISOString(),body:{action:n,data:r}};this.lickHandler(i)},on:(t,n)=>{let r=`${e}:${t}`,i=this.listeners.get(r);i||(i=new Set,this.listeners.set(r,i)),i.add(n)},off:(t,n)=>{let r=`${e}:${t}`;this.listeners.get(r)?.delete(n)},readFile:async e=>await this.fs.readFile(e,{encoding:`utf-8`}),writeFile:async(e,t)=>{await this.fs.writeFile(e,t)},readDir:async e=>(await this.fs.readDir(e)).map(e=>({name:e.name,type:e.type})),exists:async e=>this.fs.exists(e),stat:async e=>{let t=await this.fs.stat(e);return{type:t.type,size:t.size}},mkdir:async e=>{await this.fs.mkdir(e,{recursive:!0})},rm:async e=>{await this.fs.rm(e)},screenshot:async e=>{let n=t._container;if(!n)return``;let r=e?n.querySelector(e):n;if(!r)throw Error(`Element not found: `+(e||`container`));let i=r.getBoundingClientRect(),a=Math.ceil(i.width),o=Math.ceil(i.height);if(a===0||o===0)throw Error(`Element has zero dimensions`);let s=document.createElement(`canvas`),c=window.devicePixelRatio||1;s.width=a*c,s.height=o*c;let l=s.getContext(`2d`);l.scale(c,c);let u=r.cloneNode(!0),d=`<svg xmlns="http://www.w3.org/2000/svg" width="${a}" height="${o}"><foreignObject width="100%" height="100%">${new XMLSerializer().serializeToString(u)}</foreignObject></svg>`;return new Promise((e,t)=>{let n=new Image;n.onload=()=>{l.drawImage(n,0,0),e(s.toDataURL(`image/png`))},n.onerror=()=>t(Error(`Screenshot rendering failed`)),n.src=`data:image/svg+xml;charset=utf-8,`+encodeURIComponent(d)})},setState:t=>{try{localStorage.setItem(`slicc-sprinkle-state:${e}`,JSON.stringify(t))}catch{}},getState:()=>{try{let t=localStorage.getItem(`slicc-sprinkle-state:${e}`);return t?JSON.parse(t):null}catch{return null}},open:e=>{let t=/^https?:|^chrome-extension:/.test(e)?e:Y4(e);window.open(t,`_blank`)},close:()=>this.closeHandler(e),minimize:()=>this.minimizeHandler(e),stopCone:()=>this.stopConeHandler(),attachImage:(e,t,n)=>this.attachImageHandler(e,t,n),captureScreen:()=>this.captureScreenHandler()};return t}pushUpdate(e,t){let n=`${e}:update`,r=this.listeners.get(n);if(r)for(let e of r){let n=r;setTimeout(()=>{if(n.has(e))try{e(t)}catch{}},0)}}removeSprinkle(e){for(let t of this.listeners.keys())t.startsWith(`${e}:`)&&this.listeners.delete(t)}},bTe=`slicc-sprinkle-routes`;function xTe(){try{let e=localStorage.getItem(bTe);return e?JSON.parse(e):{}}catch{return{}}}function STe(e){return xTe()[e]}var CTe=[`/shared/sprinkles`],wTe=new Set([`welcome`,`connect-llm`]);async function TTe(e){let t=new Map;for(let n of CTe)await e.exists(n)&&await T9(e,n,t);return await T9(e,`/`,t),t}async function T9(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=ETe(r);if(!wTe.has(t)&&!n.has(t)){let i;try{i=await e.readFile(r,{encoding:`utf-8`})??``}catch{i=``}n.set(t,{name:t,path:r,title:DTe(i,t),autoOpen:OTe(i),icon:kTe(i)})}}}function ETe(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function DTe(e,t){let n=e.match(/data-sprinkle-title=["']([^"']+)["']/);if(n)return n[1];let r=e.match(/<title>([^<]+)<\/title>/i);return r?r[1].trim():t}function OTe(e){return/data-sprinkle-autoopen\b/.test(e)}function kTe(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=ATe(e,t);if(r<0)continue;let i=e.slice(t,r);if(!/\brel\s*=\s*("|')\s*(?:shortcut\s+)?icon\s*\1/i.test(i))continue;let a=E9(i,`href`);if(a!==void 0)return a.trim()}let r=E9(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function ATe(e,t){let n=!1,r=!1;for(let i=t;i<e.length;i++){let t=e.charCodeAt(i);if(n)t===34&&(n=!1);else if(r)t===39&&(r=!1);else if(t===34)n=!0;else if(t===39)r=!0;else if(t===62)return i}return-1}function E9(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var jTe=s({SprinkleManager:()=>P9,readOpenSprinklesFromUrl:()=>A9,writeOpenSprinklesToUrl:()=>j9}),D9=Wv(`sprinkle-manager`),O9=`slicc-open-sprinkles`,k9=`sprinkles`;function A9(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(k9);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function j9(e){try{if(typeof window>`u`||!window.location||typeof history>`u`||typeof history.replaceState!=`function`)return;let t=new URL(window.location.href);e.length===0?t.searchParams.delete(k9):t.searchParams.set(k9,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var M9=`slicc-known-sprinkles`,N9=`slicc-autoopened-once`,MTe=[`/workspace`,`/shared`,`/scoops`],NTe=250,P9=class{fs;bridge;callbacks;availableSprinkles=new Map;watcherUnsub;openSprinkles=new Map;attentionOnly=new Set;inflightRefresh=null;lastRefreshAt=0;autoOpenBehavior;onSendToSprinkle;registeredSprinkles=new Set;inlineSprinkles;changeListeners=new Set;changeNotifyScheduled=!1;urlWriteScheduled=!1;constructor(e,t,n,r,i={}){this.fs=e;let a=async()=>{let e=`image/png`,t=tb(),n=eb();if(!t&&!n)throw Error(`Screen capture unavailable in this environment`);if(t&&!navigator.mediaDevices?.getDisplayMedia)throw Error(`Screen capture not supported in this browser`);let r,i,a;if(t){let t=await navigator.mediaDevices.getDisplayMedia({video:!0,audio:!1});try{let n=document.createElement(`video`);n.srcObject=t,n.muted=!0,n.playsInline=!0,await new Promise((e,t)=>{n.onloadedmetadata=()=>n.play().then(()=>e()).catch(t),n.onerror=()=>t(Error(`Failed to load video stream`))}),await new Promise(e=>setTimeout(e,100)),i=n.videoWidth,a=n.videoHeight;let o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s)throw Error(`Failed to get canvas context`);s.drawImage(n,0,0,i,a),r=await(await new Promise((t,n)=>{o.toBlob(e=>e?t(e):n(Error(`Failed to create image blob`)),e,1)})).arrayBuffer()}finally{for(let e of t.getTracks())e.stop()}}else{let t=await n.call(`screencapture`,{mimeType:e,quality:1},{timeoutMs:5*6e4});r=t.bytes,i=t.width,a=t.height}let o=new Uint8Array(r),s=[],c=8192;for(let e=0;e<o.length;e+=c)s.push(String.fromCharCode(...o.subarray(e,e+c)));return{base64:btoa(s.join(``)),width:i,height:a,mimeType:e}};this.bridge=new yTe(e,t,e=>this.close(e),e=>this.minimize(e),r,i.onAttachImage??(()=>{}),a),this.callbacks=n,this.autoOpenBehavior=i.autoOpenBehavior??`activate`,this.onSendToSprinkle=i.onSendToSprinkle,this.inlineSprinkles=i.inlineSprinkles??new Set}setSendToSprinkleHook(e){this.onSendToSprinkle&&!e&&D9.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=A9();if(e!==null){for(let t of e)try{await this.open(t)}catch{D9.warn(`Failed to restore sprinkle`,{name:t})}return}else{let e=localStorage.getItem(O9);if(e)try{let t=JSON.parse(e);for(let e of t)try{await this.open(e)}catch{D9.warn(`Failed to restore sprinkle`,{name:e})}}finally{try{localStorage.removeItem(O9)}catch{}}else{let e=this.autoOpenBehavior===`attention`,t=this.loadAutoOpenedOnce(),n=new Set;for(let r of this.availableSprinkles.values())if(r.autoOpen&&!t.has(r.name))try{await this.open(r.name,void 0,{attention:e}),n.add(r.name)}catch{D9.warn(`Failed to auto-open sprinkle`,{name:r.name})}n.size>0&&this.persistAutoOpenedOnce(n)}}}catch{}await this.surfaceUnseenSprinkles()}async surfaceUnseenSprinkles(){let e=this.loadKnownSprinkles(),t=this.loadAutoOpenedOnce(),n=this.autoOpenBehavior===`attention`,r=new Set;for(let i of this.availableSprinkles.values())if(!e.has(i.name)&&!this.openSprinkles.has(i.name)&&!(i.autoOpen&&t.has(i.name)))try{await this.open(i.name,void 0,{attention:i.autoOpen?n:!0}),i.autoOpen&&r.add(i.name),D9.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{D9.warn(`Failed to surface unseen sprinkle`,{name:i.name})}this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}loadKnownSprinkles(){try{let e=localStorage.getItem(M9);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(M9,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(N9);if(!e)return new Set;let t=JSON.parse(e);return Array.isArray(t)?new Set(t.filter(e=>typeof e==`string`)):new Set}catch{return new Set}}persistAutoOpenedOnce(e){try{let t=new Set([...this.loadAutoOpenedOnce(),...e]);localStorage.setItem(N9,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(O9,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,j9([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<NTe))return this.inflightRefresh=this.runOpenNewAutoOpenSprinkles().finally(()=>{this.lastRefreshAt=Date.now(),this.inflightRefresh=null}),this.inflightRefresh}async runOpenNewAutoOpenSprinkles(){let e=new Set(this.availableSprinkles.keys());await this.refresh();let t=this.autoOpenBehavior===`attention`,n=this.loadAutoOpenedOnce(),r=new Set,i=!1;for(let a of this.availableSprinkles.values())if(!this.openSprinkles.has(a.name)&&!e.has(a.name))if(i=!0,a.autoOpen){if(n.has(a.name)){D9.info(`Skipped one-shot auto-open for previously-consumed sprinkle`,{name:a.name});continue}try{await this.open(a.name,void 0,{attention:t}),r.add(a.name),D9.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{D9.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),D9.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{D9.warn(`Failed to surface newly-installed sprinkle`,{name:a.name})}i&&this.persistKnownSprinkles(new Set(this.availableSprinkles.keys())),r.size>0&&this.persistAutoOpenedOnce(r)}async refresh(){this.availableSprinkles=await TTe(this.fs),D9.info(`Discovered sprinkles`,{count:this.availableSprinkles.size}),this.syncRegisteredIcons(),this.notifyChange()}syncRegisteredIcons(){if(!this.callbacks.registerSprinkle)return;let e=new Set;for(let t of this.availableSprinkles.values())this.inlineSprinkles.has(t.name)||e.add(t.name);for(let t of this.availableSprinkles.values())if(e.has(t.name)&&!this.registeredSprinkles.has(t.name))try{this.callbacks.registerSprinkle(t.name,t.title,{icon:t.icon}),this.registeredSprinkles.add(t.name)}catch(e){D9.warn(`registerSprinkle callback threw`,{name:t.name,error:e instanceof Error?e.message:String(e)})}for(let t of[...this.registeredSprinkles])if(!e.has(t)){this.openSprinkles.has(t)&&this.close(t);try{this.callbacks.unregisterSprinkle?.(t)}catch(e){D9.warn(`unregisterSprinkle callback threw`,{name:t,error:e instanceof Error?e.message:String(e)})}this.registeredSprinkles.delete(t)}}onChange(e){return this.changeListeners.add(e),()=>{this.changeListeners.delete(e)}}notifyChange(){this.changeNotifyScheduled||(this.changeNotifyScheduled=!0,queueMicrotask(()=>{this.changeNotifyScheduled=!1;for(let e of this.changeListeners)try{e()}catch(e){D9.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){D9.info(`Sprinkle already open`,{name:e});return}let r=this.availableSprinkles.get(e);if(r||=(await this.refresh(),this.availableSprinkles.get(e)),!r)throw Error(`Sprinkle not found: ${e}`);let i=await this.fs.readFile(r.path,{encoding:`utf-8`});if(i==null)throw Error(`Failed to read sprinkle content: ${r.path} (file may be corrupted or missing)`);let a=typeof i==`string`?i:new TextDecoder(`utf-8`).decode(i),o=document.createElement(`div`);o.className=`sprinkle-panel`,o.style.cssText=`width: 100%; height: 100%; display: flex; flex-direction: column; overflow: hidden;`,o.dataset.sprinkle=e,this.openSprinkles.set(e,{renderer:null,container:o}),n.attention?this.attentionOnly.add(e):this.attentionOnly.delete(e),this.callbacks.addSprinkle(e,r.title,o,t,{...n,icon:r.icon});let s=new yL(o,this.bridge.createAPI(e));await s.render(a,e),this.openSprinkles.get(e).renderer=s,this.persistOpenSprinkles(),lSe(e),D9.info(`Sprinkle opened`,{name:e,title:r.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),D9.info(`Sprinkle promoted from attention to user-opened`,{name:e}),this.notifyChange())}async activate(e,t){if(this.attentionOnly.has(e)){this.markActivated(e);return}if(!this.openSprinkles.has(e))try{await this.open(e,t)}catch(t){D9.warn(`Failed to open sprinkle from rail-icon click`,{name:e,error:t instanceof Error?t.message:String(t)})}}close(e){let t=this.openSprinkles.get(e);t&&(t.renderer?.dispose(),t.container.remove(),this.bridge.removeSprinkle(e),this.openSprinkles.delete(e),this.attentionOnly.delete(e),this.callbacks.closeSprinkleContent?this.callbacks.closeSprinkleContent(e):this.callbacks.removeSprinkle(e),this.persistOpenSprinkles(),D9.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),D9.info(`Sprinkle minimized`,{name:e}))}available(){return Array.from(this.availableSprinkles.values())}opened(){return Array.from(this.openSprinkles.keys())}setupWatcher(e){let t=null,n=()=>{t||=setTimeout(()=>{t=null,this.openNewAutoOpenSprinkles().catch(e=>{D9.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=MTe.map(t=>e.watch(t,e=>e.endsWith(`.shtml`),n));this.watcherUnsub=()=>{for(let e of r)e();t&&=(clearTimeout(t),null)}}dispose(){this.watcherUnsub?.()}sendToSprinkle(e,t){let n=this.openSprinkles.get(e);if(!n){D9.warn(`Cannot send to closed sprinkle`,{name:e});return}if(this.bridge.pushUpdate(e,t),n.renderer.pushUpdate(t),this.onSendToSprinkle)try{this.onSendToSprinkle(e,t)}catch(t){D9.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}},PTe=100,F9=6,I9=null,L9=null,R9=null;function FTe(){return I9||(I9=document.createElement(`div`),I9.className=`s2-tooltip`,document.body.appendChild(I9)),I9}function ITe(e){let t=e.getAttribute(`data-tooltip`);if(!t)return;let n=FTe();n.textContent=t,n.classList.remove(`s2-tooltip--visible`),n.style.left=`0`,n.style.top=`0`;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect(),a=e.getAttribute(`data-tooltip-pos`)||`bottom`,o,s;a===`top`?(o=r.top-i.height-F9,s=r.left+r.width/2-i.width/2):a===`right`?(o=r.top+r.height/2-i.height/2,s=r.right+F9):a===`left`?(o=r.top+r.height/2-i.height/2,s=r.left-i.width-F9):(o=r.bottom+F9,s=r.left+r.width/2-i.width/2),a===`bottom`&&o+i.height>window.innerHeight-4?o=r.top-i.height-F9:a===`top`&&o<4?o=r.bottom+F9:a===`left`&&s<4?s=r.right+F9:a===`right`&&s+i.width>window.innerWidth-4&&(s=r.left-i.width-F9),s<4&&(s=4),s+i.width>window.innerWidth-4&&(s=window.innerWidth-i.width-4),o<4&&(o=4),o+i.height>window.innerHeight-4&&(o=window.innerHeight-i.height-4),n.style.top=`${o}px`,n.style.left=`${s}px`,n.classList.add(`s2-tooltip--visible`)}function z9(){L9&&=(clearTimeout(L9),null),R9=null,I9?.classList.remove(`s2-tooltip--visible`)}function LTe(){document.addEventListener(`pointerover`,e=>{let t=e.target.closest?.(`[data-tooltip]`);t&&t===R9||(z9(),t&&(R9=t,L9=setTimeout(()=>ITe(t),PTe)))},!0),document.addEventListener(`pointerout`,e=>{if(!R9)return;let t=e.relatedTarget;t&&R9.contains(t)||z9()},!0),document.addEventListener(`pointerdown`,z9,!0)}var B9=Wv(`welcome-sentinel`),RTe=`/shared/.welcomed`;function zTe(e){if(!e.isWriter){B9.info(`Welcome sentinel write skipped (OPFS follower — read-only tab)`);return}e.writableFs.writeFile(RTe,`1`).catch(e=>B9.warn(`Failed to persist welcome completion marker`,e))}var $=Wv(`main`),V9=new Set([`first-run`,`onboarding-complete`,`onboarding-complete-with-provider`,`shortcut-migrate`]),H9=`slicc:welcome-flow-fired`;function U9(){try{let e=typeof localStorage<`u`?localStorage.getItem(H9):null;if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t.map(String):[])}catch{return new Set}}function W9(e){try{if(typeof localStorage>`u`)return;localStorage.setItem(H9,JSON.stringify([...e]))}catch{}}function G9(e,t,n,r){if(V9.has(e)&&t.has(e)){$.debug(`Suppressing duplicate welcome lick (${r})`,{action:e});return}V9.has(e)&&(t.add(e),W9(t)),n()}var K9=`slicc-pending-mount`,q9=`pendingMount`,J9=new Set([`welcome`]);function Y9(){try{let e=new URLSearchParams(window.location.search).get(`ui-fixture`);return e===null?!1:e===``||e===`1`||e.toLowerCase()===`true`}catch{return!1}}async function X9(e){let[{createChatFixture:t,FIXTURE_SESSION_ID:n,FIXTURE_SCOOP_NAME:r}]=await Promise.all([I(()=>import(`./chat-fixture-CLDS_yKK.js`),[])]);await e.switchToContext(n,!0,r),e.loadMessages(t());let i=new URLSearchParams(window.location.search).get(`compacting`);(i===`summarizing`||i===`extracting-memory`)&&e.setCompactionState?.(i),$.info(`Loaded UI fixture session for design iteration`)}async function BTe(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(K9,1);n.onupgradeneeded=()=>n.result.createObjectStore(`handles`),n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)}),n=t.transaction(`handles`,`readwrite`);n.objectStore(`handles`).put(e,q9),await new Promise(e=>n.oncomplete=()=>e()),t.close()}async function Z9(e){let t;try{t=await new Promise((e,t)=>{let n=indexedDB.open(K9,1);n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}catch{return}let n=t.transaction(`handles`,`readwrite`),r=await new Promise(e=>{let t=n.objectStore(`handles`).get(q9);t.onsuccess=()=>e(t.result),t.onerror=()=>e(void 0)});if(r){n.objectStore(`handles`).delete(q9),await new Promise(e=>n.oncomplete=()=>e());let t=`/mnt/${r.name}`,i=jy.fromHandle(r,{mountId:My()});await e.mount(t,i),$.info(`Mounted folder from welcome onboarding`,{name:r.name,path:t})}t.close()}function VTe(){let e=document.createElement(`div`);e.className=`skill-drop-overlay`;let t=document.createElement(`div`);t.className=`skill-drop-overlay__card`;let n=document.createElement(`div`);n.className=`skill-drop-overlay__title`,t.appendChild(n);let r=document.createElement(`div`);return r.className=`skill-drop-overlay__desc`,t.appendChild(r),e.appendChild(t),document.body.appendChild(e),{show(t,i){n.textContent=t,r.textContent=i,e.classList.add(`skill-drop-overlay--visible`)},hide(){e.classList.remove(`skill-drop-overlay--visible`)}}}function HTe(){let e=document.createElement(`div`);return e.className=`skill-drop-toast-container`,document.body.appendChild(e),(t,n)=>{let r=document.createElement(`div`);r.className=`skill-drop-toast skill-drop-toast--${n}`,r.textContent=t,e.appendChild(r),requestAnimationFrame(()=>r.classList.add(`skill-drop-toast--visible`)),window.setTimeout(()=>{r.classList.remove(`skill-drop-toast--visible`),window.setTimeout(()=>r.remove(),180)},4200)}}function UTe(e,t,n,r){let i=VTe(),a=0,o=!1,s=()=>{a=0,o||i.hide()};window.addEventListener(`dragenter`,e=>{h9(e.dataTransfer)&&(e.preventDefault(),a+=1,o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragover`,e=>{h9(e.dataTransfer)&&(e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`),o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragleave`,()=>{a!==0&&(a=Math.max(0,a-1),a===0&&!o&&i.hide())}),window.addEventListener(`dragend`,s),window.addEventListener(`blur`,s),window.addEventListener(`drop`,async c=>{let l=oTe(c.dataTransfer),u=sTe(c.dataTransfer);if(!l&&u.length===0){s();return}if(c.preventDefault(),a=0,l&&o){i.hide(),t(`Another .skill installation is already in progress.`,`error`);return}if(u.length>0&&r)try{await r(u)}catch(e){t(`Failed to attach dropped files: ${e instanceof Error?e.message:String(e)}`,`error`)}if(l){o=!0,i.show(`Installing skill…`,l.name);try{let r=await XI(e,l);await n(),t(`Installed "${r.skillName}" to ${r.destinationPath} (${r.fileCount} files).`,`success`)}catch(e){t(`Failed to install dropped skill: ${e instanceof Error?e.message:String(e)}`,`error`)}finally{o=!1,i.hide()}}else i.hide()})}async function WTe(e){try{let t=await e.readDir(`/home`),n=null;for(let r of t){if(r.type!==`directory`)continue;let t=`/home/${r.name}/.welcome.json`;try{let r=(await e.stat(t)).mtime??0;if(n&&r<=n.mtime)continue;let i=await e.readFile(t,{encoding:`utf-8`}),a=JSON.parse(typeof i==`string`?i:new TextDecoder().decode(i));a&&typeof a==`object`&&(n={profile:a,mtime:r})}catch{}}return n?.profile??{}}catch{return{}}}async function Q9(e,t,n){if(await Fae())return;let r=e?await WTe(e):{},{getSelectedModelId:i,getProviderConfig:a,getProviderModels:o}=await I(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await Promise.resolve().then(()=>l8);return{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}},void 0),s=(()=>{try{return i()||null}catch{return null}})(),c=(()=>{if(!s)return null;try{return o(t).find(e=>e.id===s)?.name??s}catch{return s}})(),l=null;try{l=a(t).name??null}catch{}n({action:`onboarding-complete-with-provider`,data:{profile:r,provider:t,providerName:l,model:s,modelLabel:c,validation:`preexisting`}})}async function $9(e,t){let n=t?.detached===!0,{OffscreenClient:r}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-CPehYlEH.js`);return{OffscreenClient:e}},[]),{VirtualFS:i,resolveVfsBackendFromEnv:a}=await I(async()=>{let{VirtualFS:e,resolveVfsBackendFromEnv:t}=await Promise.resolve().then(()=>FI);return{VirtualFS:e,resolveVfsBackendFromEnv:t}},void 0),{publishAgentBridgeProxy:o}=await I(async()=>{let{publishAgentBridgeProxy:e}=await import(`./agent-bridge-HevsOQu4.js`);return{publishAgentBridgeProxy:e}},[]),{warnIfPanelVfsConstructionUnderOpfs:s}=await I(async()=>{let{warnIfPanelVfsConstructionUnderOpfs:e}=await import(`./panel-vfs-guard-1E455_lR.js`);return{warnIfPanelVfsConstructionUnderOpfs:e}},[]),c=new S7(e,!n);await c.panels.chat.initSession(`session-cone`),o();let l=null,u=a();s(u,$);let d=u===`opfs`,f=await i.create({dbName:`slicc-fs`,...d?{backend:`memory`}:{}});d||(c.panels.fileBrowser.setFs(f),$.info(`File browser wired to shared VFS (local IndexedDB)`)),Yy().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await Zy(e,f,$);t.length!==0&&$.warn(`Some mounts could not be recovered in the panel VFS`,{count:t.length,paths:t.map(e=>e.path)})}).catch(e=>$.warn(`Failed to restore persisted mounts in panel VFS`,e));let p=f;d9({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>p,logger:$}),UTe(f,HTe(),async()=>{await c.panels.fileBrowser.refresh()},e=>c.panels.chat.addAttachmentsFromFiles(e));{let{registerSessionCostsProvider:e}=await I(async()=>{let{registerSessionCostsProvider:e}=await import(`./cost-command-CW43ld_y.js`);return{registerSessionCostsProvider:e}},[]);e(()=>new Promise(e=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`get-session-costs`}},t=>{if(chrome.runtime.lastError||!t?.ok){e([]);return}e(t.costs??[])})}))}let m,h=new Set,g=async e=>{l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid),c.setScoopSwitcherSelected?.(e.jid),c.panels.scoops.setSelectedJid(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await c.panels.chat.switchToContext(t,!e.isCone,n),m.requestScoopMessages(e.jid),m.isProcessing(e.jid)&&c.panels.chat.setProcessing(!0),ee(e)};m=new r({onStatusChange:(e,t)=>{c.panels.scoops.updateScoopStatus(e,t),c.updateScoopSwitcherStatus?.(e,t),l?.jid===e&&(c.setAgentProcessing(t===`processing`),t===`processing`?c.panels.chat.setProcessing(!0):t===`ready`&&c.panels.chat.setProcessing(!1))},onScoopCreated:e=>{c.panels.scoops.refreshScoops(),c.refreshScoopSwitcher?.(),l||(l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid))},onScoopListUpdate:()=>{let e=new Set(m.getScoops().map(e=>e.folder));for(let t of h)e.has(t)||c.panels.chat.deleteSessionById(`session-${t}`);if(h=e,c.panels.scoops.refreshScoops(),c.refreshScoopSwitcher?.(),!l){let e=m.getScoops().find(e=>e.isCone);e&&(l=e,m.setSelectedScoopJid(e.jid),c.panels.memory.setSelectedScoop(e.jid))}},onIncomingMessage:(e,t)=>{if(Q4(t.channel)){let n=new Date(t.timestamp).getTime(),r=t.channel;if(l?.jid===e)c.panels.chat.addLickMessage(t.id,t.content,r,n);else{let i=m.getScoops().find(t=>t.jid===e),a=i?.isCone?`session-cone`:i?`session-${i.folder}`:`session-${e}`;c.panels.chat.persistLickToSession(a,{id:t.id,content:t.content,channel:r,timestamp:n})}return}if(l?.jid===e){let e=t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content;c.panels.chat.addUserMessage(e,t.attachments)}},onScoopMessagesReplaced:(e,t)=>{l?.jid===e&&c.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{l?.jid===e&&c.panels.chat.setCompactionState(t)},onReady:async()=>{try{$.info(`Offscreen engine ready, scoop count:`,m.getScoops().length);let e=window.localStorage.getItem(yb);e&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:e,workerBaseUrl:window.localStorage.getItem(vb)}}).catch(()=>{});let t=l??m.getScoops().find(e=>e.isCone)??m.getScoops()[0];t&&(l=t,m.setSelectedScoopJid(t.jid),await g(t))}catch(e){$.error(`Failed to initialize on ready`,{error:e instanceof Error?e.message:String(e)})}}}),chrome.runtime.onMessage.addListener(e=>(!Ug(e)||e.source!==`service-worker`||e.payload.type!==`detached-active`||n||nL(m,c),!1)),n&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>{}),n||(c.setShowPopoutButton(!0),c.setPopoutClickHandler(()=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e),c.resetPopoutButton()})})),m.setLocalFS(f);let _=f;if(d){let{createRemoteVfsClient:e}=await I(async()=>{let{createRemoteVfsClient:e}=await import(`./remote-vfs-client-BWeQEOy_.js`);return{createRemoteVfsClient:e}},[]),{createRemoteWritableVfsClient:t}=await I(async()=>{let{createRemoteWritableVfsClient:e}=await import(`./writable-vfs-client-COZzXV3K.js`);return{createRemoteWritableVfsClient:e}},[]),n=e({transport:m.getTransport()}),r=t({transport:m.getTransport()});c.panels.fileBrowser.setFs(n),p=n,_=r,$.info(`File browser + preview-vfs wired to worker VFS RPC`)}(async()=>{try{let{RemoteTerminalView:e}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-ZxR5LM7B.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:t}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-udqdNnx_.js`);return{fetchSecretEnvVars:e}},[]),n=await t(),r=new e({client:m,cwd:`/`,env:Object.keys(n).length>0?n:void 0});await c.panels.terminal.mountRemoteShell(r),window.addEventListener(`beforeunload`,()=>r.dispose(),{once:!0}),$.info(`Panel terminal mounted as RemoteTerminalView (offscreen TerminalSessionHost)`)}catch(e){$.warn(`Failed to mount remote terminal view`,e)}})(),c.panels.chat.setAttachmentWriter(tL(f));let v=m.createAgentHandle();c.panels.chat.setAgent(v),c.panels.scoops.setOrchestrator(m),c.panels.memory.setOrchestrator(m),c.setScoopSwitcherOrchestrator?.(m),c.setScoopSwitcherTranscriptSource?.(e=>m.getScoopTranscript(e)),c.setScoopsRailTranscriptSource?.(e=>m.getScoopTranscript(e)),c.onScoopSelect=g;let ee=e=>{let t=e.config?.modelId,n=t?t5(t):n5();c.panels.chat.setModelSupportsReasoning(!!n.reasoning,Kc(n).includes(`xhigh`)),c.panels.chat.setThinkingLevel(e.config?.thinkingLevel)};c.onModelChange=e=>{localStorage.setItem(`selected-model`,e),m.updateModel(),l&&ee(l)},c.onThinkingLevelChange=e=>{l&&m.setScoopThinkingLevel(l.jid,e)},c.onModelsRefreshed=()=>{l&&ee(l)},c.onClearChat=async e=>{if(e?.freeze===`quick`)try{await D7({vfs:_})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await E7({vfs:_})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await c.panels.chat.deleteSessionById(`session-cone`),await m.clearAllMessages()},c.onClearFilesystem=async()=>{m.clearFilesystem()};let{OnboardingOrchestrator:y}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-Bhtg8moO.js`);return{OnboardingOrchestrator:e}},[]),b=RL,{getAvailableProviders:te,getProviderConfig:ne,getProviderModels:re,addAccount:x,setSelectedModelId:ie,getAccounts:S,isModelHiddenFromPicker:C,providerOffersLlmModels:ae}=await I(async()=>{let{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>l8);return{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:oe,resolveDeviceCodeDecision:se}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),ce=()=>{let e=te().filter(e=>ae(e)),t=e.map(e=>{let t=ne(e);return{id:t.id,name:t.name,description:t.description,requiresApiKey:t.requiresApiKey??!0,requiresBaseUrl:t.requiresBaseUrl??!1,requiresDeployment:!!t.requiresDeployment,requiresApiVersion:!!t.requiresApiVersion,apiKeyPlaceholder:t.apiKeyPlaceholder??void 0,apiKeyEnvVar:t.apiKeyEnvVar??void 0,defaultBaseUrl:t.baseUrlPlaceholder??void 0,baseUrlDescription:t.baseUrlDescription??void 0,deploymentPlaceholder:t.deploymentPlaceholder??void 0,deploymentDescription:t.deploymentDescription??void 0,apiVersionDefault:t.apiVersionDefault??void 0,apiVersionDescription:t.apiVersionDescription??void 0,isOAuth:!!t.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),n={};for(let t of e)try{n[t]=re(t).filter(e=>!C(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}},w=null,T=()=>w||(w=new y({fs:f,postSystemMessage:e=>c.panels.chat.addSystemMessage(e),postDipReference:e=>c.panels.chat.addSystemMessage(e),getProviderCatalogue:ce,saveAccount:(e,t,n,r,i)=>x(e,t,n,r,i),setSelectedModel:e=>ie(e),resolveModelLabel:(e,t)=>{try{return re(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>b(e),fireFinalLick:e=>{k7(m),G9(String(e?.action??``),E,()=>m.sendSprinkleLick(`welcome`,e),`orchestrator-ext`)},launchOAuth:async(e,t)=>{try{let n=ne(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&x(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),t=await e();if(!t)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await n.onOAuthLoginIntercepted(t,()=>void 0,{presentDeviceCode:oe({broadcastToDip:b})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:A7(e,n,re,C)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),w),E=U9(),D=e=>{if(e.type!==`sprinkle`)return!1;let t=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(t&&V9.has(t)){if(E.has(t))return $.debug(`Suppressing duplicate welcome lick (ext)`,{action:t}),!0;E.add(t),W9(E)}if(!(t===`first-run`||t===`onboarding-complete`||t===`connect-ready`||t===`connect-attempt`||t===`oauth-attempt`||t===`device-code-decision`||t===`shortcut-migrate`))return!1;let n=e.body,r=t;if(r===`device-code-decision`){let e=n?.data?.decision;return se(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return T().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=T(),t=n?.data??{};return t.mountWorkspace&&Z9(f).catch(e=>$.warn(`Failed to mount workspace from onboarding`,e)),e.handleOnboardingComplete(t).catch(e=>$.warn(`OnboardingOrchestrator failed`,e)),!0}if(r===`connect-ready`){let e=S();if(e.length>0){let t=e[0],n=(()=>{try{return ne(t.providerId)}catch{return null}})();return b({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(f,t.providerId,e=>{G9(String(e.action??``),E,()=>m.sendSprinkleLick(`welcome`,e),`fast-forward-ext`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return T().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&T().handleConnectAttempt({provider:String(e.provider??``),apiKey:String(e.apiKey??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null,deployment:typeof e.deployment==`string`&&e.deployment?String(e.deployment):null,apiVersion:typeof e.apiVersion==`string`&&e.apiVersion?String(e.apiVersion):null,model:e.model==null?null:String(e.model)}).catch(e=>$.warn(`handleConnectAttempt failed`,e)),!0}if(r===`oauth-attempt`){let e=n?.data;return e&&T().handleOAuthAttempt({provider:String(e.provider??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null}).catch(e=>$.warn(`handleOAuthAttempt failed`,e)),!0}return r===`shortcut-migrate`?(f.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};c.panels.chat.onDipLick=(e,t)=>{D({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||m.sendSprinkleLick(`inline`,{action:e,data:t})};let O=new P9(f,async e=>{if(e.type===`sprinkle`){if(D(e)){e.body?.action===`shortcut-migrate`&&O.close(`welcome`);return}if(e.sprinkleName===`welcome`&&e.body?.action===`request-mount`){try{let e=await Ty();if(e.cancelled){O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(e.error){$.warn(`Mount picker popup failed`,e.error),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(!e.handleInIdb||typeof e.idbKey!=`string`){$.warn(`Mount picker popup returned unexpected result`,e),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}let t=await Dy(e.idbKey);if(!t){$.warn(`Mount picker popup did not store a handle`),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}await Oy(t),await BTe(t),O.sendToSprinkle(`welcome`,{action:`mount-complete`,dirName:t.name})}catch(e){$.warn(`Mount picker failed`,e),O.sendToSprinkle(`welcome`,{action:`mount-cancelled`})}return}m.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>c.addSprinkle(e,t,n,r,i),removeSprinkle:e=>c.removeSprinkle(e),minimizeSprinkle:e=>c.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>c.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>c.unregisterSprinkle(e),closeSprinkleContent:e=>c.closeSprinkleContent(e)},()=>{let e=m.getScoops().find(e=>e.isCone);e&&m.stopScoop(e.jid)},{autoOpenBehavior:`attention`,onAttachImage:(e,t,n)=>c.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9});window.__slicc_sprinkleManager=O,window.__slicc_reloadSkills=()=>(chrome.runtime.sendMessage({source:`panel`,payload:{type:`reload-skills`}}),Promise.resolve()),m.setSprinkleOpHandler(e=>{let{id:t,op:n,name:r,data:i}=e;console.log(`[main-ext] sprinkle-op handler called`,{id:t,op:n,name:r}),(async()=>{try{let e;switch(n){case`list`:await O.refresh(),e=O.available();break;case`opened`:e=O.opened();break;case`refresh`:await O.refresh(),e=O.available().length;break;case`open`:await O.open(r),e=!0;break;case`close`:O.close(r),e=!0;break;case`send`:O.sendToSprinkle(r,i),e=!0;break;case`openNewAutoOpen`:await O.openNewAutoOpenSprinkles(),e=!0;break}console.log(`[main-ext] sprinkle-op response sending`,{id:t,op:n,result:typeof e}),chrome.runtime.sendMessage({source:`panel`,payload:{type:`sprinkle-op-response`,id:t,result:e}}).catch(()=>{})}catch(e){chrome.runtime.sendMessage({source:`panel`,payload:{type:`sprinkle-op-response`,id:t,error:e instanceof Error?e.message:String(e)}}).catch(()=>{})}})()}),await O.refresh(),c.onSprinkleClose=e=>O.close(e),c.onSprinkleActivate=e=>{O.activate(e)},c.getAvailableSprinkles=()=>[],c.onOpenSprinkle=(e,t)=>O.open(e,t),c.resolveSprinkleIcon=e=>x9(e,f),c.updateAddButtons(),await O.restoreOpenSprinkles();let{PanelFollowerSprinkleProxy:le}=await I(async()=>{let{PanelFollowerSprinkleProxy:e}=await import(`./follower-sprinkle-bridge-s_KYng2H.js`);return{PanelFollowerSprinkleProxy:e}},[]),{SprinkleFollowerController:k}=await I(async()=>{let{SprinkleFollowerController:e}=await Promise.resolve().then(()=>Uwe);return{SprinkleFollowerController:e}},void 0),A={send(e){chrome.runtime.sendMessage(e).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||$.error(`Panel → offscreen sendMessage failed`,{error:t})})}},j={onMessage(e){let t=t=>(!t||typeof t!=`object`||!(`source`in t)||!(`payload`in t)||e(t),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)}},ue=null;ue=new k({sync:new le(A,j,{onSprinklesList:e=>void ue?.updateAvailable(e),onSprinkleUpdate:(e,t)=>ue?.handleSprinkleUpdate(e,t)}),addSprinkle:(e,t,n,r,i)=>c.addSprinkle(e,t,n,r,i),removeSprinkle:e=>c.removeSprinkle(e)});let de=XL({sender:{send(e){chrome.runtime.sendMessage(e).catch(e=>{let t=e instanceof Error?e.message:String(e);/receiving end does not exist/i.test(t)||$.error(`Panel → offscreen sendMessage failed (leader)`,{error:t})})}},subscriber:{onMessage(e){let t=t=>(!t||typeof t!=`object`||!(`source`in t)||!(`payload`in t)||e(t),!1);return chrome.runtime.onMessage.addListener(t),()=>chrome.runtime.onMessage.removeListener(t)}},sprinkleManager:O,client:m,chat:c.panels.chat,log:$});if(window.addEventListener(`beforeunload`,()=>de.dispose(),{once:!0}),!f.getWatcher()){let{FsWatcher:e}=await I(async()=>{let{FsWatcher:e}=await Promise.resolve().then(()=>FI);return{FsWatcher:e}},void 0);f.setWatcher(new e)}let fe=f.getWatcher();fe&&O.setupWatcher(fe),!await f.exists(`/shared/.welcomed`)&&localStorage.getItem(`slicc-welcomed`)&&(await f.writeFile(`/shared/.welcomed`,`1`).catch(()=>{}),localStorage.removeItem(`slicc-welcomed`)),Tb(window.localStorage)||Ub(f).then(e=>{e.isFirstRun&&(E.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),E.delete(`first-run`),W9(E)),E.add(`first-run`),W9(E),T().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e)),$.info(`SprinkleManager initialized (extension mode)`),m.requestState(),$.info(`Extension UI connected to offscreen agent engine`);let{installNukeReloadListener:pe}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-DThbTH3f.js`);return{installNukeReloadListener:e}},[]);pe(),Y9()&&await X9(c.panels.chat),r8().catch(()=>{}),O7(_)}async function GTe(e,t){let n=t===`electron-overlay`;$.info(`starting standalone with kernel worker`);let{spawnKernelWorker:r}=await I(async()=>{let{spawnKernelWorker:e}=await import(`./spawn-CvrZvu3h.js`);return{spawnKernelWorker:e}},__vite__mapDeps([31,32])),{installPageStorageSync:i}=await I(async()=>{let{installPageStorageSync:e}=await import(`./page-storage-sync-BMnuL0eG.js`);return{installPageStorageSync:e}},[]),{VirtualFS:a,resolveVfsBackendFromEnv:o}=await I(async()=>{let{VirtualFS:e,resolveVfsBackendFromEnv:t}=await Promise.resolve().then(()=>FI);return{VirtualFS:e,resolveVfsBackendFromEnv:t}},void 0),{BrowserAPI:s}=await I(async()=>{let{BrowserAPI:e}=await import(`./cdp-CaT5TlrI.js`);return{BrowserAPI:e}},[]),{createMigrationSplash:c}=await I(async()=>{let{createMigrationSplash:e}=await import(`./migration-splash-D-cAt2r9.js`);return{createMigrationSplash:e}},[]),l=await kb(),u=nTe(n?`electron-overlay`:`standalone`,l!==null)?bb:null;await Ob({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:u,runtimeConfigFetcher:async()=>l});let d=new S7(e,n);if(n){let e=p9(window.location.href);d.setActiveTab(e);let t=document.createElement(`style`);t.id=`slicc-electron-overlay-runtime-style`,t.textContent=`
|
|
1656
1656
|
#app > .tab-bar { display: none !important; }
|
|
1657
1657
|
#app > .tab-content {
|
|
1658
1658
|
height: calc(100vh - var(--s2-header-height));
|
|
@@ -1660,7 +1660,7 @@ Long press — discard without saving`),n.setAttribute(`label`,`New session. Cli
|
|
|
1660
1660
|
#app > .tab-content > .tab-content__panel {
|
|
1661
1661
|
height: 100%;
|
|
1662
1662
|
}
|
|
1663
|
-
`,document.head.appendChild(t),window.addEventListener(`message`,e=>{e.source===window.parent&&iTe(e.data)&&d.setActiveTab(p9(`http://localhost/?tab=${e.data.tab??``}`))}),window.addEventListener(`keydown`,e=>{e.code===`Semicolon`&&(e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey&&!e.repeat&&(e.preventDefault(),e.stopPropagation(),window.parent.postMessage({type:`slicc-electron-overlay:toggle`},`*`))},!0)}await d.panels.chat.initSession(`session-cone`),$.info(`Session initialized (kernel-worker mode)`);let f=o()===`opfs`,p=await a.create({dbName:`slicc-fs`,...f?{backend:`memory`}:{}});f||d.panels.fileBrowser.setFs(p);let m={isLeader:!0,dispose:()=>{}};if(f){let{electOpfsLeader:e}=await I(async()=>{let{electOpfsLeader:e}=await import(`./opfs-leader-election-BJDtxHPr.js`);return{electOpfsLeader:e}},[]),{showOpfsReadOnlyBanner:t}=await I(async()=>{let{showOpfsReadOnlyBanner:e}=await import(`./opfs-readonly-banner-BwveszbN.js`);return{showOpfsReadOnlyBanner:e}},[]),n=await e({logger:$});m={isLeader:n.isLeader,dispose:n.dispose},globalThis.__slicc_opfs_leader={isLeader:n.isLeader,self:n.self,leader:n.leader},n.isLeader?$.info(`OPFS leader election: this tab is the writer`,{tabId:n.self.tabId}):($.warn(`OPFS leader election: another tab is the writer; entering read-only mode`,{self:n.self.tabId,leader:n.leader?.tabId}),t({leaderTabId:n.leader?.tabId}))}Yy().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await Zy(e,p,$);t.length!==0&&$.warn(`Some mounts could not be recovered in the page VFS`,{count:t.length,paths:t.map(e=>e.path)})}).catch(e=>$.warn(`Failed to restore persisted mounts in page VFS`,e));let h=p;d9({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>h,logger:$});let g,_,v;if(t===`cherry`){let{setupCherryFollower:e}=await I(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-DDFIq_gA.js`);return{setupCherryFollower:e}},__vite__mapDeps([33,34])),t=await e();g=t.browser,_=t.joinUrl,v=t.transport}else{g=new s;try{await g.connect()}catch(e){$.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}}let ee=g.getTransport();globalThis.__slicc_browser=g;let y=null,b,te=e=>{let t=e.config?.modelId,n=t?t5(t):n5();d.panels.chat.setModelSupportsReasoning(!!n.reasoning,Kc(n).includes(`xhigh`)),d.panels.chat.setThinkingLevel(e.config?.thinkingLevel)},ne=async e=>{y=e,b.setSelectedScoopJid(e.jid),d.panels.scoops.setSelectedJid(e.jid),d.panels.memory.setSelectedScoop(e.jid),d.setScoopSwitcherSelected?.(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await d.panels.chat.switchToContext(t,!e.isCone,n),b.requestScoopMessages(e.jid),b.isProcessing(e.jid)&&d.panels.chat.setProcessing(!0),te(e)},re=typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,{OffscreenClient:x}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-BujqsTo-.js`);return{OffscreenClient:e}},[]),ie=null,S=r({realCdpTransport:ee,instanceId:re,onMigrationStart:()=>{ie||=c({root:document.body,logger:$}),ie.arm()},onMigrationProgress:e=>{ie||(ie=c({root:document.body,logger:$}),ie.arm()),ie.updateProgress(e)},onMigrationFinish:()=>{ie?.disarm()},callbacks:{onStatusChange:(e,t)=>{d.panels.scoops.updateScoopStatus(e,t),d.updateScoopSwitcherStatus?.(e,t),y?.jid===e&&(d.setAgentProcessing(t===`processing`),t===`processing`?d.panels.chat.setProcessing(!0):t===`ready`&&d.panels.chat.setProcessing(!1))},onScoopCreated:e=>{d.panels.scoops.refreshScoops(),d.refreshScoopSwitcher?.(),y||ne(e)},onScoopListUpdate:()=>{d.panels.scoops.refreshScoops(),d.refreshScoopSwitcher?.()},onIncomingMessage:(e,t)=>{y?.jid===e&&t.channel!==`web`&&Q4(t.channel)&&d.panels.chat.addLickMessage(t.id,t.content,t.channel,new Date(t.timestamp).getTime())},onScoopMessagesReplaced:(e,t)=>{y?.jid===e&&d.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{y?.jid===e&&d.panels.chat.setCompactionState(t)},onReady:()=>{$.info(`Kernel worker ready, scoop count:`,b.getScoops().length);let e=b.getScoops().find(e=>e.isCone);e&&!y&&ne(e)}}});b=S.client,d.panels.scoops.setOrchestrator(b),d.panels.memory.setOrchestrator(b),d.setScoopSwitcherOrchestrator?.(b),d.setScoopSwitcherTranscriptSource?.(e=>b.getScoopTranscript(e)),d.setScoopsRailTranscriptSource?.(e=>b.getScoopTranscript(e)),d.onScoopSelect=ne,d.onClearChat=async()=>{await nae().catch(()=>{}),await new ly().clearAll().catch(()=>{});let e=b.getScoops();for(let t of e){let e=t.isCone?`session-cone`:`session-${t.folder}`;await d.panels.chat.deleteSessionById(e)}b.clearAllMessages()},d.onModelChange=e=>{localStorage.setItem(`selected-model`,e),b.updateModel(),y&&te(y)},d.onThinkingLevelChange=e=>{y&&b.setScoopThinkingLevel(y.jid,e)},d.onModelsRefreshed=()=>{y&&te(y)},b.setLocalFS(p);let C=p,ae=p;if(f){let{createRemoteVfsClient:e}=await I(async()=>{let{createRemoteVfsClient:e}=await import(`./remote-vfs-client-Cm2KnQKl.js`);return{createRemoteVfsClient:e}},[]),t=e({transport:b.getTransport()});if(d.panels.fileBrowser.setFs(t),h=t,C=t,m.isLeader){let{createRemoteWritableVfsClient:e}=await I(async()=>{let{createRemoteWritableVfsClient:e}=await import(`./writable-vfs-client-CmIlnwCv.js`);return{createRemoteWritableVfsClient:e}},[]);ae=e({transport:b.getTransport()}),$.info(`File browser + preview-vfs + writable freezer wired to worker VFS RPC (leader)`)}else $.info(`File browser + preview-vfs wired to worker VFS RPC (follower; freezer uses LFS shadow)`)}d.onClearChat=async e=>{if(f&&!m.isLeader){$.info(`New session affordance skipped (OPFS follower — read-only tab)`);return}if(e?.freeze===`quick`)try{await D7({vfs:ae})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await E7({vfs:ae})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await d.panels.chat.deleteSessionById(`session-cone`),await b.clearAllMessages()},d.panels.scoops.setVfs(C),d.onFrozenSessionOpen=e=>{(async()=>{try{let t=await C.readFile(d7(e),{encoding:`utf-8`}),n=p7(typeof t==`string`?t:new TextDecoder().decode(t)),r=n.title||e.title;await d.panels.chat.displayFrozenSession({contextId:`frozen:${e.filename}`,messages:n.messages,title:r}),d.setThreadHeaderName(`❄ ${r}`),d.setActiveTab(`chat`)}catch(t){$.warn(`Failed to open frozen session`,{filename:e.filename,error:t instanceof Error?t.message:String(t)})}})()},d.panels.chat.onMessagesChanged=e=>{let t=2e5;try{t=n5().contextWindow??t}catch{}let n=e/t;d.setNewSessionGlow(n)};let oe=b.createAgentHandle();d.panels.chat.setAgent(oe),d.panels.chat.setAttachmentWriter(tL(p)),d.panels.chat.setDeleteQueuedMessageCallback(e=>{$.warn(`deleteQueuedMessage is a no-op in kernel-worker mode`)});try{await S.ready,$.info(`Worker boot handshake complete`)}catch(e){throw $.error(`Worker failed to signal ready`,e),e}b.requestState();let se=i({send:e=>b.sendRaw(e)}),ce=new Set([`setItem`,`removeItem`,`clear`]);for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);if(t!==null&&!ce.has(t)&&!t.includes(`\0`)){let e=localStorage.getItem(t);e!==null&&b.sendRaw({type:`local-storage-set`,key:t,value:e})}}let{SprinkleManager:w}=await I(async()=>{let{SprinkleManager:e}=await Promise.resolve().then(()=>jTe);return{SprinkleManager:e}},void 0),{installSprinkleManagerHandlerOverChannel:T}=await I(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),E=U9(),{OnboardingOrchestrator:D}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-BD4FQQVL.js`);return{OnboardingOrchestrator:e}},[]),{addAccount:O,getAccounts:le,getAvailableProviders:k,getProviderConfig:A,getProviderModels:j,isModelHiddenFromPicker:ue,setSelectedModelId:de,providerOffersLlmModels:fe}=await I(async()=>{let{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>l8);return{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:pe,resolveDeviceCodeDecision:me}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),he=null,ge,_e=()=>he||(he=new D({fs:p,postSystemMessage:e=>d.panels.chat.addSystemMessage(e),postDipReference:e=>d.panels.chat.addSystemMessage(e),getProviderCatalogue:Oe,saveAccount:(e,t,n,r,i)=>O(e,t,n,r,i),setSelectedModel:e=>de(e),resolveModelLabel:(e,t)=>{try{return j(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>RL(e),fireFinalLick:e=>{k7(b),G9(String(e?.action??``),E,()=>b.sendSprinkleLick(`welcome`,e),`orchestrator-worker`)},launchOAuth:async(e,t)=>{try{let n=A(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&O(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DbPObLKr.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),t=await e();if(!t)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await n.onOAuthLoginIntercepted(t,()=>void 0,{presentDeviceCode:pe({broadcastToDip:e=>RL(e)})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DbPObLKr.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:A7(e,n,j,ue)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),he),ve=e=>{if(e.type!==`sprinkle`)return!1;let t=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(t&&V9.has(t)){if(E.has(t))return $.debug(`Suppressing duplicate welcome lick (worker)`,{action:t}),!0;E.add(t),W9(E)}if(!(t===`first-run`||t===`onboarding-complete`||t===`connect-ready`||t===`connect-attempt`||t===`oauth-attempt`||t===`device-code-decision`||t===`shortcut-migrate`))return!1;let n=e.body,r=t;if(r===`device-code-decision`){let e=n?.data?.decision;return me(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return _e().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=_e(),t=n?.data??{};return t.mountWorkspace&&Z9(p).catch(e=>$.warn(`Failed to mount workspace from onboarding`,e)),e.handleOnboardingComplete(t).catch(e=>$.warn(`OnboardingOrchestrator failed`,e)),!0}if(r===`connect-ready`){let e=le();if(e.length>0){let t=e[0],n=(()=>{try{return A(t.providerId)}catch{return null}})();return RL({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(p,t.providerId,e=>{G9(String(e.action??``),E,()=>b.sendSprinkleLick(`welcome`,e),`fast-forward-worker`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return _e().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&_e().handleConnectAttempt({provider:String(e.provider??``),apiKey:String(e.apiKey??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null,deployment:typeof e.deployment==`string`&&e.deployment?String(e.deployment):null,apiVersion:typeof e.apiVersion==`string`&&e.apiVersion?String(e.apiVersion):null,model:e.model==null?null:String(e.model)}).catch(e=>$.warn(`handleConnectAttempt failed`,e)),!0}if(r===`oauth-attempt`){let e=n?.data;return e&&_e().handleOAuthAttempt({provider:String(e.provider??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null}).catch(e=>$.warn(`handleOAuthAttempt failed`,e)),!0}return r===`shortcut-migrate`?(zTe({writableFs:ae,isWriter:!f||m.isLeader}),!0):!1};d.panels.chat.onDipLick=(e,t)=>{if(!ve({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})){if(be){let n=be.currentSync;n?n.sendSprinkleLick(`inline`,{action:e,data:t}):$.warn(`Dip lick dropped: follower sync mid-reconnect`,{action:e});return}b.sendSprinkleLick(`inline`,{action:e,data:t})}},ge=new w(p,async e=>{if(e.type===`sprinkle`){if(ve(e)){e.body?.action===`shortcut-migrate`&&ge.close(`welcome`);return}e.sprinkleName&&b.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e),minimizeSprinkle:e=>d.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>d.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>d.unregisterSprinkle(e),closeSprinkleContent:e=>d.closeSprinkleContent(e)},()=>{let e=b.getScoops().find(e=>e.isCone);e&&b.stopScoop(e.jid)},{onAttachImage:(e,t,n)=>d.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9}),window.__slicc_sprinkleManager=ge;let ye=T(ge,{instanceId:re}),M=null,be=null,N=typeof BroadcastChannel==`function`?new BroadcastChannel($y(re)):null,xe=Zwe({getSync:()=>M?.sync??null,postEvent:e=>{let t={type:`panel-rpc-push`,op:`remote-cdp-event`,payload:e};N?.postMessage(t)}});b.setForwardLickHandler(e=>{let t=be?.currentSync;t?t.forwardLick(e):$.warn(`forward-lick dropped: no active follower sync`)});let Se=e=>({workerBaseUrl:e,getMessages:()=>d.panels.chat.getMessages(),getScoopJid:()=>y?.jid??`cone`,getScoops:()=>b.getScoops().map(e=>({jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,trigger:e.trigger})),getSprinkles:()=>{let e=new Set(ge.opened());return ge.available().map(t=>({name:t.name,title:t.title,path:t.path,open:e.has(t.name),autoOpen:t.autoOpen}))},readSprinkleContent:async e=>{let t=ge.available().find(t=>t.name===e);if(!t)return null;try{let e=await p.readFile(t.path,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder(`utf-8`).decode(e)}catch{return null}},onSprinkleLick:(e,t,n,r)=>b.sendSprinkleLick(e,t,n,r),onForwardedLick:e=>b.sendForwardedLick(e),onFollowerMessage:(e,t,n)=>{d.panels.chat.addUserMessage(e,n),oe.sendMessage(e,t,n),M?.sync.broadcastUserMessage(e,t,n)},onFollowerAbort:()=>oe.stop(),onFollowerCountChanged:e=>{let t=M?.peers.getPeers()??[];window.localStorage.setItem(`slicc.leaderTrayFollowers`,JSON.stringify(t.map(e=>({runtimeId:t9(e.bootstrapId),runtime:e.runtime,connectedAt:e.connectedAt??void 0}))))},onRemoteTransportsCleaned:e=>xe.cleanupRuntime(e),sendWebhookEvent:(e,t,n)=>b.sendWebhookEvent(e,t,n),onCherryHostEvent:(e,t,n)=>b.sendCherryHostEvent(e,t,n),onAgentEvent:e=>oe.onEvent(e),browserAPI:g,browserTransport:ee,vfs:p}),P=e=>{cF(()=>e.reset()),ge.setSendToSprinkleHook((t,n)=>e.sync.broadcastSprinkleUpdate(t,n)),d.panels.chat.setOnLocalUserMessage((t,n,r)=>e.sync.broadcastUserMessage(t,n,r))},Ce=()=>{cF(null),d.panels.chat.setOnLocalUserMessage(void 0),ge.setSendToSprinkleHook(void 0),xe.disposeAll()},we=async e=>{let{performTrayLeave:t}=await I(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-COlsOS8N.js`);return{performTrayLeave:e}},[]);return await t({workerBaseUrl:e.workerBaseUrl,requestId:e.requestId},{getLeader:()=>M,setLeader:e=>{M=e},getFollower:()=>be,setFollower:e=>{be=e},startLeader:e=>u9(Se(e)),clearLeaderHooks:Ce,wireLeaderHooks:P,storage:window.localStorage,log:$})},{installPanelRpcHandler:Te}=await I(async()=>{let{installPanelRpcHandler:e}=await Promise.resolve().then(()=>Kie);return{installPanelRpcHandler:e}},void 0),{createStandalonePanelRpcHandlers:Ee}=await I(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-CYxO9OxE.js`);return{createStandalonePanelRpcHandlers:e}},[]),De=Te({instanceId:re,handlers:Ee({resetTray:async()=>{if(!M)throw Error(`no active tray session to reset`);return await M.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await we({workerBaseUrl:e,requestId:t}),emitCherrySliccEvent:(e,t,n)=>M?.sync.emitCherrySliccEvent(e,t,n)??!1,listRemoteTargets:()=>g.listAllTargets(),remoteCdp:xe})});window.addEventListener(`beforeunload`,()=>{De(),xe.disposeAll(),N?.close()},{once:!0}),await ge.refresh(),d.onSprinkleClose=e=>ge.close(e),d.onSprinkleActivate=e=>{ge.activate(e)},d.getAvailableSprinkles=()=>[],d.onOpenSprinkle=(e,t)=>ge.open(e,t),d.resolveSprinkleIcon=e=>x9(e,p),d.updateAddButtons(),await ge.restoreOpenSprinkles().catch(e=>{$.warn(`Failed to restore open sprinkles`,e)});{let e=window.localStorage.getItem(yb),n=window.localStorage.getItem(vb);if(t===`hosted-leader`){window.localStorage.removeItem(yb),await new Fb().clear();let e=window.localStorage.getItem(vb);if(!e)throw Error(`hosted-leader: TRAY_WORKER_STORAGE_KEY not seeded — runtime-config resolution failed`);M=u9({...Se(e),runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:e=>{fetch(`/api/cloud-status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({joinUrl:e.joinUrl,trayId:e.trayId,controllerUrl:e.controllerUrl,webhookUrl:e.webhookUrl,runtime:e.runtime,sliccVersion:`3.35.0`})}).catch(e=>{$.error(`failed to POST /api/cloud-status`,{error:String(e)})})}}),P(M),(async()=>{await new Promise(e=>setTimeout(e,5e3));try{let e=await fetch(`/api/hosted-bootstrap`);if(!e.ok)return;let t=await e.json(),n=t.accounts??(t.adobeImsToken?[{providerId:`adobe`,kind:`oauth`,accessToken:t.adobeImsToken}]:[]);t.model?localStorage.setItem(`selected-model`,t.model):localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`);let{applyHostedAccounts:r,prewarmHostedModels:i}=await I(async()=>{let{applyHostedAccounts:e,prewarmHostedModels:t}=await import(`./hosted-config-apply-6JWS8OfU.js`);return{applyHostedAccounts:e,prewarmHostedModels:t}},[]);await i(n,{getRefreshModels:e=>A(e).refreshModels});let a=JSON.parse(localStorage.getItem(`slicc_cloud_managed`)??`[]`);await r(n,{saveOAuthAccount:H8,addAccount:O,removeAccount:R8,currentProviderIds:()=>le().map(e=>e.providerId),previouslyManaged:()=>a}),localStorage.setItem(`slicc_cloud_managed`,JSON.stringify(n.map(e=>e.providerId))),$.info(`hosted-leader: cone config applied`,{count:n.length})}catch(e){$.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}})()}else t===`cherry`&&_?(be=a9({joinUrl:_,runtime:uwe,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),onCherrySliccEvent:(e,t)=>v?.emitSliccEventToHost(e,t),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)}),v&&(v.onHostEvent=(e,t)=>be?.currentSync?.sendCherryHostEvent(e,t))):e?be=a9({joinUrl:e,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,onForwardingToggle:e=>b.sendSetFollowerForwarding(e),addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)}):n&&(M=u9(Se(n)),P(M))}xae(e=>{window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(Mb())),window.addEventListener(`slicc:tray-join`,e=>{let t=e,n=t.detail?.joinUrl,r=t.detail?.requestId;if(!n){$.error(`slicc:tray-join fired without joinUrl — UI dispatcher contract violation`);return}let i=M;M=null,cF(null),d.panels.chat.setOnLocalUserMessage(void 0),ge.setSendToSprinkleHook(void 0);let a=be;be=null;try{i?.stop()}catch(e){$.error(`Leader stop threw during tray-join switch — runtime resources may have leaked`,{error:e instanceof Error?e.message:String(e)})}try{a?.stop()}catch(e){$.error(`Previous follower stop threw during tray-join switch — runtime resources may have leaked`,{error:e instanceof Error?e.message:String(e)})}try{be=a9({joinUrl:n,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,onForwardingToggle:e=>b.sendSetFollowerForwarding(e),addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)})}catch(e){$.error(`slicc:tray-join handler failed — runtime is in a half-state, page reload required`,{joinUrl:n,error:e instanceof Error?e.message:String(e)});try{window.dispatchEvent(new CustomEvent(`slicc:tray-join-failed`,{detail:{joinUrl:n,error:e instanceof Error?e.message:String(e),requestId:r}}))}catch(e){$.error(`slicc:tray-join-failed dispatch itself threw`,{dispatchError:e instanceof Error?e.message:String(e)})}}}),window.addEventListener(`slicc:tray-leave`,e=>{let t=e,n=t.detail?.workerBaseUrl??null,r=t.detail?.requestId;we({workerBaseUrl:n,requestId:r}).catch(e=>{$.error(`slicc:tray-leave handler failed`,{workerBaseUrl:n,requestId:r,error:e instanceof Error?e.message:String(e)})})}),window.addEventListener(`beforeunload`,()=>{M?.stop(),be?.stop()},{once:!0}),Tb(window.localStorage)||Ub(p).then(e=>{e.isFirstRun&&(E.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),E.delete(`first-run`),W9(E)),E.add(`first-run`),W9(E),_e().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e));function Oe(){let e=k().filter(e=>fe(e)),t=e.map(e=>{let t=A(e);return{id:t.id,name:t.name,description:t.description,requiresApiKey:t.requiresApiKey??!0,requiresBaseUrl:t.requiresBaseUrl??!1,requiresDeployment:!!t.requiresDeployment,requiresApiVersion:!!t.requiresApiVersion,apiKeyPlaceholder:t.apiKeyPlaceholder??void 0,apiKeyEnvVar:t.apiKeyEnvVar??void 0,defaultBaseUrl:t.baseUrlPlaceholder??void 0,baseUrlDescription:t.baseUrlDescription??void 0,deploymentPlaceholder:t.deploymentPlaceholder??void 0,deploymentDescription:t.deploymentDescription??void 0,apiVersionDefault:t.apiVersionDefault??void 0,apiVersionDescription:t.apiVersionDescription??void 0,isOAuth:!!t.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),n={};for(let t of e)try{n[t]=j(t).filter(e=>!ue(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}}globalThis.__slicc_tool_ui_send=(e,t,n)=>{b.sendRaw({type:`tool-ui-action`,requestId:e,action:t,data:n})};let{RemoteTerminalView:ke}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-D53aNTEz.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:Ae}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-ChcPNQmy.js`);return{fetchSecretEnvVars:e}},[]),je=await Ae(),Me=new ke({client:b,cwd:`/`,env:Object.keys(je).length>0?je:void 0});d.panels.terminal.mountRemoteShell(Me).catch(e=>{$.error(`Failed to mount remote terminal view`,e)});let{installNukeReloadListener:Ne}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-Be-RNfyH.js`);return{installNukeReloadListener:e}},[]),Pe=Ne();window.addEventListener(`beforeunload`,()=>{se(),ye(),Pe(),Me.dispose(),S.dispose()},{once:!0}),Y9()&&await X9(d.panels.chat),r8().catch(()=>{}),O7(ae,{isWriter:!f||m.isLeader}),$.info(`Standalone kernel-worker UI ready`)}function KTe(){if(typeof chrome<`u`&&chrome?.runtime?.id)return;let e=new Blob([`
|
|
1663
|
+
`,document.head.appendChild(t),window.addEventListener(`message`,e=>{e.source===window.parent&&iTe(e.data)&&d.setActiveTab(p9(`http://localhost/?tab=${e.data.tab??``}`))}),window.addEventListener(`keydown`,e=>{e.code===`Semicolon`&&(e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey&&!e.repeat&&(e.preventDefault(),e.stopPropagation(),window.parent.postMessage({type:`slicc-electron-overlay:toggle`},`*`))},!0)}await d.panels.chat.initSession(`session-cone`),$.info(`Session initialized (kernel-worker mode)`);let f=o()===`opfs`,p=await a.create({dbName:`slicc-fs`,...f?{backend:`memory`}:{}});f||d.panels.fileBrowser.setFs(p);let m={isLeader:!0,dispose:()=>{}};if(f){let{electOpfsLeader:e}=await I(async()=>{let{electOpfsLeader:e}=await import(`./opfs-leader-election-BJDtxHPr.js`);return{electOpfsLeader:e}},[]),{showOpfsReadOnlyBanner:t}=await I(async()=>{let{showOpfsReadOnlyBanner:e}=await import(`./opfs-readonly-banner-BwveszbN.js`);return{showOpfsReadOnlyBanner:e}},[]),n=await e({logger:$});m={isLeader:n.isLeader,dispose:n.dispose},globalThis.__slicc_opfs_leader={isLeader:n.isLeader,self:n.self,leader:n.leader},n.isLeader?$.info(`OPFS leader election: this tab is the writer`,{tabId:n.self.tabId}):($.warn(`OPFS leader election: another tab is the writer; entering read-only mode`,{self:n.self.tabId,leader:n.leader?.tabId}),t({leaderTabId:n.leader?.tabId}))}Yy().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await Zy(e,p,$);t.length!==0&&$.warn(`Some mounts could not be recovered in the page VFS`,{count:t.length,paths:t.map(e=>e.path)})}).catch(e=>$.warn(`Failed to restore persisted mounts in page VFS`,e));let h=p;d9({channel:new BroadcastChannel(`preview-vfs`),getReader:()=>h,logger:$});let g,_,v;if(t===`cherry`){let{setupCherryFollower:e}=await I(async()=>{let{setupCherryFollower:e}=await import(`./main-cherry-DnPYeUe8.js`);return{setupCherryFollower:e}},__vite__mapDeps([33,34])),t=await e();g=t.browser,_=t.joinUrl,v=t.transport}else{g=new s;try{await g.connect()}catch(e){$.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}}let ee=g.getTransport();globalThis.__slicc_browser=g;let y=null,b,te=e=>{let t=e.config?.modelId,n=t?t5(t):n5();d.panels.chat.setModelSupportsReasoning(!!n.reasoning,Kc(n).includes(`xhigh`)),d.panels.chat.setThinkingLevel(e.config?.thinkingLevel)},ne=async e=>{y=e,b.setSelectedScoopJid(e.jid),d.panels.scoops.setSelectedJid(e.jid),d.panels.memory.setSelectedScoop(e.jid),d.setScoopSwitcherSelected?.(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await d.panels.chat.switchToContext(t,!e.isCone,n),b.requestScoopMessages(e.jid),b.isProcessing(e.jid)&&d.panels.chat.setProcessing(!0),te(e)},re=typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,{OffscreenClient:x}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-CPehYlEH.js`);return{OffscreenClient:e}},[]),ie=null,S=r({realCdpTransport:ee,instanceId:re,onMigrationStart:()=>{ie||=c({root:document.body,logger:$}),ie.arm()},onMigrationProgress:e=>{ie||(ie=c({root:document.body,logger:$}),ie.arm()),ie.updateProgress(e)},onMigrationFinish:()=>{ie?.disarm()},callbacks:{onStatusChange:(e,t)=>{d.panels.scoops.updateScoopStatus(e,t),d.updateScoopSwitcherStatus?.(e,t),y?.jid===e&&(d.setAgentProcessing(t===`processing`),t===`processing`?d.panels.chat.setProcessing(!0):t===`ready`&&d.panels.chat.setProcessing(!1))},onScoopCreated:e=>{d.panels.scoops.refreshScoops(),d.refreshScoopSwitcher?.(),y||ne(e)},onScoopListUpdate:()=>{d.panels.scoops.refreshScoops(),d.refreshScoopSwitcher?.()},onIncomingMessage:(e,t)=>{y?.jid===e&&t.channel!==`web`&&Q4(t.channel)&&d.panels.chat.addLickMessage(t.id,t.content,t.channel,new Date(t.timestamp).getTime())},onScoopMessagesReplaced:(e,t)=>{y?.jid===e&&d.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{y?.jid===e&&d.panels.chat.setCompactionState(t)},onReady:()=>{$.info(`Kernel worker ready, scoop count:`,b.getScoops().length);let e=b.getScoops().find(e=>e.isCone);e&&!y&&ne(e)}}});b=S.client,d.panels.scoops.setOrchestrator(b),d.panels.memory.setOrchestrator(b),d.setScoopSwitcherOrchestrator?.(b),d.setScoopSwitcherTranscriptSource?.(e=>b.getScoopTranscript(e)),d.setScoopsRailTranscriptSource?.(e=>b.getScoopTranscript(e)),d.onScoopSelect=ne,d.onClearChat=async()=>{await nae().catch(()=>{}),await new ly().clearAll().catch(()=>{});let e=b.getScoops();for(let t of e){let e=t.isCone?`session-cone`:`session-${t.folder}`;await d.panels.chat.deleteSessionById(e)}b.clearAllMessages()},d.onModelChange=e=>{localStorage.setItem(`selected-model`,e),b.updateModel(),y&&te(y)},d.onThinkingLevelChange=e=>{y&&b.setScoopThinkingLevel(y.jid,e)},d.onModelsRefreshed=()=>{y&&te(y)},b.setLocalFS(p);let C=p,ae=p;if(f){let{createRemoteVfsClient:e}=await I(async()=>{let{createRemoteVfsClient:e}=await import(`./remote-vfs-client-BWeQEOy_.js`);return{createRemoteVfsClient:e}},[]),t=e({transport:b.getTransport()});if(d.panels.fileBrowser.setFs(t),h=t,C=t,m.isLeader){let{createRemoteWritableVfsClient:e}=await I(async()=>{let{createRemoteWritableVfsClient:e}=await import(`./writable-vfs-client-COZzXV3K.js`);return{createRemoteWritableVfsClient:e}},[]);ae=e({transport:b.getTransport()}),$.info(`File browser + preview-vfs + writable freezer wired to worker VFS RPC (leader)`)}else $.info(`File browser + preview-vfs wired to worker VFS RPC (follower; freezer uses LFS shadow)`)}d.onClearChat=async e=>{if(f&&!m.isLeader){$.info(`New session affordance skipped (OPFS follower — read-only tab)`);return}if(e?.freeze===`quick`)try{await D7({vfs:ae})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await E7({vfs:ae})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await d.panels.chat.deleteSessionById(`session-cone`),await b.clearAllMessages()},d.panels.scoops.setVfs(C),d.onFrozenSessionOpen=e=>{(async()=>{try{let t=await C.readFile(d7(e),{encoding:`utf-8`}),n=p7(typeof t==`string`?t:new TextDecoder().decode(t)),r=n.title||e.title;await d.panels.chat.displayFrozenSession({contextId:`frozen:${e.filename}`,messages:n.messages,title:r}),d.setThreadHeaderName(`❄ ${r}`),d.setActiveTab(`chat`)}catch(t){$.warn(`Failed to open frozen session`,{filename:e.filename,error:t instanceof Error?t.message:String(t)})}})()},d.panels.chat.onMessagesChanged=e=>{let t=2e5;try{t=n5().contextWindow??t}catch{}let n=e/t;d.setNewSessionGlow(n)};let oe=b.createAgentHandle();d.panels.chat.setAgent(oe),d.panels.chat.setAttachmentWriter(tL(p)),d.panels.chat.setDeleteQueuedMessageCallback(e=>{$.warn(`deleteQueuedMessage is a no-op in kernel-worker mode`)});try{await S.ready,$.info(`Worker boot handshake complete`)}catch(e){throw $.error(`Worker failed to signal ready`,e),e}b.requestState();let se=i({send:e=>b.sendRaw(e)}),ce=new Set([`setItem`,`removeItem`,`clear`]);for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);if(t!==null&&!ce.has(t)&&!t.includes(`\0`)){let e=localStorage.getItem(t);e!==null&&b.sendRaw({type:`local-storage-set`,key:t,value:e})}}let{SprinkleManager:w}=await I(async()=>{let{SprinkleManager:e}=await Promise.resolve().then(()=>jTe);return{SprinkleManager:e}},void 0),{installSprinkleManagerHandlerOverChannel:T}=await I(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),E=U9(),{OnboardingOrchestrator:D}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-Bhtg8moO.js`);return{OnboardingOrchestrator:e}},[]),{addAccount:O,getAccounts:le,getAvailableProviders:k,getProviderConfig:A,getProviderModels:j,isModelHiddenFromPicker:ue,setSelectedModelId:de,providerOffersLlmModels:fe}=await I(async()=>{let{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>l8);return{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:pe,resolveDeviceCodeDecision:me}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),he=null,ge,_e=()=>he||(he=new D({fs:p,postSystemMessage:e=>d.panels.chat.addSystemMessage(e),postDipReference:e=>d.panels.chat.addSystemMessage(e),getProviderCatalogue:Oe,saveAccount:(e,t,n,r,i)=>O(e,t,n,r,i),setSelectedModel:e=>de(e),resolveModelLabel:(e,t)=>{try{return j(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>RL(e),fireFinalLick:e=>{k7(b),G9(String(e?.action??``),E,()=>b.sendSprinkleLick(`welcome`,e),`orchestrator-worker`)},launchOAuth:async(e,t)=>{try{let n=A(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&O(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createInterceptingOAuthLauncherForCurrentRuntime:e}},[]),t=await e();if(!t)return{ok:!1,message:`Intercepted OAuth requires the controlled-browser transport — open SLICC in standalone or extension mode.`};await n.onOAuthLoginIntercepted(t,()=>void 0,{presentDeviceCode:pe({broadcastToDip:e=>RL(e)})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-BbWxnAZu.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:A7(e,n,j,ue)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),he),ve=e=>{if(e.type!==`sprinkle`)return!1;let t=e.sprinkleName===`welcome`||e.sprinkleName===`inline`?e.body?.action:void 0;if(t&&V9.has(t)){if(E.has(t))return $.debug(`Suppressing duplicate welcome lick (worker)`,{action:t}),!0;E.add(t),W9(E)}if(!(t===`first-run`||t===`onboarding-complete`||t===`connect-ready`||t===`connect-attempt`||t===`oauth-attempt`||t===`device-code-decision`||t===`shortcut-migrate`))return!1;let n=e.body,r=t;if(r===`device-code-decision`){let e=n?.data?.decision;return me(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return _e().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=_e(),t=n?.data??{};return t.mountWorkspace&&Z9(p).catch(e=>$.warn(`Failed to mount workspace from onboarding`,e)),e.handleOnboardingComplete(t).catch(e=>$.warn(`OnboardingOrchestrator failed`,e)),!0}if(r===`connect-ready`){let e=le();if(e.length>0){let t=e[0],n=(()=>{try{return A(t.providerId)}catch{return null}})();return RL({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(p,t.providerId,e=>{G9(String(e.action??``),E,()=>b.sendSprinkleLick(`welcome`,e),`fast-forward-worker`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return _e().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&_e().handleConnectAttempt({provider:String(e.provider??``),apiKey:String(e.apiKey??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null,deployment:typeof e.deployment==`string`&&e.deployment?String(e.deployment):null,apiVersion:typeof e.apiVersion==`string`&&e.apiVersion?String(e.apiVersion):null,model:e.model==null?null:String(e.model)}).catch(e=>$.warn(`handleConnectAttempt failed`,e)),!0}if(r===`oauth-attempt`){let e=n?.data;return e&&_e().handleOAuthAttempt({provider:String(e.provider??``),baseUrl:typeof e.baseUrl==`string`&&e.baseUrl?String(e.baseUrl):null}).catch(e=>$.warn(`handleOAuthAttempt failed`,e)),!0}return r===`shortcut-migrate`?(zTe({writableFs:ae,isWriter:!f||m.isLeader}),!0):!1};d.panels.chat.onDipLick=(e,t)=>{if(!ve({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})){if(be){let n=be.currentSync;n?n.sendSprinkleLick(`inline`,{action:e,data:t}):$.warn(`Dip lick dropped: follower sync mid-reconnect`,{action:e});return}b.sendSprinkleLick(`inline`,{action:e,data:t})}},ge=new w(p,async e=>{if(e.type===`sprinkle`){if(ve(e)){e.body?.action===`shortcut-migrate`&&ge.close(`welcome`);return}e.sprinkleName&&b.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e),minimizeSprinkle:e=>d.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>d.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>d.unregisterSprinkle(e),closeSprinkleContent:e=>d.closeSprinkleContent(e)},()=>{let e=b.getScoops().find(e=>e.isCone);e&&b.stopScoop(e.jid)},{onAttachImage:(e,t,n)=>d.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9}),window.__slicc_sprinkleManager=ge;let ye=T(ge,{instanceId:re}),M=null,be=null,N=typeof BroadcastChannel==`function`?new BroadcastChannel($y(re)):null,xe=Zwe({getSync:()=>M?.sync??null,postEvent:e=>{let t={type:`panel-rpc-push`,op:`remote-cdp-event`,payload:e};N?.postMessage(t)}});b.setForwardLickHandler(e=>{let t=be?.currentSync;t?t.forwardLick(e):$.warn(`forward-lick dropped: no active follower sync`)});let Se=e=>({workerBaseUrl:e,getMessages:()=>d.panels.chat.getMessages(),getScoopJid:()=>y?.jid??`cone`,getScoops:()=>b.getScoops().map(e=>({jid:e.jid,name:e.name,folder:e.folder,isCone:e.isCone,assistantLabel:e.assistantLabel,trigger:e.trigger})),getSprinkles:()=>{let e=new Set(ge.opened());return ge.available().map(t=>({name:t.name,title:t.title,path:t.path,open:e.has(t.name),autoOpen:t.autoOpen}))},readSprinkleContent:async e=>{let t=ge.available().find(t=>t.name===e);if(!t)return null;try{let e=await p.readFile(t.path,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder(`utf-8`).decode(e)}catch{return null}},onSprinkleLick:(e,t,n,r)=>b.sendSprinkleLick(e,t,n,r),onForwardedLick:e=>b.sendForwardedLick(e),onFollowerMessage:(e,t,n)=>{d.panels.chat.addUserMessage(e,n),oe.sendMessage(e,t,n),M?.sync.broadcastUserMessage(e,t,n)},onFollowerAbort:()=>oe.stop(),onFollowerCountChanged:e=>{let t=M?.peers.getPeers()??[];window.localStorage.setItem(`slicc.leaderTrayFollowers`,JSON.stringify(t.map(e=>({runtimeId:t9(e.bootstrapId),runtime:e.runtime,connectedAt:e.connectedAt??void 0}))))},onRemoteTransportsCleaned:e=>xe.cleanupRuntime(e),sendWebhookEvent:(e,t,n)=>b.sendWebhookEvent(e,t,n),onCherryHostEvent:(e,t,n)=>b.sendCherryHostEvent(e,t,n),onAgentEvent:e=>oe.onEvent(e),browserAPI:g,browserTransport:ee,vfs:p}),P=e=>{cF(()=>e.reset()),ge.setSendToSprinkleHook((t,n)=>e.sync.broadcastSprinkleUpdate(t,n)),d.panels.chat.setOnLocalUserMessage((t,n,r)=>e.sync.broadcastUserMessage(t,n,r))},Ce=()=>{cF(null),d.panels.chat.setOnLocalUserMessage(void 0),ge.setSendToSprinkleHook(void 0),xe.disposeAll()},we=async e=>{let{performTrayLeave:t}=await I(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-DxkPV4F3.js`);return{performTrayLeave:e}},[]);return await t({workerBaseUrl:e.workerBaseUrl,requestId:e.requestId},{getLeader:()=>M,setLeader:e=>{M=e},getFollower:()=>be,setFollower:e=>{be=e},startLeader:e=>u9(Se(e)),clearLeaderHooks:Ce,wireLeaderHooks:P,storage:window.localStorage,log:$})},{installPanelRpcHandler:Te}=await I(async()=>{let{installPanelRpcHandler:e}=await Promise.resolve().then(()=>Kie);return{installPanelRpcHandler:e}},void 0),{createStandalonePanelRpcHandlers:Ee}=await I(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-B4grCAzw.js`);return{createStandalonePanelRpcHandlers:e}},[]),De=Te({instanceId:re,handlers:Ee({resetTray:async()=>{if(!M)throw Error(`no active tray session to reset`);return await M.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await we({workerBaseUrl:e,requestId:t}),emitCherrySliccEvent:(e,t,n)=>M?.sync.emitCherrySliccEvent(e,t,n)??!1,listRemoteTargets:()=>g.listAllTargets(),remoteCdp:xe})});window.addEventListener(`beforeunload`,()=>{De(),xe.disposeAll(),N?.close()},{once:!0}),await ge.refresh(),d.onSprinkleClose=e=>ge.close(e),d.onSprinkleActivate=e=>{ge.activate(e)},d.getAvailableSprinkles=()=>[],d.onOpenSprinkle=(e,t)=>ge.open(e,t),d.resolveSprinkleIcon=e=>x9(e,p),d.updateAddButtons(),await ge.restoreOpenSprinkles().catch(e=>{$.warn(`Failed to restore open sprinkles`,e)});{let e=window.localStorage.getItem(yb),n=window.localStorage.getItem(vb);if(t===`hosted-leader`){window.localStorage.removeItem(yb),await new Fb().clear();let e=window.localStorage.getItem(vb);if(!e)throw Error(`hosted-leader: TRAY_WORKER_STORAGE_KEY not seeded — runtime-config resolution failed`);M=u9({...Se(e),runtime:`slicc-hosted-leader`,kind:`hosted`,onLeaderReady:e=>{fetch(`/api/cloud-status`,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({joinUrl:e.joinUrl,trayId:e.trayId,controllerUrl:e.controllerUrl,webhookUrl:e.webhookUrl,runtime:e.runtime,sliccVersion:`3.35.1`})}).catch(e=>{$.error(`failed to POST /api/cloud-status`,{error:String(e)})})}}),P(M),(async()=>{await new Promise(e=>setTimeout(e,5e3));try{let e=await fetch(`/api/hosted-bootstrap`);if(!e.ok)return;let t=await e.json(),n=t.accounts??(t.adobeImsToken?[{providerId:`adobe`,kind:`oauth`,accessToken:t.adobeImsToken}]:[]);t.model?localStorage.setItem(`selected-model`,t.model):localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`);let{applyHostedAccounts:r,prewarmHostedModels:i}=await I(async()=>{let{applyHostedAccounts:e,prewarmHostedModels:t}=await import(`./hosted-config-apply-D5JlRSaz.js`);return{applyHostedAccounts:e,prewarmHostedModels:t}},[]);await i(n,{getRefreshModels:e=>A(e).refreshModels});let a=JSON.parse(localStorage.getItem(`slicc_cloud_managed`)??`[]`);await r(n,{saveOAuthAccount:H8,addAccount:O,removeAccount:R8,currentProviderIds:()=>le().map(e=>e.providerId),previouslyManaged:()=>a}),localStorage.setItem(`slicc_cloud_managed`,JSON.stringify(n.map(e=>e.providerId))),$.info(`hosted-leader: cone config applied`,{count:n.length})}catch(e){$.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}})()}else t===`cherry`&&_?(be=a9({joinUrl:_,runtime:uwe,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),onCherrySliccEvent:(e,t)=>v?.emitSliccEventToHost(e,t),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)}),v&&(v.onHostEvent=(e,t)=>be?.currentSync?.sendCherryHostEvent(e,t))):e?be=a9({joinUrl:e,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,onForwardingToggle:e=>b.sendSetFollowerForwarding(e),addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)}):n&&(M=u9(Se(n)),P(M))}xae(e=>{window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(Mb())),window.addEventListener(`slicc:tray-join`,e=>{let t=e,n=t.detail?.joinUrl,r=t.detail?.requestId;if(!n){$.error(`slicc:tray-join fired without joinUrl — UI dispatcher contract violation`);return}let i=M;M=null,cF(null),d.panels.chat.setOnLocalUserMessage(void 0),ge.setSendToSprinkleHook(void 0);let a=be;be=null;try{i?.stop()}catch(e){$.error(`Leader stop threw during tray-join switch — runtime resources may have leaked`,{error:e instanceof Error?e.message:String(e)})}try{a?.stop()}catch(e){$.error(`Previous follower stop threw during tray-join switch — runtime resources may have leaked`,{error:e instanceof Error?e.message:String(e)})}try{be=a9({joinUrl:n,onSnapshot:e=>d.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>d.panels.chat.addUserMessage(e,r),onStatus:e=>d.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>d.panels.chat.setAgent(e),browserAPI:g,onForwardingToggle:e=>b.sendSetFollowerForwarding(e),addSprinkle:(e,t,n,r,i)=>d.addSprinkle(e,t,n,r,i),removeSprinkle:e=>d.removeSprinkle(e)})}catch(e){$.error(`slicc:tray-join handler failed — runtime is in a half-state, page reload required`,{joinUrl:n,error:e instanceof Error?e.message:String(e)});try{window.dispatchEvent(new CustomEvent(`slicc:tray-join-failed`,{detail:{joinUrl:n,error:e instanceof Error?e.message:String(e),requestId:r}}))}catch(e){$.error(`slicc:tray-join-failed dispatch itself threw`,{dispatchError:e instanceof Error?e.message:String(e)})}}}),window.addEventListener(`slicc:tray-leave`,e=>{let t=e,n=t.detail?.workerBaseUrl??null,r=t.detail?.requestId;we({workerBaseUrl:n,requestId:r}).catch(e=>{$.error(`slicc:tray-leave handler failed`,{workerBaseUrl:n,requestId:r,error:e instanceof Error?e.message:String(e)})})}),window.addEventListener(`beforeunload`,()=>{M?.stop(),be?.stop()},{once:!0}),Tb(window.localStorage)||Ub(p).then(e=>{e.isFirstRun&&(E.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),E.delete(`first-run`),W9(E)),E.add(`first-run`),W9(E),_e().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e));function Oe(){let e=k().filter(e=>fe(e)),t=e.map(e=>{let t=A(e);return{id:t.id,name:t.name,description:t.description,requiresApiKey:t.requiresApiKey??!0,requiresBaseUrl:t.requiresBaseUrl??!1,requiresDeployment:!!t.requiresDeployment,requiresApiVersion:!!t.requiresApiVersion,apiKeyPlaceholder:t.apiKeyPlaceholder??void 0,apiKeyEnvVar:t.apiKeyEnvVar??void 0,defaultBaseUrl:t.baseUrlPlaceholder??void 0,baseUrlDescription:t.baseUrlDescription??void 0,deploymentPlaceholder:t.deploymentPlaceholder??void 0,deploymentDescription:t.deploymentDescription??void 0,apiVersionDefault:t.apiVersionDefault??void 0,apiVersionDescription:t.apiVersionDescription??void 0,isOAuth:!!t.isOAuth}}).sort((e,t)=>e.name.localeCompare(t.name,void 0,{sensitivity:`base`})),n={};for(let t of e)try{n[t]=j(t).filter(e=>!ue(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}}globalThis.__slicc_tool_ui_send=(e,t,n)=>{b.sendRaw({type:`tool-ui-action`,requestId:e,action:t,data:n})};let{RemoteTerminalView:ke}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-ZxR5LM7B.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:Ae}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-udqdNnx_.js`);return{fetchSecretEnvVars:e}},[]),je=await Ae(),Me=new ke({client:b,cwd:`/`,env:Object.keys(je).length>0?je:void 0});d.panels.terminal.mountRemoteShell(Me).catch(e=>{$.error(`Failed to mount remote terminal view`,e)});let{installNukeReloadListener:Ne}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-DThbTH3f.js`);return{installNukeReloadListener:e}},[]),Pe=Ne();window.addEventListener(`beforeunload`,()=>{se(),ye(),Pe(),Me.dispose(),S.dispose()},{once:!0}),Y9()&&await X9(d.panels.chat),r8().catch(()=>{}),O7(ae,{isWriter:!f||m.isLeader}),$.info(`Standalone kernel-worker UI ready`)}function KTe(){if(typeof chrome<`u`&&chrome?.runtime?.id)return;let e=new Blob([`
|
|
1664
1664
|
let lastPong = Date.now();
|
|
1665
1665
|
let frozen = false;
|
|
1666
1666
|
setInterval(() => {
|
|
@@ -1680,4 +1680,4 @@ Long press — discard without saving`),n.setAttribute(`label`,`New session. Cli
|
|
|
1680
1680
|
}
|
|
1681
1681
|
}
|
|
1682
1682
|
};
|
|
1683
|
-
`],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}async function qTe(){KTe(),mL(),LTe();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);let t=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&t)try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`)){sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),$.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload();return}sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){$.error(`connect-mode SW cleanup failed`,e)}if(`serviceWorker`in navigator&&!t)try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),$.info(`Preview SW registered`),!(typeof chrome<`u`&&chrome?.runtime?.id))try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),$.info(`LLM-proxy SW registered`)}catch(e){$.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`)){sessionStorage.setItem(`slicc-sw-reloaded`,`1`),$.info(`Reloading once to gain SW control`),location.reload();return}sessionStorage.removeItem(`slicc-sw-reloaded`)}catch(e){$.error(`Preview SW registration failed — preview feature will not work`,e)}await Zie(),D8();let{bootstrapOAuthReplicas:n}=await I(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-
|
|
1683
|
+
`],{type:`application/javascript`}),t=URL.createObjectURL(e),n=new Worker(t);URL.revokeObjectURL(t),n.onmessage=e=>{if(e.data.type===`ping`)n.postMessage({type:`pong`});else if(e.data.type===`freeze-detected`)console.error(`[freeze-watchdog] Main thread blocked for ${e.data.elapsed}ms — capturing trace on recovery`);else if(e.data.type===`freeze-recovered`){console.error(`[freeze-watchdog] Main thread recovered. Stack trace at recovery point:`),console.trace(`[freeze-watchdog] recovery stack`);let e=performance.getEntriesByType(`longtask`);e.length>0&&console.error(`[freeze-watchdog] Long tasks:`,e.map(e=>({duration:e.duration,startTime:e.startTime,name:e.name})))}},window.addEventListener(`beforeunload`,()=>{n.terminate()},{once:!0})}async function qTe(){KTe(),mL(),LTe();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);let t=(()=>{try{return new URL(window.location.href).searchParams.get(`connect`)===`1`}catch{return!1}})();if(`serviceWorker`in navigator&&t)try{let e=await navigator.serviceWorker.getRegistrations();if(await Promise.all(e.map(e=>e.unregister().catch(()=>!1))),navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-connect-sw-cleared`)){sessionStorage.setItem(`slicc-connect-sw-cleared`,`1`),$.info(`connect mode: detaching from service worker (no proxy on worker origin)`),location.reload();return}sessionStorage.removeItem(`slicc-connect-sw-cleared`)}catch(e){$.error(`connect-mode SW cleanup failed`,e)}if(`serviceWorker`in navigator&&!t)try{if(await navigator.serviceWorker.register(`/preview-sw.js`,{scope:`/preview/`}),$.info(`Preview SW registered`),!(typeof chrome<`u`&&chrome?.runtime?.id))try{await navigator.serviceWorker.register(`/llm-proxy-sw.js`,{scope:`/`}),$.info(`LLM-proxy SW registered`)}catch(e){$.error(`LLM-proxy SW registration failed — cross-origin LLM calls will hit CORS`,e)}if(navigator.serviceWorker.controller||await Promise.race([new Promise(e=>navigator.serviceWorker.addEventListener(`controllerchange`,()=>e(),{once:!0})),new Promise(e=>setTimeout(e,1500))]),!navigator.serviceWorker.controller&&!sessionStorage.getItem(`slicc-sw-reloaded`)){sessionStorage.setItem(`slicc-sw-reloaded`,`1`),$.info(`Reloading once to gain SW control`),location.reload();return}sessionStorage.removeItem(`slicc-sw-reloaded`)}catch(e){$.error(`Preview SW registration failed — preview feature will not work`,e)}await Zie(),D8();let{bootstrapOAuthReplicas:n}=await I(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-sDEhfqCF.js`);return{bootstrapOAuthReplicas:e}},[]);await Promise.race([n().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),!X8()&&Tb(window.localStorage);let r=typeof chrome<`u`&&!!chrome?.runtime?.id,i=tTe(window.location.href,r);if(i===`connect`){globalThis.__slicc_connect_mode=!0;let{mountConnectSurface:t}=await I(async()=>{let{mountConnectSurface:e}=await import(`./connect-surface-CCfSI5-c.js`);return{mountConnectSurface:e}},[]);await t(e);return}return i===`extension-detached`?$9(e,{detached:!0}):i===`extension`?$9(e):GTe(e,i)}qTe().catch(e=>{$.error(`Fatal error`,e);let t=document.getElementById(`app`);if(t){let n=document.createElement(`div`);n.style.cssText=`padding: 2rem; text-align: center;`;let r=document.createElement(`h1`);r.style.color=`var(--s2-negative, #e34850)`,r.textContent=`Failed to start`;let i=document.createElement(`p`);i.style.color=`var(--s2-content-tertiary, #717171)`,i.textContent=e.message,n.appendChild(r),n.appendChild(i);let a=document.createElement(`button`);for(a.textContent=`Reset all data & reload`,a.style.cssText=`margin-top: 1rem; padding: 0.5rem 1.5rem; background: var(--s2-negative, #e34850); color: #fff; border: none; border-radius: 6px; cursor: pointer; font-size: 14px;`,a.addEventListener(`click`,async()=>{a.disabled=!0,a.textContent=`Resetting…`;let e=await indexedDB.databases();await Promise.all(e.map(e=>e.name?new Promise(t=>{let n=indexedDB.deleteDatabase(e.name);n.onsuccess=()=>t(),n.onerror=()=>t(),n.onblocked=()=>t()}):Promise.resolve())),location.reload()}),n.appendChild(a);t.firstChild;)t.removeChild(t.firstChild);t.appendChild(n)}});export{Wc as $,fb as A,bie as B,eF as C,yb as D,bb as E,Ey as F,Sl as G,gie as H,Wv as I,xl as J,wl as K,Ml as L,$ie as M,eb as N,vb as O,R as P,Jc as Q,Tie as R,FI as S,Pb as T,vl as U,Ol as V,bl as W,Tl as X,Cl as Y,qc as Z,B6 as _,N8 as a,I as at,qye as b,G8 as c,s as ct,R8 as d,tie as et,H8 as f,Pxe as g,oSe as h,k8 as i,Wre as it,ab as j,db as k,T8 as l,l as lt,a5 as m,s5 as n,Uc as nt,K8 as o,Ac as ot,M8 as p,yl as q,A8 as r,Hc as rt,W8 as s,o as st,R7 as t,Vc as tt,S8 as u,R6 as v,Nae as w,JL as x,I6 as y,xie as z};
|