sliccy 3.23.0 → 3.23.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/ui/assets/{adobe-Bx6YX_9F.js → adobe-D_Vugf80.js} +1 -1
  2. package/dist/ui/assets/{adobe-O8TgWyny.js → adobe-xcpfIdRj.js} +2 -2
  3. package/dist/ui/assets/{agent-bridge-Dl768bk5.js → agent-bridge-D-rPsRyB.js} +1 -1
  4. package/dist/ui/assets/{agent-message-to-chat-dacAjbZg.js → agent-message-to-chat-D8QrXH4U.js} +1 -1
  5. package/dist/ui/assets/{anthropic-BR8AXUsG.js → anthropic-Dtyagoir.js} +1 -1
  6. package/dist/ui/assets/{anthropic-DsWYizrD.js → anthropic-DzGu5Vy6.js} +1 -1
  7. package/dist/ui/assets/{apps-BnUtzM9-.js → apps-BFfIpvJ_.js} +1 -1
  8. package/dist/ui/assets/{azure-openai-eSDFUS9m.js → azure-openai-CjMzlRs0.js} +1 -1
  9. package/dist/ui/assets/{azure-openai-BCkYyuIi.js → azure-openai-D9cMP_Fj.js} +1 -1
  10. package/dist/ui/assets/{azure-openai-responses-CtIXAjaG.js → azure-openai-responses-DJIV1DiX.js} +1 -1
  11. package/dist/ui/assets/{azure-openai-responses-QpdQfiCu.js → azure-openai-responses-LiaaDPcJ.js} +1 -1
  12. package/dist/ui/assets/{biome_wasm-x3DwV2rt.js → biome_wasm-DILoyHYz.js} +1 -1
  13. package/dist/ui/assets/{bsh-watchdog-HgKNlLnO.js → bsh-watchdog-Q9N25_0z.js} +1 -1
  14. package/dist/ui/assets/{cdp-Cu7LW0Bt.js → cdp-CUD-ZSn-.js} +3 -3
  15. package/dist/ui/assets/{cdp-ws-page-bridge-CbG2XN4O.js → cdp-ws-page-bridge-DFPNsTYM.js} +1 -1
  16. package/dist/ui/assets/{common--IEKDtxv.js → common-BLw2Nl-J.js} +1 -1
  17. package/dist/ui/assets/cost-command-Po1gR-Hi.js +1 -0
  18. package/dist/ui/assets/{es-CuMlC89F.js → es-Cv0XkUMG.js} +1 -1
  19. package/dist/ui/assets/{follower-sprinkle-bridge-s7l1_5A4.js → follower-sprinkle-bridge-BavA0y-a.js} +1 -1
  20. package/dist/ui/assets/{github-CoPiTTXt.js → github-D12QW14k.js} +2 -2
  21. package/dist/ui/assets/{github-C9g2_8Vh.js → github-Di28abu4.js} +1 -1
  22. package/dist/ui/assets/{github-copilot-0erXdX4H.js → github-copilot-Bs5NPvgU.js} +2 -2
  23. package/dist/ui/assets/{github-copilot-B9JypLbK.js → github-copilot-IJf0jSNt.js} +1 -1
  24. package/dist/ui/assets/{google-CzAFRPHC.js → google-BA98QhNu.js} +1 -1
  25. package/dist/ui/assets/{google-JugNwK2X.js → google-CPKtCy-G.js} +1 -1
  26. package/dist/ui/assets/{google-shared-CkV8UjEf.js → google-shared-CgUd6GQm.js} +1 -1
  27. package/dist/ui/assets/{google-shared-C_9iVUrx.js → google-shared-DkyMo0mW.js} +1 -1
  28. package/dist/ui/assets/{google-vertex-Cb6Is-gy.js → google-vertex-C-aVeSbm.js} +1 -1
  29. package/dist/ui/assets/{google-vertex-DNXMcqyG.js → google-vertex-hAuGJ52e.js} +1 -1
  30. package/dist/ui/assets/{intercepted-oauth-KIZ1NEAk.js → intercepted-oauth-pM-BGD58.js} +1 -1
  31. package/dist/ui/assets/{kernel-worker-CjULAHvQ.js → kernel-worker-CplizLfv.js} +984 -983
  32. package/dist/ui/assets/{lick-ws-bridge-x2c7gox3.js → lick-ws-bridge-Bkz1htb0.js} +1 -1
  33. package/dist/ui/assets/{local-llm-5D5Ih6eI.js → local-llm-tWVawqAZ.js} +1 -1
  34. package/dist/ui/assets/{magick-wasm-CjAru4KB.js → magick-wasm-D5OOE7EJ.js} +1 -1
  35. package/dist/ui/assets/{main-D7l-7iRP.js → main-CHCnJnQN.js} +9 -9
  36. package/dist/ui/assets/{mistral-C-3XpjIj.js → mistral-7XK8ILdS.js} +1 -1
  37. package/dist/ui/assets/{mistral-BnJITO9f.js → mistral-BiWQi-Q6.js} +1 -1
  38. package/dist/ui/assets/{nodejs-BTcPcOFo.js → nodejs-BkZc6PQH.js} +1 -1
  39. package/dist/ui/assets/{nuke-command-Ck3z3GSc.js → nuke-command-D9F-SaCE.js} +1 -1
  40. package/dist/ui/assets/{oauth-BVpiDnFn.js → oauth-BBPIyKim.js} +1 -1
  41. package/dist/ui/assets/{oauth-bootstrap-BLTEErh7.js → oauth-bootstrap-CF2U0zkY.js} +2 -2
  42. package/dist/ui/assets/{oauth-service-CrkKpOgi.js → oauth-service-DK0AQV_B.js} +1 -1
  43. package/dist/ui/assets/{oauth-service-DzVLZJ6O.js → oauth-service-ERwyg8Sp.js} +1 -1
  44. package/dist/ui/assets/{offscreen-client-BDRYlJgy.js → offscreen-client-C-HybLAA.js} +1 -1
  45. package/dist/ui/assets/{onboarding-orchestrator-C0LGn2uj.js → onboarding-orchestrator-q_dw4jTj.js} +1 -1
  46. package/dist/ui/assets/{openai-codex-D0fF-yfr.js → openai-codex-CKIJ_djo.js} +1 -1
  47. package/dist/ui/assets/{openai-codex-CC71o1TQ.js → openai-codex-Dis6-HzW.js} +1 -1
  48. package/dist/ui/assets/{openai-codex-responses-DIfPb_nt.js → openai-codex-responses-B1mnlbR0.js} +1 -1
  49. package/dist/ui/assets/{openai-codex-responses-BCzHbQ_P.js → openai-codex-responses-DTOZv7ds.js} +1 -1
  50. package/dist/ui/assets/{openai-completions-DBwkWLve.js → openai-completions-DEKTYAs0.js} +1 -1
  51. package/dist/ui/assets/{openai-responses-B24wmrd4.js → openai-responses-DZq9SNe1.js} +1 -1
  52. package/dist/ui/assets/{openai-responses-CuwMBybR.js → openai-responses-DdPu4D27.js} +1 -1
  53. package/dist/ui/assets/{openai-responses-shared-sAlmOCee.js → openai-responses-shared-BO_vXKUY.js} +1 -1
  54. package/dist/ui/assets/{openai-responses-shared-Blh1IgrF.js → openai-responses-shared-Bpr6gUIV.js} +1 -1
  55. package/dist/ui/assets/{openrouter-BufgWN2d.js → openrouter-BWyBMaJk.js} +1 -1
  56. package/dist/ui/assets/{openrouter-Bo9pYE7k.js → openrouter-sGm2CoIh.js} +1 -1
  57. package/dist/ui/assets/{panel-rpc-handlers-BHCM5KGv.js → panel-rpc-handlers-BSkdF8o-.js} +1 -1
  58. package/dist/ui/assets/{provider-C1j3hGOj.js → provider-BbVTh-k4.js} +1 -1
  59. package/dist/ui/assets/{provider-DCQQ7Z8j.js → provider-CaJ2hVUo.js} +2 -2
  60. package/dist/ui/assets/provider-store-access-BAieyLsa.js +1 -0
  61. package/dist/ui/assets/provider-store-access-k5aUOcMc.js +1 -0
  62. package/dist/ui/assets/{proxied-fetch-ByikXyaG.js → proxied-fetch-D24a0F7e.js} +1 -1
  63. package/dist/ui/assets/{pyodide-BF8v1xIy.js → pyodide-C_KurNw9.js} +2 -2
  64. package/dist/ui/assets/{remote-terminal-view-C3fqiRYe.js → remote-terminal-view-CJvKEhzM.js} +1 -1
  65. package/dist/ui/assets/{secret-env-CjaA9Kwn.js → secret-env-8LsY1D5V.js} +1 -1
  66. package/dist/ui/assets/{slicc-editor-CEA11eY2.js → slicc-editor--ueqTKSL.js} +1 -1
  67. package/dist/ui/assets/{spawn-CC-04rvH.js → spawn-DiUZmxNj.js} +1 -1
  68. package/dist/ui/assets/{sql-wasm-C15EuMvL.js → sql-wasm-CE8UHQay.js} +1 -1
  69. package/dist/ui/assets/{store-DokqJ5BH.js → store-CAvgWs2u.js} +1 -1
  70. package/dist/ui/assets/{tray-leave-runtime-CVgDGO_d.js → tray-leave-runtime-DB4sGbH0.js} +1 -1
  71. package/dist/ui/assets/{typescript-Ck1ZeNJ6.js → typescript-D2-l6K2R.js} +1 -1
  72. package/dist/ui/assets/{upgrade-detection-BcbrUdPz.js → upgrade-detection-DiI90xNN.js} +1 -1
  73. package/dist/ui/assets/{web-IW1bm3mG.js → web-D-HxA_an.js} +1 -1
  74. package/dist/ui/assets/{ws-subscribers-9gtumK1h.js → ws-subscribers-DbDgvsk8.js} +1 -1
  75. package/dist/ui/assets/{xai-grok-oCGDfomI.js → xai-grok-BQCbJ4jC.js} +1 -1
  76. package/dist/ui/assets/{xai-grok-DK8dJtpb.js → xai-grok-ClPIZsB5.js} +1 -1
  77. package/dist/ui/index.html +1 -1
  78. package/dist/ui/packages/webapp/index.html +1 -1
  79. package/package.json +1 -1
  80. package/dist/ui/assets/cost-command-DLZ-4OGZ.js +0 -1
  81. package/dist/ui/assets/provider-store-access-C250enho.js +0 -1
  82. package/dist/ui/assets/provider-store-access-DarZOuBn.js +0 -1
@@ -1,7 +1,7 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openrouter-BufgWN2d.js","assets/headers-DO1UzNKu.js","assets/sanitize-unicode-DmIE6hZJ.js","assets/openai-Cn5LRPCm.js","assets/anthropic-BR8AXUsG.js","assets/github-copilot-headers-DZtWWv8W.js","assets/azure-openai-responses-CtIXAjaG.js","assets/openai-responses-shared-sAlmOCee.js","assets/hash-yQufAZII.js","assets/google-JugNwK2X.js","assets/google-shared-CkV8UjEf.js","assets/google-vertex-Cb6Is-gy.js","assets/mistral-BnJITO9f.js","assets/openai-codex-responses-BCzHbQ_P.js","assets/openai-completions-DBwkWLve.js","assets/openai-responses-CuwMBybR.js","assets/azure-openai-BCkYyuIi.js","assets/local-llm-5D5Ih6eI.js","assets/adobe-O8TgWyny.js","assets/oauth-service-CrkKpOgi.js","assets/github-CoPiTTXt.js","assets/global-db-CbuLl-zx.js","assets/xai-grok-sanitize-CR2JoOJd.js","assets/xai-grok-models-CeEBaUMC.js","assets/xai-grok-oCGDfomI.js","assets/xai-grok-errors-bnlIBeu-.js","assets/slicc-editor-CEA11eY2.js","assets/dist-k2Xmqc09.js","assets/spawn-CC-04rvH.js","assets/offscreen-client-BDRYlJgy.js"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/openrouter-BWyBMaJk.js","assets/headers-DO1UzNKu.js","assets/sanitize-unicode-DmIE6hZJ.js","assets/openai-Cn5LRPCm.js","assets/anthropic-Dtyagoir.js","assets/github-copilot-headers-DZtWWv8W.js","assets/azure-openai-responses-DJIV1DiX.js","assets/openai-responses-shared-BO_vXKUY.js","assets/hash-yQufAZII.js","assets/google-CPKtCy-G.js","assets/google-shared-CgUd6GQm.js","assets/google-vertex-C-aVeSbm.js","assets/mistral-BiWQi-Q6.js","assets/openai-codex-responses-DTOZv7ds.js","assets/openai-completions-DEKTYAs0.js","assets/openai-responses-DdPu4D27.js","assets/azure-openai-D9cMP_Fj.js","assets/local-llm-tWVawqAZ.js","assets/adobe-xcpfIdRj.js","assets/oauth-service-DK0AQV_B.js","assets/github-D12QW14k.js","assets/global-db-CbuLl-zx.js","assets/xai-grok-sanitize-CR2JoOJd.js","assets/xai-grok-models-CeEBaUMC.js","assets/xai-grok-BQCbJ4jC.js","assets/xai-grok-errors-bnlIBeu-.js","assets/slicc-editor--ueqTKSL.js","assets/dist-k2Xmqc09.js","assets/spawn-DiUZmxNj.js","assets/offscreen-client-C-HybLAA.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)=>()=>(e&&(t=e(e=0)),t),s=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),c=(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},l=(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},u=(n,r,a)=>(a=n==null?{}:e(i(n)),l(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n)),d=e=>a.call(e,`module.exports`)?e[`module.exports`]:l(t({},`__esModule`,{value:!0}),e),f=(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.")}),p={assign:0,create:0,clone:0,discard:0,update:0};function m(e,t){return p.assign+=1,{...e,...t}}function h(e,t,n){return e>=t&&e<=n}function g(e){return h(e,127462,127487)}function _(e){return h(e,65024,65039)}function v(e){return h(e,768,879)||h(e,6832,6911)||h(e,7616,7679)||h(e,65056,65071)}function y(e){return e>65535?2:1}function b(e,t){for(;t<e.length;){let n=e.codePointAt(t);if(v(n)||_(n))t+=y(n);else break}return t}function ee(e,t){let n=e.codePointAt(t),r=t+y(n);for(r=b(e,r);r<e.length-1&&e[r]===`‍`;){let t=e.codePointAt(r+1);r+=1+y(t),r=b(e,r)}return g(n)&&r<e.length&&g(e.codePointAt(r))&&(r+=y(e.codePointAt(r))),r}function te(e){return h(e,55296,56319)||h(e,768,879)||e===8205}function ne(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 x(e,t){let n=0,r=0;for(;r<e.length;)if(r=ee(e,r),n++,n>t)return!1;return!0}function S(e,t){if(t===0)return!0;let n=0;for(;n<e.length;){if(te(e.charCodeAt(n)))return ne(e,t);if(n++,n>=t)return!0}return!1}function re(e,t){let n=0;for(;n<e.length;){if(te(e.charCodeAt(n)))return x(e,t);if(n++,n>t)return!1}return!0}function C(e){return Array.isArray(e)}function ie(e){return k(e)&&Symbol.asyncIterator in e}function w(e){return M(typeof e,`bigint`)}function T(e){return M(typeof e,`boolean`)}function ae(e){if(j(e)||!E(e))return!1;let t=Function.prototype.toString.call(e);return!!(/^class\s/.test(t)||/\[native code\]/.test(t))}function E(e){return M(typeof e,`function`)}function oe(e){return Number.isInteger(e)}function se(e){return k(e)&&Symbol.iterator in e}function ce(e){return M(e,null)}function D(e){return Number.isFinite(e)}function O(e){return k(e)&&!C(e)}function k(e){return M(typeof e,`object`)&&!ce(e)}function A(e){return M(typeof e,`string`)}function le(e){return M(typeof e,`symbol`)}function j(e){return M(e,void 0)}function M(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){return e>=t}function me(e,t){if(w(e)||w(t))return BigInt(e)%BigInt(t)===0n;if(!D(e)||oe(e)&&1/t%1==0)return!0;let n=e%t;return Math.min(Math.abs(n),Math.abs(n-t))<1e-10}function he(e){if(!k(e))return!1;let t=globalThis.Object.getPrototypeOf(e);return ce(t)?!1:M(typeof t.constructor,`function`)&&!(M(t.constructor,globalThis.Object)||M(t.constructor.name,`Object`))}function ge(e){return w(e)||T(e)||ce(e)||D(e)||A(e)||j(e)}function _e(e,t){return re(e,t)}function ve(e,t){return S(e,t)}function ye(e,t,n){for(let r=t;r<e.length;r++)if(!n(e[r],r))return!1;return!0}function be(e,t,n){let r=!0;for(let i=t;i<e.length;i++)n(e[i],i)||(r=!1);return r}function xe(e,t,n){return M(e.length,0)?n():t(e[0],e.slice(1))}function N(e,t){return M(t,`__proto__`)||M(t,`constructor`)?Object.prototype.hasOwnProperty.call(e,t):t in e}function Se(e){return P(e).map(t=>[RegExp(`^${t}$`),e[t]])}function Ce(e){return Object.entries(e)}function P(e){return Object.getOwnPropertyNames(e)}function we(e){return Object.values(e)}function Te(e,t){if(!k(t))return!1;let n=P(e);return M(n.length,P(t).length)&&n.every(n=>De(e[n],t[n]))}function Ee(e,t){return C(t)&&M(e.length,t.length)&&e.every((n,r)=>De(e[r],t[r]))}function De(e,t){return C(e)?Ee(e,t):k(e)?Te(e,t):M(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 k(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):C(e)?Re(e):k(e)?ze(e):Ve(e)}function Ue(e){return p.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={}){p.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){p.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){p.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 k(e)&&N(e,`~kind`)&&M(e[`~kind`],t)}function Qe(e){return k(e)}function $e(e){return k(e)&&N(e,`~kind`)&&N(e,`type`)&&M(e[`~kind`],`OptionalAddAction`)&&Qe(e.type)}function et(e){return k(e)&&N(e,`~kind`)&&N(e,`type`)&&M(e[`~kind`],`OptionalRemoveAction`)&&Qe(e.type)}function tt(e){return k(e)&&N(e,`~kind`)&&N(e,`type`)&&M(e[`~kind`],`ReadonlyAddAction`)&&Qe(e.type)}function nt(e){return k(e)&&N(e,`~kind`)&&N(e,`type`)&&M(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 O(e)&&N(e,`~unsafe`)&&ce(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):C(e)?ln(e):T(e)?dn(e):w(e)?un(e):ae(e)?fn(e):ce(e)?hn(e):k(e)?dee(e):A(e)?_n(e):le(e)?mee(e):j(e)?gee(e):E(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`)&&k(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 Dn(e){return w(e)?`bigint`:T(e)?`boolean`:D(e)?`number`:A(e)?`string`:(()=>{throw new See(e)})()}function On(e,t){return Je({"~kind":`Literal`},{type:Dn(e),const:e},t)}function kn(e){return w(e)||T(e)||D(e)||A(e)}function An(e){return Pn(e)&&w(e.const)}function jn(e){return Pn(e)&&T(e.const)}function Mn(e){return Pn(e)&&D(e.const)}function Nn(e){return Pn(e)&&A(e.const)}function Pn(e){return Ze(e,`Literal`)}function Fn(e){return Je({"~kind":`Null`},{type:`null`},e)}function In(e){return Ze(e,`Null`)}var Ln=`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`;function Rn(e){return Je({"~kind":`Number`},{type:`number`},e)}function zn(e){return Ze(e,`Number`)}function Bn(e){return Je({"~kind":`Symbol`},{type:`symbol`},e)}function Vn(e){return Ze(e,`Symbol`)}function Hn(e){return Je({"~kind":`String`},{type:`string`},e)}function Un(e){return Ze(e,`String`)}function Wn(e){let t=ote(e);return M(t.length,2)?t[0]:[]}function Cee(e){return!0}function Gn(e){return xe(e,(e,t)=>wee(e)?Gn(t):!1,()=>!0)}function Kn(e){return M(e.length,0)?!1:Gn(e)}function wee(e){return Ht(e)?Kn(e.anyOf):Pn(e)?Cee(e.const):!1}function qn(e){return Kn(e)}function Jn(e){return Je({"~kind":`TemplateLiteral`},{type:`string`,pattern:e},{})}function Yn(e,t,n=[]){return xe(e,(e,r)=>Yn(r,t,[...n,`${e}${t}`]),()=>n)}function Tee(e,t){return M(e.length,0)?[`${t}`]:Yn(e,t)}function Xn(e,t,n=[]){return xe(t,(t,r)=>Xn(e,r,[...n,...Zn(e,t)]),()=>n)}function Zn(e,t){return Ht(t)?Xn(e,t.anyOf):Pn(t)?Tee(e,t.const):$t()}function Qn(e,t){return xe(t,(t,n)=>Qn(Zn(e,t),n),()=>e)}function Eee(e){return e.map(e=>On(e))}function Dee(e){return Vt(Eee(Qn([],e)))}function Oee(e){return M(e.length,0)?$t():M(e.length,1)&&Pn(e[0])?e[0]:Dee(e)}function $n(e){let t=Wn(e);return M(t.length,0)?Hn():qn(t)?Oee(t):Jn(e)}function er(e){let t=$n(e);return Oi(t)?Hn():t}function tr(e,t){return Je({"~kind":`Record`},{type:`object`,patternProperties:{[e]:t}})}function kee(e){return tr(Pr,e)}function Aee(e){return zt({true:e,false:e})}function jee(e){return A(e)||D(e)?On(e):ce(e)?Fn():Pt()}function nr(e){return e.map(e=>jee(e))}function rr(e){return Vt(nr(e))}function ir(e){return rr(e.enum)}function Mee(e,t){return kr(rr(e),t)}function Nee(e,t){return tr(Mr,t)}function ar(e,t={}){let[n,r,i]=[e,e.length,!1];return Je({"~kind":`Tuple`},{type:`array`,additionalItems:i,items:n,minItems:r},t)}function or(e){return Ze(e,`Tuple`)}function Pee(e){return Ye(e,[`~kind`,`type`,`items`,`minItems`,`additionalItems`])}function sr(e){return e.reduceRight((e,t,n)=>({[n]:t,...e}),{})}function Fee(e){return zt(sr(e.items))}function Iee(e,t){return _t(e)?!!_t(t):!1}function Lee(e,t){return mt(e)?!!mt(t):!1}function Ree(e,t){let n=Iee(e,t),r=Lee(e,t),i=ht(dt(pr([e,t])));return n&&r?gt(ft(i)):n&&!r?gt(i):!n&&r?ft(i):i}function zee(e,t,n){return n in e?n in t?Ree(e[n],t[n]):e[n]:n in t?t[n]:Pt()}function Bee(e,t){return[...new Set([...P(t),...P(e)])].reduce((n,r)=>({...n,[r]:zee(e,t,r)}),{})}function cr(e){return Bt(e)?e.properties:or(e)?sr(e.items):$t()}function Vee(e,t){return zt(Bee(cr(e),cr(t)))}function Hee(e,t){let n=Fa(e,t);return M(n,`left-inside`)?e:M(n,`right-inside`)||M(n,`equal`)?t:Pt()}function lr(e){return Bt(e)||or(e)}function Uee(e,t){let n=Ht(e),r=Ht(t);return n||r}function Wee(e,t){let n=hr(e),r=hr(t),i=Uee(n,r),a=lr(n),o=lr(r);return i?pr([n,r]):a&&o?Vee(n,r):a&&!o?n:!a&&o?r:Hee(n,r)}function ur(e,t,n=[]){return xe(t,(t,r)=>ur(e,r,[...n,Wee(e,t)]),()=>M(n.length,0)?[e]:n)}function dr(e,t,n=[]){return xe(e,(e,r)=>dr(r,t,[...n,...fr([e],t)]),()=>n)}function fr(e,t=[]){return xe(e,(e,n)=>Ht(e)?fr(n,dr(e.anyOf,t)):fr(n,ur(e,t)),()=>t)}function pr(e){return Ba(fr(e))}function mr(e){return Ba(e)}function hr(e){return Qt(e)?pr(e.allOf):Ht(e)?mr(e.anyOf):e}function gr(e){return M(e.length,1)?e[0]:M(e.length,0)?Pt():Vt(e)}function _r(e,t){return kr(pr(e),t)}function vr(e,t){return A(e)||D(e)?zt({[e]:t}):M(e,!1)?zt({false:t}):M(e,!0)?zt({true:t}):zt({})}function yr(e,t){return tr(Nr,t)}function br(e,t){return N(e,`pattern`)&&(A(e.pattern)||e.pattern instanceof RegExp)?tr(e.pattern.toString(),t):tr(Pr,t)}function xr(e,t){return qn(Wn(e))?kr(er(e),t):tr(e,t)}function Sr(e){return Ht(e)?Cr(e.anyOf):[e]}function Cr(e){return e.reduce((e,t)=>[...e,...Sr(t)],[])}function wr(e){return e.some(e=>Un(e)||zn(e)||wn(e))}function Tr(e,t){return M(wr(e),!0)?tr(Pr,t):void 0}function Er(e,t){return e.reduce((e,n)=>Pn(n)&&(A(n.const)||D(n.const))?{...e,[n.const]:t}:e,{})}function Dr(e,t){return zt(Er(e,t))}function Or(e,t){let n=Cr(e),r=Tr(n,t);return Qe(r)?r:Dr(n,t)}function kr(e,t){return Nt(e)?kee(t):xn(e)?Aee(t):Xt(e)?Mee(e.enum,t):wn(e)?Nee(e,t):Qt(e)?_r(e.allOf,t):Pn(e)?vr(e.const,t):zn(e)?yr(e,t):Ht(e)?Or(e.anyOf,t):Un(e)?br(e,t):Oi(e)?xr(e.pattern,t):zt({})}function Ar(e,t,n){return kc([e])?Xe(kr(e,t),{},n):Fr(e,t,n)}function jr(e,t,n,r,i){return Ar(F(e,t,n),F(e,t,r),i)}var Mr=`^${Sn}$`,Nr=`^${Ln}$`,Pr=`^.*$`;function Fr(e,t,n={}){return rt(`Record`,[e,t],n)}function Ir(e,t,n={}){return Ar(e,t,n)}function Lr(e,t){return tr(e,t)}function Rr(e){return P(e.patternProperties)[0]}function zr(e){let t=Rr(e);return M(t,Pr)?Hn():M(t,Mr)?Cn():M(t,Nr)?Rn():$n(t)}function Br(e){return e.patternProperties[Rr(e)]}function Vr(e){return Ze(e,`Record`)}function Hr(e){return Je({"~kind":`Rest`},{type:`rest`,items:e},{})}function Ur(e){return Ze(e,`Rest`)}function Wr(e){return Ze(e,`This`)}function Gr(e){return Je({"~kind":`Undefined`},{type:`undefined`},e)}function Kr(e){return Ze(e,`Undefined`)}function qr(e){return Ze(e,`Void`)}function Jr(e){return bee()}function Yr(e){return Hn()}function Xr(e){return Rn()}function Zr(e){return Cn()}function Qr(e){return Pt()}function $r(e){return On(e)}function ei(e){return e}function ti(e){return Vt(e[1])}function ni(e){return e.length===3?[...e[0],...e[2]]:e.length===1?[...e[0]]:[]}function ri(e){return[e[0],...e[1]]}function ii(e){return e}function ai(e){return e[1]}function oi(e){return M(e.length,2)}function si(e,t,n){return oi(e)?t(e[0],e[1]):n()}function Gee(e,t){return M(t.indexOf(e),0)?[e,t.slice(e.length)]:[]}function Kee(e,t){for(let n=0;n<e.length;n++){let r=Gee(e[n],t);if(oi(r))return r}return[]}function ci(e,t){return Array.from({length:t-e+1},(t,n)=>String.fromCharCode(e+n))}var qee=[...ci(97,122),...ci(65,90)],li=[`0`,...ci(49,57)],ui=`//`,di=`/*`,Jee=`*/`;function fi(e){let t=e.indexOf(Jee);return M(t,-1)?``:e.slice(t+2)}function pi(e){let t=e.indexOf(`
3
3
  `);return M(t,-1)?``:e.slice(t)}function Yee(e){return e.replace(/^[ \t\r\f\v]+/,``)}function mi(e){let t=Yee(e);return t.startsWith(di)?mi(fi(t.slice(2))):t.startsWith(ui)?mi(pi(t.slice(2))):t}function hi(e){let t=e.trimStart();return t.startsWith(di)?hi(fi(t.slice(2))):t.startsWith(ui)?hi(pi(t.slice(2))):t}[...li];function gi(e,t){return Kee([e],t)}function _i(e,t){return M(e,``)?[``,t]:e.startsWith(`
4
- `)?gi(e,mi(t)):e.startsWith(` `)?gi(e,t):gi(e,hi(t))}[...qee,...li],[...li];function Xee(e){return M(e,``)?[]:[e.slice(0,1),e.slice(1)]}function vi(e,t){let[n,...r]=e;return A(n)?t.startsWith(n)?!0:vi(r,t):!1}function yi(e,t,n=``){return si(Xee(t),(r,i)=>vi(e,t)?[n,t]:yi(e,i,`${n}${r}`),()=>[])}function Zee(e,t){return si(yi(e,t),(e,t)=>M(e,``)?[]:[e,t],()=>[])}var bi=(e,t,n=()=>[])=>e.length===2?t(e):n(),Qee=e=>bi(_i(`-?(?:0|[1-9][0-9]*)n`,e),([e,t])=>[Jr(e),t]),$ee=e=>bi(_i(`.*`,e),([e,t])=>[Yr(e),t]),ete=e=>bi(_i(`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,e),([e,t])=>[Xr(e),t]),tte=e=>bi(_i(`-?(?:0|[1-9][0-9]*)`,e),([e,t])=>[Zr(e),t]),nte=e=>bi(_i(`(?!)`,e),([e,t])=>[Qr(e),t]),rte=e=>bi(Zee([`-?(?:0|[1-9][0-9]*)n`,`.*`,`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,`-?(?:0|[1-9][0-9]*)`,`(?!)`,`(`,`)`,`$`,`|`],e),([e,t])=>[$r(e),t]),ite=e=>bi(bi(Qee(e),([e,t])=>[e,t],()=>bi($ee(e),([e,t])=>[e,t],()=>bi(ete(e),([e,t])=>[e,t],()=>bi(tte(e),([e,t])=>[e,t],()=>bi(nte(e),([e,t])=>[e,t],()=>bi(ate(e),([e,t])=>[e,t],()=>bi(rte(e),([e,t])=>[e,t],()=>[]))))))),([e,t])=>[ei(e),t]),ate=e=>bi(bi(_i(`(`,e),([e,t])=>bi(Ci(t),([t,n])=>bi(_i(`)`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ti(e),t]),xi=e=>bi(bi(bi(Si(e),([e,t])=>bi(_i(`|`,t),([t,n])=>bi(xi(n),([n,r])=>[[e,t,n],r]))),([e,t])=>[e,t],()=>bi(bi(Si(e),([e,t])=>[[e],t]),([e,t])=>[e,t],()=>bi([[],e],([e,t])=>[e,t],()=>[]))),([e,t])=>[ni(e),t]),Si=e=>bi(bi(ite(e),([e,t])=>bi(Ci(t),([t,n])=>[[e,t],n])),([e,t])=>[ri(e),t]),Ci=e=>bi(bi(xi(e),([e,t])=>[e,t],()=>bi(Si(e),([e,t])=>[e,t],()=>[])),([e,t])=>[ii(e),t]),ote=e=>bi(bi(_i(`^`,e),([e,t])=>bi(Ci(t),([t,n])=>bi(_i(`$`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ai(e),t]);function ste(e){return e.join(`|`)}function cte(e){return e.slice(1,e.length-1)}function lte(e,t,n){return Ei(t,`${n}${e}`)}function ute(e,t){return Ei(e,`${t}${yee}`)}function dte(e,t){return Ei(e,`${t}${Sn}`)}function fte(e,t){return Ei(e,`${t}${Ln}`)}function pte(e,t){return Ti(Vt([On(`false`),On(`true`)]),e,t)}function mte(e,t){return Ei(e,`${t}.*`)}function hte(e,t,n){return Ei(t,`${n}${cte(e)}`)}function gte(e,t,n){return Ti(Di(e,{}),t,n)}function _te(e,t,n){return wi(nr(e),t,n)}function wi(e,t,n,r=[]){return xe(e,(e,i)=>wi(i,t,n,[...r,Ti(e,[],``)]),()=>Ei(t,`${n}(${ste(r)})`))}function Ti(e,t,n){return Xt(e)?_te(e.enum,t,n):wn(e)?dte(t,n):Pn(e)?lte(e.const,t,n):bn(e)?ute(t,n):xn(e)?pte(t,n):zn(e)?fte(t,n):Un(e)?mte(t,n):Oi(e)?hte(e.pattern,t,n):Ste(e)?gte(e.parameters[0],t,n):Ht(e)?wi(e.anyOf,t,n):iee}function Ei(e,t){return xe(e,(e,n)=>Ti(e,n,t),()=>t)}function vte(e){return`^${Ei(e,``)}$`}function yte(e){return Jn(vte(e))}function Di(e,t){return kc(e)?Xe(yte(e),{},t):xte(e,t)}function bte(e,t,n,r){return Di(Nc(e,t,n),r)}function xte(e,t={}){return rt(`TemplateLiteral`,[e],t)}function Ste(e){return Qe(e)&&N(e,`action`)&&M(e.action,`TemplateLiteral`)}function Oi(e){return Ze(e,`TemplateLiteral`)}function Cte(e){return Je({"~kind":`ExtendsUnion`},{inferred:e})}function ki(e){return k(e)&&N(e,`~kind`)&&N(e,`inferred`)&&M(e[`~kind`],`ExtendsUnion`)&&k(e.inferred)}function Ai(e){return Je({"~kind":`ExtendsTrue`},{inferred:e})}function ji(e){return k(e)&&N(e,`~kind`)&&N(e,`inferred`)&&M(e[`~kind`],`ExtendsTrue`)&&k(e.inferred)}function Mi(){return Je({"~kind":`ExtendsFalse`},{})}function Ni(e){return k(e)&&N(e,`~kind`)&&M(e[`~kind`],`ExtendsFalse`)}function Pi(e){return ki(e)||ji(e)}function Fi(e,t,n){return Pi(e)?t(e.inferred):n()}function wte(e,t,n,r){return Fi(ea(e,n,r),r=>Ai(m(m(e,r),{[t]:n})),()=>Mi())}function Tte(e,t){return Ai(e)}function Ete(e,t,n){return ea(e,t,rr(n))}function Ii(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ii(e,t,r),()=>Mi()),()=>Ai(e))}function Dte(e,t,n){return ea(e,t,er(n))}function Li(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ai(e),()=>Li(e,t,r)),()=>Mi())}function Ri(e,t,n){return Nt(n)?Tte(e,t):Xt(n)?Ete(e,t,n.enum):Yt(n)?wte(e,n.name,t,n.extends):Qt(n)?Ii(e,t,n.allOf):Oi(n)?Dte(e,t,n.pattern):Ht(n)?Li(e,t,n.anyOf):Wt(n)?Ai(e):Mi()}function Ote(e,t,n){return Yt(n)?Ri(e,t,n):Nt(n)||Wt(n)?Ai(e):Cte(e)}function kte(e,t){let n=ut(e),r=ut(t);return n&&r||!n&&r?!0:!(n&&!r)}function Ate(e,t,n,r){return bt(r)?kte(t,r)?ea(e,n,r.items):Mi():Ri(e,t,r)}function jte(e,t,n){return Ct(n)?ea(e,t,n.iteratorItems):Ri(e,St(t),n)}function Mte(e,t,n){return bn(n)?Ai(e):Ri(e,t,n)}function Nte(e,t,n){return xn(n)?Ai(e):Ri(e,t,n)}function Pte(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?Mi():Fi(ea(e,a,o),e=>zi(e,n,i),()=>Mi())}function Fte(e,t,n,r){return xe(r,(r,i)=>Pte(e,t,n,r,i),()=>mt(t)?Ai(e):Mi())}function Ite(e,t,n){return xe(t,(t,r)=>Fte(e,t,r,n),()=>Ai(e))}function zi(e,t,n){return Ite(e,t,n)}function Bi(e,t,n){return qr(n)?Ai(e):ea(e,t,n)}function Lte(e,t,n,r){return Nt(r)||Wt(r)?Ai(e):Tt(r)?Fi(zi(e,t,r.parameters),e=>Bi(e,n,r.instanceType),()=>Mi()):Mi()}function Rte(e,t,n){return ea(e,ir(t),n)}function zte(e,t,n,r){return Nt(r)||Wt(r)?Ai(e):Ot(r)?Fi(zi(e,t,r.parameters),e=>Bi(e,n,r.returnType),()=>Mi()):Mi()}function Bte(e,t,n){return wn(n)||zn(n)?Ai(e):Ri(e,t,n)}function Vte(e,t,n){return ea(e,pr(t),n)}function Hte(e,t,n){return En(n)?ea(e,t,n.iteratorItems):Ri(e,Tn(t),n)}function Vi(e,t,n){return t===n?Ai(e):Mi()}function Ute(e,t,n){return Pn(n)?Vi(e,t,n.const):bn(n)?Ai(e):Ri(e,On(t),n)}function Wte(e,t,n){return Pn(n)?Vi(e,t,n.const):xn(n)?Ai(e):Ri(e,On(t),n)}function Gte(e,t,n){return Pn(n)?Vi(e,t,n.const):zn(n)?Ai(e):Ri(e,On(t),n)}function Kte(e,t,n){return Pn(n)?Vi(e,t,n.const):Un(n)?Ai(e):Ri(e,On(t),n)}function qte(e,t,n){return w(t.const)?Ute(e,t.const,n):T(t.const)?Wte(e,t.const,n):D(t.const)?Gte(e,t.const,n):A(t.const)?Kte(e,t.const,n):$t()}function Jte(e,t,n){return Yt(n)?Ri(e,t,n):Ai(e)}function Yte(e,t,n){return In(n)?Ai(e):Ri(e,t,n)}function Xte(e,t,n){return zn(n)?Ai(e):Ri(e,t,n)}function Zte(e,t,n){return mt(t)?mt(n)?Ai(e):Mi():Ai(e)}function Qte(e,t,n){return Yt(n)&&Ft(n.extends)?Mi():Fi(ea(e,t,n),e=>Zte(e,t,n),()=>Mi())}function $te(e,t){return e.reduce((e,n)=>n in t&&Pi(t[n])?{...e,...t[n].inferred}:$t(),{})}function ene(e,t,n){let r={};for(let i of P(n))r[i]=i in t?Qte({},t[i],n[i]):mt(n[i])?Yt(n[i])?Ai(m(e,{[n[i].name]:n[i].extends})):Ai(e):Mi();let i=we(r).every(e=>Pi(e)),a=i?$te(P(r),r):{};return i?Ai(a):Mi()}function tne(e,t,n){let r=ene(e,t,n);return Pi(r)?Ai(m(e,r.inferred)):Mi()}function nne(e,t,n){return tne(e,t,n)}function rne(e,t,n){return Bt(n)?nne(e,t,n.properties):Ri(e,zt(t),n)}function ine(e,t,n){return ot(n)?ea(e,t,n.item):Ri(e,at(t),n)}function ane(e,t,n){return Un(n)?Ai(e):Ri(e,t,n)}function one(e,t,n){return Vn(n)?Ai(e):Ri(e,t,n)}function sne(e,t,n){return ea(e,er(t),n)}function Hi(e,t){return Je({"~kind":`Inferrable`},{name:e,type:t},{})}function Ui(e){return k(e)&&N(e,`~kind`)&&N(e,`name`)&&N(e,`type`)&&M(e[`~kind`],`Inferrable`)&&A(e.name)&&k(e.type)}function Wi(e){return Ur(e)?Yt(e.items)?bt(e.items.extends)?Hi(e.items.name,e.items.extends.items):Wt(e.items.extends)?Hi(e.items.name,e.items.extends):void 0:$t():void 0}function Gi(e){return Yt(e)?Hi(e.name,e.extends):void 0}function Ki(e,t,n=[]){return xe(e,(e,r)=>Fi(ea({},e,t),()=>Ki(r,t,[...n,e]),()=>void 0),()=>n)}function cne(e,t,n,r){let i=Ki(n,r);return C(i)?Ai(m(e,{[t]:ar(i)})):Mi()}function qi(e,t,n,r){let i=Ki(n,r);return C(i)?Ai(m(e,{[t]:Vt(i)})):Mi()}function lne(e){return[...e].reverse()}function Ji(e,t){return t?lne(e):e}function une(e){let t=e.length>0?e[0]:void 0;return Qe(Qe(t)?Wi(t):void 0)}function dne(e,t,n,r,i,a){return Fi(ea(e,n,i),e=>Yi(e,t,r,a),()=>Mi())}function fne(e,t,n,r,i){let a=Wi(r);return Ui(a)?cne(e,a.name,Ji(n,t),a.type):xe(n,(n,a)=>dne(e,t,n,a,r,i),()=>Mi())}function pne(e,t,n,r){return xe(r,(r,i)=>fne(e,t,n,r,i),()=>M(n.length,0)?Ai(e):Mi())}function Yi(e,t,n,r){return pne(e,t,n,r)}function mne(e,t,n){let r=Mc(e,{callstack:[]},n),i=une(r);return Yi(e,i,Ji(t,i),Ji(r,i))}function Xi(e,t,n){let r=Gi(n);return Ui(r)?qi(e,r.name,t,r.type):xe(t,(t,r)=>Fi(ea(e,t,n),e=>Xi(e,r,n),()=>Mi()),()=>Ai(e))}function hne(e,t,n){let r=Mc(e,{callstack:[]},t);return or(n)?mne(e,r,n.items):bt(n)?Xi(e,r,n.items):Ri(e,ar(r),n)}function gne(e,t,n){return qr(n)||Kr(n)?Ai(e):Ri(e,t,n)}function Zi(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ai(e),()=>Zi(e,t,r)),()=>Mi())}function Qi(e,t,n){return xe(t,(t,r)=>Fi(Zi(e,t,n),e=>Qi(e,r,n),()=>Mi()),()=>Ai(e))}function _ne(e,t,n){let r=Gi(n);return Ui(r)?qi(e,r.name,t,r.type):Ht(n)?Qi(e,t,n.anyOf):Qi(e,t,[n])}function vne(e,t,n){return Yt(n)?Ri(e,t,n):Nt(n)||Wt(n)?Ai(e):Mi()}function $i(e,t,n){return qr(n)?Ai(e):Ri(e,t,n)}function ea(e,t,n){return Nt(t)?Ote(e,t,n):bt(t)?Ate(e,t,t.items,n):Ct(t)?jte(e,t.iteratorItems,n):bn(t)?Mte(e,t,n):xn(t)?Nte(e,t,n):Tt(t)?Lte(e,t.parameters,t.instanceType,n):Xt(t)?Rte(e,t,n):Ot(t)?zte(e,t.parameters,t.returnType,n):wn(t)?Bte(e,t,n):Qt(t)?Vte(e,t.allOf,n):En(t)?Hte(e,t.iteratorItems,n):Pn(t)?qte(e,t,n):Ft(t)?Jte(e,t,n):In(t)?Yte(e,t,n):zn(t)?Xte(e,t,n):Bt(t)?rne(e,t.properties,n):ot(t)?ine(e,t.item,n):Un(t)?ane(e,t,n):Vn(t)?one(e,t,n):Oi(t)?sne(e,t.pattern,n):or(t)?hne(e,t.items,n):Kr(t)?gne(e,t,n):Ht(t)?_ne(e,t.anyOf,n):Wt(t)?vne(e,t,n):qr(t)?$i(e,t,n):Mi()}function ta(e,t){return pr([...e,zt(t)])}function na(e,t,n){return kc(e)?Xe(ta(e,t),{},n):ia(e,t,n)}function ra(e,t,n,r,i){return na(Nc(e,t,n),jc(e,t,r),i)}function ia(e,t,n={}){return rt(`Interface`,[e,t],n)}function aa(e){return Qe(e)&&N(e,`action`)&&M(e.action,`Interface`)}function oa(e,t,n){return e.includes(n)?!0:la([...e,n],t,t[n])}function sa(e,t,n){return ca(e,t,Rt(n))}function ca(e,t,n){return xe(n,(n,r)=>la(e,t,n)?!0:ca(e,t,r),()=>!1)}function la(e,t,n){return At(n)?oa(e,t,n.$ref):bt(n)?la(e,t,n.items):Ct(n)?la(e,t,n.iteratorItems):Tt(n)?ca(e,t,[...n.parameters,n.instanceType]):Ot(n)?ca(e,t,[...n.parameters,n.returnType]):aa(n)?sa(e,t,n.parameters[1]):Qt(n)?ca(e,t,n.allOf):En(n)?la(e,t,n.iteratorItems):Bt(n)?sa(e,t,n.properties):ot(n)?la(e,t,n.item):Ht(n)?ca(e,t,n.anyOf):or(n)?ca(e,t,n.items):Vr(n)?la(e,t,Br(n)):!1}function ua(e,t,n){return la(e,t,n)}function da(e,t){return t.reduce((t,n)=>n in e?ua([n],e,e[n])?[...t,n]:t:$t(),[])}function fa(e){return da(e,Lt(e))}function pa(e,t,n){return n.includes(t)?n:t in e?ga(e,e[t],[...n,t]):$t()}function ma(e,t,n){return ha(e,Rt(t),n)}function ha(e,t,n){return t.reduce((t,n)=>ga(e,n,t),n)}function ga(e,t,n){return At(t)?pa(e,t.$ref,n):bt(t)?ga(e,t.items,n):Ct(t)?ga(e,t.iteratorItems,n):Tt(t)?ha(e,[...t.parameters,t.instanceType],n):Ot(t)?ha(e,[...t.parameters,t.returnType],n):aa(t)?ma(e,t.parameters[1],n):Qt(t)?ha(e,t.allOf,n):En(t)?ga(e,t.iteratorItems,n):Bt(t)?ma(e,t.properties,n):ot(t)?ga(e,t.item,n):Ht(t)?ha(e,t.anyOf,n):or(t)?ha(e,t.items,n):Vr(t)?ga(e,Br(t),n):n}function _a(e,t,n){return ga(e,n,[t])}function va(e){return ree()}function ya(e){return P(e).reduce((t,n)=>({...t,[n]:xa(e[n])}),{})}function ba(e){return e.reduce((e,t)=>[...e,xa(t)],[])}function xa(e){return At(e)?va(e.$ref):bt(e)?yt(xa(e.items),xt(e)):Ct(e)?St(xa(e.iteratorItems)):Tt(e)?wt(ba(e.parameters),xa(e.instanceType)):Ot(e)?Dt(ba(e.parameters),xa(e.returnType)):Qt(e)?Zt(ba(e.allOf)):En(e)?Tn(xa(e.iteratorItems)):Bt(e)?zt(ya(e.properties)):ot(e)?at(xa(e.item)):Vr(e)?Ir(zr(e),xa(Br(e))):Ht(e)?Vt(ba(e.anyOf)):or(e)?ar(ba(e.items)):e}function Sa(e,t){return t in e?xa(e[t]):Ut()}function Ca(e){return Sa(e.$defs,e.$ref)}function wa(e,t,n){let r=Nc(e,{callstack:[]},t),i=jc({},{callstack:[]},n);return pr([...r,zt(i)])}function Ta(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>{let r=e[n],i=aa(r)?wa(e,r.parameters[0],r.parameters[1]):r;return{...t,[n]:i}},{})}function Ea(e,t,n){return Gt(Ta(e,_a(e,t,n)),t)}function Da(e,t){return t in e?At(e[t])?Da(e,e[t].$ref):e[t]:Pt()}function Oa(e,t){return Da(e,t)}function ka(e){return Kt(e)?Ca(e):qt(e)?Ut():e}function Aa(e,t,n){return ea(e,ka(t),ka(n))}var ja=`equal`,Ma=`disjoint`,Na=`left-inside`,Pa=`right-inside`;function Fa(e,t){let n=[Wt(e)?Mi():Aa({},e,t),Wt(e)?Ai({}):Aa({},t,e)];return Pi(n[0])&&Pi(n[1])?ja:Pi(n[0])&&Ni(n[1])?Na:Ni(n[0])&&Pi(n[1])?Pa:Ma}function Ia(e,t){return t.filter(t=>Fa(e,t)!==`right-inside`)}function La(e,t){return M(t.some(t=>{let n=Fa(e,t);return M(n,`left-inside`)||M(n,`equal`)}),!1)}function Ra(e,t){let n=hr(e);return Nt(n)?[n]:La(n,t)?[...Ia(n,t),n]:t}function za(e){return e.reduce((e,t)=>Bt(t)?[...e,t]:Ft(t)?e:Ra(t,e),[])}function Ba(e){let t=Cr(za(e));return t.length===0?Pt():t.length===1?t[0]:Vt(t)}function Va(e,t){return Xe(hr(e),{},t)}function Ha(e,t,n,r){return Va(F(e,t,n),r)}function Ua(e,t=[]){return it(e)&&M(e.action,`Conditional`)?At(e.parameters[0])?Ua(e.parameters[2],Ua(e.parameters[3],[...t,e.parameters[0].$ref])):Ua(e.parameters[2],Ua(e.parameters[3],t)):it(e)&&M(e.action,`Mapped`)&&it(e.parameters[1])&&M(e.parameters[1].action,`KeyOf`)&&At(e.parameters[1].parameters[0])?[...t,e.parameters[1].parameters[0].$ref]:t}function Wa(e,t){return e.reduce((e,n)=>[...e,t.includes(n.name)],[])}function Ga(e,t,n=[]){let[r,...i]=e,[a,...o]=t;return ue(e.length,0)&&ue(t.length,0)?Ga(i,o,[...n,[a,r]]):n}function Ka(e){return Ht(e)?[...e.anyOf]:[e]}function qa(e,t){return e.reduce((e,n)=>[...e,[...n,t]],[])}function Ja(e,t){return t.reduce((t,n)=>[...t,...qa(e,n)],[])}function Ya(e){return e.reduce((e,t)=>M(t[0],!0)?Ja(e,Ka(t[1])):Ja(e,[t[1]]),[[]])}function Xa(e,t,n){let r=Ga(t,Wa(e,Ua(n)));return it(n)&&M(n.action,`Conditional`)||it(n)&&M(n.action,`Mapped`)?Ya(r):[t]}function Za(){return[`(not-resolvable)`,Pt()]}function Qa(){return[`(not-generic)`,Pt()]}function $a(e,t,n){return[e,jt(t,n)]}function eo(e,t,n){return t in e?to(e,t,e[t],n):Za()}function to(e,t,n,r){return Mt(n)?$a(t,n.parameters,n.expression):At(n)?eo(e,n.$ref,r):Qa()}function no(e,t,n){return to(e,`(anonymous)`,t,n)}function ro(e,t,n){if(Yt(t)||go(t)||Pi(Aa({},t,n)))return;let r={parameter:e,expect:n,actual:t};throw Error(`Argument for parameter ${e} does not satisfy constraint`,{cause:r})}function io(e,t,n,r,i){let a=F(e,t,i);return ro(n,a,r),m(e,{[n]:a})}function ao(e,t,n,r,i){let a=F(e,t,n.extends),o=F(e,t,n.equals);return xe(i,(i,o)=>oo(io(e,t,n.name,a,i),t,r,o),()=>oo(io(e,t,n.name,a,o),t,r,[]))}function oo(e,t,n,r){return xe(n,(n,i)=>ao(e,t,n,i,r),()=>e)}function so(e,t,n,r){return oo(e,t,n,r)}function co(e){return ue(e.callstack.length,0)?e.callstack[e.callstack.length-1]:``}function lo(e,t){return M(co(e),t)}function uo(e,t,n,r,i,a){return F(e,t,F(so(e,t,r,a),{callstack:[...t.callstack,n.$ref]},i))}function fo(e,t,n,r,i,a){return a.reduce((a,o)=>[...a,uo(e,t,n,r,i,o)],[])}function po(e,t,n,r,i,a){let o=fo(e,t,n,r,i,Xa(r,a,i));return M(o.length,1)?o[0]:mr(o)}function mo(e,t,n,r){let i=Nc(e,t,r),a=no(e,n,r),o=a[0],s=a[1];return Mt(s)?lo(t,o)?ho(kt(o),i):po(e,t,kt(o),s.parameters,s.expression,i):ho(n,i)}function ho(e,t){return Je({"~kind":`Call`},{target:e,arguments:t},{})}function go(e){return Ze(e,`Call`)}function _o(e,t){return e(t)}function vo(e,t){return A(t)?On(_o(e,t)):On(t)}function yo(e,t){return xo(e,er(t))}function bo(e,t){return Vt(t.map(t=>xo(e,t)))}function xo(e,t){return Pn(t)?vo(e,t.const):Oi(t)?yo(e,t.pattern):Ht(t)?bo(e,t.anyOf):t}function So(e,t={}){return rt(`Capitalize`,[e],t)}function Co(e,t={}){return rt(`Lowercase`,[e],t)}function wo(e,t={}){return rt(`Uncapitalize`,[e],t)}function To(e,t={}){return rt(`Uppercase`,[e],t)}var Eo=e=>e[0].toUpperCase()+e.slice(1),Do=e=>e.toLowerCase(),Oo=e=>e[0].toLowerCase()+e.slice(1),ko=e=>e.toUpperCase();function Ao(e,t){return kc([e])?Xe(xo(Eo,e),{},t):So(e,t)}function jo(e,t){return kc([e])?Xe(xo(Do,e),{},t):Co(e,t)}function Mo(e,t){return kc([e])?Xe(xo(Oo,e),{},t):wo(e,t)}function No(e,t){return kc([e])?Xe(xo(ko,e),{},t):To(e,t)}function Po(e,t,n,r){return Ao(F(e,t,n),r)}function Fo(e,t,n,r){return jo(F(e,t,n),r)}function Io(e,t,n,r){return Mo(F(e,t,n),r)}function Lo(e,t,n,r){return No(F(e,t,n),r)}function Ro(e,t,n,r,i={}){return rt(`Conditional`,[e,t,n,r],i)}function zo(e,t,n,r,i,a){let o=Aa(e,n,r);return ki(o)?Vt([F(o.inferred,t,i),F(e,t,a)]):ji(o)?F(o.inferred,t,i):F(e,t,a)}function Bo(e,t,n,r,i,a,o){return kc([n,r])?Xe(zo(e,t,n,r,i,a),{},o):Ro(n,r,i,a,o)}function Vo(e,t,n,r,i,a,o){return Bo(e,t,F(e,t,n),F(e,t,r),i,a,o)}function Ho(e,t={}){return rt(`ConstructorParameters`,[e],t)}function Uo(e){return ar(Mc({},{callstack:[]},Tt(e)?e.parameters:[]))}function Wo(e,t){return kc([e])?Xe(Uo(e),{},t):Ho(e,t)}function Go(e,t,n,r){return Wo(F(e,t,n),r)}function Ko(e,t,n={}){return rt(`Exclude`,[e,t],n)}function qo(e,t){return e.reduce((e,n)=>[...e,...Jo(n,t)],[])}function Jo(e,t){return Pi(Aa({},e,t))?[]:[e]}function Yo(e,t){return mr(Xt(e)?qo(nr(e.enum),t):Ht(e)?qo(Cr(e.anyOf),t):Jo(e,t))}function Xo(e,t,n){return kc([e,t])?Xe(Yo(e,t),{},n):Ko(e,t,n)}function Zo(e,t,n,r,i){return Xo(F(e,t,n),F(e,t,r),i)}function Qo(e,t,n={}){return rt(`Extract`,[e,t],n)}function $o(e,t){return e.reduce((e,n)=>[...e,...es(n,t)],[])}function es(e,t){return Pi(Aa({},e,t))?[e]:[]}function ts(e,t){return mr(Xt(e)?$o(nr(e.enum),t):Ht(e)?$o(Cr(e.anyOf),t):es(e,t))}function ns(e,t,n){return kc([e,t])?Xe(ts(e,t),{},n):Qo(e,t,n)}function rs(e,t,n,r,i){return ns(F(e,t,n),F(e,t,r),i)}function is(e,t,n={}){return rt(`Index`,[e,t],n)}function as(e,t){return ps(Oa(e,t))}function os(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]:pr([e[r],t[r]])}),{});return m(m(a,o),s)}function ss(e){return e.reduce((e,t)=>os(e,ps(t)),{})}function cs(e){return e}function ls(e){return ps(Fee(ar(e)))}function us(e,t){return P(e).filter(e=>e in t).reduce((n,r)=>({...n,[r]:mr([e[r],t[r]])}),{})}function ds(e,t){return xe(e,(e,n)=>ds(n,us(t,ps(e))),()=>t)}function fs(e){return xe(e,(e,t)=>ds(t,ps(e)),()=>$t())}function ps(e){return Kt(e)?as(e.$defs,e.$ref):Qt(e)?ss(e.allOf):Ht(e)?fs(e.anyOf):or(e)?ls(e.items):Bt(e)?cs(e.properties):{}}function ms(e){return zt(ps(e))}var hs=RegExp(`^(?:0|[1-9][0-9]*)$`);function gs(e){let t=`${e}`;return hs.test(t)?parseInt(t):e}function _s(e){return On(gs(e))}function vs(e){return e.map(e=>ys(e))}function ys(e){return Qt(e)?Zt(vs(e.allOf)):Ht(e)?Vt(vs(e.anyOf)):Pn(e)?_s(e.const):e}function bs(e,t){return Pi(Aa({},ys(t),Rn()))?e:Pn(t)&&M(t.const,`length`)?Rn():Pt()}function xs(e,t){return Ds(Oa(e,t))}function Ss(e){return e.reduce((e,t)=>[...e,...Ds(t)],[])}function Cs(e){return Ss(nr(e))}function ws(e){return Ds(pr(e))}function Ts(e){return[`${e}`]}function Es(e){return Ds(er(e))}function Ds(e){return Kt(e)?xs(e.$defs,e.$ref):Xt(e)?Cs(e.enum):Qt(e)?ws(e.allOf):Pn(e)?Ts(e.const):Oi(e)?Es(e.pattern):Ht(e)?Ss(e.anyOf):[]}function Os(e){return Ds(e)}function ks(e,t){return t.map(t=>As(e,t))}function As(e,t){return bt(t)?yt(As(e,t.items)):Ct(t)?St(As(e,t.iteratorItems)):Tt(t)?wt(ks(e,t.parameters),As(e,t.instanceType)):Ot(t)?Dt(ks(e,t.parameters),As(e,t.returnType)):En(t)?Tn(As(e,t.iteratorItems)):ot(t)?at(As(e,t.item)):or(t)?ar(ks(e,t.items)):Ht(t)?Vt(ks(e,t.anyOf)):Qt(t)?Zt(ks(e,t.allOf)):Wr(t)?zt(e):t}function js(e,t){return As(e,t)}function Ms(e,t){return js(e,t in e?e[t]:Pt())}function Ns(e,t){return t.reduce((t,n)=>[...t,Ms(e,n)],[])}function Ps(e,t){return mr(Ns(e,Os(t)))}var Fs=new RegExp(Mr);function Is(e){return e.filter(e=>Fs.test(e))}function Ls(e){return mr(Ns(e,Is(Lt(e))))}function Rs(e,t){return zn(t)?Ls(e):Ps(e,t)}function zs(e){return On(gs(e))}function Bs(e){return e.map(e=>Vs(e))}function Vs(e){return Qt(e)?Zt(Bs(e.allOf)):Ht(e)?Vt(Bs(e.anyOf)):Pn(e)?zs(e.const):e}function Hs(e,t){return e.reduceRight((e,n,r)=>Pi(Aa({},On(r),t))?[n,...e]:e,[])}function Us(e,t){return gr(Hs(e,Vs(t)))}function Ws(e){return gr(e)}function Gs(e,t){return Pn(t)&&M(t.const,`length`)?On(e.length):zn(t)||wn(t)?Ws(e):Us(e,t)}function Ks(e,t){return bt(e)?bs(e.items,t):Bt(e)?Rs(e.properties,t):or(e)?Gs(e.items,t):Pt()}function qs(e){return Kt(e)||Qt(e)||Ht(e)?ms(e):e}function Js(e,t,n){return kc([e,t])?Xe(Ks(qs(e),t),{},n):is(e,t,n)}function Ys(e,t,n,r,i){return Js(F(e,t,n),F(e,t,r),i)}function Xs(e,t={}){return rt(`InstanceType`,[e],t)}function Zs(e){return Tt(e)?e.instanceType:Pt()}function Qs(e,t){return kc([e])?Xe(Zs(e),{},t):Xs(e,t)}function $s(e,t,n,r={}){return Qs(F(e,t,n),r)}function ec(e,t={}){return rt(`KeyOf`,[e],t)}function tc(){return Vt([Rn(),Hn(),Bn()])}function nc(e){return Rn()}function rc(e){return e.reduce((e,t)=>kn(t)?[...e,On(gs(t))]:$t(),[])}function ic(e){return gr(rc(P(e)))}function ac(e){return zr(e)}function oc(e){return gr(e.map((e,t)=>On(t)))}function sc(e){return Nt(e)?tc():bt(e)?nc(e.items):Bt(e)?ic(e.properties):Vr(e)?ac(e):or(e)?oc(e.items):Pt()}function cc(e){return Kt(e)||Qt(e)||Ht(e)?ms(e):e}function lc(e,t){return kc([e])?Xe(sc(cc(e)),{},t):ec(e,t)}function uc(e,t,n,r){return lc(F(e,t,n),r)}function dc(e,t,n,r,i={}){return rt(`Mapped`,[e,t,n,r],i)}function fc(e){return hc(er(e))}function pc(e){return e.reduce((e,t)=>[...e,...hc(t)],[])}function mc(e){return D(e)?[On(`${e}`)]:[On(e)]}function hc(e){return Xt(e)?pc(nr(e.enum)):Pn(e)?mc(e.const):Oi(e)?fc(e.pattern):Ht(e)?pc(e.anyOf):[e]}function gc(e){return hc(e)}function _c(e){return Oi(e)?er(e.pattern):e}function vc(e,t,n,r,i,a){let o=m(e,{[n.name]:r}),s=_c(F(o,t,i)),c=F(o,t,a);return Mn(s)||Nn(s)?{[s.const]:c}:{}}function yc(e,t,n,r,i,a){return r.reduce((r,o)=>[...r,vc(e,t,n,o,i,a)],[])}function bc(e){return e.reduce((e,t)=>[...e,zt(t)],[])}function xc(e,t,n,r,i,a){return pr(bc(yc(e,t,n,gc(r),i,a)))}function Sc(e,t,n,r,i,a,o){return kc([r])?Xe(xc(e,t,n,r,i,a),{},o):dc(n,r,i,a,o)}function yne(e,t,n,r,i,a,o){return Sc(e,t,n,F(e,t,r),i,a,o)}function bne(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>({...t,[n]:Ea(e,n,e[n])}),{})}function xne(e,t){return P(e).filter(e=>!t.includes(e)).reduce((t,n)=>({...t,[n]:F(e,{callstack:[]},e[n])}),{})}function Sne(e,t){let n=fa(e),r=bne(e,n),i=xne(e,n);return Xe({...r,...i},{},t)}function Cne(e,t,n,r){return Sne(m(e,n),r)}function wne(e,t={}){return rt(`NonNullable`,[e],t)}function Tne(e){return Xo(e,Vt([Fn(),Gr()]),{})}function Ene(e,t){return kc([e])?Xe(Tne(e),{},t):wne(e,t)}function Dne(e,t,n,r){return Ene(F(e,t,n),r)}function One(e,t,n={}){return rt(`Omit`,[e,t],n)}function Cc(e){let t=ms(e);return Bt(t)?t.properties:$t()}function kne(e,t){return P(e).reduce((n,r)=>t.includes(r)?n:{...n,[r]:e[r]},{})}function Ane(e,t){return zt(kne(Cc(e),Os(t)))}function jne(e,t,n){return kc([e,t])?Xe(Ane(e,t),{},n):One(e,t,n)}function Mne(e,t,n,r,i){return jne(F(e,t,n),F(e,t,r),i)}function Nne(e,t){return rt(`Options`,[e,t],{})}function Pne(e,t){return wc(e,t)}function wc(e,t){return kc([e])?Xe(e,{},t):Nne(e,t)}function Fne(e,t,n,r){return wc(F(e,t,n),r)}function Ine(e,t={}){return rt(`Parameters`,[e],t)}function Lne(e){return ar(Mc({},{callstack:[]},Ot(e)?e.parameters:[]))}function Rne(e,t){return kc([e])?Xe(Lne(e),{},t):Ine(e,t)}function zne(e,t,n,r){return Rne(F(e,t,n),r)}function Bne(e,t={}){return rt(`Partial`,[e],t)}function Vne(e,t){let n=Tc(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function Hne(e){return pr(e.map(e=>Tc(e)))}function Une(e){return Vt(e.map(e=>Tc(e)))}function Wne(e){return zt(P(e).reduce((t,n)=>({...t,[n]:pt(e[n])}),{}))}function Tc(e){return Kt(e)?Vne(e.$defs,e.$ref):Qt(e)?Hne(e.allOf):Ht(e)?Une(e.anyOf):Bt(e)?Wne(e.properties):zt({})}function Gne(e,t){return kc([e])?Xe(Tc(e),{},t):Bne(e,t)}function Kne(e,t,n,r){return Gne(F(e,t,n),r)}function qne(e,t,n={}){return rt(`Pick`,[e,t],n)}function Jne(e,t){return P(e).reduce((n,r)=>t.includes(r)?m(n,{[r]:e[r]}):n,{})}function Yne(e,t){return zt(Jne(Cc(e),Os(t)))}function Xne(e,t,n){return kc([e,t])?Xe(Yne(e,t),{},n):qne(e,t,n)}function Zne(e,t,n,r,i){return Xne(F(e,t,n),F(e,t,r),i)}function Qne(e,t={}){return rt(`ReadonlyObject`,[e],t)}function $ne(e){return lt(yt(e))}function ere(e,t){let n=Ec(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function tre(e){return pr(e.map(e=>Ec(e)))}function nre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:eee(e[n])}),{}))}function rre(e){return lt(ar(e))}function ire(e){return Vt(e.map(e=>Ec(e)))}function Ec(e){return bt(e)?$ne(e.items):Kt(e)?ere(e.$defs,e.$ref):Qt(e)?tre(e.allOf):Bt(e)?nre(e.properties):or(e)?rre(e.items):Ht(e)?ire(e.anyOf):e}function are(e,t){return kc([e])?Xe(Ec(e),{},t):Qne(e)}function ore(e,t,n,r){return are(F(e,t,n),r)}function sre(e,t,n,r){return r in e?ua([r],e,e[r])?n:F(e,t,e[r]):n}function cre(e,t){let n=Dc(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function lre(e){return pr(e.map(e=>Dc(e)))}function ure(e){return Vt(e.map(e=>Dc(e)))}function dre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:dt(e[n])}),{}))}function Dc(e){return Kt(e)?cre(e.$defs,e.$ref):Qt(e)?lre(e.allOf):Ht(e)?ure(e.anyOf):Bt(e)?dre(e.properties):zt({})}function fre(e,t={}){return rt(`Required`,[e],t)}function pre(e,t){return kc([e])?Xe(Dc(e),{},t):fre(e,t)}function mre(e,t,n,r){return pre(F(e,t,n),r)}function hre(e,t={}){return rt(`ReturnType`,[e],t)}function gre(e){return Ot(e)?e.returnType:Pt()}function _re(e,t){return kc([e])?Xe(gre(e),{},t):hre(e,t)}function vre(e,t,n,r={}){return _re(F(e,t,n),r)}function yre(e){return Ur(e)?or(e.items)?Oc(e.items.items):Yt(e.items)||At(e.items)?[e]:[Pt()]:[e]}function Oc(e){return e.reduce((e,t)=>[...e,...yre(t)],[])}function kc(e){return xe(e,(e,t)=>At(e)?!1:kc(t),()=>!0)}function Ac(e,t,n){return nt(e)?Ac(e.type,`remove`,n):et(e)?Ac(e.type,t,`remove`):tt(e)?Ac(e.type,`add`,n):$e(e)?Ac(e.type,t,`add`):[e,t,n]}function bre(e,t){return M(e,`remove`)?ht(t):M(e,`add`)?gt(t):t}function xre(e,t){return M(e,`remove`)?dt(t):M(e,`add`)?ft(t):t}function jc(e,t,n){return P(n).reduce((r,i)=>({...r,[i]:F(e,t,n[i])}),{})}function Mc(e,t,n){return Oc(Nc(e,t,n))}function Nc(e,t,n){return n.map(n=>F(e,t,n))}function Sre(e,t,n,r,i){return M(n,`Awaited`)?wre(e,t,r[0],i):M(n,`Capitalize`)?Po(e,t,r[0],i):M(n,`Conditional`)?Vo(e,t,r[0],r[1],r[2],r[3],i):M(n,`ConstructorParameters`)?Go(e,t,r[0],i):M(n,`Evaluate`)?Ha(e,t,r[0],i):M(n,`Exclude`)?Zo(e,t,r[0],r[1],i):M(n,`Extract`)?rs(e,t,r[0],r[1],i):M(n,`Index`)?Ys(e,t,r[0],r[1],i):M(n,`InstanceType`)?$s(e,t,r[0],i):M(n,`Interface`)?ra(e,t,r[0],r[1],i):M(n,`KeyOf`)?uc(e,t,r[0],i):M(n,`Lowercase`)?Fo(e,t,r[0],i):M(n,`Mapped`)?yne(e,t,r[0],r[1],r[2],r[3],i):M(n,`Module`)?Cne(e,t,r[0],i):M(n,`NonNullable`)?Dne(e,t,r[0],i):M(n,`Pick`)?Zne(e,t,r[0],r[1],i):M(n,`Options`)?Fne(e,t,r[0],r[1]):M(n,`Parameters`)?zne(e,t,r[0],i):M(n,`Partial`)?Kne(e,t,r[0],i):M(n,`Omit`)?Mne(e,t,r[0],r[1],i):M(n,`ReadonlyObject`)?ore(e,t,r[0],i):M(n,`Record`)?jr(e,t,r[0],r[1],i):M(n,`Required`)?mre(e,t,r[0],i):M(n,`ReturnType`)?vre(e,t,r[0],i):M(n,`TemplateLiteral`)?bte(e,t,r[0],i):M(n,`Uncapitalize`)?Io(e,t,r[0],i):M(n,`Uppercase`)?Lo(e,t,r[0],i):rt(n,r,i)}function F(e,t,n){let r=ut(n),i=Ac(n,_t(n)?`add`:`none`,mt(n)?`add`:`none`),a=vt(i[0])?i[0].Clone():i[0],o=At(a)?sre(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)):go(a)?mo(e,t,a.target,a.arguments):Tt(a)?wt(Nc(e,t,a.parameters),F(e,t,a.instanceType),Et(a)):it(a)?Sre(e,t,a.action,a.parameters,a.options):Ot(a)?Dt(Nc(e,t,a.parameters),F(e,t,a.returnType),nee(a)):Qt(a)?Zt(Nc(e,t,a.allOf),see(a)):En(a)?Tn(F(e,t,a.iteratorItems),xee(a)):Bt(a)?zt(jc(e,t,a.properties),aee(a)):ot(a)?at(F(e,t,a.item),st(a)):Vr(a)?Lr(Rr(a),F(e,t,Br(a))):Ur(a)?Hr(F(e,t,a.items)):or(a)?ar(Mc(e,t,a.items),Pee(a)):Ht(a)?Vt(Nc(e,t,a.anyOf),oee(a)):a,s=r?lt(o):o;return bre(i[1],xre(i[2],s))}function Pc(e,t){return F(e,{callstack:[]},t)}function Fc(e){return ot(e)?Fc(e.item):e}function Cre(e,t){return kc([e])?Xe(Fc(e),{},t):Tre(e,t)}function wre(e,t,n,r){return Cre(F(e,t,n),r)}function Tre(e,t={}){return rt(`Awaited`,[e],t)}function Ic(e,t={}){return Va(e,t)}var Lc=new Map;function Ere(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Dre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Rc(e,t){Lc.set(e.api,{provider:{api:e.api,stream:Ere(e.api,e.stream),streamSimple:Dre(e.api,e.streamSimple)},sourceId:t})}function Ore(e){return Lc.get(e)?.provider}var kre=`modulepreload`,Are=function(e){return`/`+e},zc={},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=Are(t,n),t in zc)return;zc[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`:kre,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)})},jre=s(((e,t)=>{t.exports={}})),Bc=null,Vc=null,Hc=null,Uc=e=>I(()=>import(e),[]);typeof process<`u`&&(process.versions?.node||process.versions?.bun)&&(Uc(`node:fs`).then(e=>{Bc=e.existsSync}),Uc(`node:os`).then(e=>{Vc=e.homedir}),Uc(`node:path`).then(e=>{Hc=e.join}));var Wc=null;function Gc(e){if(process.versions?.bun&&!(typeof process>`u`)&&!(Object.keys({}).length>0)){if(Wc===null){Wc=new Map;try{let{readFileSync:e}=jre(),t=e(`/proc/self/environ`,`utf-8`);for(let e of t.split(`\0`)){let t=e.indexOf(`=`);t>0&&Wc.set(e.slice(0,t),e.slice(t+1))}}catch{}}return Wc.get(e)}}var Kc=null;function Mre(){if(Kc===null){if(!Bc||!Vc||!Hc)return typeof process<`u`&&(process.versions?.node||process.versions?.bun)||(Kc=!1),!1;let e={}.GOOGLE_APPLICATION_CREDENTIALS||Gc(`GOOGLE_APPLICATION_CREDENTIALS`);Kc=Bc(e||Hc(Vc(),`.config`,`gcloud`,`application_default_credentials.json`))}return Kc}function Nre(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 Pre(e){let t=Nre(e);if(!t)return;let n=t.filter(e=>!!{}[e]||!!Gc(e));return n.length>0?n:void 0}function Fre(e){let t=Pre(e);if(t?.[0])return{}[t[0]]||Gc(t[0]);if(e===`google-vertex`){let e=Mre(),t=!!({}.GOOGLE_CLOUD_PROJECT||{}.GCLOUD_PROJECT||Gc(`GOOGLE_CLOUD_PROJECT`)||Gc(`GCLOUD_PROJECT`)),n=!!({}.GOOGLE_CLOUD_LOCATION||Gc(`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||Gc(`AWS_PROFILE`)||Gc(`AWS_ACCESS_KEY_ID`)&&Gc(`AWS_SECRET_ACCESS_KEY`)||Gc(`AWS_BEARER_TOKEN_BEDROCK`)||Gc(`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`)||Gc(`AWS_CONTAINER_CREDENTIALS_FULL_URI`)||Gc(`AWS_WEB_IDENTITY_TOKEN_FILE`)))return`<authenticated>`}var Ire={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}}}},Lre=new Map;for(let[e,t]of Object.entries(Ire)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Lre.set(e,n)}var Rre=new Map;function zre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Bre(e,t){Rre.set(e.api,{provider:{api:e.api,generateImages:zre(e.api,e.generateImages)},sourceId:t})}var qc;function Vre(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 Hre(){return qc||=I(()=>import(`./openrouter-BufgWN2d.js`).then(e=>e),__vite__mapDeps([0,1,2,3])),qc}var Ure=async(e,t,n)=>{try{return await(await Hre()).generateImagesOpenRouter(e,t,n)}catch(t){return Vre(e,t)}};function Wre(){Bre({api:`openrouter-images`,generateImages:Ure})}Wre();var Gre={"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-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-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-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-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-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:256e3,maxTokens:256e3},"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:256e3,maxTokens:256e3},"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-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`,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`,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`,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:.03,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:.08,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:.13,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`},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:.28,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},"qwen-3-235b-a22b-instruct-2507":{id:`qwen-3-235b-a22b-instruct-2507`,name:`Qwen 3 235B Instruct`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:32e3},"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`,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`,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`,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/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:128e3,maxTokens:16384},"@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:256e3,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/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:.06,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-v3p1":{id:`accounts/fireworks/models/deepseek-v3p1`,name:`DeepSeek V3.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:.56,output:1.68,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:163840},"accounts/fireworks/models/deepseek-v3p2":{id:`accounts/fireworks/models/deepseek-v3p2`,name:`DeepSeek V3.2`,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:.56,output:1.68,cacheRead:.28,cacheWrite:0},contextWindow:16e4,maxTokens:16e4},"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:.15,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/glm-4p5":{id:`accounts/fireworks/models/glm-4p5`,name:`GLM 4.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:.55,output:2.19,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"accounts/fireworks/models/glm-4p5-air":{id:`accounts/fireworks/models/glm-4p5-air`,name:`GLM 4.5 Air`,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:.22,output:.88,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"accounts/fireworks/models/glm-4p7":{id:`accounts/fireworks/models/glm-4p7`,name:`GLM 4.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:.6,output:2.2,cacheRead:.3,cacheWrite:0},contextWindow:198e3,maxTokens:198e3},"accounts/fireworks/models/glm-5":{id:`accounts/fireworks/models/glm-5`,name:`GLM 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:1,output:3.2,cacheRead:.5,cacheWrite:0},contextWindow:202752,maxTokens:131072},"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:0,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:.05,output:.2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/kimi-k2-instruct":{id:`accounts/fireworks/models/kimi-k2-instruct`,name:`Kimi K2 Instruct`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"accounts/fireworks/models/kimi-k2-thinking":{id:`accounts/fireworks/models/kimi-k2-thinking`,name:`Kimi K2 Thinking`,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:.6,output:2.5,cacheRead:.3,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"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-m2p1":{id:`accounts/fireworks/models/minimax-m2p1`,name:`MiniMax-M2.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:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:2e5,maxTokens:2e5},"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:.03,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/kimi-k2p5-turbo":{id:`accounts/fireworks/routers/kimi-k2p5-turbo`,name:`Kimi K2.5 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:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3}},"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`},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`},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`},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},"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-1.5-flash":{id:`gemini-1.5-flash`,name:`Gemini 1.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,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-flash-lite-preview-06-17":{id:`gemini-2.5-flash-lite-preview-06-17`,name:`Gemini 2.5 Flash Lite Preview 06-17`,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},"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`,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},"gemini-2.5-flash-preview-04-17":{id:`gemini-2.5-flash-preview-04-17`,name:`Gemini 2.5 Flash Preview 04-17`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-preview-05-20":{id:`gemini-2.5-flash-preview-05-20`,name:`Gemini 2.5 Flash Preview 05-20`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-preview-09-2025":{id:`gemini-2.5-flash-preview-09-2025`,name:`Gemini 2.5 Flash Preview 09-25`,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-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-2.5-pro-preview-05-06":{id:`gemini-2.5-pro-preview-05-06`,name:`Gemini 2.5 Pro Preview 05-06`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.31,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro-preview-06-05":{id:`gemini-2.5-pro-preview-06-05`,name:`Gemini 2.5 Pro Preview 06-05`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.31,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:1e6,maxTokens:64e3},"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-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},"gemini-live-2.5-flash":{id:`gemini-live-2.5-flash`,name:`Gemini Live 2.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"gemini-live-2.5-flash-preview-native-audio":{id:`gemini-live-2.5-flash-preview-native-audio`,name:`Gemini Live 2.5 Flash Preview Native Audio`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`],cost:{input:.5,output:2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"gemma-3-27b-it":{id:`gemma-3-27b-it`,name:`Gemma 3 27B`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"gemma-4-26b-a4b-it":{id:`gemma-4-26b-a4b-it`,name:`Gemma 4 26B`,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:256e3,maxTokens:8192},"gemma-4-31b-it":{id:`gemma-4-31b-it`,name:`Gemma 4 31B`,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:256e3,maxTokens:8192}},"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:0,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:0,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:0,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:1.74,output:3.48,cacheRead:.145,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:.03,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:.08,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:.13,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`},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:.28,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:272e3,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:128e3},"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`,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`,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`,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},"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`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"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},"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.5-free":{id:`minimax-m2.5-free`,name:`MiniMax M2.5 Free`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,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},"qwen3.6-plus-free":{id:`qwen3.6-plus-free`,name:`Qwen3.6 Plus Free`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},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`,reasoning:!0,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:.4,output:2,cacheRead:.08,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,output:3,cacheRead:.2,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}},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},"alibaba/tongyi-deepresearch-30b-a3b":{id:`alibaba/tongyi-deepresearch-30b-a3b`,name:`Tongyi DeepResearch 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:.09,cacheWrite:0},contextWindow:131072,maxTokens:131072},"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-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-preview":{id:`arcee-ai/trinity-large-preview`,name:`Arcee AI: Trinity Large Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:4096},"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-large-thinking:free":{id:`arcee-ai/trinity-large-thinking:free`,name:`Arcee AI: Trinity Large Thinking (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:8e4},"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/cobuddy:free":{id:`baidu/cobuddy:free`,name:`Baidu Qianfan: CoBuddy (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:65536},"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:.32,output:.8899999999999999,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16384},"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,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.112,output:.224,cacheRead:.022,cacheWrite:0},contextWindow:1048576,maxTokens:4096},"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,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: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,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: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:1048576,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/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:.3,output:2.5,cacheRead:.06,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},"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:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"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:.125,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:.03,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"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:32e3},"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`},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:131072,maxTokens:8192},"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:131072,maxTokens:8192},"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:.325},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:65536},"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:.14,output:1,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:81920},"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:.195,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:.08125},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:.325},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:0},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:.32,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:81920},"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:.15,output:1,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:262144},"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},"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:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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:.06599999999999999,output:.26,cacheRead:.029,cacheWrite:0},contextWindow:262144,maxTokens:262144},"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},"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:.39999999999999997,output:2,cacheRead:.08,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:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:16384},"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:.13,output:.85,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:98304},"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:.5,output:3,cacheRead:.049999999999999996,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},"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},"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`,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`,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`,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/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-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`},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},"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:.39999999999999997,output:2,cacheRead:.08,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:1,output:3,cacheRead:.19999999999999998,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-2":{id:`grok-2`,name:`Grok 2`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-1212":{id:`grok-2-1212`,name:`Grok 2 (1212)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-latest":{id:`grok-2-latest`,name:`Grok 2 Latest`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-vision":{id:`grok-2-vision`,name:`Grok 2 Vision`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"grok-2-vision-1212":{id:`grok-2-vision-1212`,name:`Grok 2 Vision (1212)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"grok-2-vision-latest":{id:`grok-2-vision-latest`,name:`Grok 2 Vision Latest`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"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:2,output:6,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:2,output:6,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-beta":{id:`grok-beta`,name:`Grok Beta`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:5,output:15,cacheRead:5,cacheWrite:0},contextWindow:131072,maxTokens:4096},"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},"grok-vision-beta":{id:`grok-vision-beta`,name:`Grok Vision Beta`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:5,cacheWrite:0},contextWindow:8192,maxTokens:4096}},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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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}}},Jc=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);Jc.set(e,n)}function Yc(e,t){return Jc.get(e)?.get(t)}function Xc(){return Array.from(Jc.keys())}function Zc(e){let t=Jc.get(e);return t?Array.from(t.values()):[]}function Qc(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 $c=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function el(e){return e.reasoning?$c.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`?n!==void 0:!0}):[`off`]}function Kre(e,t){let n=el(e);if(n.includes(t))return t;let r=$c.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<$c.length;e++){let t=$c[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=$c[e];if(n.includes(t))return t}return n[0]??`off`}var qre=class{isComplete;extractResult;queue=[];waiting=[];done=!1;finalResultPromise;resolveFinalResult;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}},tl=class extends qre{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 nl(){return new tl}var Jre=e=>I(()=>import(e),[]),rl,il,al,ol,sl,cl,ll,ul,dl,fl;function pl(e,t){(async()=>{for await(let n of t)e.push(n);e.end()})()}function ml(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 hl(e){return(t,n,r)=>{let i=new tl;return e().then(e=>{pl(i,e.stream(t,n,r))}).catch(e=>{let n=ml(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function gl(e){return(t,n,r)=>{let i=new tl;return e().then(e=>{pl(i,e.streamSimple(t,n,r))}).catch(e=>{let n=ml(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function _l(){return rl||=I(()=>import(`./anthropic-BR8AXUsG.js`).then(e=>{let t=e;return{stream:t.streamAnthropic,streamSimple:t.streamSimpleAnthropic}}),__vite__mapDeps([4,5,1,2])),rl}function vl(){return il||=I(()=>import(`./azure-openai-responses-CtIXAjaG.js`).then(e=>{let t=e;return{stream:t.streamAzureOpenAIResponses,streamSimple:t.streamSimpleAzureOpenAIResponses}}),__vite__mapDeps([6,7,8,2,1,3])),il}function yl(){return al||=I(()=>import(`./google-JugNwK2X.js`).then(e=>{let t=e;return{stream:t.streamGoogle,streamSimple:t.streamSimpleGoogle}}),__vite__mapDeps([9,10,2])),al}function bl(){return ol||=I(()=>import(`./google-vertex-Cb6Is-gy.js`).then(e=>{let t=e;return{stream:t.streamGoogleVertex,streamSimple:t.streamSimpleGoogleVertex}}),__vite__mapDeps([11,10,2])),ol}function xl(){return sl||=I(()=>import(`./mistral-BnJITO9f.js`).then(e=>{let t=e;return{stream:t.streamMistral,streamSimple:t.streamSimpleMistral}}),__vite__mapDeps([12,8,2])),sl}function Sl(){return cl||=I(()=>import(`./openai-codex-responses-BCzHbQ_P.js`).then(e=>{let t=e;return{stream:t.streamOpenAICodexResponses,streamSimple:t.streamSimpleOpenAICodexResponses}}),__vite__mapDeps([13,7,8,2,1])),cl}function Cl(){return ll||=I(()=>import(`./openai-completions-DBwkWLve.js`).then(e=>{let t=e;return{stream:t.streamOpenAICompletions,streamSimple:t.streamSimpleOpenAICompletions}}),__vite__mapDeps([14,5,1,2,3])),ll}function wl(){return ul||=I(()=>import(`./openai-responses-CuwMBybR.js`).then(e=>{let t=e;return{stream:t.streamOpenAIResponses,streamSimple:t.streamSimpleOpenAIResponses}}),__vite__mapDeps([15,5,7,8,2,1,3])),ul}function Tl(){return dl?Promise.resolve(dl):(fl||=Jre(`./amazon-bedrock.js`).then(e=>{let t=e;return{stream:t.streamBedrock,streamSimple:t.streamSimpleBedrock}}),fl)}var El=hl(_l),Dl=gl(_l),Yre=hl(vl),Xre=gl(vl),Zre=hl(yl),Qre=gl(yl),$re=hl(bl),eie=gl(bl),tie=hl(xl),nie=gl(xl),Ol=hl(Sl),kl=gl(Sl),Al=hl(Cl),jl=gl(Cl),Ml=hl(wl),Nl=gl(wl),rie=hl(Tl),iie=gl(Tl);function aie(){Rc({api:`anthropic-messages`,stream:El,streamSimple:Dl}),Rc({api:`openai-completions`,stream:Al,streamSimple:jl}),Rc({api:`mistral-conversations`,stream:tie,streamSimple:nie}),Rc({api:`openai-responses`,stream:Ml,streamSimple:Nl}),Rc({api:`azure-openai-responses`,stream:Yre,streamSimple:Xre}),Rc({api:`openai-codex-responses`,stream:Ol,streamSimple:kl}),Rc({api:`google-generative-ai`,stream:Zre,streamSimple:Qre}),Rc({api:`google-vertex`,stream:$re,streamSimple:eie}),Rc({api:`bedrock-converse-stream`,stream:rie,streamSimple:iie})}aie();var Pl=new Set;function oie(e){return Pl.add(e),()=>{Pl.delete(e)}}function sie(e){let t=Ore(e);if(!t)throw Error(`No API provider registered for api: ${e}`);return t}function cie(e,t,n){return sie(e.api).streamSimple(e,t,n)}async function Fl(e,t,n){return cie(e,t,n).result()}function Il(e){return e instanceof Error?e.message||e.name:typeof e==`string`?e:String(e)}function lie(e){if(!(e instanceof Error))return{name:`ThrownValue`,message:Il(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 uie(e,t,n){return{type:e,timestamp:Date.now(),error:lie(t),details:n}}function die(e,t){e.diagnostics=[...e.diagnostics??[],t]}var Ll=s((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})),Rl=s((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=Ll();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(Ll(),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
+ `)?gi(e,mi(t)):e.startsWith(` `)?gi(e,t):gi(e,hi(t))}[...qee,...li],[...li];function Xee(e){return M(e,``)?[]:[e.slice(0,1),e.slice(1)]}function vi(e,t){let[n,...r]=e;return A(n)?t.startsWith(n)?!0:vi(r,t):!1}function yi(e,t,n=``){return si(Xee(t),(r,i)=>vi(e,t)?[n,t]:yi(e,i,`${n}${r}`),()=>[])}function Zee(e,t){return si(yi(e,t),(e,t)=>M(e,``)?[]:[e,t],()=>[])}var bi=(e,t,n=()=>[])=>e.length===2?t(e):n(),Qee=e=>bi(_i(`-?(?:0|[1-9][0-9]*)n`,e),([e,t])=>[Jr(e),t]),$ee=e=>bi(_i(`.*`,e),([e,t])=>[Yr(e),t]),ete=e=>bi(_i(`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,e),([e,t])=>[Xr(e),t]),tte=e=>bi(_i(`-?(?:0|[1-9][0-9]*)`,e),([e,t])=>[Zr(e),t]),nte=e=>bi(_i(`(?!)`,e),([e,t])=>[Qr(e),t]),rte=e=>bi(Zee([`-?(?:0|[1-9][0-9]*)n`,`.*`,`-?(?:0|[1-9][0-9]*)(?:.[0-9]+)?`,`-?(?:0|[1-9][0-9]*)`,`(?!)`,`(`,`)`,`$`,`|`],e),([e,t])=>[$r(e),t]),ite=e=>bi(bi(Qee(e),([e,t])=>[e,t],()=>bi($ee(e),([e,t])=>[e,t],()=>bi(ete(e),([e,t])=>[e,t],()=>bi(tte(e),([e,t])=>[e,t],()=>bi(nte(e),([e,t])=>[e,t],()=>bi(ate(e),([e,t])=>[e,t],()=>bi(rte(e),([e,t])=>[e,t],()=>[]))))))),([e,t])=>[ei(e),t]),ate=e=>bi(bi(_i(`(`,e),([e,t])=>bi(Ci(t),([t,n])=>bi(_i(`)`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ti(e),t]),xi=e=>bi(bi(bi(Si(e),([e,t])=>bi(_i(`|`,t),([t,n])=>bi(xi(n),([n,r])=>[[e,t,n],r]))),([e,t])=>[e,t],()=>bi(bi(Si(e),([e,t])=>[[e],t]),([e,t])=>[e,t],()=>bi([[],e],([e,t])=>[e,t],()=>[]))),([e,t])=>[ni(e),t]),Si=e=>bi(bi(ite(e),([e,t])=>bi(Ci(t),([t,n])=>[[e,t],n])),([e,t])=>[ri(e),t]),Ci=e=>bi(bi(xi(e),([e,t])=>[e,t],()=>bi(Si(e),([e,t])=>[e,t],()=>[])),([e,t])=>[ii(e),t]),ote=e=>bi(bi(_i(`^`,e),([e,t])=>bi(Ci(t),([t,n])=>bi(_i(`$`,n),([n,r])=>[[e,t,n],r]))),([e,t])=>[ai(e),t]);function ste(e){return e.join(`|`)}function cte(e){return e.slice(1,e.length-1)}function lte(e,t,n){return Ei(t,`${n}${e}`)}function ute(e,t){return Ei(e,`${t}${yee}`)}function dte(e,t){return Ei(e,`${t}${Sn}`)}function fte(e,t){return Ei(e,`${t}${Ln}`)}function pte(e,t){return Ti(Vt([On(`false`),On(`true`)]),e,t)}function mte(e,t){return Ei(e,`${t}.*`)}function hte(e,t,n){return Ei(t,`${n}${cte(e)}`)}function gte(e,t,n){return Ti(Di(e,{}),t,n)}function _te(e,t,n){return wi(nr(e),t,n)}function wi(e,t,n,r=[]){return xe(e,(e,i)=>wi(i,t,n,[...r,Ti(e,[],``)]),()=>Ei(t,`${n}(${ste(r)})`))}function Ti(e,t,n){return Xt(e)?_te(e.enum,t,n):wn(e)?dte(t,n):Pn(e)?lte(e.const,t,n):bn(e)?ute(t,n):xn(e)?pte(t,n):zn(e)?fte(t,n):Un(e)?mte(t,n):Oi(e)?hte(e.pattern,t,n):Ste(e)?gte(e.parameters[0],t,n):Ht(e)?wi(e.anyOf,t,n):iee}function Ei(e,t){return xe(e,(e,n)=>Ti(e,n,t),()=>t)}function vte(e){return`^${Ei(e,``)}$`}function yte(e){return Jn(vte(e))}function Di(e,t){return kc(e)?Xe(yte(e),{},t):xte(e,t)}function bte(e,t,n,r){return Di(Nc(e,t,n),r)}function xte(e,t={}){return rt(`TemplateLiteral`,[e],t)}function Ste(e){return Qe(e)&&N(e,`action`)&&M(e.action,`TemplateLiteral`)}function Oi(e){return Ze(e,`TemplateLiteral`)}function Cte(e){return Je({"~kind":`ExtendsUnion`},{inferred:e})}function ki(e){return k(e)&&N(e,`~kind`)&&N(e,`inferred`)&&M(e[`~kind`],`ExtendsUnion`)&&k(e.inferred)}function Ai(e){return Je({"~kind":`ExtendsTrue`},{inferred:e})}function ji(e){return k(e)&&N(e,`~kind`)&&N(e,`inferred`)&&M(e[`~kind`],`ExtendsTrue`)&&k(e.inferred)}function Mi(){return Je({"~kind":`ExtendsFalse`},{})}function Ni(e){return k(e)&&N(e,`~kind`)&&M(e[`~kind`],`ExtendsFalse`)}function Pi(e){return ki(e)||ji(e)}function Fi(e,t,n){return Pi(e)?t(e.inferred):n()}function wte(e,t,n,r){return Fi(ea(e,n,r),r=>Ai(m(m(e,r),{[t]:n})),()=>Mi())}function Tte(e,t){return Ai(e)}function Ete(e,t,n){return ea(e,t,rr(n))}function Ii(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ii(e,t,r),()=>Mi()),()=>Ai(e))}function Dte(e,t,n){return ea(e,t,er(n))}function Li(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ai(e),()=>Li(e,t,r)),()=>Mi())}function Ri(e,t,n){return Nt(n)?Tte(e,t):Xt(n)?Ete(e,t,n.enum):Yt(n)?wte(e,n.name,t,n.extends):Qt(n)?Ii(e,t,n.allOf):Oi(n)?Dte(e,t,n.pattern):Ht(n)?Li(e,t,n.anyOf):Wt(n)?Ai(e):Mi()}function Ote(e,t,n){return Yt(n)?Ri(e,t,n):Nt(n)||Wt(n)?Ai(e):Cte(e)}function kte(e,t){let n=ut(e),r=ut(t);return n&&r||!n&&r?!0:!(n&&!r)}function Ate(e,t,n,r){return bt(r)?kte(t,r)?ea(e,n,r.items):Mi():Ri(e,t,r)}function jte(e,t,n){return Ct(n)?ea(e,t,n.iteratorItems):Ri(e,St(t),n)}function Mte(e,t,n){return bn(n)?Ai(e):Ri(e,t,n)}function Nte(e,t,n){return xn(n)?Ai(e):Ri(e,t,n)}function Pte(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?Mi():Fi(ea(e,a,o),e=>zi(e,n,i),()=>Mi())}function Fte(e,t,n,r){return xe(r,(r,i)=>Pte(e,t,n,r,i),()=>mt(t)?Ai(e):Mi())}function Ite(e,t,n){return xe(t,(t,r)=>Fte(e,t,r,n),()=>Ai(e))}function zi(e,t,n){return Ite(e,t,n)}function Bi(e,t,n){return qr(n)?Ai(e):ea(e,t,n)}function Lte(e,t,n,r){return Nt(r)||Wt(r)?Ai(e):Tt(r)?Fi(zi(e,t,r.parameters),e=>Bi(e,n,r.instanceType),()=>Mi()):Mi()}function Rte(e,t,n){return ea(e,ir(t),n)}function zte(e,t,n,r){return Nt(r)||Wt(r)?Ai(e):Ot(r)?Fi(zi(e,t,r.parameters),e=>Bi(e,n,r.returnType),()=>Mi()):Mi()}function Bte(e,t,n){return wn(n)||zn(n)?Ai(e):Ri(e,t,n)}function Vte(e,t,n){return ea(e,pr(t),n)}function Hte(e,t,n){return En(n)?ea(e,t,n.iteratorItems):Ri(e,Tn(t),n)}function Vi(e,t,n){return t===n?Ai(e):Mi()}function Ute(e,t,n){return Pn(n)?Vi(e,t,n.const):bn(n)?Ai(e):Ri(e,On(t),n)}function Wte(e,t,n){return Pn(n)?Vi(e,t,n.const):xn(n)?Ai(e):Ri(e,On(t),n)}function Gte(e,t,n){return Pn(n)?Vi(e,t,n.const):zn(n)?Ai(e):Ri(e,On(t),n)}function Kte(e,t,n){return Pn(n)?Vi(e,t,n.const):Un(n)?Ai(e):Ri(e,On(t),n)}function qte(e,t,n){return w(t.const)?Ute(e,t.const,n):T(t.const)?Wte(e,t.const,n):D(t.const)?Gte(e,t.const,n):A(t.const)?Kte(e,t.const,n):$t()}function Jte(e,t,n){return Yt(n)?Ri(e,t,n):Ai(e)}function Yte(e,t,n){return In(n)?Ai(e):Ri(e,t,n)}function Xte(e,t,n){return zn(n)?Ai(e):Ri(e,t,n)}function Zte(e,t,n){return mt(t)?mt(n)?Ai(e):Mi():Ai(e)}function Qte(e,t,n){return Yt(n)&&Ft(n.extends)?Mi():Fi(ea(e,t,n),e=>Zte(e,t,n),()=>Mi())}function $te(e,t){return e.reduce((e,n)=>n in t&&Pi(t[n])?{...e,...t[n].inferred}:$t(),{})}function ene(e,t,n){let r={};for(let i of P(n))r[i]=i in t?Qte({},t[i],n[i]):mt(n[i])?Yt(n[i])?Ai(m(e,{[n[i].name]:n[i].extends})):Ai(e):Mi();let i=we(r).every(e=>Pi(e)),a=i?$te(P(r),r):{};return i?Ai(a):Mi()}function tne(e,t,n){let r=ene(e,t,n);return Pi(r)?Ai(m(e,r.inferred)):Mi()}function nne(e,t,n){return tne(e,t,n)}function rne(e,t,n){return Bt(n)?nne(e,t,n.properties):Ri(e,zt(t),n)}function ine(e,t,n){return ot(n)?ea(e,t,n.item):Ri(e,at(t),n)}function ane(e,t,n){return Un(n)?Ai(e):Ri(e,t,n)}function one(e,t,n){return Vn(n)?Ai(e):Ri(e,t,n)}function sne(e,t,n){return ea(e,er(t),n)}function Hi(e,t){return Je({"~kind":`Inferrable`},{name:e,type:t},{})}function Ui(e){return k(e)&&N(e,`~kind`)&&N(e,`name`)&&N(e,`type`)&&M(e[`~kind`],`Inferrable`)&&A(e.name)&&k(e.type)}function Wi(e){return Ur(e)?Yt(e.items)?bt(e.items.extends)?Hi(e.items.name,e.items.extends.items):Wt(e.items.extends)?Hi(e.items.name,e.items.extends):void 0:$t():void 0}function Gi(e){return Yt(e)?Hi(e.name,e.extends):void 0}function Ki(e,t,n=[]){return xe(e,(e,r)=>Fi(ea({},e,t),()=>Ki(r,t,[...n,e]),()=>void 0),()=>n)}function cne(e,t,n,r){let i=Ki(n,r);return C(i)?Ai(m(e,{[t]:ar(i)})):Mi()}function qi(e,t,n,r){let i=Ki(n,r);return C(i)?Ai(m(e,{[t]:Vt(i)})):Mi()}function lne(e){return[...e].reverse()}function Ji(e,t){return t?lne(e):e}function une(e){let t=e.length>0?e[0]:void 0;return Qe(Qe(t)?Wi(t):void 0)}function dne(e,t,n,r,i,a){return Fi(ea(e,n,i),e=>Yi(e,t,r,a),()=>Mi())}function fne(e,t,n,r,i){let a=Wi(r);return Ui(a)?cne(e,a.name,Ji(n,t),a.type):xe(n,(n,a)=>dne(e,t,n,a,r,i),()=>Mi())}function pne(e,t,n,r){return xe(r,(r,i)=>fne(e,t,n,r,i),()=>M(n.length,0)?Ai(e):Mi())}function Yi(e,t,n,r){return pne(e,t,n,r)}function mne(e,t,n){let r=Mc(e,{callstack:[]},n),i=une(r);return Yi(e,i,Ji(t,i),Ji(r,i))}function Xi(e,t,n){let r=Gi(n);return Ui(r)?qi(e,r.name,t,r.type):xe(t,(t,r)=>Fi(ea(e,t,n),e=>Xi(e,r,n),()=>Mi()),()=>Ai(e))}function hne(e,t,n){let r=Mc(e,{callstack:[]},t);return or(n)?mne(e,r,n.items):bt(n)?Xi(e,r,n.items):Ri(e,ar(r),n)}function gne(e,t,n){return qr(n)||Kr(n)?Ai(e):Ri(e,t,n)}function Zi(e,t,n){return xe(n,(n,r)=>Fi(ea(e,t,n),e=>Ai(e),()=>Zi(e,t,r)),()=>Mi())}function Qi(e,t,n){return xe(t,(t,r)=>Fi(Zi(e,t,n),e=>Qi(e,r,n),()=>Mi()),()=>Ai(e))}function _ne(e,t,n){let r=Gi(n);return Ui(r)?qi(e,r.name,t,r.type):Ht(n)?Qi(e,t,n.anyOf):Qi(e,t,[n])}function vne(e,t,n){return Yt(n)?Ri(e,t,n):Nt(n)||Wt(n)?Ai(e):Mi()}function $i(e,t,n){return qr(n)?Ai(e):Ri(e,t,n)}function ea(e,t,n){return Nt(t)?Ote(e,t,n):bt(t)?Ate(e,t,t.items,n):Ct(t)?jte(e,t.iteratorItems,n):bn(t)?Mte(e,t,n):xn(t)?Nte(e,t,n):Tt(t)?Lte(e,t.parameters,t.instanceType,n):Xt(t)?Rte(e,t,n):Ot(t)?zte(e,t.parameters,t.returnType,n):wn(t)?Bte(e,t,n):Qt(t)?Vte(e,t.allOf,n):En(t)?Hte(e,t.iteratorItems,n):Pn(t)?qte(e,t,n):Ft(t)?Jte(e,t,n):In(t)?Yte(e,t,n):zn(t)?Xte(e,t,n):Bt(t)?rne(e,t.properties,n):ot(t)?ine(e,t.item,n):Un(t)?ane(e,t,n):Vn(t)?one(e,t,n):Oi(t)?sne(e,t.pattern,n):or(t)?hne(e,t.items,n):Kr(t)?gne(e,t,n):Ht(t)?_ne(e,t.anyOf,n):Wt(t)?vne(e,t,n):qr(t)?$i(e,t,n):Mi()}function ta(e,t){return pr([...e,zt(t)])}function na(e,t,n){return kc(e)?Xe(ta(e,t),{},n):ia(e,t,n)}function ra(e,t,n,r,i){return na(Nc(e,t,n),jc(e,t,r),i)}function ia(e,t,n={}){return rt(`Interface`,[e,t],n)}function aa(e){return Qe(e)&&N(e,`action`)&&M(e.action,`Interface`)}function oa(e,t,n){return e.includes(n)?!0:la([...e,n],t,t[n])}function sa(e,t,n){return ca(e,t,Rt(n))}function ca(e,t,n){return xe(n,(n,r)=>la(e,t,n)?!0:ca(e,t,r),()=>!1)}function la(e,t,n){return At(n)?oa(e,t,n.$ref):bt(n)?la(e,t,n.items):Ct(n)?la(e,t,n.iteratorItems):Tt(n)?ca(e,t,[...n.parameters,n.instanceType]):Ot(n)?ca(e,t,[...n.parameters,n.returnType]):aa(n)?sa(e,t,n.parameters[1]):Qt(n)?ca(e,t,n.allOf):En(n)?la(e,t,n.iteratorItems):Bt(n)?sa(e,t,n.properties):ot(n)?la(e,t,n.item):Ht(n)?ca(e,t,n.anyOf):or(n)?ca(e,t,n.items):Vr(n)?la(e,t,Br(n)):!1}function ua(e,t,n){return la(e,t,n)}function da(e,t){return t.reduce((t,n)=>n in e?ua([n],e,e[n])?[...t,n]:t:$t(),[])}function fa(e){return da(e,Lt(e))}function pa(e,t,n){return n.includes(t)?n:t in e?ga(e,e[t],[...n,t]):$t()}function ma(e,t,n){return ha(e,Rt(t),n)}function ha(e,t,n){return t.reduce((t,n)=>ga(e,n,t),n)}function ga(e,t,n){return At(t)?pa(e,t.$ref,n):bt(t)?ga(e,t.items,n):Ct(t)?ga(e,t.iteratorItems,n):Tt(t)?ha(e,[...t.parameters,t.instanceType],n):Ot(t)?ha(e,[...t.parameters,t.returnType],n):aa(t)?ma(e,t.parameters[1],n):Qt(t)?ha(e,t.allOf,n):En(t)?ga(e,t.iteratorItems,n):Bt(t)?ma(e,t.properties,n):ot(t)?ga(e,t.item,n):Ht(t)?ha(e,t.anyOf,n):or(t)?ha(e,t.items,n):Vr(t)?ga(e,Br(t),n):n}function _a(e,t,n){return ga(e,n,[t])}function va(e){return ree()}function ya(e){return P(e).reduce((t,n)=>({...t,[n]:xa(e[n])}),{})}function ba(e){return e.reduce((e,t)=>[...e,xa(t)],[])}function xa(e){return At(e)?va(e.$ref):bt(e)?yt(xa(e.items),xt(e)):Ct(e)?St(xa(e.iteratorItems)):Tt(e)?wt(ba(e.parameters),xa(e.instanceType)):Ot(e)?Dt(ba(e.parameters),xa(e.returnType)):Qt(e)?Zt(ba(e.allOf)):En(e)?Tn(xa(e.iteratorItems)):Bt(e)?zt(ya(e.properties)):ot(e)?at(xa(e.item)):Vr(e)?Ir(zr(e),xa(Br(e))):Ht(e)?Vt(ba(e.anyOf)):or(e)?ar(ba(e.items)):e}function Sa(e,t){return t in e?xa(e[t]):Ut()}function Ca(e){return Sa(e.$defs,e.$ref)}function wa(e,t,n){let r=Nc(e,{callstack:[]},t),i=jc({},{callstack:[]},n);return pr([...r,zt(i)])}function Ta(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>{let r=e[n],i=aa(r)?wa(e,r.parameters[0],r.parameters[1]):r;return{...t,[n]:i}},{})}function Ea(e,t,n){return Gt(Ta(e,_a(e,t,n)),t)}function Da(e,t){return t in e?At(e[t])?Da(e,e[t].$ref):e[t]:Pt()}function Oa(e,t){return Da(e,t)}function ka(e){return Kt(e)?Ca(e):qt(e)?Ut():e}function Aa(e,t,n){return ea(e,ka(t),ka(n))}var ja=`equal`,Ma=`disjoint`,Na=`left-inside`,Pa=`right-inside`;function Fa(e,t){let n=[Wt(e)?Mi():Aa({},e,t),Wt(e)?Ai({}):Aa({},t,e)];return Pi(n[0])&&Pi(n[1])?ja:Pi(n[0])&&Ni(n[1])?Na:Ni(n[0])&&Pi(n[1])?Pa:Ma}function Ia(e,t){return t.filter(t=>Fa(e,t)!==`right-inside`)}function La(e,t){return M(t.some(t=>{let n=Fa(e,t);return M(n,`left-inside`)||M(n,`equal`)}),!1)}function Ra(e,t){let n=hr(e);return Nt(n)?[n]:La(n,t)?[...Ia(n,t),n]:t}function za(e){return e.reduce((e,t)=>Bt(t)?[...e,t]:Ft(t)?e:Ra(t,e),[])}function Ba(e){let t=Cr(za(e));return t.length===0?Pt():t.length===1?t[0]:Vt(t)}function Va(e,t){return Xe(hr(e),{},t)}function Ha(e,t,n,r){return Va(F(e,t,n),r)}function Ua(e,t=[]){return it(e)&&M(e.action,`Conditional`)?At(e.parameters[0])?Ua(e.parameters[2],Ua(e.parameters[3],[...t,e.parameters[0].$ref])):Ua(e.parameters[2],Ua(e.parameters[3],t)):it(e)&&M(e.action,`Mapped`)&&it(e.parameters[1])&&M(e.parameters[1].action,`KeyOf`)&&At(e.parameters[1].parameters[0])?[...t,e.parameters[1].parameters[0].$ref]:t}function Wa(e,t){return e.reduce((e,n)=>[...e,t.includes(n.name)],[])}function Ga(e,t,n=[]){let[r,...i]=e,[a,...o]=t;return ue(e.length,0)&&ue(t.length,0)?Ga(i,o,[...n,[a,r]]):n}function Ka(e){return Ht(e)?[...e.anyOf]:[e]}function qa(e,t){return e.reduce((e,n)=>[...e,[...n,t]],[])}function Ja(e,t){return t.reduce((t,n)=>[...t,...qa(e,n)],[])}function Ya(e){return e.reduce((e,t)=>M(t[0],!0)?Ja(e,Ka(t[1])):Ja(e,[t[1]]),[[]])}function Xa(e,t,n){let r=Ga(t,Wa(e,Ua(n)));return it(n)&&M(n.action,`Conditional`)||it(n)&&M(n.action,`Mapped`)?Ya(r):[t]}function Za(){return[`(not-resolvable)`,Pt()]}function Qa(){return[`(not-generic)`,Pt()]}function $a(e,t,n){return[e,jt(t,n)]}function eo(e,t,n){return t in e?to(e,t,e[t],n):Za()}function to(e,t,n,r){return Mt(n)?$a(t,n.parameters,n.expression):At(n)?eo(e,n.$ref,r):Qa()}function no(e,t,n){return to(e,`(anonymous)`,t,n)}function ro(e,t,n){if(Yt(t)||go(t)||Pi(Aa({},t,n)))return;let r={parameter:e,expect:n,actual:t};throw Error(`Argument for parameter ${e} does not satisfy constraint`,{cause:r})}function io(e,t,n,r,i){let a=F(e,t,i);return ro(n,a,r),m(e,{[n]:a})}function ao(e,t,n,r,i){let a=F(e,t,n.extends),o=F(e,t,n.equals);return xe(i,(i,o)=>oo(io(e,t,n.name,a,i),t,r,o),()=>oo(io(e,t,n.name,a,o),t,r,[]))}function oo(e,t,n,r){return xe(n,(n,i)=>ao(e,t,n,i,r),()=>e)}function so(e,t,n,r){return oo(e,t,n,r)}function co(e){return ue(e.callstack.length,0)?e.callstack[e.callstack.length-1]:``}function lo(e,t){return M(co(e),t)}function uo(e,t,n,r,i,a){return F(e,t,F(so(e,t,r,a),{callstack:[...t.callstack,n.$ref]},i))}function fo(e,t,n,r,i,a){return a.reduce((a,o)=>[...a,uo(e,t,n,r,i,o)],[])}function po(e,t,n,r,i,a){let o=fo(e,t,n,r,i,Xa(r,a,i));return M(o.length,1)?o[0]:mr(o)}function mo(e,t,n,r){let i=Nc(e,t,r),a=no(e,n,r),o=a[0],s=a[1];return Mt(s)?lo(t,o)?ho(kt(o),i):po(e,t,kt(o),s.parameters,s.expression,i):ho(n,i)}function ho(e,t){return Je({"~kind":`Call`},{target:e,arguments:t},{})}function go(e){return Ze(e,`Call`)}function _o(e,t){return e(t)}function vo(e,t){return A(t)?On(_o(e,t)):On(t)}function yo(e,t){return xo(e,er(t))}function bo(e,t){return Vt(t.map(t=>xo(e,t)))}function xo(e,t){return Pn(t)?vo(e,t.const):Oi(t)?yo(e,t.pattern):Ht(t)?bo(e,t.anyOf):t}function So(e,t={}){return rt(`Capitalize`,[e],t)}function Co(e,t={}){return rt(`Lowercase`,[e],t)}function wo(e,t={}){return rt(`Uncapitalize`,[e],t)}function To(e,t={}){return rt(`Uppercase`,[e],t)}var Eo=e=>e[0].toUpperCase()+e.slice(1),Do=e=>e.toLowerCase(),Oo=e=>e[0].toLowerCase()+e.slice(1),ko=e=>e.toUpperCase();function Ao(e,t){return kc([e])?Xe(xo(Eo,e),{},t):So(e,t)}function jo(e,t){return kc([e])?Xe(xo(Do,e),{},t):Co(e,t)}function Mo(e,t){return kc([e])?Xe(xo(Oo,e),{},t):wo(e,t)}function No(e,t){return kc([e])?Xe(xo(ko,e),{},t):To(e,t)}function Po(e,t,n,r){return Ao(F(e,t,n),r)}function Fo(e,t,n,r){return jo(F(e,t,n),r)}function Io(e,t,n,r){return Mo(F(e,t,n),r)}function Lo(e,t,n,r){return No(F(e,t,n),r)}function Ro(e,t,n,r,i={}){return rt(`Conditional`,[e,t,n,r],i)}function zo(e,t,n,r,i,a){let o=Aa(e,n,r);return ki(o)?Vt([F(o.inferred,t,i),F(e,t,a)]):ji(o)?F(o.inferred,t,i):F(e,t,a)}function Bo(e,t,n,r,i,a,o){return kc([n,r])?Xe(zo(e,t,n,r,i,a),{},o):Ro(n,r,i,a,o)}function Vo(e,t,n,r,i,a,o){return Bo(e,t,F(e,t,n),F(e,t,r),i,a,o)}function Ho(e,t={}){return rt(`ConstructorParameters`,[e],t)}function Uo(e){return ar(Mc({},{callstack:[]},Tt(e)?e.parameters:[]))}function Wo(e,t){return kc([e])?Xe(Uo(e),{},t):Ho(e,t)}function Go(e,t,n,r){return Wo(F(e,t,n),r)}function Ko(e,t,n={}){return rt(`Exclude`,[e,t],n)}function qo(e,t){return e.reduce((e,n)=>[...e,...Jo(n,t)],[])}function Jo(e,t){return Pi(Aa({},e,t))?[]:[e]}function Yo(e,t){return mr(Xt(e)?qo(nr(e.enum),t):Ht(e)?qo(Cr(e.anyOf),t):Jo(e,t))}function Xo(e,t,n){return kc([e,t])?Xe(Yo(e,t),{},n):Ko(e,t,n)}function Zo(e,t,n,r,i){return Xo(F(e,t,n),F(e,t,r),i)}function Qo(e,t,n={}){return rt(`Extract`,[e,t],n)}function $o(e,t){return e.reduce((e,n)=>[...e,...es(n,t)],[])}function es(e,t){return Pi(Aa({},e,t))?[e]:[]}function ts(e,t){return mr(Xt(e)?$o(nr(e.enum),t):Ht(e)?$o(Cr(e.anyOf),t):es(e,t))}function ns(e,t,n){return kc([e,t])?Xe(ts(e,t),{},n):Qo(e,t,n)}function rs(e,t,n,r,i){return ns(F(e,t,n),F(e,t,r),i)}function is(e,t,n={}){return rt(`Index`,[e,t],n)}function as(e,t){return ps(Oa(e,t))}function os(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]:pr([e[r],t[r]])}),{});return m(m(a,o),s)}function ss(e){return e.reduce((e,t)=>os(e,ps(t)),{})}function cs(e){return e}function ls(e){return ps(Fee(ar(e)))}function us(e,t){return P(e).filter(e=>e in t).reduce((n,r)=>({...n,[r]:mr([e[r],t[r]])}),{})}function ds(e,t){return xe(e,(e,n)=>ds(n,us(t,ps(e))),()=>t)}function fs(e){return xe(e,(e,t)=>ds(t,ps(e)),()=>$t())}function ps(e){return Kt(e)?as(e.$defs,e.$ref):Qt(e)?ss(e.allOf):Ht(e)?fs(e.anyOf):or(e)?ls(e.items):Bt(e)?cs(e.properties):{}}function ms(e){return zt(ps(e))}var hs=RegExp(`^(?:0|[1-9][0-9]*)$`);function gs(e){let t=`${e}`;return hs.test(t)?parseInt(t):e}function _s(e){return On(gs(e))}function vs(e){return e.map(e=>ys(e))}function ys(e){return Qt(e)?Zt(vs(e.allOf)):Ht(e)?Vt(vs(e.anyOf)):Pn(e)?_s(e.const):e}function bs(e,t){return Pi(Aa({},ys(t),Rn()))?e:Pn(t)&&M(t.const,`length`)?Rn():Pt()}function xs(e,t){return Ds(Oa(e,t))}function Ss(e){return e.reduce((e,t)=>[...e,...Ds(t)],[])}function Cs(e){return Ss(nr(e))}function ws(e){return Ds(pr(e))}function Ts(e){return[`${e}`]}function Es(e){return Ds(er(e))}function Ds(e){return Kt(e)?xs(e.$defs,e.$ref):Xt(e)?Cs(e.enum):Qt(e)?ws(e.allOf):Pn(e)?Ts(e.const):Oi(e)?Es(e.pattern):Ht(e)?Ss(e.anyOf):[]}function Os(e){return Ds(e)}function ks(e,t){return t.map(t=>As(e,t))}function As(e,t){return bt(t)?yt(As(e,t.items)):Ct(t)?St(As(e,t.iteratorItems)):Tt(t)?wt(ks(e,t.parameters),As(e,t.instanceType)):Ot(t)?Dt(ks(e,t.parameters),As(e,t.returnType)):En(t)?Tn(As(e,t.iteratorItems)):ot(t)?at(As(e,t.item)):or(t)?ar(ks(e,t.items)):Ht(t)?Vt(ks(e,t.anyOf)):Qt(t)?Zt(ks(e,t.allOf)):Wr(t)?zt(e):t}function js(e,t){return As(e,t)}function Ms(e,t){return js(e,t in e?e[t]:Pt())}function Ns(e,t){return t.reduce((t,n)=>[...t,Ms(e,n)],[])}function Ps(e,t){return mr(Ns(e,Os(t)))}var Fs=new RegExp(Mr);function Is(e){return e.filter(e=>Fs.test(e))}function Ls(e){return mr(Ns(e,Is(Lt(e))))}function Rs(e,t){return zn(t)?Ls(e):Ps(e,t)}function zs(e){return On(gs(e))}function Bs(e){return e.map(e=>Vs(e))}function Vs(e){return Qt(e)?Zt(Bs(e.allOf)):Ht(e)?Vt(Bs(e.anyOf)):Pn(e)?zs(e.const):e}function Hs(e,t){return e.reduceRight((e,n,r)=>Pi(Aa({},On(r),t))?[n,...e]:e,[])}function Us(e,t){return gr(Hs(e,Vs(t)))}function Ws(e){return gr(e)}function Gs(e,t){return Pn(t)&&M(t.const,`length`)?On(e.length):zn(t)||wn(t)?Ws(e):Us(e,t)}function Ks(e,t){return bt(e)?bs(e.items,t):Bt(e)?Rs(e.properties,t):or(e)?Gs(e.items,t):Pt()}function qs(e){return Kt(e)||Qt(e)||Ht(e)?ms(e):e}function Js(e,t,n){return kc([e,t])?Xe(Ks(qs(e),t),{},n):is(e,t,n)}function Ys(e,t,n,r,i){return Js(F(e,t,n),F(e,t,r),i)}function Xs(e,t={}){return rt(`InstanceType`,[e],t)}function Zs(e){return Tt(e)?e.instanceType:Pt()}function Qs(e,t){return kc([e])?Xe(Zs(e),{},t):Xs(e,t)}function $s(e,t,n,r={}){return Qs(F(e,t,n),r)}function ec(e,t={}){return rt(`KeyOf`,[e],t)}function tc(){return Vt([Rn(),Hn(),Bn()])}function nc(e){return Rn()}function rc(e){return e.reduce((e,t)=>kn(t)?[...e,On(gs(t))]:$t(),[])}function ic(e){return gr(rc(P(e)))}function ac(e){return zr(e)}function oc(e){return gr(e.map((e,t)=>On(t)))}function sc(e){return Nt(e)?tc():bt(e)?nc(e.items):Bt(e)?ic(e.properties):Vr(e)?ac(e):or(e)?oc(e.items):Pt()}function cc(e){return Kt(e)||Qt(e)||Ht(e)?ms(e):e}function lc(e,t){return kc([e])?Xe(sc(cc(e)),{},t):ec(e,t)}function uc(e,t,n,r){return lc(F(e,t,n),r)}function dc(e,t,n,r,i={}){return rt(`Mapped`,[e,t,n,r],i)}function fc(e){return hc(er(e))}function pc(e){return e.reduce((e,t)=>[...e,...hc(t)],[])}function mc(e){return D(e)?[On(`${e}`)]:[On(e)]}function hc(e){return Xt(e)?pc(nr(e.enum)):Pn(e)?mc(e.const):Oi(e)?fc(e.pattern):Ht(e)?pc(e.anyOf):[e]}function gc(e){return hc(e)}function _c(e){return Oi(e)?er(e.pattern):e}function vc(e,t,n,r,i,a){let o=m(e,{[n.name]:r}),s=_c(F(o,t,i)),c=F(o,t,a);return Mn(s)||Nn(s)?{[s.const]:c}:{}}function yc(e,t,n,r,i,a){return r.reduce((r,o)=>[...r,vc(e,t,n,o,i,a)],[])}function bc(e){return e.reduce((e,t)=>[...e,zt(t)],[])}function xc(e,t,n,r,i,a){return pr(bc(yc(e,t,n,gc(r),i,a)))}function Sc(e,t,n,r,i,a,o){return kc([r])?Xe(xc(e,t,n,r,i,a),{},o):dc(n,r,i,a,o)}function yne(e,t,n,r,i,a,o){return Sc(e,t,n,F(e,t,r),i,a,o)}function bne(e,t){return P(e).filter(e=>t.includes(e)).reduce((t,n)=>({...t,[n]:Ea(e,n,e[n])}),{})}function xne(e,t){return P(e).filter(e=>!t.includes(e)).reduce((t,n)=>({...t,[n]:F(e,{callstack:[]},e[n])}),{})}function Sne(e,t){let n=fa(e),r=bne(e,n),i=xne(e,n);return Xe({...r,...i},{},t)}function Cne(e,t,n,r){return Sne(m(e,n),r)}function wne(e,t={}){return rt(`NonNullable`,[e],t)}function Tne(e){return Xo(e,Vt([Fn(),Gr()]),{})}function Ene(e,t){return kc([e])?Xe(Tne(e),{},t):wne(e,t)}function Dne(e,t,n,r){return Ene(F(e,t,n),r)}function One(e,t,n={}){return rt(`Omit`,[e,t],n)}function Cc(e){let t=ms(e);return Bt(t)?t.properties:$t()}function kne(e,t){return P(e).reduce((n,r)=>t.includes(r)?n:{...n,[r]:e[r]},{})}function Ane(e,t){return zt(kne(Cc(e),Os(t)))}function jne(e,t,n){return kc([e,t])?Xe(Ane(e,t),{},n):One(e,t,n)}function Mne(e,t,n,r,i){return jne(F(e,t,n),F(e,t,r),i)}function Nne(e,t){return rt(`Options`,[e,t],{})}function Pne(e,t){return wc(e,t)}function wc(e,t){return kc([e])?Xe(e,{},t):Nne(e,t)}function Fne(e,t,n,r){return wc(F(e,t,n),r)}function Ine(e,t={}){return rt(`Parameters`,[e],t)}function Lne(e){return ar(Mc({},{callstack:[]},Ot(e)?e.parameters:[]))}function Rne(e,t){return kc([e])?Xe(Lne(e),{},t):Ine(e,t)}function zne(e,t,n,r){return Rne(F(e,t,n),r)}function Bne(e,t={}){return rt(`Partial`,[e],t)}function Vne(e,t){let n=Tc(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function Hne(e){return pr(e.map(e=>Tc(e)))}function Une(e){return Vt(e.map(e=>Tc(e)))}function Wne(e){return zt(P(e).reduce((t,n)=>({...t,[n]:pt(e[n])}),{}))}function Tc(e){return Kt(e)?Vne(e.$defs,e.$ref):Qt(e)?Hne(e.allOf):Ht(e)?Une(e.anyOf):Bt(e)?Wne(e.properties):zt({})}function Gne(e,t){return kc([e])?Xe(Tc(e),{},t):Bne(e,t)}function Kne(e,t,n,r){return Gne(F(e,t,n),r)}function qne(e,t,n={}){return rt(`Pick`,[e,t],n)}function Jne(e,t){return P(e).reduce((n,r)=>t.includes(r)?m(n,{[r]:e[r]}):n,{})}function Yne(e,t){return zt(Jne(Cc(e),Os(t)))}function Xne(e,t,n){return kc([e,t])?Xe(Yne(e,t),{},n):qne(e,t,n)}function Zne(e,t,n,r,i){return Xne(F(e,t,n),F(e,t,r),i)}function Qne(e,t={}){return rt(`ReadonlyObject`,[e],t)}function $ne(e){return lt(yt(e))}function ere(e,t){let n=Ec(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function tre(e){return pr(e.map(e=>Ec(e)))}function nre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:eee(e[n])}),{}))}function rre(e){return lt(ar(e))}function ire(e){return Vt(e.map(e=>Ec(e)))}function Ec(e){return bt(e)?$ne(e.items):Kt(e)?ere(e.$defs,e.$ref):Qt(e)?tre(e.allOf):Bt(e)?nre(e.properties):or(e)?rre(e.items):Ht(e)?ire(e.anyOf):e}function are(e,t){return kc([e])?Xe(Ec(e),{},t):Qne(e)}function ore(e,t,n,r){return are(F(e,t,n),r)}function sre(e,t,n,r){return r in e?ua([r],e,e[r])?n:F(e,t,e[r]):n}function cre(e,t){let n=Dc(Oa(e,t));return Gt(m(e,{[t]:n}),t)}function lre(e){return pr(e.map(e=>Dc(e)))}function ure(e){return Vt(e.map(e=>Dc(e)))}function dre(e){return zt(P(e).reduce((t,n)=>({...t,[n]:dt(e[n])}),{}))}function Dc(e){return Kt(e)?cre(e.$defs,e.$ref):Qt(e)?lre(e.allOf):Ht(e)?ure(e.anyOf):Bt(e)?dre(e.properties):zt({})}function fre(e,t={}){return rt(`Required`,[e],t)}function pre(e,t){return kc([e])?Xe(Dc(e),{},t):fre(e,t)}function mre(e,t,n,r){return pre(F(e,t,n),r)}function hre(e,t={}){return rt(`ReturnType`,[e],t)}function gre(e){return Ot(e)?e.returnType:Pt()}function _re(e,t){return kc([e])?Xe(gre(e),{},t):hre(e,t)}function vre(e,t,n,r={}){return _re(F(e,t,n),r)}function yre(e){return Ur(e)?or(e.items)?Oc(e.items.items):Yt(e.items)||At(e.items)?[e]:[Pt()]:[e]}function Oc(e){return e.reduce((e,t)=>[...e,...yre(t)],[])}function kc(e){return xe(e,(e,t)=>At(e)?!1:kc(t),()=>!0)}function Ac(e,t,n){return nt(e)?Ac(e.type,`remove`,n):et(e)?Ac(e.type,t,`remove`):tt(e)?Ac(e.type,`add`,n):$e(e)?Ac(e.type,t,`add`):[e,t,n]}function bre(e,t){return M(e,`remove`)?ht(t):M(e,`add`)?gt(t):t}function xre(e,t){return M(e,`remove`)?dt(t):M(e,`add`)?ft(t):t}function jc(e,t,n){return P(n).reduce((r,i)=>({...r,[i]:F(e,t,n[i])}),{})}function Mc(e,t,n){return Oc(Nc(e,t,n))}function Nc(e,t,n){return n.map(n=>F(e,t,n))}function Sre(e,t,n,r,i){return M(n,`Awaited`)?wre(e,t,r[0],i):M(n,`Capitalize`)?Po(e,t,r[0],i):M(n,`Conditional`)?Vo(e,t,r[0],r[1],r[2],r[3],i):M(n,`ConstructorParameters`)?Go(e,t,r[0],i):M(n,`Evaluate`)?Ha(e,t,r[0],i):M(n,`Exclude`)?Zo(e,t,r[0],r[1],i):M(n,`Extract`)?rs(e,t,r[0],r[1],i):M(n,`Index`)?Ys(e,t,r[0],r[1],i):M(n,`InstanceType`)?$s(e,t,r[0],i):M(n,`Interface`)?ra(e,t,r[0],r[1],i):M(n,`KeyOf`)?uc(e,t,r[0],i):M(n,`Lowercase`)?Fo(e,t,r[0],i):M(n,`Mapped`)?yne(e,t,r[0],r[1],r[2],r[3],i):M(n,`Module`)?Cne(e,t,r[0],i):M(n,`NonNullable`)?Dne(e,t,r[0],i):M(n,`Pick`)?Zne(e,t,r[0],r[1],i):M(n,`Options`)?Fne(e,t,r[0],r[1]):M(n,`Parameters`)?zne(e,t,r[0],i):M(n,`Partial`)?Kne(e,t,r[0],i):M(n,`Omit`)?Mne(e,t,r[0],r[1],i):M(n,`ReadonlyObject`)?ore(e,t,r[0],i):M(n,`Record`)?jr(e,t,r[0],r[1],i):M(n,`Required`)?mre(e,t,r[0],i):M(n,`ReturnType`)?vre(e,t,r[0],i):M(n,`TemplateLiteral`)?bte(e,t,r[0],i):M(n,`Uncapitalize`)?Io(e,t,r[0],i):M(n,`Uppercase`)?Lo(e,t,r[0],i):rt(n,r,i)}function F(e,t,n){let r=ut(n),i=Ac(n,_t(n)?`add`:`none`,mt(n)?`add`:`none`),a=vt(i[0])?i[0].Clone():i[0],o=At(a)?sre(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)):go(a)?mo(e,t,a.target,a.arguments):Tt(a)?wt(Nc(e,t,a.parameters),F(e,t,a.instanceType),Et(a)):it(a)?Sre(e,t,a.action,a.parameters,a.options):Ot(a)?Dt(Nc(e,t,a.parameters),F(e,t,a.returnType),nee(a)):Qt(a)?Zt(Nc(e,t,a.allOf),see(a)):En(a)?Tn(F(e,t,a.iteratorItems),xee(a)):Bt(a)?zt(jc(e,t,a.properties),aee(a)):ot(a)?at(F(e,t,a.item),st(a)):Vr(a)?Lr(Rr(a),F(e,t,Br(a))):Ur(a)?Hr(F(e,t,a.items)):or(a)?ar(Mc(e,t,a.items),Pee(a)):Ht(a)?Vt(Nc(e,t,a.anyOf),oee(a)):a,s=r?lt(o):o;return bre(i[1],xre(i[2],s))}function Pc(e,t){return F(e,{callstack:[]},t)}function Fc(e){return ot(e)?Fc(e.item):e}function Cre(e,t){return kc([e])?Xe(Fc(e),{},t):Tre(e,t)}function wre(e,t,n,r){return Cre(F(e,t,n),r)}function Tre(e,t={}){return rt(`Awaited`,[e],t)}function Ic(e,t={}){return Va(e,t)}var Lc=new Map;function Ere(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Dre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Rc(e,t){Lc.set(e.api,{provider:{api:e.api,stream:Ere(e.api,e.stream),streamSimple:Dre(e.api,e.streamSimple)},sourceId:t})}function Ore(e){return Lc.get(e)?.provider}var kre=`modulepreload`,Are=function(e){return`/`+e},zc={},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=Are(t,n),t in zc)return;zc[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`:kre,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)})},jre=s(((e,t)=>{t.exports={}})),Bc=null,Vc=null,Hc=null,Uc=e=>I(()=>import(e),[]);typeof process<`u`&&(process.versions?.node||process.versions?.bun)&&(Uc(`node:fs`).then(e=>{Bc=e.existsSync}),Uc(`node:os`).then(e=>{Vc=e.homedir}),Uc(`node:path`).then(e=>{Hc=e.join}));var Wc=null;function Gc(e){if(process.versions?.bun&&!(typeof process>`u`)&&!(Object.keys({}).length>0)){if(Wc===null){Wc=new Map;try{let{readFileSync:e}=jre(),t=e(`/proc/self/environ`,`utf-8`);for(let e of t.split(`\0`)){let t=e.indexOf(`=`);t>0&&Wc.set(e.slice(0,t),e.slice(t+1))}}catch{}}return Wc.get(e)}}var Kc=null;function Mre(){if(Kc===null){if(!Bc||!Vc||!Hc)return typeof process<`u`&&(process.versions?.node||process.versions?.bun)||(Kc=!1),!1;let e={}.GOOGLE_APPLICATION_CREDENTIALS||Gc(`GOOGLE_APPLICATION_CREDENTIALS`);Kc=Bc(e||Hc(Vc(),`.config`,`gcloud`,`application_default_credentials.json`))}return Kc}function Nre(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 Pre(e){let t=Nre(e);if(!t)return;let n=t.filter(e=>!!{}[e]||!!Gc(e));return n.length>0?n:void 0}function Fre(e){let t=Pre(e);if(t?.[0])return{}[t[0]]||Gc(t[0]);if(e===`google-vertex`){let e=Mre(),t=!!({}.GOOGLE_CLOUD_PROJECT||{}.GCLOUD_PROJECT||Gc(`GOOGLE_CLOUD_PROJECT`)||Gc(`GCLOUD_PROJECT`)),n=!!({}.GOOGLE_CLOUD_LOCATION||Gc(`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||Gc(`AWS_PROFILE`)||Gc(`AWS_ACCESS_KEY_ID`)&&Gc(`AWS_SECRET_ACCESS_KEY`)||Gc(`AWS_BEARER_TOKEN_BEDROCK`)||Gc(`AWS_CONTAINER_CREDENTIALS_RELATIVE_URI`)||Gc(`AWS_CONTAINER_CREDENTIALS_FULL_URI`)||Gc(`AWS_WEB_IDENTITY_TOKEN_FILE`)))return`<authenticated>`}var Ire={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}}}},Lre=new Map;for(let[e,t]of Object.entries(Ire)){let n=new Map;for(let[e,r]of Object.entries(t))n.set(e,r);Lre.set(e,n)}var Rre=new Map;function zre(e,t){return(n,r,i)=>{if(n.api!==e)throw Error(`Mismatched api: ${n.api} expected ${e}`);return t(n,r,i)}}function Bre(e,t){Rre.set(e.api,{provider:{api:e.api,generateImages:zre(e.api,e.generateImages)},sourceId:t})}var qc;function Vre(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 Hre(){return qc||=I(()=>import(`./openrouter-BWyBMaJk.js`).then(e=>e),__vite__mapDeps([0,1,2,3])),qc}var Ure=async(e,t,n)=>{try{return await(await Hre()).generateImagesOpenRouter(e,t,n)}catch(t){return Vre(e,t)}};function Wre(){Bre({api:`openrouter-images`,generateImages:Ure})}Wre();var Gre={"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-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-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-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-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-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:256e3,maxTokens:256e3},"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:256e3,maxTokens:256e3},"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-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`,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`,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`,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:.03,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:.08,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:.13,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`},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:.28,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},"qwen-3-235b-a22b-instruct-2507":{id:`qwen-3-235b-a22b-instruct-2507`,name:`Qwen 3 235B Instruct`,api:`openai-completions`,provider:`cerebras`,baseUrl:`https://api.cerebras.ai/v1`,reasoning:!1,input:[`text`],cost:{input:.6,output:1.2,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:32e3},"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`,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`,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`,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/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:128e3,maxTokens:16384},"@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:256e3,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/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:.06,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-v3p1":{id:`accounts/fireworks/models/deepseek-v3p1`,name:`DeepSeek V3.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:.56,output:1.68,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:163840},"accounts/fireworks/models/deepseek-v3p2":{id:`accounts/fireworks/models/deepseek-v3p2`,name:`DeepSeek V3.2`,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:.56,output:1.68,cacheRead:.28,cacheWrite:0},contextWindow:16e4,maxTokens:16e4},"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:.15,cacheWrite:0},contextWindow:1e6,maxTokens:384e3},"accounts/fireworks/models/glm-4p5":{id:`accounts/fireworks/models/glm-4p5`,name:`GLM 4.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:.55,output:2.19,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"accounts/fireworks/models/glm-4p5-air":{id:`accounts/fireworks/models/glm-4p5-air`,name:`GLM 4.5 Air`,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:.22,output:.88,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:131072},"accounts/fireworks/models/glm-4p7":{id:`accounts/fireworks/models/glm-4p7`,name:`GLM 4.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:.6,output:2.2,cacheRead:.3,cacheWrite:0},contextWindow:198e3,maxTokens:198e3},"accounts/fireworks/models/glm-5":{id:`accounts/fireworks/models/glm-5`,name:`GLM 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:1,output:3.2,cacheRead:.5,cacheWrite:0},contextWindow:202752,maxTokens:131072},"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:0,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:.05,output:.2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:32768},"accounts/fireworks/models/kimi-k2-instruct":{id:`accounts/fireworks/models/kimi-k2-instruct`,name:`Kimi K2 Instruct`,api:`anthropic-messages`,provider:`fireworks`,baseUrl:`https://api.fireworks.ai/inference`,compat:{sendSessionAffinityHeaders:!0,supportsEagerToolInputStreaming:!1,supportsCacheControlOnTools:!1,supportsLongCacheRetention:!1},reasoning:!1,input:[`text`],cost:{input:1,output:3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"accounts/fireworks/models/kimi-k2-thinking":{id:`accounts/fireworks/models/kimi-k2-thinking`,name:`Kimi K2 Thinking`,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:.6,output:2.5,cacheRead:.3,cacheWrite:0},contextWindow:256e3,maxTokens:256e3},"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-m2p1":{id:`accounts/fireworks/models/minimax-m2p1`,name:`MiniMax-M2.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:.3,output:1.2,cacheRead:.03,cacheWrite:0},contextWindow:2e5,maxTokens:2e5},"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:.03,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/kimi-k2p5-turbo":{id:`accounts/fireworks/routers/kimi-k2p5-turbo`,name:`Kimi K2.5 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:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:256e3}},"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`},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`},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`},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},"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-1.5-flash":{id:`gemini-1.5-flash`,name:`Gemini 1.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,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`,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-flash-lite-preview-06-17":{id:`gemini-2.5-flash-lite-preview-06-17`,name:`Gemini 2.5 Flash Lite Preview 06-17`,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},"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`,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},"gemini-2.5-flash-preview-04-17":{id:`gemini-2.5-flash-preview-04-17`,name:`Gemini 2.5 Flash Preview 04-17`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-preview-05-20":{id:`gemini-2.5-flash-preview-05-20`,name:`Gemini 2.5 Flash Preview 05-20`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.15,output:.6,cacheRead:.0375,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-flash-preview-09-2025":{id:`gemini-2.5-flash-preview-09-2025`,name:`Gemini 2.5 Flash Preview 09-25`,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-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-2.5-pro-preview-05-06":{id:`gemini-2.5-pro-preview-05-06`,name:`Gemini 2.5 Pro Preview 05-06`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.31,cacheWrite:0},contextWindow:1048576,maxTokens:65536},"gemini-2.5-pro-preview-06-05":{id:`gemini-2.5-pro-preview-06-05`,name:`Gemini 2.5 Pro Preview 06-05`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:1.25,output:10,cacheRead:.31,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:1e6,maxTokens:64e3},"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-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},"gemini-live-2.5-flash":{id:`gemini-live-2.5-flash`,name:`Gemini Live 2.5 Flash`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`,`image`],cost:{input:.5,output:2,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8e3},"gemini-live-2.5-flash-preview-native-audio":{id:`gemini-live-2.5-flash-preview-native-audio`,name:`Gemini Live 2.5 Flash Preview Native Audio`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!0,input:[`text`],cost:{input:.5,output:2,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:65536},"gemma-3-27b-it":{id:`gemma-3-27b-it`,name:`Gemma 3 27B`,api:`google-generative-ai`,provider:`google`,baseUrl:`https://generativelanguage.googleapis.com/v1beta`,reasoning:!1,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:131072,maxTokens:8192},"gemma-4-26b-a4b-it":{id:`gemma-4-26b-a4b-it`,name:`Gemma 4 26B`,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:256e3,maxTokens:8192},"gemma-4-31b-it":{id:`gemma-4-31b-it`,name:`Gemma 4 31B`,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:256e3,maxTokens:8192}},"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:0,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:0,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:0,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:1.74,output:3.48,cacheRead:.145,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:.03,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:.08,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:.13,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`},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:.28,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:272e3,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:128e3},"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`,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`,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`,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},"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`},input:[`text`,`image`],cost:{input:30,output:180,cacheRead:30,cacheWrite:0},contextWindow:105e4,maxTokens:128e3},"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},"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.5-free":{id:`minimax-m2.5-free`,name:`MiniMax M2.5 Free`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`],cost:{input:0,output:0,cacheRead:0,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},"qwen3.6-plus-free":{id:`qwen3.6-plus-free`,name:`Qwen3.6 Plus Free`,api:`anthropic-messages`,provider:`opencode`,baseUrl:`https://opencode.ai/zen`,reasoning:!0,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},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`,reasoning:!0,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:.4,output:2,cacheRead:.08,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,output:3,cacheRead:.2,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}},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},"alibaba/tongyi-deepresearch-30b-a3b":{id:`alibaba/tongyi-deepresearch-30b-a3b`,name:`Tongyi DeepResearch 30B A3B`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!0,input:[`text`],cost:{input:.09,output:.44999999999999996,cacheRead:.09,cacheWrite:0},contextWindow:131072,maxTokens:131072},"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-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-preview":{id:`arcee-ai/trinity-large-preview`,name:`Arcee AI: Trinity Large Preview`,api:`openai-completions`,provider:`openrouter`,baseUrl:`https://openrouter.ai/api/v1`,reasoning:!1,input:[`text`],cost:{input:.15,output:.44999999999999996,cacheRead:0,cacheWrite:0},contextWindow:131e3,maxTokens:4096},"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-large-thinking:free":{id:`arcee-ai/trinity-large-thinking:free`,name:`Arcee AI: Trinity Large Thinking (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:8e4},"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/cobuddy:free":{id:`baidu/cobuddy:free`,name:`Baidu Qianfan: CoBuddy (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:65536},"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:.32,output:.8899999999999999,cacheRead:0,cacheWrite:0},contextWindow:163840,maxTokens:16384},"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,thinkingFormat:`deepseek`},reasoning:!0,thinkingLevelMap:{minimal:null,low:null,medium:null,high:`high`,xhigh:`max`},input:[`text`],cost:{input:.112,output:.224,cacheRead:.022,cacheWrite:0},contextWindow:1048576,maxTokens:4096},"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,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: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,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: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:1048576,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/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:.3,output:2.5,cacheRead:.06,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},"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:.125,cacheWrite:0},contextWindow:128e3,maxTokens:16384},"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:.125,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:.03,cacheWrite:0},contextWindow:4e5,maxTokens:128e3},"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:32e3},"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`},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:131072,maxTokens:8192},"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:131072,maxTokens:8192},"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:.325},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:65536},"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:.14,output:1,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:81920},"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:.195,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:.08125},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:.325},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:0},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:.32,output:3.1999999999999997,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:81920},"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:.15,output:1,cacheRead:.049999999999999996,cacheWrite:0},contextWindow:262144,maxTokens:262144},"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},"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:.09999999999999999,output:.3,cacheRead:0,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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:.06599999999999999,output:.26,cacheRead:.029,cacheWrite:0},contextWindow:262144,maxTokens:262144},"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},"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:.39999999999999997,output:2,cacheRead:.08,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:1,output:3,cacheRead:.19999999999999998,cacheWrite:0},contextWindow:1048576,maxTokens:16384},"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:.13,output:.85,cacheRead:.024999999999999998,cacheWrite:0},contextWindow:131072,maxTokens:98304},"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:.5,output:3,cacheRead:.049999999999999996,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},"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},"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`,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`,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`,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/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-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`},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},"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:.39999999999999997,output:2,cacheRead:.08,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:1,output:3,cacheRead:.19999999999999998,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-2":{id:`grok-2`,name:`Grok 2`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-1212":{id:`grok-2-1212`,name:`Grok 2 (1212)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-latest":{id:`grok-2-latest`,name:`Grok 2 Latest`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:131072,maxTokens:8192},"grok-2-vision":{id:`grok-2-vision`,name:`Grok 2 Vision`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"grok-2-vision-1212":{id:`grok-2-vision-1212`,name:`Grok 2 Vision (1212)`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"grok-2-vision-latest":{id:`grok-2-vision-latest`,name:`Grok 2 Vision Latest`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:2,output:10,cacheRead:2,cacheWrite:0},contextWindow:8192,maxTokens:4096},"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:2,output:6,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:2,output:6,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-beta":{id:`grok-beta`,name:`Grok Beta`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`],cost:{input:5,output:15,cacheRead:5,cacheWrite:0},contextWindow:131072,maxTokens:4096},"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},"grok-vision-beta":{id:`grok-vision-beta`,name:`Grok Vision Beta`,api:`openai-completions`,provider:`xai`,baseUrl:`https://api.x.ai/v1`,reasoning:!1,input:[`text`,`image`],cost:{input:5,output:15,cacheRead:5,cacheWrite:0},contextWindow:8192,maxTokens:4096}},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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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-flash":{id:`mimo-v2-flash`,name:`MiMo-V2-Flash`,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:.01,cacheWrite:0},contextWindow:262144,maxTokens:65536},"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}}},Jc=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);Jc.set(e,n)}function Yc(e,t){return Jc.get(e)?.get(t)}function Xc(){return Array.from(Jc.keys())}function Zc(e){let t=Jc.get(e);return t?Array.from(t.values()):[]}function Qc(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 $c=[`off`,`minimal`,`low`,`medium`,`high`,`xhigh`];function el(e){return e.reasoning?$c.filter(t=>{let n=e.thinkingLevelMap?.[t];return n===null?!1:t===`xhigh`?n!==void 0:!0}):[`off`]}function Kre(e,t){let n=el(e);if(n.includes(t))return t;let r=$c.indexOf(t);if(r===-1)return n[0]??`off`;for(let e=r;e<$c.length;e++){let t=$c[e];if(n.includes(t))return t}for(let e=r-1;e>=0;e--){let t=$c[e];if(n.includes(t))return t}return n[0]??`off`}var qre=class{isComplete;extractResult;queue=[];waiting=[];done=!1;finalResultPromise;resolveFinalResult;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}},tl=class extends qre{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 nl(){return new tl}var Jre=e=>I(()=>import(e),[]),rl,il,al,ol,sl,cl,ll,ul,dl,fl;function pl(e,t){(async()=>{for await(let n of t)e.push(n);e.end()})()}function ml(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 hl(e){return(t,n,r)=>{let i=new tl;return e().then(e=>{pl(i,e.stream(t,n,r))}).catch(e=>{let n=ml(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function gl(e){return(t,n,r)=>{let i=new tl;return e().then(e=>{pl(i,e.streamSimple(t,n,r))}).catch(e=>{let n=ml(t,e);i.push({type:`error`,reason:`error`,error:n}),i.end(n)}),i}}function _l(){return rl||=I(()=>import(`./anthropic-Dtyagoir.js`).then(e=>{let t=e;return{stream:t.streamAnthropic,streamSimple:t.streamSimpleAnthropic}}),__vite__mapDeps([4,5,1,2])),rl}function vl(){return il||=I(()=>import(`./azure-openai-responses-DJIV1DiX.js`).then(e=>{let t=e;return{stream:t.streamAzureOpenAIResponses,streamSimple:t.streamSimpleAzureOpenAIResponses}}),__vite__mapDeps([6,7,8,2,1,3])),il}function yl(){return al||=I(()=>import(`./google-CPKtCy-G.js`).then(e=>{let t=e;return{stream:t.streamGoogle,streamSimple:t.streamSimpleGoogle}}),__vite__mapDeps([9,10,2])),al}function bl(){return ol||=I(()=>import(`./google-vertex-C-aVeSbm.js`).then(e=>{let t=e;return{stream:t.streamGoogleVertex,streamSimple:t.streamSimpleGoogleVertex}}),__vite__mapDeps([11,10,2])),ol}function xl(){return sl||=I(()=>import(`./mistral-BiWQi-Q6.js`).then(e=>{let t=e;return{stream:t.streamMistral,streamSimple:t.streamSimpleMistral}}),__vite__mapDeps([12,8,2])),sl}function Sl(){return cl||=I(()=>import(`./openai-codex-responses-DTOZv7ds.js`).then(e=>{let t=e;return{stream:t.streamOpenAICodexResponses,streamSimple:t.streamSimpleOpenAICodexResponses}}),__vite__mapDeps([13,7,8,2,1])),cl}function Cl(){return ll||=I(()=>import(`./openai-completions-DEKTYAs0.js`).then(e=>{let t=e;return{stream:t.streamOpenAICompletions,streamSimple:t.streamSimpleOpenAICompletions}}),__vite__mapDeps([14,5,1,2,3])),ll}function wl(){return ul||=I(()=>import(`./openai-responses-DdPu4D27.js`).then(e=>{let t=e;return{stream:t.streamOpenAIResponses,streamSimple:t.streamSimpleOpenAIResponses}}),__vite__mapDeps([15,5,7,8,2,1,3])),ul}function Tl(){return dl?Promise.resolve(dl):(fl||=Jre(`./amazon-bedrock.js`).then(e=>{let t=e;return{stream:t.streamBedrock,streamSimple:t.streamSimpleBedrock}}),fl)}var El=hl(_l),Dl=gl(_l),Yre=hl(vl),Xre=gl(vl),Zre=hl(yl),Qre=gl(yl),$re=hl(bl),eie=gl(bl),tie=hl(xl),nie=gl(xl),Ol=hl(Sl),kl=gl(Sl),Al=hl(Cl),jl=gl(Cl),Ml=hl(wl),Nl=gl(wl),rie=hl(Tl),iie=gl(Tl);function aie(){Rc({api:`anthropic-messages`,stream:El,streamSimple:Dl}),Rc({api:`openai-completions`,stream:Al,streamSimple:jl}),Rc({api:`mistral-conversations`,stream:tie,streamSimple:nie}),Rc({api:`openai-responses`,stream:Ml,streamSimple:Nl}),Rc({api:`azure-openai-responses`,stream:Yre,streamSimple:Xre}),Rc({api:`openai-codex-responses`,stream:Ol,streamSimple:kl}),Rc({api:`google-generative-ai`,stream:Zre,streamSimple:Qre}),Rc({api:`google-vertex`,stream:$re,streamSimple:eie}),Rc({api:`bedrock-converse-stream`,stream:rie,streamSimple:iie})}aie();var Pl=new Set;function oie(e){return Pl.add(e),()=>{Pl.delete(e)}}function sie(e){let t=Ore(e);if(!t)throw Error(`No API provider registered for api: ${e}`);return t}function cie(e,t,n){return sie(e.api).streamSimple(e,t,n)}async function Fl(e,t,n){return cie(e,t,n).result()}function Il(e){return e instanceof Error?e.message||e.name:typeof e==`string`?e:String(e)}function lie(e){if(!(e instanceof Error))return{name:`ThrownValue`,message:Il(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 uie(e,t,n){return{type:e,timestamp:Date.now(),error:lie(t),details:n}}function die(e,t){e.diagnostics=[...e.diagnostics??[],t]}var Ll=s((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})),Rl=s((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=Ll();Object.defineProperty(e,"Allow",{enumerable:!0,get:function(){return r.Allow}}),n(Ll(),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}))(),fie=new Set([`"`,`\\`,`/`,`b`,`f`,`n`,`r`,`t`,`u`]);function pie(e){let t=e.codePointAt(0);return t!==void 0&&t>=0&&t<=31}function mie(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 zl(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(fie.has(n)){t+=`\\${n}`,r+=1;continue}t+=`\\\\`;continue}t+=pie(i)?mie(i):i}return t}function Bl(e){try{return JSON.parse(e)}catch(t){let n=zl(e);if(n!==e)return JSON.parse(n);throw t}}function hie(e){if(!e||e.trim()===``)return{};try{return Bl(e)}catch{try{return(0,Rl.parse)(e)??{}}catch{try{return(0,Rl.parse)(zl(e))??{}}catch{return{}}}}}function gie(e){return k(e)&&N(e,`check`)&&N(e,`errors`)&&E(e.check)&&E(e.errors)}function Vl(e){return N(e,`~guard`)&&gie(e[`~guard`])}function Hl(e){return N(e,`~refine`)&&C(e[`~refine`])&&ye(e[`~refine`],0,e=>k(e)&&N(e,`check`)&&N(e,`error`)&&E(e.check)&&E(e.error))}function Ul(e){return k(e)&&!C(e)}function Wl(e){return T(e)}function Gl(e){return Ul(e)||Wl(e)}function Kl(e){return N(e,`additionalItems`)&&Gl(e.additionalItems)}function ql(e){return N(e,`additionalProperties`)&&Gl(e.additionalProperties)}function Jl(e){return N(e,`allOf`)&&C(e.allOf)&&e.allOf.every(e=>Gl(e))}function Yl(e){return N(e,`$anchor`)&&A(e.$anchor)}function Xl(e){return N(e,`anyOf`)&&C(e.anyOf)&&e.anyOf.every(e=>Gl(e))}function Zl(e){return N(e,`const`)}function Ql(e){return N(e,`contains`)&&Gl(e.contains)}function $l(e){return N(e,`default`)}function eu(e){return N(e,`dependencies`)&&k(e.dependencies)&&Object.values(e.dependencies).every(e=>Gl(e)||C(e)&&e.every(e=>A(e)))}function tu(e){return N(e,`dependentRequired`)&&k(e.dependentRequired)&&Object.values(e.dependentRequired).every(e=>C(e)&&e.every(e=>A(e)))}function nu(e){return N(e,`dependentSchemas`)&&k(e.dependentSchemas)&&Object.values(e.dependentSchemas).every(e=>Gl(e))}function ru(e){return N(e,`$dynamicAnchor`)&&A(e.$dynamicAnchor)}function iu(e){return N(e,`$dynamicRef`)&&A(e.$dynamicRef)}function au(e){return N(e,`else`)&&Gl(e.else)}function ou(e){return N(e,`enum`)&&C(e.enum)}function su(e){return N(e,`exclusiveMaximum`)&&(D(e.exclusiveMaximum)||w(e.exclusiveMaximum))}function cu(e){return N(e,`exclusiveMinimum`)&&(D(e.exclusiveMinimum)||w(e.exclusiveMinimum))}function lu(e){return N(e,`format`)&&A(e.format)}function uu(e){return N(e,`$id`)&&A(e.$id)}function du(e){return N(e,`if`)&&Gl(e.if)}function fu(e){return N(e,`items`)&&(Gl(e.items)||C(e.items)&&e.items.every(e=>Gl(e)))}function pu(e){return fu(e)&&C(e.items)}function mu(e){return N(e,`maximum`)&&(D(e.maximum)||w(e.maximum))}function hu(e){return N(e,`maxContains`)&&D(e.maxContains)}function gu(e){return N(e,`maxItems`)&&D(e.maxItems)}function _u(e){return N(e,`maxLength`)&&D(e.maxLength)}function vu(e){return N(e,`maxProperties`)&&D(e.maxProperties)}function yu(e){return N(e,`minimum`)&&(D(e.minimum)||w(e.minimum))}function bu(e){return N(e,`minContains`)&&D(e.minContains)}function xu(e){return N(e,`minItems`)&&D(e.minItems)}function Su(e){return N(e,`minLength`)&&D(e.minLength)}function Cu(e){return N(e,`minProperties`)&&D(e.minProperties)}function wu(e){return N(e,`multipleOf`)&&(D(e.multipleOf)||w(e.multipleOf))}function Tu(e){return N(e,`not`)&&Gl(e.not)}function Eu(e){return N(e,`oneOf`)&&C(e.oneOf)&&e.oneOf.every(e=>Gl(e))}function Du(e){return N(e,`pattern`)&&(A(e.pattern)||e.pattern instanceof RegExp)}function Ou(e){return N(e,`patternProperties`)&&k(e.patternProperties)&&Object.values(e.patternProperties).every(e=>Gl(e))}function ku(e){return N(e,`prefixItems`)&&C(e.prefixItems)&&e.prefixItems.every(e=>Gl(e))}function Au(e){return N(e,`properties`)&&k(e.properties)&&Object.values(e.properties).every(e=>Gl(e))}function ju(e){return N(e,`propertyNames`)&&(k(e.propertyNames)||Gl(e.propertyNames))}function _ie(e){return N(e,`$recursiveAnchor`)&&T(e.$recursiveAnchor)}function Mu(e){return _ie(e)&&M(e.$recursiveAnchor,!0)}function Nu(e){return N(e,`$recursiveRef`)&&A(e.$recursiveRef)}function Pu(e){return N(e,`$ref`)&&A(e.$ref)}function Fu(e){return N(e,`required`)&&C(e.required)&&e.required.every(e=>A(e))}function Iu(e){return N(e,`then`)&&Gl(e.then)}function Lu(e){return N(e,`type`)&&(A(e.type)||C(e.type)&&e.type.every(e=>A(e)))}function Ru(e){return N(e,`uniqueItems`)&&T(e.uniqueItems)}function zu(e){return N(e,`unevaluatedItems`)&&Gl(e.unevaluatedItems)}function Bu(e){return N(e,`unevaluatedProperties`)&&Gl(e.unevaluatedProperties)}var Vu=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}},Hu=class extends Vu{constructor(e){super(),this.callback=e}AddError(e){return this.callback(e),!1}},Uu=class extends Hu{constructor(){super(e=>this.errors.push(e)),this.errors=[]}AddError(e){return this.errors.push(e),!1}GetErrors(){return this.errors}};function Wu(e,t,n,r){return n[`~guard`].check(r)}function Gu(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 Ku(e,t,n,r){return ye(n[`~refine`],0,(e,t)=>e.check(r))}function qu(e,t,n,r,i,a){return be(i[`~refine`],0,(e,i)=>e.check(a)||t.AddError({keyword:`~refine`,schemaPath:n,instancePath:r,params:{index:i,message:e.error(a)}}))}function Ju(e){return fu(e)&&C(e.items)}function Yu(e,t,n,r){return Ju(n)?r.every((r,i)=>de(i,n.items.length)||um(e,t,n.additionalItems,r)&&t.AddIndex(i)):!0}function Xu(e,t,n,r,i,a){return Ju(i)?a.every((a,o)=>{let s=`${n}/additionalItems`,c=`${r}/${o}`;return de(o,i.items.length)||fm(e,t,s,c,i.additionalItems,a)&&t.AddIndex(o)}):!0}function Zu(e){return`^${e.replace(/[.*+?^${}()|[\]\\]/g,`\\$&`)}$`}function Qu(e){let t=[];return Ou(e)&&t.push(...P(e.patternProperties)),Au(e)&&t.push(...P(e.properties).map(Zu)),M(t.length,0)?`(?!)`:`(${t.join(`|`)})`}function $u(e,t,n,r){let i=new RegExp(Qu(n));return ye(P(r),0,(a,o)=>i.test(a)||um(e,t,n.additionalProperties,r[a])&&t.AddKey(a))}function ed(e,t,n,r,i,a){let o=new RegExp(Qu(i)),s=[];return be(P(a),0,(c,l)=>{let u=`${n}/additionalProperties`,d=`${r}/${c}`,f=new Uu,p=o.test(c)||fm(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 td(e,t,n,r){let i=n.allOf.reduce((t,n)=>{let i=new Vu;return dm(e,i,n,r)?[...t,i]:t},[]);return M(i.length,n.allOf.length)&&t.Merge(i)}function nd(e,t,n,r,i,a){let o=[],s=i.allOf.reduce((t,i,s)=>{let c=`${n}/allOf/${s}`,l=new Uu,u=pm(e,l,c,r,i,a);return u||o.push(l),u?[...t,l]:t},[]),c=M(s.length,i.allOf.length)&&t.Merge(s);return c||o.forEach(e=>e.GetErrors().forEach(e=>t.AddError(e))),c}function rd(e,t,n,r){let i=n.anyOf.reduce((t,n)=>{let i=new Vu;return dm(e,i,n,r)?[...t,i]:t},[]);return ue(i.length,0)&&t.Merge(i)}function id(e,t,n,r,i,a){let o=[],s=i.anyOf.reduce((t,i,s)=>{let c=new Uu,l=pm(e,c,`${n}/anyOf/${s}`,r,i,a);return l||o.push(c),l?[...t,c]:t},[]),c=ue(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 ad(e,t,n,r){return n}function od(e,t,n,r,i,a){return ad(e,t,i,a)||t.AddError({keyword:`boolean`,schemaPath:n,instancePath:r,params:{}})}function sd(e,t,n,r){return ge(n.const)?M(r,n.const):De(r,n.const)}function cd(e,t,n,r,i,a){return sd(e,t,i,a)||t.AddError({keyword:`const`,schemaPath:n,instancePath:r,params:{allowedValue:i.const}})}function ld(e){return!(bu(e)&&M(e.minContains,0))}function ud(e,t,n,r){return ld(n)?!M(r.length,0)&&r.some(r=>dm(e,t,n.contains,r)):!0}function dd(e,t,n,r,i,a){return ud(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:1}})}function fd(e,t,n,r){let i=M(P(r).length,0),a=ye(Ce(n.dependencies),0,([n,i])=>!N(r,n)||(C(i)?i.every(e=>N(r,e)):dm(e,t,i,r)));return i||a}function pd(e,t,n,r,i,a){let o=M(P(a).length,0),s=be(Ce(i.dependencies),0,([i,o])=>{let s=`${n}/dependencies/${i}`;return!N(a,i)||(C(o)?o.every(e=>N(a,e)||t.AddError({keyword:`dependencies`,schemaPath:n,instancePath:r,params:{property:i,dependencies:o}})):pm(e,t,s,r,o,a))});return o||s}function md(e,t,n,r){let i=M(P(r).length,0),a=ye(Ce(n.dependentRequired),0,([e,t])=>!N(r,e)||t.every(e=>N(r,e)));return i||a}function hd(e,t,n,r,i,a){let o=M(P(a).length,0),s=be(Ce(i.dependentRequired),0,([e,i])=>!N(a,e)||be(i,0,o=>N(a,o)||t.AddError({keyword:`dependentRequired`,schemaPath:n,instancePath:r,params:{property:e,dependencies:i}})));return o||s}function gd(e,t,n,r){let i=M(P(r).length,0),a=ye(Ce(n.dependentSchemas),0,([n,i])=>!N(r,n)||dm(e,t,i,r));return i||a}function _d(e,t,n,r,i,a){let o=M(P(a).length,0),s=be(Ce(i.dependentSchemas),0,([i,o])=>{let s=`${n}/dependentSchemas/${i}`;return!N(a,i)||pm(e,t,s,r,o,a)});return o||s}function vd(e,t,n,r){let i=e.DynamicRef(n)??!1;return Gl(i)&&dm(e,t,i,r)}function yd(e,t,n,r,i,a){let o=e.DynamicRef(i)??!1;return Gl(o)&&pm(e,t,`#`,r,o,a)}function bd(e,t,n,r){return n.enum.some(e=>ge(e)?M(r,e):De(r,e))}function xd(e,t,n,r,i,a){return bd(e,t,i,a)||t.AddError({keyword:`enum`,schemaPath:n,instancePath:r,params:{allowedValues:i.enum}})}function Sd(e,t,n,r){return de(r,n.exclusiveMaximum)}function Cd(e,t,n,r,i,a){return Sd(e,t,i,a)||t.AddError({keyword:`exclusiveMaximum`,schemaPath:n,instancePath:r,params:{comparison:`<`,limit:i.exclusiveMaximum}})}function wd(e,t,n,r){return ue(r,n.exclusiveMinimum)}function Td(e,t,n,r,i,a){return wd(e,t,i,a)||t.AddError({keyword:`exclusiveMinimum`,schemaPath:n,instancePath:r,params:{comparison:`>`,limit:i.exclusiveMinimum}})}var Ed=[0,31,28,31,30,31,30,31,31,30,31,30,31],Dd=/^(\d\d\d\d)-(\d\d)-(\d\d)$/;function Od(e){return e%4==0&&(e%100!=0||e%400==0)}function kd(e){let t=Dd.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&&Od(n)?29:Ed[r])}var Ad=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(?:Z|([+-])(\d\d):(\d\d))?$/i;function jd(e,t=!0){let n=Ad.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 Md(e,t=!0){let n=e.split(/T/i);return n.length===2&&kd(n[0])&&jd(n[1],t)}var Nd=/^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 Pd(e){return Nd.test(e)}var Fd=/^(?!.*\.\.)[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 Id(e){return Fd.test(e)}var Ld=36,Rd=1,zd=26,Bd=38,Vd=700,Hd=72,Ud=128;function Wd(e,t,n){e=n?Math.floor(e/Vd):e>>1,e+=Math.floor(e/t);let r=0;for(;e>455;)e=Math.floor(e/(Ld-Rd)),r+=Ld;return r+Math.floor(36*e/(e+Bd))}function Gd(e){let t=[],n=Ud,r=0,i=Hd,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=Ld;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?Rd:c>=i+zd?zd:c-i;if(n<a)break;s*=Ld-a,c+=Ld}let l=t.length+1;i=Wd(r-a,l,a===0),n+=Math.floor(r/l),r%=l,t.splice(r,0,n),r++}return globalThis.String.fromCodePoint(...t)}function Kd(e){return/\p{Mn}/u.test(String.fromCodePoint(e))}function qd(e){return/\p{Mc}/u.test(String.fromCodePoint(e))}function Jd(e){return/\p{Me}/u.test(String.fromCodePoint(e))}function Yd(e){return Kd(e)||qd(e)||Jd(e)}var Xd=new Set([1600,2042,12334,12335,12337,12338,12339,12340,12341,12347]),Zd=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 Qd(e){return/\p{Script=Greek}/u.test(String.fromCodePoint(e))}function $d(e){return/\p{Script=Hebrew}/u.test(String.fromCodePoint(e))}function ef(e){return/\p{Script=Hiragana}/u.test(String.fromCodePoint(e))}function tf(e){return/\p{Script=Katakana}/u.test(String.fromCodePoint(e))}function nf(e){return/\p{Script=Han}/u.test(String.fromCodePoint(e))}function rf(e){return e>=1632&&e<=1641}function af(e){return e>=1776&&e<=1785}function of(e){return Zd.has(e)}function sf(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||Yd(t[0]))return!1;let r=!1,i=!1,a=!1;for(let e=0;e<n;e++){let n=t[e];if(Xd.has(n))return!1;(ef(n)||tf(n)||nf(n))&&(r=!0),rf(n)&&(i=!0),af(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||!Qd(s))return!1;break;case 1523:case 1524:if(o===void 0||!$d(o))return!1;break;case 8205:if(o===void 0||!of(o))return!1;break;case 12539:break}}return!(e.includes(`・`)&&!r||i&&a)}function cf(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 lf(e){return e.toLowerCase().startsWith(`xn--`)}function uf(e){try{return sf(Gd(e.slice(4)))}catch{return!1}}function df(e){return e.length===0||e.length>63?!1:lf(e)?uf(e):sf(e)}function ff(e){return e.length===0||e.length>63?!1:lf(e)?uf(e):cf(e)}function pf(e){if(e.length===0||e.length>253||e.charCodeAt(e.length-1)===46)return!1;for(let t of e.split(`.`))if(!ff(t))return!1;return!0}var mf=/^(?!.*\.\.)[\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 hf(e){return mf.test(e)}function gf(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(!df(e))return!1;return!0}function _f(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 vf(e){return _f(e,0,e.length)}function yf(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function bf(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&&yf(e.charCodeAt(i));)i++,a++;if(a===0)return!1;let s=e.charCodeAt(i);if(s===46){if(!_f(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 xf(e){try{return new URL(e,`http://example.com`),!0}catch{return!1}}function Sf(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))?xf(e):e.match(/^([a-zA-Z][a-zA-Z0-9+\-.]*)(\/\/)/)&&t===-1?!1:xf(e)}function Cf(e){try{return new URL(e),!0}catch{return!1}}var wf=/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;function Tf(e){return wf.test(e)}var Ef=/^(?:\/(?:[^~/]|~0|~1)*)*$/;function Df(e){return Ef.test(e)}function Of(e){if(e.length===0)return!1;try{return new RegExp(e),!0}catch{return!1}}var kf=/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;function Af(e){return kf.test(e)}var jf=/^(?!.*[^\x00-\x7F])(?!.*\\)(?:(?:[a-z][a-z0-9+\-.]*:)?(?:\/\/[^\s[\]{}<>^`|]*)?|[^\s[\]{}<>^`|]*)(?:\?[^\s[\]{}<>^`|]*)?(?:#[^\s[\]{}<>^`|]*)?$/i;function Mf(e){return jf.test(e)}var Nf=/^(?:(?:[^\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 Pf(e){return Nf.test(e)}function Ff(e){return e>=97&&e<=122||e>=65&&e<=90}function If(e){return Ff(e)||e>=48&&e<=57}function Lf(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function Rf(e){return If(e)||e===43||e===45||e===46}function zf(e){return If(e)||e===45||e===46||e===95||e===126}function Bf(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 Vf(e){return zf(e)||Bf(e)||e===58||e===64}function Hf(e){let t=e.length;if(t===0||!Ff(e.charCodeAt(0)))return!1;let n=1;for(;n<t;){let t=e.charCodeAt(n);if(t===58)break;if(!Rf(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||!Lf(e.charCodeAt(t+1))||!Lf(e.charCodeAt(t+2)))return!1;t+=2}else if(!zf(n)&&!Bf(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&&!zf(t)&&!Bf(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||!Lf(e.charCodeAt(n+1))||!Lf(e.charCodeAt(n+2)))return!1;n+=2}else if(r>127)return!1;else if(!(Vf(r)||r===47||r===63||r===35))return!1;n++}return!0}var Uf=/^(?: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 Wf(e){return Uf.test(e)}var Gf=/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;function Kf(e){return Gf.test(e)}var qf=new Map;function Jf(){qf.clear()}function Yf(e,t){return qf.get(e)?.(t)??!0}function Xf(){Jf(),qf.set(`date-time`,Md),qf.set(`date`,kd),qf.set(`duration`,Pd),qf.set(`email`,Id),qf.set(`hostname`,pf),qf.set(`idn-email`,hf),qf.set(`idn-hostname`,gf),qf.set(`ipv4`,vf),qf.set(`ipv6`,bf),qf.set(`iri-reference`,Sf),qf.set(`iri`,Cf),qf.set(`json-pointer-uri-fragment`,Tf),qf.set(`json-pointer`,Df),qf.set(`regex`,Of),qf.set(`relative-json-pointer`,Af),qf.set(`time`,jd),qf.set(`uri-reference`,Mf),qf.set(`uri-template`,Pf),qf.set(`uri`,Hf),qf.set(`url`,Wf),qf.set(`uuid`,Kf)}Xf();function Zf(e,t,n,r){return Yf(n.format,r)}function Qf(e,t,n,r,i,a){return Zf(e,t,i,a)||t.AddError({keyword:`format`,schemaPath:n,instancePath:r,params:{format:i.format}})}function $f(e,t,n,r){let i=Iu(n)?n.then:!0,a=au(n)?n.else:!0;return dm(e,t,n.if,r)?dm(e,t,i,r):dm(e,t,a,r)}function ep(e,t,n,r,i,a){let o=Iu(i)?i.then:!0,s=au(i)?i.else:!0,c=new Uu,l=pm(e,c,`${n}/if`,r,i.if,a)?pm(e,c,`${n}/then`,r,o,a)||t.AddError({keyword:`if`,schemaPath:n,instancePath:r,params:{failingKeyword:`then`}}):pm(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 tp(e,t,n,r){return ye(n.items,0,(n,i)=>fe(r.length,i)||um(e,t,n,r[i])&&t.AddIndex(i))}function np(e,t,n,r,i,a){return be(i.items,0,(i,o)=>{let s=`${n}/items/${o}`,c=`${r}/${o}`;return fe(a.length,o)||fm(e,t,s,c,i,a[o])&&t.AddIndex(o)})}function rp(e,t,n,r){return ye(r,ku(n)?n.prefixItems.length:0,(r,i)=>um(e,t,n.items,r)&&t.AddIndex(i))}function ip(e,t,n,r,i,a){return be(a,ku(i)?i.prefixItems.length:0,(a,o)=>fm(e,t,`${n}/items`,`${r}/${o}`,i.items,a)&&t.AddIndex(o))}function ap(e,t,n,r){return pu(n)?tp(e,t,n,r):rp(e,t,n,r)}function op(e,t,n,r,i,a){return pu(i)?np(e,t,n,r,i,a):ip(e,t,n,r,i,a)}function sp(e){return Ql(e)}function cp(e,t,n,r){return sp(n)?fe(r.reduce((r,i)=>dm(e,t,n.contains,i)?++r:r,0),n.maxContains):!0}function lp(e,t,n,r,i,a){let o=bu(i)?i.minContains:1;return cp(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:o,maxContains:i.maxContains}})}function up(e,t,n,r){return fe(r,n.maximum)}function dp(e,t,n,r,i,a){return up(e,t,i,a)||t.AddError({keyword:`maximum`,schemaPath:n,instancePath:r,params:{comparison:`<=`,limit:i.maximum}})}function fp(e,t,n,r){return fe(r.length,n.maxItems)}function pp(e,t,n,r,i,a){return fp(e,t,i,a)||t.AddError({keyword:`maxItems`,schemaPath:n,instancePath:r,params:{limit:i.maxItems}})}function mp(e,t,n,r){return _e(r,n.maxLength)}function hp(e,t,n,r,i,a){return mp(e,t,i,a)||t.AddError({keyword:`maxLength`,schemaPath:n,instancePath:r,params:{limit:i.maxLength}})}function gp(e,t,n,r){return fe(P(r).length,n.maxProperties)}function _p(e,t,n,r,i,a){return gp(e,t,i,a)||t.AddError({keyword:`maxProperties`,schemaPath:n,instancePath:r,params:{limit:i.maxProperties}})}function vp(e){return Ql(e)}function yp(e,t,n,r){return vp(n)?pe(r.reduce((r,i)=>dm(e,t,n.contains,i)?++r:r,0),n.minContains):!0}function bp(e,t,n,r,i,a){return yp(e,t,i,a)||t.AddError({keyword:`contains`,schemaPath:n,instancePath:r,params:{minContains:i.minContains}})}function xp(e,t,n,r){return pe(r,n.minimum)}function Sp(e,t,n,r,i,a){return xp(e,t,i,a)||t.AddError({keyword:`minimum`,schemaPath:n,instancePath:r,params:{comparison:`>=`,limit:i.minimum}})}function Cp(e,t,n,r){return pe(r.length,n.minItems)}function wp(e,t,n,r,i,a){return Cp(e,t,i,a)||t.AddError({keyword:`minItems`,schemaPath:n,instancePath:r,params:{limit:i.minItems}})}function Tp(e,t,n,r){return ve(r,n.minLength)}function Ep(e,t,n,r,i,a){return Tp(e,t,i,a)||t.AddError({keyword:`minLength`,schemaPath:n,instancePath:r,params:{limit:i.minLength}})}function Dp(e,t,n,r){return pe(P(r).length,n.minProperties)}function Op(e,t,n,r,i,a){return Dp(e,t,i,a)||t.AddError({keyword:`minProperties`,schemaPath:n,instancePath:r,params:{limit:i.minProperties}})}function kp(e,t,n,r){return me(r,n.multipleOf)}function Ap(e,t,n,r,i,a){return kp(e,t,i,a)||t.AddError({keyword:`multipleOf`,schemaPath:n,instancePath:r,params:{multipleOf:i.multipleOf}})}function jp(e,t,n,r){let i=new Vu;return!dm(e,i,n.not,r)&&t.Merge([i])}function Mp(e,t,n,r,i,a){return jp(e,t,i,a)||t.AddError({keyword:`not`,schemaPath:n,instancePath:r,params:{}})}function Np(e,t,n,r){let i=n.oneOf.reduce((t,n)=>{let i=new Vu;return dm(e,i,n,r)?[...t,i]:t},[]);return M(i.length,1)&&t.Merge(i)}function Pp(e,t,n,r,i,a){let o=[],s=[],c=i.oneOf.reduce((t,i,c)=>{let l=new Uu,u=pm(e,l,`${n}/oneOf/${c}`,r,i,a);return u&&s.push(c),u||o.push(l),u?[...t,l]:t},[]),l=M(c.length,1)&&t.Merge(c);return!l&&M(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 Fp(e,t,n,r){return(A(n.pattern)?new RegExp(n.pattern,`u`):n.pattern).test(r)}function Ip(e,t,n,r,i,a){return Fp(e,t,i,a)||t.AddError({keyword:`pattern`,schemaPath:n,instancePath:r,params:{pattern:i.pattern}})}function Lp(e,t,n,r){return ye(Ce(n.patternProperties),0,([n,i])=>{let a=new RegExp(n,`u`);return ye(Ce(r),0,([n,r])=>!a.test(n)||um(e,t,i,r)&&t.AddKey(n))})}function Rp(e,t,n,r,i,a){return be(Ce(i.patternProperties),0,([i,o])=>{let s=`${n}/patternProperties/${i}`,c=new RegExp(i,`u`);return be(Ce(a),0,([n,i])=>{let a=`${r}/${n}`;return!c.test(n)||fm(e,t,s,a,o,i)&&t.AddKey(n)})})}function zp(e,t,n,r){return M(r.length,0)||ye(n.prefixItems,0,(n,i)=>fe(r.length,i)||um(e,t,n,r[i])&&t.AddIndex(i))}function Bp(e,t,n,r,i,a){return M(a.length,0)||be(i.prefixItems,0,(i,o)=>{let s=`${n}/prefixItems/${o}`,c=`${r}/${o}`;return fe(a.length,o)||fm(e,t,s,c,i,a[o])&&t.AddIndex(o)})}function Vp(e,t){return e.includes(t)||Ge().exactOptionalPropertyTypes}function Hp(e,t){return j(e[t])}function Up(e,t,n,r){let i=Fu(n)?n.required:[];return ye(Ce(n.properties),0,([n,a])=>{let o=!N(r,n)||um(e,t,a,r[n])&&t.AddKey(n);return Vp(i,n)?o:Hp(r,n)||o})}function Wp(e,t,n,r,i,a){let o=Fu(i)?i.required:[];return be(Ce(i.properties),0,([i,s])=>{let c=`${n}/properties/${i}`,l=`${r}/${i}`,u=()=>!N(a,i)||fm(e,t,c,l,s,a[i])&&t.AddKey(i);return Vp(o,i)?u():Hp(a,i)||u()})}function Gp(e,t,n,r){return ye(P(r),0,(r,i)=>dm(e,t,n.propertyNames,r))}function Kp(e,t,n,r,i,a){let o=[];return be(P(a),0,(t,a)=>{let s=`${r}/${t}`,c=`${n}/propertyNames`,l=pm(e,new Uu,c,s,i.propertyNames,t);return l||o.push(t),l})||t.AddError({keyword:`propertyNames`,schemaPath:n,instancePath:r,params:{propertyNames:o}})}function qp(e,t,n,r){let i=e.RecursiveRef(n)??!1;return Gl(i)&&dm(e,t,i,r)}function Jp(e,t,n,r,i,a){let o=e.RecursiveRef(i)??!1;return Gl(o)&&pm(e,t,`#`,r,o,a)}function Yp(e,t,n,r){let i=e.Ref(n)??!1,a=new Vu,o=Gl(i)&&dm(e,a,i,r);return o&&t.Merge([a]),o}function Xp(e,t,n,r,i,a){let o=e.Ref(i)??!1,s=new Uu,c=Gl(o)&&pm(e,s,`#`,r,o,a);return c&&t.Merge([s]),c||s.GetErrors().forEach(e=>t.AddError(e)),c}function Zp(e,t,n,r){return ye(n.required,0,e=>N(r,e))}function Qp(e,t,n,r,i,a){let o=[];return be(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 $p(e,t,n,r,i){return M(n,`object`)?O(i):M(n,`array`)?C(i):M(n,`boolean`)?T(i):M(n,`integer`)?oe(i):M(n,`number`)?D(i):M(n,`null`)?ce(i):M(n,`string`)?A(i):M(n,`asyncIterator`)?ie(i):M(n,`bigint`)?w(i):M(n,`constructor`)?ae(i):M(n,`function`)?E(i):M(n,`iterator`)?se(i):M(n,`symbol`)?le(i):M(n,`undefined`)||M(n,`void`)?j(i):!0}function em(e,t,n,r,i){return n.some(n=>$p(e,t,n,r,i))}function tm(e,t,n,r){return C(n.type)?em(e,t,n.type,n,r):$p(e,t,n.type,n,r)}function nm(e,t,n,r,i,a){return(C(i.type)?em(e,t,i.type,i,a):$p(e,t,i.type,i,a))||t.AddError({keyword:`type`,schemaPath:n,instancePath:r,params:{type:i.type}})}function rm(e,t,n,r){let i=t.GetIndices();return ye(r,0,(r,a)=>(i.has(a)||dm(e,t,n.unevaluatedItems,r))&&t.AddIndex(a))}function im(e,t,n,r,i,a){let o=t.GetIndices(),s=[];return be(a,0,(a,c)=>{let l=new Uu,u=(o.has(c)||pm(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 am(e,t,n,r){let i=t.GetKeys();return ye(Ce(r),0,([r,a])=>i.has(r)||dm(e,t,n.unevaluatedProperties,a)&&t.AddKey(r))}function om(e,t,n,r,i,a){let o=t.GetKeys(),s=[];return be(Ce(a),0,([a,c])=>{let l=new Uu,u=o.has(a)||pm(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 sm(e){return!M(e.uniqueItems,!1)}function cm(e,t,n,r){if(!sm(n))return!0;let i=new Set(r.map(yn)).size,a=r.length;return M(i,a)}function lm(e,t,n,r,i,a){if(!sm(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 M(s.length,0)||t.AddError({keyword:`uniqueItems`,schemaPath:n,instancePath:r,params:{duplicateItems:s}})}function um(e,t,n,r){return t.Push()&&dm(e,t,n,r)&&t.Pop()}function dm(e,t,n,r){e.Push(n);let i=Wl(n)?ad(e,t,n,r):(!Lu(n)||tm(e,t,n,r))&&(!(k(r)&&!C(r))||(!Fu(n)||Zp(e,t,n,r))&&(!ql(n)||$u(e,t,n,r))&&(!eu(n)||fd(e,t,n,r))&&(!tu(n)||md(e,t,n,r))&&(!nu(n)||gd(e,t,n,r))&&(!Ou(n)||Lp(e,t,n,r))&&(!Au(n)||Up(e,t,n,r))&&(!ju(n)||Gp(e,t,n,r))&&(!Cu(n)||Dp(e,t,n,r))&&(!vu(n)||gp(e,t,n,r)))&&(!C(r)||(!Kl(n)||Yu(e,t,n,r))&&(!Ql(n)||ud(e,t,n,r))&&(!fu(n)||ap(e,t,n,r))&&(!hu(n)||cp(e,t,n,r))&&(!gu(n)||fp(e,t,n,r))&&(!bu(n)||yp(e,t,n,r))&&(!xu(n)||Cp(e,t,n,r))&&(!ku(n)||zp(e,t,n,r))&&(!Ru(n)||cm(e,t,n,r)))&&(!A(r)||(!_u(n)||mp(e,t,n,r))&&(!Su(n)||Tp(e,t,n,r))&&(!lu(n)||Zf(e,t,n,r))&&(!Du(n)||Fp(e,t,n,r)))&&(!(D(r)||w(r))||(!su(n)||Sd(e,t,n,r))&&(!cu(n)||wd(e,t,n,r))&&(!mu(n)||up(e,t,n,r))&&(!yu(n)||xp(e,t,n,r))&&(!wu(n)||kp(e,t,n,r)))&&(!Pu(n)||Yp(e,t,n,r))&&(!Nu(n)||qp(e,t,n,r))&&(!iu(n)||vd(e,t,n,r))&&(!Vl(n)||Wu(e,t,n,r))&&(!Zl(n)||sd(e,t,n,r))&&(!ou(n)||bd(e,t,n,r))&&(!du(n)||$f(e,t,n,r))&&(!Tu(n)||jp(e,t,n,r))&&(!Jl(n)||td(e,t,n,r))&&(!Xl(n)||rd(e,t,n,r))&&(!Eu(n)||Np(e,t,n,r))&&(!zu(n)||!C(r)||rm(e,t,n,r))&&(!Bu(n)||!k(r)||am(e,t,n,r))&&(!Hl(n)||Ku(e,t,n,r));return e.Pop(n),i}function fm(e,t,n,r,i,a){return t.Push()&&pm(e,t,n,r,i,a)&&t.Pop()}function pm(e,t,n,r,i,a){e.Push(i);let o=Wl(i)?od(e,t,n,r,i,a):!!((!Lu(i)||nm(e,t,n,r,i,a))&+(!(k(a)&&!C(a))||!!((!Fu(i)||Qp(e,t,n,r,i,a))&+(!ql(i)||ed(e,t,n,r,i,a))&(!eu(i)||pd(e,t,n,r,i,a))&(!tu(i)||hd(e,t,n,r,i,a))&(!nu(i)||_d(e,t,n,r,i,a))&(!Ou(i)||Rp(e,t,n,r,i,a))&(!Au(i)||Wp(e,t,n,r,i,a))&(!ju(i)||Kp(e,t,n,r,i,a))&(!Cu(i)||Op(e,t,n,r,i,a))&(!vu(i)||_p(e,t,n,r,i,a))))&(!C(a)||!!((!Kl(i)||Xu(e,t,n,r,i,a))&+(!Ql(i)||dd(e,t,n,r,i,a))&(!fu(i)||op(e,t,n,r,i,a))&(!hu(i)||lp(e,t,n,r,i,a))&(!gu(i)||pp(e,t,n,r,i,a))&(!bu(i)||bp(e,t,n,r,i,a))&(!xu(i)||wp(e,t,n,r,i,a))&(!ku(i)||Bp(e,t,n,r,i,a))&(!Ru(i)||lm(e,t,n,r,i,a))))&(!A(a)||!!((!_u(i)||hp(e,t,n,r,i,a))&+(!Su(i)||Ep(e,t,n,r,i,a))&(!lu(i)||Qf(e,t,n,r,i,a))&(!Du(i)||Ip(e,t,n,r,i,a))))&(!(D(a)||w(a))||!!((!su(i)||Cd(e,t,n,r,i,a))&+(!cu(i)||Td(e,t,n,r,i,a))&(!mu(i)||dp(e,t,n,r,i,a))&(!yu(i)||Sp(e,t,n,r,i,a))&(!wu(i)||Ap(e,t,n,r,i,a))))&(!Pu(i)||Xp(e,t,n,r,i,a))&(!Nu(i)||Jp(e,t,n,r,i,a))&(!iu(i)||yd(e,t,n,r,i,a))&(!Vl(i)||Gu(e,t,n,r,i,a))&(!Zl(i)||cd(e,t,n,r,i,a))&(!ou(i)||xd(e,t,n,r,i,a))&(!du(i)||ep(e,t,n,r,i,a))&(!Tu(i)||Mp(e,t,n,r,i,a))&(!Jl(i)||nd(e,t,n,r,i,a))&(!Xl(i)||id(e,t,n,r,i,a))&(!Eu(i)||Pp(e,t,n,r,i,a))&(!zu(i)||!C(a)||im(e,t,n,r,i,a))&(!Bu(i)||!k(a)||om(e,t,n,r,i,a)))&&(!Hl(i)||qu(e,t,n,r,i,a));return e.Pop(i),o}function mm(e,t){return k(t)?t[e]:void 0}function hm(e,t){return e.reduce((e,t)=>mm(t,e),t)}function gm(e){if(M(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 _m(e,t){return hm(gm(t),e)}function vm(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(M(r.pathname,i.pathname))return n.hash.startsWith(`#`)?xm(e,t,n):e}function ym(e,t,n){let r=new URL(`#${e.$anchor}`,t.href),i=new URL(n.href,t.href);return M(r.href,i.href)?e:void 0}function bm(e,t,n){let r=new URL(`#${e.$dynamicAnchor}`,t.href),i=new URL(n.href,t.href);return M(r.href,i.href)?e:void 0}function xm(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 _m(e,r)}function Sm(e,t,n){if(uu(e)){let r=vm(e,t,n);if(!j(r))return r}if(Yl(e)){let r=ym(e,t,n);if(!j(r))return r}if(ru(e)){let r=bm(e,t,n);if(!j(r))return r}return xm(e,t,n)}function Cm(e,t,n){return e.reduce((e,r)=>{let i=Tm(r,t,n);return j(i)?e:i},void 0)}function wm(e,t,n){return P(e).reduce((r,i)=>{let a=Tm(e[i],t,n);return j(a)?r:a},void 0)}function Tm(e,t,n){let r=Ul(e)&&uu(e)?new URL(e.$id,t.href):t;if(Ul(e)){let t=Sm(e,r,n);if(!j(t))return t}if(C(e))return Cm(e,r,n);if(k(e))return wm(e,r,n)}function Em(e,t){let n=new URL(`http://unknown/`),r=uu(e)?new URL(e.$id,n.href):n;return Tm(e,r,new URL(t,r.href))}function Dm(e,t,n,r){let i=n.$dynamicRef.startsWith(`#`)?Em(t,n.$dynamicRef):Em(e,n.$dynamicRef);if(!j(i))return!Ul(i)||!ru(i)||new URL(n.$dynamicRef,`http://unknown/`).hash.startsWith(`#/`)?i:r.find(e=>e.$dynamicAnchor===i.$dynamicAnchor)??i}var Om=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)},km,Am,jm,Mm,Nm,Pm=class{constructor(e,t){km.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){Ul(e)&&(uu(e)&&(this.ids.push(e),Om(this,km,`m`,Am).call(this,e)),Yl(e)&&this.anchors.push(e),Mu(e)&&this.recursiveAnchors.push(e),ru(e)&&this.dynamicAnchors.push(e))}Pop(e){Ul(e)&&(uu(e)&&(this.ids.pop(),Om(this,km,`m`,jm).call(this,e)),Yl(e)&&this.anchors.pop(),Mu(e)&&this.recursiveAnchors.pop(),ru(e)&&this.dynamicAnchors.pop())}Ref(e){return Om(this,km,`m`,Mm).call(this,e)??Om(this,km,`m`,Nm).call(this,e)}RecursiveRef(e){return Mu(this.Base())?Em(this.recursiveAnchors[0],e.$recursiveRef):Em(this.Base(),e.$recursiveRef)}DynamicRef(e){let t=this.schema;return Dm(t,this.Base(),e,this.dynamicAnchors)}};km=new WeakSet,Am=function e(t,n=!0){if(!Ul(t))return;let r=t;if(!(!n&&uu(r))){!n&&ru(r)&&this.dynamicAnchors.push(r);for(let t of P(r))Om(this,km,`m`,e).call(this,r[t],!1)}},jm=function e(t,n=!0){if(!Ul(t))return;let r=t;if(!(!n&&uu(r))){!n&&ru(r)&&this.dynamicAnchors.pop();for(let t of P(r))Om(this,km,`m`,e).call(this,r[t],!1)}},Mm=function(e){return N(this.context,e.$ref)?this.context[e.$ref]:void 0},Nm=function(e){let t=this.schema;return e.$ref.startsWith(`#`)?Em(this.Base(),e.$ref):Em(t,e.$ref)};function Fm(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return dm(new Pm(t,n),new Vu,n,r)}function Im(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return Fm(t,n,r)}function Lm(e,t,n){return C(n)?n.map(n=>ah(e,t.items,n)):n}function Rm(e,t,n){return t.Clean(n)}function zm(e,t,n){return ah({...e,...t.$defs},kt(t.$ref),n)}function Bm(e,t){let n=N(t,`unevaluatedProperties`)?{additionalProperties:t.unevaluatedProperties}:{},r=Ic(Pc(e,t));return Bt(r)?Pne(r,n):r}function Vm(e,t,n){return ah(e,Bm(e,t),n)}function Hm(e){return N(e,`additionalProperties`)?e.additionalProperties:void 0}function Um(e,t,n){if(!k(n)||C(n))return n;let r=Hm(t);for(let i of P(n)){if(N(t.properties,i)){n[i]=ah(e,t.properties[i],n[i]);continue}if(T(r)&&M(r,!0)||Qe(r)&&Im(e,r,n[i])){n[i]=ah(e,r,n[i]);continue}delete n[i]}return n}function Wm(e,t,n){if(!k(n))return n;let r=Hm(t),[i,a]=[new RegExp(Rr(t)),Br(t)];for(let t of P(n)){if(i.test(t)){n[t]=ah(e,a,n[t]);continue}if(T(r)&&M(r,!0)||Qe(r)&&Im(e,r,n[t])){n[t]=ah(e,r,n[t]);continue}delete n[t]}return n}function Gm(e,t,n){return N(e,t.$ref)?ah(e,e[t.$ref],n):n}function Km(e,t,n){if(!C(n))return n;let r=Math.min(n.length,t.items.length);for(let i=0;i<r;i++)n[i]=ah(e,t.items[i],n[i]);return ue(n.length,r)?n.slice(0,r):n}function qm(e){return e}function Jm(e){let t={};for(let n of Object.getOwnPropertyNames(e))t[n]=th(e[n]);for(let n of Object.getOwnPropertySymbols(e))t[n]=th(e[n]);return t}function Ym(e){return he(e)?qm(e):Jm(e)}function Xm(e){return e.map(e=>th(e))}function Zm(e){return e.slice()}function Qm(e){return new Map(th([...e.entries()]))}function $m(e){return new Set(th([...e.values()]))}function eh(e){return e}function th(e){return je(e)?Zm(e):Fe(e)?Qm(e):Pe(e)?$m(e):C(e)?Xm(e):k(e)?Ym(e):eh(e)}function nh(e,t){return JSON.stringify(e).localeCompare(JSON.stringify(t))}function rh(e,t=1){return e.sort((e,n)=>{let r=Fa(e,n);return(M(r,`disjoint`)?nh(e,n):M(r,`right-inside`)?1:M(r,`left-inside`)?-1:nh(e,n))*t})}function ih(e,t,n){for(let r of rh(t.anyOf)){let t=ah(e,r,th(n));if(Im(e,r,t))return t}return n}function ah(e,t,n){return bt(t)?Lm(e,t,n):vt(t)?Rm(e,t,n):Kt(t)?zm(e,t,n):Qt(t)?Vm(e,t,n):Bt(t)?Um(e,t,n):Vr(t)?Wm(e,t,n):At(t)?Gm(e,t,n):or(t)?Km(e,t,n):Ht(t)?ih(e,t,n):n}function oh(...e){let[t,n,r]=Jt(e,{3:(e,t,n)=>[e,t,n],2:(e,t)=>[{},e,t]});return ah(t,n,r)}function sh(e){return k(e)&&N(e,`value`)}function L(e){return{value:e}}function ch(e){return C(e)?L(e):L([e])}function lh(e){return M(e,!0)?L(BigInt(1)):L(BigInt(0))}var uh=/^-?(0|[1-9]\d*)n$/,dh=/^-?(0|[1-9]\d*)\.\d+$/,fh=/^-?(0|[1-9]\d*)$/;function ph(e){return uh.test(e)}function mh(e){return dh.test(e)}function hh(e){return fh.test(e)}function gh(e){let t=e.toLowerCase();return ph(e)?L(BigInt(e.slice(0,e.length-1))):mh(e)?L(BigInt(e.split(`.`)[0])):hh(e)?L(BigInt(e)):M(t,`false`)?L(BigInt(0)):M(t,`true`)?L(BigInt(1)):void 0}function _h(e){return w(e)?L(e):T(e)?lh(e):D(e)?L(BigInt(Math.trunc(e))):ce(e)?L(BigInt(0)):A(e)?gh(e):j(e)?L(BigInt(0)):void 0}function vh(e){return M(e,BigInt(0))?L(!1):M(e,BigInt(1))?L(!0):void 0}function yh(e){return M(e,0)?L(!1):M(e,1)?L(!0):void 0}function bh(e){return M(e.toLowerCase(),`false`)?L(!1):M(e.toLowerCase(),`true`)?L(!0):M(e,`0`)?L(!1):M(e,`1`)?L(!0):void 0}function xh(e){return w(e)?vh(e):T(e)?L(e):D(e)?yh(e):ce(e)?L(!1):A(e)?bh(e):j(e)?L(!1):void 0}function Sh(e){return M(e,BigInt(0))?L(null):void 0}function Ch(e){return M(e,!1)?L(null):void 0}function wh(e){return M(e,0)?L(null):void 0}function Th(e){let t=e.toLowerCase();return M(t,`undefined`)||M(t,`null`)||M(e,``)||M(e,`0`)?L(null):void 0}function Eh(e){return w(e)?Sh(e):T(e)?Ch(e):D(e)?wh(e):ce(e)?L(null):A(e)?Th(e):j(e)?L(null):void 0}var Dh=BigInt(2**53-1),Oh=BigInt(-(2**53-1));function kh(e){return e<=Dh&&e>=Oh?L(Number(e)):void 0}function Ah(e){return L(+!!e)}function jh(e){let t=+e;if(D(t))return L(t);let n=e.toLowerCase();if(M(n,`false`))return L(0);if(M(n,`true`))return L(1);let r=_h(e);if(sh(r))return r.value<=Dh&&r.value>=Oh?L(Number(r.value)):void 0}function Mh(e){return w(e)?kh(e):T(e)?Ah(e):D(e)?L(e):ce(e)?L(0):A(e)?jh(e):j(e)?L(0):void 0}function Nh(e){return w(e)||T(e)||D(e)?L(e.toString()):ce(e)?L(`null`):A(e)?L(e):j(e)?L(``):void 0}function Ph(e){return M(e,BigInt(0))?L(void 0):void 0}function Fh(e){return M(e,!1)?L(void 0):void 0}function Ih(e){return M(e,0)?L(void 0):void 0}function Lh(e){let t=e.toLowerCase();return M(t,`undefined`)||M(t,`null`)||M(e,``)||M(e,`0`)?L(void 0):void 0}function Rh(e){return w(e)?Ph(e):T(e)?Fh(e):D(e)?Ih(e):ce(e)?L(void 0):A(e)?Lh(e):j(e)?L(e):void 0}function zh(e,t,n){return ch(n).value.map(n=>pg(e,t.items,n))}function Bh(e,t,n){return t.Convert(n)}function Vh(e,t,n){let r=_h(n);return sh(r)?r.value:n}function Hh(e,t,n){let r=xh(n);return sh(r)?r.value:n}function Uh(e,t,n){return pg({...e,...t.$defs},kt(t.$ref),n)}function Wh(e,t,n){if(t.anyOf.some(t=>Im(e,t,n)))return n;let r=t.anyOf.map(t=>pg(e,t,th(n))).find(n=>Im(e,t,n));return j(r)?n:r}function Gh(e,t,n){return Wh(e,ir(t),n)}function Kh(e,t,n){let r=Mh(n);return sh(r)?Math.trunc(r.value):n}function qh(e,t,n){return pg(e,Ic(Pc(e,t)),n)}function Jh(e,t,n){let r=_h(n);return sh(r)&&M(t.const,r.value)?r.value:n}function Yh(e,t,n){let r=xh(n);return sh(r)&&M(t.const,r.value)?r.value:n}function Xh(e,t,n){let r=Mh(n);return sh(r)&&M(t.const,r.value)?r.value:n}function Zh(e,t,n){let r=Nh(n);return sh(r)&&M(t.const,r.value)?r.value:n}function Qh(e,t,n){return M(t.const,n)?n:An(t)?Jh(e,t,n):jn(t)?Yh(e,t,n):Mn(t)?Xh(e,t,n):Nn(t)?Zh(e,t,n):$t()}function $h(e,t,n){let r=Eh(n);return sh(r)?r.value:n}function eg(e,t,n){let r=Mh(n);return sh(r)?r.value:n}function tg(e,t,n,r){let i=P(r);for(let[a,o]of t)for(let t of i)a.test(t)||(r[t]=pg(e,n,r[t]));return r}function ng(e,t,n){return mt(e)&&j(n[t])}function rg(e,t,n){let r=Se(t.properties),i=P(n);for(let[t,a]of r)for(let r of i)!t.test(r)||ng(a,r,n)||(n[r]=pg(e,a,n[r]));return N(t,`additionalProperties`)&&k(t.additionalProperties)?tg(e,r,t.additionalProperties,n):n}function ig(e,t,n){return O(n)?rg(e,t,n):n}function ag(e,t,n){let r=Se(t.patternProperties),i=P(n);for(let[t,a]of r)for(let r of i)t.test(r)&&(n[r]=pg(e,a,n[r]));return N(t,`additionalProperties`)&&k(t.additionalProperties)?tg(e,r,t.additionalProperties,n):n}function og(e,t,n){return O(n)?ag(e,t,n):n}function sg(e,t,n){return N(e,t.$ref)?pg(e,e[t.$ref],n):n}function cg(e,t,n){let r=Nh(n);return sh(r)?r.value:n}function lg(e,t,n){return pg(e,er(t.pattern),n)}function ug(e,t,n){if(!C(n))return n;for(let r=0;r<Math.min(t.items.length,n.length);r++)n[r]=pg(e,t.items[r],n[r]);return n}function dg(e,t,n){let r=Rh(n);return sh(r)?r.value:n}function fg(e,t,n){return sh(Rh(n))?void 0:n}function pg(e,t,n){return bt(t)?zh(e,t,n):vt(t)?Bh(e,t,n):bn(t)?Vh(e,t,n):xn(t)?Hh(e,t,n):Kt(t)?Uh(e,t,n):Xt(t)?Gh(e,t,n):wn(t)?Kh(e,t,n):Qt(t)?qh(e,t,n):Pn(t)?Qh(e,t,n):In(t)?$h(e,t,n):zn(t)?eg(e,t,n):Bt(t)?ig(e,t,n):Vr(t)?og(e,t,n):At(t)?sg(e,t,n):Un(t)?cg(e,t,n):Oi(t)?lg(e,t,n):or(t)?ug(e,t,n):Kr(t)?dg(e,t,n):Ht(t)?Wh(e,t,n):qr(t)?fg(e,t,n):n}function mg(e,t,n){if(!C(n))return n;for(let r=0;r<n.length;r++)n[r]=wg(e,t.items,n[r]);return n}function hg(e,t,n){return t.Default(n)}function gg(e,t,n){return wg({...e,...t.$defs},kt(t.$ref),n)}function _g(e,t){return j(t)?E(e.default)?e.default():th(e.default):t}function vg(e,t,n){return wg(e,Ic(Pc(e,t)),n)}function yg(e,t,n){if(!k(n))return n;let r=P(t.properties);for(let i of r)j(wg(e,t.properties[i],n[i]))&&(mt(t.properties[i])||!N(t.properties[i],`default`))||(n[i]=wg(e,t.properties[i],n[i]));if(!ql(t)||T(t.additionalProperties))return n;for(let i of P(n))r.includes(i)||(n[i]=wg(e,t.additionalProperties,n[i]));return n}function bg(e,t,n){if(!k(n))return n;let[r,i]=[new RegExp(Rr(t)),Br(t)];for(let t of P(n))r.test(t)&&$l(i)&&(n[t]=wg(e,i,n[t]));if(!ql(t))return n;for(let i of P(n))r.test(i)||(n[i]=wg(e,t.additionalProperties,n[i]));return n}function xg(e,t,n){return N(e,t.$ref)?wg(e,e[t.$ref],n):n}function Sg(e,t,n){if(!C(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]=wg(e,r[t],n[t]));return n}function Cg(e,t,n){for(let r of t.anyOf){let t=wg(e,r,th(n));if(Im(e,r,t))return t}return n}function wg(e,t,n){let r=$l(t)?_g(t,n):n;return bt(t)?mg(e,t,r):vt(t)?hg(e,t,r):Kt(t)?gg(e,t,r):Qt(t)?vg(e,t,r):Bt(t)?yg(e,t,r):Vr(t)?bg(e,t,r):At(t)?xg(e,t,r):or(t)?Sg(e,t,r):Ht(t)?Cg(e,t,r):r}function Tg(e,t,n){return t[`~codec`].decode(n)}function Eg(e,t,n){return t[`~codec`].encode(n)}function Dg(e,t,n,r){return vee(n)?M(e,`Decode`)?Tg(t,n,r):Eg(t,n,r):r}function Og(e,t,n,r){if(!C(r))return $t();for(let i=0;i<r.length;i++)r[i]=Zg(e,t,n.items,r[i]);return Dg(e,t,n,r)}function kg(e,t,n,r){let i=Dg(e,t,n,r);if(!C(i))return i;for(let r=0;r<i.length;r++)i[r]=Zg(e,t,n.items,i[r]);return i}function Ag(e,t,n,r){return M(e,`Decode`)?Og(e,t,n,r):kg(e,t,n,r)}function jg(e,t,n,r){return r=Zg(e,{...t,...n.$defs},kt(n.$ref),r),Dg(e,t,n,r)}function Mg(e){return e.reduce((e,t)=>({...e,...t}),{})}function Ng(e,t){for(let n of t)if(!De(e,n))return n;return e}function Pg(e,t,n,r){if(M(n.allOf.length,0))return Dg(e,t,n,r);let i=n.allOf.map(n=>Zg(e,t,n,oh(n,th(r))));return Dg(e,t,n,i.every(e=>k(e))?Mg(i):Ng(r,i))}function Fg(e,t,n,r){if(M(n.allOf.length,0))return Dg(e,t,n,r);let i=Dg(e,t,n,r),a=n.allOf.map(n=>Zg(e,t,n,oh(n,th(i))));return a.every(e=>k(e))?Mg(a):Ng(i,a)}function Ig(e,t,n,r){return M(e,`Decode`)?Pg(e,t,n,r):Fg(e,t,n,r)}function Lg(e,t,n,r){if(!O(r))return $t();for(let i of P(n.properties))!N(r,i)||ng(n.properties[i],i,r)||(r[i]=Zg(e,t,n.properties[i],r[i]));return Dg(e,t,n,r)}function Rg(e,t,n,r){let i=Dg(e,t,n,r);if(!O(i))return i;for(let r of P(n.properties))!N(i,r)||ng(n.properties[r],r,i)||(i[r]=Zg(e,t,n.properties[r],i[r]));return i}function zg(e,t,n,r){return M(e,`Decode`)?Lg(e,t,n,r):Rg(e,t,n,r)}function Bg(e,t,n,r){if(!O(r))return $t();let i=new RegExp(Rr(n));for(let a of P(r))i.test(a)||$t(),r[a]=Zg(e,t,Br(n),r[a]);return Dg(e,t,n,r)}function Vg(e,t,n,r){let i=Dg(e,t,n,r);if(!O(i))return i;let a=new RegExp(Rr(n));for(let r of P(i))a.test(r)&&(i[r]=Zg(e,t,Br(n),i[r]));return i}function Hg(e,t,n,r){return M(e,`Decode`)?Bg(e,t,n,r):Vg(e,t,n,r)}function Ug(e,t,n,r){return N(t,n.$ref)?Zg(e,t,t[n.$ref],r):r}function Wg(e,t,n,r){return M(e,`Decode`)?Dg(e,t,n,Ug(e,t,n,r)):Ug(e,t,n,Dg(e,t,n,r))}function Gg(e,t,n,r){if(!C(r))return $t();for(let i=0;i<Math.min(n.items.length,r.length);i++)r[i]=Zg(e,t,n.items[i],r[i]);return Dg(e,t,n,r)}function Kg(e,t,n,r){let i=Dg(e,t,n,r);if(!C(i))return r;for(let r=0;r<Math.min(n.items.length,i.length);r++)i[r]=Zg(e,t,n.items[r],i[r]);return i}function qg(e,t,n,r){return M(e,`Decode`)?Gg(e,t,n,r):Kg(e,t,n,r)}function Jg(e,t,n,r){for(let i of rh(n.anyOf,1))if(Im(t,i,r))return Dg(e,t,n,Zg(e,t,i,r));return r}function Yg(e,t,n,r){let i=Dg(e,t,n,r);for(let r of rh(n.anyOf,-1)){let n=Zg(e,t,r,th(i));if(Im(t,r,n))return n}return i}function Xg(e,t,n,r){return M(e,`Decode`)?Jg(e,t,n,r):Yg(e,t,n,r)}function Zg(e,t,n,r){return bt(n)?Ag(e,t,n,r):Kt(n)?jg(e,t,n,r):Qt(n)?Ig(e,t,n,r):Bt(n)?zg(e,t,n,r):Vr(n)?Hg(e,t,n,r):At(n)?Wg(e,t,n,r):or(n)?qg(e,t,n,r):Ht(n)?Xg(e,t,n,r):Dg(e,t,n,r)}Vt([zt({type:On(`insert`),path:Hn(),value:Ut()}),Object({type:On(`update`),path:Hn(),value:Ut()}),zt({type:On(`delete`),path:Hn()})]);function Qg(e){return typeof e==`object`&&!!e&&`source`in e&&`payload`in e&&typeof e.source==`string`}var $g=Symbol.for(`yaml.alias`),e_=Symbol.for(`yaml.document`),t_=Symbol.for(`yaml.map`),n_=Symbol.for(`yaml.pair`),r_=Symbol.for(`yaml.scalar`),i_=Symbol.for(`yaml.seq`),a_=Symbol.for(`yaml.node.type`),o_=e=>!!e&&typeof e==`object`&&e[a_]===$g,s_=e=>!!e&&typeof e==`object`&&e[a_]===e_,c_=e=>!!e&&typeof e==`object`&&e[a_]===t_,l_=e=>!!e&&typeof e==`object`&&e[a_]===n_,u_=e=>!!e&&typeof e==`object`&&e[a_]===r_,d_=e=>!!e&&typeof e==`object`&&e[a_]===i_;function f_(e){if(e&&typeof e==`object`)switch(e[a_]){case t_:case i_:return!0}return!1}function p_(e){if(e&&typeof e==`object`)switch(e[a_]){case $g:case t_:case r_:case i_:return!0}return!1}var m_=e=>(u_(e)||f_(e))&&!!e.anchor,h_=Symbol(`break visit`),g_=Symbol(`skip children`),__=Symbol(`remove node`);function v_(e,t){let n=S_(t);s_(e)?y_(null,e.contents,n,Object.freeze([e]))===__&&(e.contents=null):y_(null,e,n,Object.freeze([]))}v_.BREAK=h_,v_.SKIP=g_,v_.REMOVE=__;function y_(e,t,n,r){let i=C_(e,t,n,r);if(p_(i)||l_(i))return w_(e,r,i),y_(e,i,n,r);if(typeof i!=`symbol`){if(f_(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=y_(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===h_)return h_;else i===__&&(t.items.splice(e,1),--e)}}else if(l_(t)){r=Object.freeze(r.concat(t));let e=y_(`key`,t.key,n,r);if(e===h_)return h_;e===__&&(t.key=null);let i=y_(`value`,t.value,n,r);if(i===h_)return h_;i===__&&(t.value=null)}}return i}async function b_(e,t){let n=S_(t);s_(e)?await x_(null,e.contents,n,Object.freeze([e]))===__&&(e.contents=null):await x_(null,e,n,Object.freeze([]))}b_.BREAK=h_,b_.SKIP=g_,b_.REMOVE=__;async function x_(e,t,n,r){let i=await C_(e,t,n,r);if(p_(i)||l_(i))return w_(e,r,i),x_(e,i,n,r);if(typeof i!=`symbol`){if(f_(t)){r=Object.freeze(r.concat(t));for(let e=0;e<t.items.length;++e){let i=await x_(e,t.items[e],n,r);if(typeof i==`number`)e=i-1;else if(i===h_)return h_;else i===__&&(t.items.splice(e,1),--e)}}else if(l_(t)){r=Object.freeze(r.concat(t));let e=await x_(`key`,t.key,n,r);if(e===h_)return h_;e===__&&(t.key=null);let i=await x_(`value`,t.value,n,r);if(i===h_)return h_;i===__&&(t.value=null)}}return i}function S_(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 C_(e,t,n,r){if(typeof n==`function`)return n(e,t,r);if(c_(t))return n.Map?.(e,t,r);if(d_(t))return n.Seq?.(e,t,r);if(l_(t))return n.Pair?.(e,t,r);if(u_(t))return n.Scalar?.(e,t,r);if(o_(t))return n.Alias?.(e,t,r)}function w_(e,t,n){let r=t[t.length-1];if(f_(r))r.items[e]=n;else if(l_(r))e===`key`?r.key=n:r.value=n;else if(s_(r))r.contents=n;else{let e=o_(r)?`alias`:`scalar`;throw Error(`Cannot replace node with ${e} parent`)}}var T_={"!":`%21`,",":`%2C`,"[":`%5B`,"]":`%5D`,"{":`%7B`,"}":`%7D`},E_=e=>e.replace(/[!,[\]{}]/g,e=>T_[e]),D_=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_(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&&p_(e.contents)){let t={};v_(e.contents,(e,n)=>{p_(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
  `)}};D_.defaultYaml={explicit:!1,version:`1.2`},D_.defaultTags={"!!":`tag:yaml.org,2002:`};function O_(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 k_(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=k_(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=k_(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=k_(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=k_(e,r,t,n);i===void 0?delete r[t]:i!==n&&(r[t]=i)}return e.call(t,n,r)}function A_(e,t,n){if(Array.isArray(e))return e.map((e,t)=>A_(e,String(t),n));if(e&&typeof e.toJSON==`function`){if(!n||!m_(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 j_=class{constructor(e){Object.defineProperty(this,a_,{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(!s_(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=A_(this,``,a);if(typeof r==`function`)for(let{count:e,res:t}of a.anchors.values())r(t,e);return typeof i==`function`?k_(i,{"":o},``,o):o}},M_=class extends j_{constructor(e){super($g),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=[],v_(e,{Node:(e,t)=>{(o_(t)||m_(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||=(A_(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=N_(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(O_(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 N_(e,t,n){if(o_(t)){let r=t.resolve(e),i=n&&r&&n.get(r);return i?i.count*i.aliasCount:0}else if(f_(t)){let r=0;for(let i of t.items){let t=N_(e,i,n);t>r&&(r=t)}return r}else if(l_(t)){let r=N_(e,t.key,n),i=N_(e,t.value,n);return Math.max(r,i)}return 1}var P_=e=>!e||typeof e!=`function`&&typeof e!=`object`,F_=class extends j_{constructor(e){super(r_),this.value=e}toJSON(e,t){return t?.keep?this.value:A_(this.value,e,t)}toString(){return String(this.value)}};F_.BLOCK_FOLDED=`BLOCK_FOLDED`,F_.BLOCK_LITERAL=`BLOCK_LITERAL`,F_.PLAIN=`PLAIN`,F_.QUOTE_DOUBLE=`QUOTE_DOUBLE`,F_.QUOTE_SINGLE=`QUOTE_SINGLE`;var I_=`tag:yaml.org,2002:`;function L_(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 R_(e,t,n){if(s_(e)&&(e=e.contents),p_(e))return e;if(l_(e)){let t=n.schema[t_].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 M_(c.anchor);c={anchor:null,node:null},s.set(e,c)}t?.startsWith(`!!`)&&(t=I_+t.slice(2));let l=L_(e,t,o.tags);if(!l){if(e&&typeof e.toJSON==`function`&&(e=e.toJSON()),!e||typeof e!=`object`){let t=new F_(e);return c&&(c.node=t),t}l=e instanceof Map?o[t_]:Symbol.iterator in Object(e)?o[i_]:o[t_]}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 F_(e);return t?u.tag=t:l.default||(u.tag=l.tag),c&&(c.node=u),u}function z_(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 R_(r,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error(`This should not happen, please report a bug.`)},schema:e,sourceObjects:new Map})}var B_=e=>e==null||typeof e==`object`&&!!e[Symbol.iterator]().next().done,V_=class extends j_{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=>p_(t)||l_(t)?t.clone(e):t),this.range&&(t.range=this.range.slice()),t}addIn(e,t){if(B_(e))this.add(t);else{let[n,...r]=e,i=this.get(n,!0);if(f_(i))i.addIn(r,t);else if(i===void 0&&this.schema)this.set(n,z_(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(f_(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&&u_(i)?i.value:i:f_(i)?i.getIn(r,t):void 0}hasAllNullValues(e){return this.items.every(t=>{if(!l_(t))return!1;let n=t.value;return n==null||e&&u_(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 f_(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(f_(e))e.setIn(r,t);else if(e===void 0&&this.schema)this.set(n,z_(this.schema,r,t));else throw Error(`Expected YAML collection at ${n}. Remaining path: ${r}`)}}},H_=e=>e.replace(/^(?!$)(?: $)?/gm,`#`);function U_(e,t){return/^\n+$/.test(e)?e.substring(1):t?e.replace(/^(?! *$)/gm,t):e}var W_=(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 iy(e,t,n,r,i,a,o){let s=await Fl(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 ay(e){let t=ry(ey(e.messages));return iy(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var oy=ny,sy=`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.`,cy={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 ly(e){return cy[e.split(`.`).pop()?.toLowerCase()??``]??`application/octet-stream`}function uy(e){return e.startsWith(`image/`)}function dy(e){return e.startsWith(`video/`)}function fy(e){return uy(e)||dy(e)}function py(e){return fy(ly(e))}var my=`agent-sessions`,hy=1,gy=`sessions`;function _y(){return new Promise((e,t)=>{let n=indexedDB.open(my,hy);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(gy)||e.createObjectStore(gy,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var vy=class{dbPromise=null;getDB(){return this.dbPromise||=_y(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(gy,`readwrite`).objectStore(gy).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(gy,`readonly`).objectStore(gy).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(gy,`readwrite`).objectStore(gy).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(gy,`readonly`).objectStore(gy).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(gy,`readwrite`).objectStore(gy).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()}}},yy=$v(`tool-ui`),by=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}),yy.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){yy.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}yy.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),yy.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&&yy.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}};async function xy(e,t){let n=e.id??by.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return by.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):yy.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}var Sy=$v(`image-processor`),Cy=3932160,wy=1568,Ty=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function Ey(e){let t=0;return e.endsWith(`==`)?t=2:e.endsWith(`=`)&&(t=1),Math.ceil(e.length*3/4)-t}function Dy(e){return Ty.has(e)}function Oy(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 ky(e){if(!Dy(e.mimeType))return Sy.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=Oy(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;Sy.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-CjAru4KB.js`),[]);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return Sy.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 Sy.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=wy/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),Sy.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>Cy&&s!==`JPEG`?(Sy.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>Cy&&(Sy.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 Sy.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>Cy)return Sy.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 Sy.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return Sy.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`})]`}}}$v(`tool-adapter`);var Ay=c({loadAndClearPendingHandle:()=>Iy,openMountPickerPopup:()=>Py,reactivateHandle:()=>Ly,storePendingHandle:()=>Fy}),jy=$v(`mount-picker-popup`),My=`slicc-pending-mount`,Ny=6e4;function Py(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})},Ny),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(),jy.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 Fy(e,t){let n=await new Promise((e,t)=>{let n=indexedDB.open(My,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 Iy(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(My,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=()=>{jy.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 Ly(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`}},Ry=300*1e3,zy=Symbol(`mount:timeout`),By=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=by.generateId(),r=!1,i=xy({id:e,html:`
68
+ `).trim()}async function ay(e){let t=ry(ey(e.messages));return iy(e.model,e.apiKey,t,e.instruction,e.maxTokens,e.headers,e.signal)}var oy=ny,sy=`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.`,cy={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 ly(e){return cy[e.split(`.`).pop()?.toLowerCase()??``]??`application/octet-stream`}function uy(e){return e.startsWith(`image/`)}function dy(e){return e.startsWith(`video/`)}function fy(e){return uy(e)||dy(e)}function py(e){return fy(ly(e))}var my=`agent-sessions`,hy=1,gy=`sessions`;function _y(){return new Promise((e,t)=>{let n=indexedDB.open(my,hy);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(gy)||e.createObjectStore(gy,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var vy=class{dbPromise=null;getDB(){return this.dbPromise||=_y(),this.dbPromise}async save(e){let t=await this.getDB();return new Promise((n,r)=>{let i=t.transaction(gy,`readwrite`).objectStore(gy).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(gy,`readonly`).objectStore(gy).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(gy,`readwrite`).objectStore(gy).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(gy,`readonly`).objectStore(gy).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(gy,`readwrite`).objectStore(gy).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()}}},yy=$v(`tool-ui`),by=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}),yy.info(`Tool UI registered`,{id:e})}async handleAction(e,t){let n=this.pending.get(e);if(!n){yy.warn(`Action for unknown tool UI`,{id:e,action:t.action});return}yy.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),yy.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&&yy.info(`All tool UIs cancelled`,{reason:e,count:t})}isPending(e){return this.pending.has(e)}getPendingIds(){return[...this.pending.keys()]}};async function xy(e,t){let n=e.id??by.generateId(),r,i,a=new Promise((e,t)=>{r=e,i=t});return by.register(n,e,r,i),t?t({content:[{type:`tool_ui`,requestId:n,html:e.html}]}):yy.warn(`showToolUI called without onUpdate callback — UI may not render`),a.finally(()=>{t&&t({content:[{type:`tool_ui_done`,requestId:n}]})})}var Sy=$v(`image-processor`),Cy=3932160,wy=1568,Ty=new Set([`image/jpeg`,`image/png`,`image/gif`,`image/webp`]);function Ey(e){let t=0;return e.endsWith(`==`)?t=2:e.endsWith(`=`)&&(t=1),Math.ceil(e.length*3/4)-t}function Dy(e){return Ty.has(e)}function Oy(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 ky(e){if(!Dy(e.mimeType))return Sy.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=Oy(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;Sy.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-D5OOE7EJ.js`),[]);r=e.getMagick,i=e.MIME_TO_MAGICK_FORMAT}catch(e){return Sy.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 Sy.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=wy/a,i=Math.round(n*e),o=Math.round(r*e);t.resize(i,o),Sy.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>Cy&&s!==`JPEG`?(Sy.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>Cy&&(Sy.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 Sy.warn(`ImageMagick produced no output`),{type:`text`,text:`[Image removed: could not be processed (empty output from resize)]`};if(o.data.length>Cy)return Sy.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 Sy.info(`Image processed successfully`,{originalBase64:t,newBase64:c.length,mimeType:o.mime}),{type:`image`,data:c,mimeType:o.mime}}catch(n){return Sy.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`})]`}}}$v(`tool-adapter`);var Ay=c({loadAndClearPendingHandle:()=>Iy,openMountPickerPopup:()=>Py,reactivateHandle:()=>Ly,storePendingHandle:()=>Fy}),jy=$v(`mount-picker-popup`),My=`slicc-pending-mount`,Ny=6e4;function Py(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})},Ny),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(),jy.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 Fy(e,t){let n=await new Promise((e,t)=>{let n=indexedDB.open(My,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 Iy(e){let t=await new Promise((e,t)=>{let n=indexedDB.open(My,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=()=>{jy.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 Ly(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`}},Ry=300*1e3,zy=Symbol(`mount:timeout`),By=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=by.generateId(),r=!1,i=xy({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 Iy(e.idbKey);return t?(await Ly(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 zy;throw e}),a,o=new Promise(t=>{a=setTimeout(()=>{r=!0,by.cancel(e,`mount: timed out`),t(zy)},Ry)}),s=await Promise.race([i,o]);if(a&&clearTimeout(a),s===zy)throw Error(`mount: timed out after ${Math.round(Ry/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 Py();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 Iy(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);await Ly(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 Vy(){return crypto.randomUUID()}function Hy(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 Uy(e){return e.split(`/`).pop()||`data`}function Wy(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 vie=5*1024*1024,Gy=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=Wy(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??vie,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=Hy(Uy(e),ly(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 yie(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 bie=25*1024*1024,Ky=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=yie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??bie,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}},xie=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function Sie(){let{getAccounts:e}=await I(async()=>{let{getAccounts:e}=await Promise.resolve().then(()=>T8);return{getAccounts:e}},void 0),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new xie(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}var Cie=`slicc-mount-cache`,qy=`listings`,Jy=`bodies`,Yy=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??Cie}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(qy)||e.createObjectStore(qy),e.objectStoreNames.contains(Jy)||e.createObjectStore(Jy)},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(qy,`readonly`).objectStore(qy).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(qy,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(qy).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(qy,`readwrite`);i.objectStore(qy).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(Jy,`readonly`).objectStore(Jy).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,Jy,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,Jy,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(Jy,`readwrite`);i.objectStore(Jy).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(qy),n(Jy)])}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(Jy,`readonly`).objectStore(Jy),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(Jy,`readwrite`),i=r.objectStore(Jy);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}};function Xy(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function wie(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 Tie=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),Eie=new Set([101,103,204,205,304]);function Qy(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`||Tie.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=wie(e.bodyBase64)}catch(e){throw new R(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=Eie.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function $y(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 eb(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 tb(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 Qy(Xy()?await eb(`mount.s3-sign-and-forward`,n):await $y(`/api/s3-sign-and-forward`,n))}}function nb(e){let t=e?.getImsToken??(async()=>(await Sie()).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 Qy(Xy()?await eb(`mount.da-sign-and-forward`,r):await $y(`/api/da-sign-and-forward`,r))}}var rb=c({DaMountBackend:()=>Gy,RemoteMountCache:()=>Yy,S3MountBackend:()=>Ky,makeSignedFetchDa:()=>nb,makeSignedFetchS3:()=>tb}),Die=`slicc-mount-table`,Oie=2,ib=`mounts`,ab=`mount-entries`;function ob(){return new Promise((e,t)=>{let n=indexedDB.open(Die,Oie);n.onupgradeneeded=e=>{let t=n.result,r=e.oldVersion;if(t.objectStoreNames.contains(ib)||t.createObjectStore(ib),t.objectStoreNames.contains(ab)||t.createObjectStore(ab),r<2){let e=n.transaction,t=e.objectStore(ib),r=e.objectStore(ab),i=t.getAllKeys();i.onsuccess=()=>{for(let e of i.result){if(typeof e!=`string`)continue;let t={targetPath:e,descriptor:{kind:`local`,mountId:Vy(),idbHandleKey:e},createdAt:Date.now()};r.put(t,e)}}}},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function kie(e,t){let n=await ob();try{let r=e.descriptor.kind===`local`&&t?[ib,ab]:[ab],i=n.transaction(r,`readwrite`);i.objectStore(ab).put(e,e.targetPath),e.descriptor.kind===`local`&&t&&i.objectStore(ib).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 Aie(e){let t=await ob();try{let n=t.transaction([ib,ab],`readwrite`);n.objectStore(ab).delete(e),n.objectStore(ib).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 sb(){let e=await ob();try{return await new Promise((t,n)=>{let r=e.transaction(ab,`readonly`),i=r.objectStore(ab).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 cb(e){let t=await ob();try{return await new Promise((n,r)=>{let i=t.transaction(ib,`readonly`).objectStore(ib).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}finally{t.close()}}async function jie(){let e=await ob();try{let t=e.transaction([ib,ab],`readwrite`);t.objectStore(ib).clear(),t.objectStore(ab).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 lb(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await cb(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=By.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 Yy({mountId:o.mountId,ttlMs:3e4}),a=new Ky({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:tb(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 Yy({mountId:o.mountId,ttlMs:3e4}),a=new Gy({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:nb()});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 Mie=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function ub(e){let{include:t,exclude:n}=Mie;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var Nie=Object.assign({"./built-in/azure-ai-foundry.ts":()=>I(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>I(()=>import(`./azure-openai-BCkYyuIi.js`),__vite__mapDeps([16,3])),"./built-in/bedrock-camp.ts":()=>I(()=>Promise.resolve().then(()=>Bxe),void 0),"./built-in/local-llm.ts":()=>I(()=>import(`./local-llm-5D5Ih6eI.js`),__vite__mapDeps([17,14,5,1,2,3]))}),Pie=Object.assign({"/packages/webapp/providers/adobe.ts":()=>I(()=>import(`./adobe-O8TgWyny.js`),__vite__mapDeps([18,19])),"/packages/webapp/providers/github-copilot.ts":()=>I(()=>import(`./github-copilot-0erXdX4H.js`),[]),"/packages/webapp/providers/github.ts":()=>I(()=>import(`./github-CoPiTTXt.js`),__vite__mapDeps([20,21,19])),"/packages/webapp/providers/openai-codex.ts":()=>I(()=>import(`./openai-codex-D0fF-yfr.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([22,23])),"/packages/webapp/providers/xai-grok.ts":()=>I(()=>import(`./xai-grok-oCGDfomI.js`),__vite__mapDeps([24,25,23,22]))}),db=new Map,fb=null;function Fie(){return fb||(fb=(async()=>{for(let[e,t]of Object.entries(Nie)){let e=await t();e.config&&ub(e.config.id)&&(db.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(Pie)){let e=await t();e.config&&(db.set(e.config.id,e.config),e.register?.())}})(),fb)}function pb(e){return db.get(e)}function Iie(){return[...db.keys()]}function Lie(e){db.set(e.id,e)}var Rie=`slicc-groups`,mb=3,hb={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},gb=null;async function zie(){if(gb){let e=Object.values(hb).every(e=>gb.objectStoreNames.contains(e));if(gb.version===mb&&e)return gb;gb.close(),gb=null}return new Promise((e,t)=>{let n=indexedDB.open(Rie,mb);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(hb.MESSAGES)){let e=t.createObjectStore(hb.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(hb.SESSIONS)||t.createObjectStore(hb.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(hb.TASKS)||t.createObjectStore(hb.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(hb.STATE)||t.createObjectStore(hb.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(hb.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(hb.SCOOPS)||t.createObjectStore(hb.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(hb.WEBHOOKS)||t.createObjectStore(hb.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(hb.CRONTASKS)||t.createObjectStore(hb.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{gb=n.result,e(gb)},n.onerror=()=>t(n.error)})}async function _b(e,t=`readonly`){return(await zie()).transaction(e,t).objectStore(e)}async function Bie(){let e=await _b(hb.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function Vie(e){let t=await _b(hb.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 vb(e,t){let n=await _b(hb.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}function yb(e){return e.headers.get(`x-proxy-error`)===`1`}async function bb(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return Hie(n,t)}function Hie(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 xb=`tray`,Sb=`trayWorkerUrl`,Cb=`lead`;function wb(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 Tb(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=wb(t.toString());return s?{workerBaseUrl:s,trayId:i,joinUrl:n}:null}catch{return null}}function Uie(e,t){let n=new URL(e);return n.searchParams.delete(Sb),n.searchParams.delete(Cb),n.searchParams.set(xb,t),n.toString()}var Wie=c({DEFAULT_PRODUCTION_TRAY_WORKER_BASE_URL:()=>Ob,DEFAULT_STAGING_TRAY_WORKER_BASE_URL:()=>Gie,TRAY_JOIN_STORAGE_KEY:()=>Db,TRAY_LEGACY_LEAD_QUERY_PARAM:()=>Cb,TRAY_QUERY_PARAM:()=>xb,TRAY_WORKER_QUERY_PARAM:()=>Sb,TRAY_WORKER_STORAGE_KEY:()=>Eb,buildTrayLaunchUrl:()=>Fb,buildTrayLeadLaunchUrl:()=>Jie,buildTrayLeadValue:()=>qie,buildTrayUrlValue:()=>Pb,buildTrayWorkerUrl:()=>kb,fetchRuntimeConfig:()=>Lb,hasStoredTrayJoinUrl:()=>Nb,normalizeTrayWorkerBaseUrl:()=>wb,parseTrayJoinUrlValue:()=>jb,parseTrayLeadValue:()=>Kie,parseTrayUrlValue:()=>Ab,resolveTrayRuntimeConfig:()=>Ib,resolveTrayWorkerBaseUrl:()=>Yie,storeTrayJoinUrl:()=>Mb}),Eb=`slicc.trayWorkerBaseUrl`,Db=`slicc.trayJoinUrl`,Ob=`https://www.sliccy.ai`,Gie=`https://slicc-tray-hub-staging.minivelos.workers.dev`;function kb(e,t){let n=wb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function Ab(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 Tb(t.toString());let i=wb(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function jb(e){let t=Ab(e);return t?.joinUrl?t:null}function Mb(e,t){let n=jb(t);return n?(e.setItem(Db,n.joinUrl),e.setItem(Eb,n.workerBaseUrl),n):null}function Nb(e){return!!jb(e?.getItem(`slicc.trayJoinUrl`)??null)}function Pb(e,t){let n=wb(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 Fb(e,t,n){return Uie(e,Pb(t,n))}function Kie(e){return Ab(e)}function qie(e,t){return Pb(e,t)}function Jie(e,t,n){return Fb(e,t,n)}async function Ib(e){let t=Xie(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(Db,t.joinUrl),e.storage.setItem(Eb,t.workerBaseUrl)),t;let n=jb(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(Eb,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await Zie(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(Db,r.joinConfig.joinUrl),e.storage.setItem(Eb,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=wb(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=wb(e.envBaseUrl??null),s=wb(e.defaultWorkerBaseUrl??null),c=i??a??o??s;return c?(e.storage&&e.storage.setItem(Eb,c),{workerBaseUrl:c,trayId:null,joinUrl:null}):null}async function Yie(e){return(await Ib(e))?.workerBaseUrl??null}async function Lb(e=fetch){try{let t=await e(`/api/runtime-config`,{cache:`no-store`});return t.ok?await t.json():null}catch{return null}}function Xie(e){try{let t=new URL(e),n=Ab(t.searchParams.get(xb));if(n)return n;let r=Ab(t.searchParams.get(Cb));if(r)return r;let i=wb(t.searchParams.get(Sb));return i?{workerBaseUrl:i,trayId:null,joinUrl:null}:Tb(e)||null}catch{return null}}async function Zie(e){let t=await e();if(!t)return null;let n=jb(t.trayJoinUrl??null);return{workerBaseUrl:wb(t.trayWorkerBaseUrl??null),joinConfig:n}}var Rb=$v(`tray-leader`),Qie=`leader-tray-session`,$ie=3e4,eae=1e4,tae=1e3,nae=3e4,rae=2,iae=20,zb={state:`inactive`,session:null,error:null};function Bb(){return{...zb,session:zb.session?{...zb.session}:null}}var Vb=new Set;function aae(e){return Vb.add(e),()=>{Vb.delete(e)}}function Hb(e){if(zb={...e,session:e.session?{...e.session}:null},Vb.size!==0)for(let e of[...Vb])try{e(Bb())}catch{}}var Ub=class{key;constructor(e=Qie){this.key=e}async load(){return oae(await Vie(this.key))}async save(e){await vb(this.key,JSON.stringify(e))}async clear(){await vb(this.key,``)}};function oae(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 sae=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 Ub,this.fetchImpl=e.fetchImpl??uae(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??$ie,this.connectTimeoutMs=e.connectTimeoutMs??eae;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??tae,this.reconnectMaxDelayMs=n.maxDelayMs??nae,this.reconnectBackoffMultiplier=n.backoffMultiplier??rae,this.reconnectMaxAttempts=n.maxAttempts??iae,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return Hb({state:`leader`,session:this.currentSession,error:null}),this.currentSession;Hb({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();Rb.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){Rb.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw Hb({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,Hb({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),Hb({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){Rb.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,Hb({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;Rb.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++,Hb({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),Rb.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,Rb.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){Rb.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),Rb.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,Hb({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),Rb.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||!cae(t))throw t;return Rb.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(kb(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=lae(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){Rb.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=>{Rb.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 Wb.fromResponse(n);return await n.json()}},Wb=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 cae(e){return e instanceof Wb&&[403,404,410].includes(e.status)}function lae(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function uae(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(yb(a))throw Error(await bb(a));return a}}var Gb=$v(`welcome-detection`),Kb=`/shared/.welcomed`,dae=`browser-coding-agent`,fae=1,qb=`sessions`,pae=`session-cone`,Jb=`[Sprinkle Event: welcome]`;function Yb(){return new Promise((e,t)=>{let n=indexedDB.open(dae,fae);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(qb)||e.createObjectStore(qb,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function mae(){return Yb().catch(()=>new Promise((e,t)=>{setTimeout(()=>{Yb().then(e,t)},120)}))}async function Xb(){let e=await mae();try{return await new Promise((t,n)=>{let r=e.transaction(qb,`readonly`).objectStore(qb).get(pae);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function hae(){try{let e=await Xb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>gae(e))}catch(e){return Gb.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function gae(e){let t=e.content;return typeof t==`string`?t.includes(Jb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Jb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Jb)}return!1}):!1}async function Zb(e){let t=!1;try{t=await e.exists(Kb)}catch(e){return Gb.warn(`Failed to read welcomed marker`,{path:Kb,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await hae()?{isFirstRun:!1}:{isFirstRun:!0}}async function _ae(e){await e.writeFile(Kb,`1`)}var Qb=`"action":"onboarding-complete-with-provider"`;function vae(e){let t=e.content;return typeof t==`string`?t.includes(Qb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Qb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Qb)}return!1}):!1}async function yae(){try{let e=await Xb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>vae(e))}catch(e){return Gb.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}s((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 $b=(e,t,n)=>{let r=e instanceof RegExp?ex(e,n):e,i=t instanceof RegExp?ex(t,n):t,a=r!==null&&i!=null&&bae(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)}},ex=(e,t)=>{let n=t.match(e);return n?n[0]:null},bae=(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},tx=`\0SLASH`+Math.random()+`\0`,nx=`\0OPEN`+Math.random()+`\0`,rx=`\0CLOSE`+Math.random()+`\0`,ix=`\0COMMA`+Math.random()+`\0`,ax=`\0PERIOD`+Math.random()+`\0`,xae=new RegExp(tx,`g`),Sae=new RegExp(nx,`g`),Cae=new RegExp(rx,`g`),wae=new RegExp(ix,`g`),Tae=new RegExp(ax,`g`),Eae=/\\\\/g,Dae=/\\{/g,Oae=/\\}/g,kae=/\\,/g,Aae=/\\\./g,jae=1e5;function ox(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Mae(e){return e.replace(Eae,tx).replace(Dae,nx).replace(Oae,rx).replace(kae,ix).replace(Aae,ax)}function Nae(e){return e.replace(xae,`\\`).replace(Sae,`{`).replace(Cae,`}`).replace(wae,`,`).replace(Tae,`.`)}function sx(e){if(!e)return[``];let t=[],n=$b(`{`,`}`,e);if(!n)return e.split(`,`);let{pre:r,body:i,post:a}=n,o=r.split(`,`);o[o.length-1]+=`{`+i+`}`;let s=sx(a);return a.length&&(o[o.length-1]+=s.shift(),o.push.apply(o,s)),t.push.apply(t,o),t}function Pae(e,t={}){if(!e)return[];let{max:n=jae}=t;return e.slice(0,2)===`{}`&&(e=`\\{\\}`+e.slice(2)),cx(Mae(e),n,!0).map(Nae)}function Fae(e){return`{`+e+`}`}function Iae(e){return/^-?0\d/.test(e)}function Lae(e,t){return e<=t}function Rae(e,t){return e>=t}function cx(e,t,n){let r=[],i=$b(`{`,`}`,e);if(!i)return[e];let a=i.pre,o=i.post.length?cx(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+rx+i.post,cx(e,t,!0)):[e];let d;if(l)d=i.body.split(/\.\./);else if(d=sx(i.body),d.length===1&&d[0]!==void 0&&(d=cx(d[0],t,!1).map(Fae),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=ox(d[0]),t=ox(d[1]),n=Math.max(d[0].length,d[1].length),r=d.length===3&&d[2]!==void 0?Math.abs(ox(d[2])):1,i=Lae;t<e&&(r*=-1,i=Rae);let a=d.some(Iae);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,cx(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 zae=1024*64,lx=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>zae)throw TypeError(`pattern is too long`)},Bae={"[: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]},ux=e=>e.replace(/[[\]\\-]/g,`\\$&`),Vae=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),dx=e=>e.join(``),Hae=(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(Bae))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(ux(d)+`-`+ux(t)):t===d&&r.push(ux(t)),d=``,a++;continue}if(e.startsWith(`-]`,a+1)){r.push(ux(t+`-`)),a+=2;continue}if(e.startsWith(`-`,a+1)){d=t,a+=2;continue}r.push(ux(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[Vae(r[0].length===2?r[0].slice(-1):r[0]),!1,u-n,!1];let f=`[`+(l?`^`:``)+dx(r)+`]`,p=`[`+(l?``:`^`)+dx(i)+`]`;return[r.length&&i.length?`(`+f+`|`+p+`)`:r.length?f:p,s,u-n,!0]},fx=(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`),px,Uae=new Set([`!`,`?`,`+`,`*`,`@`]),mx=e=>Uae.has(e),hx=e=>mx(e.type),Wae=new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),Gae=new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),Kae=new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),gx=new Map([[`!`,new Map([[`!`,`@`]])],[`?`,new Map([[`*`,`*`],[`+`,`*`]])],[`@`,new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,new Map([[`?`,`*`],[`*`,`*`]])]]),qae=`(?!(?:^|/)\\.\\.?(?:$|/))`,_x=`(?!\\.)`,Jae=new Set([`[`,`.`]),Yae=new Set([`..`,`.`]),Xae=new Set(`().*{}+?[]^$\\!`),Zae=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),Qae=`[^/]`,$ae=`[^/]*?`,vx=`[^/]+?`,eoe=0,yx=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++eoe;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 px&&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 px&&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 px(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&&mx(n)&&e.charAt(u)===`(`&&i<=a){t.push(d),d=``;let a=new px(n,t);u=px.#f(e,a,u,r,i+1),t.push(a);continue}d+=n}return t.push(d),u}let u=n+1,d=new px(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&&mx(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 px(n,d);d.push(o),u=px.#f(e,o,u,r,i+a);continue}if(n===`|`){d.push(p),p=``,f.push(d),d=new px(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,Gae)}#m(e,t=Wae){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=Kae){return!!t.get(this.type)?.includes(e)}#g(e,t){let n=e.#r[0],r=new px(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!!gx.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=gx.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 px(null,void 0,t);return px.#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()),!hx(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`?px.#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&&Yae.has(this.#r[0]))){let n=Jae,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?qae:o?_x:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,fx(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,fx(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?_x:``)+vx;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?_x:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,fx(i),this.#t=!!this.#t,this.#n]}#x(){if(hx(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+=(Xae.has(c)?`\\`:``)+c;continue}if(c===`*`){if(o)continue;o=!0,i+=n&&/^[*]+$/.test(e)?vx:$ae,t=!0;continue}else o=!1;if(c===`\\`){s===e.length-1?i+=`\\\\`:r=!0;continue}if(c===`[`){let[n,r,o,c]=Hae(e,s);if(o){i+=n,a||=r,s+=o-1,t||=c;continue}}if(c===`?`){i+=Qae,t=!0;continue}i+=Zae(c)}return[i,fx(e),!!t,a]}};px=yx;var toe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),bx=(e,t,n={})=>(lx(t),!n.nocomment&&t.charAt(0)===`#`?!1:new kx(t,n).match(e)),noe=/^\*+([^+@!?\*\[\(]*)$/,roe=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),ioe=e=>t=>t.endsWith(e),aoe=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),ooe=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),soe=/^\*+\.\*+$/,coe=e=>!e.startsWith(`.`)&&e.includes(`.`),loe=e=>e!==`.`&&e!==`..`&&e.includes(`.`),uoe=/^\.\*+$/,doe=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),foe=/^\*+$/,poe=e=>e.length!==0&&!e.startsWith(`.`),moe=e=>e.length!==0&&e!==`.`&&e!==`..`,hoe=/^\?+([^+@!?\*\[\(]*)?$/,goe=([e,t=``])=>{let n=xx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},_oe=([e,t=``])=>{let n=Sx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},voe=([e,t=``])=>{let n=Sx([e]);return t?e=>n(e)&&e.endsWith(t):n},yoe=([e,t=``])=>{let n=xx([e]);return t?e=>n(e)&&e.endsWith(t):n},xx=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},Sx=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},Cx=typeof process==`object`&&process?{}.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,wx={win32:{sep:`\\`},posix:{sep:`/`}};bx.sep=Cx===`win32`?wx.win32.sep:wx.posix.sep;var Tx=Symbol(`globstar **`);bx.GLOBSTAR=Tx;var boe=`[^/]*?`,xoe=`(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?`,Soe=`(?:(?!(?:\\/|^)\\.).)*?`;bx.filter=(e,t={})=>n=>bx(n,e,t);var Ex=(e,t={})=>Object.assign({},e,t);bx.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return bx;let t=bx;return Object.assign((n,r,i={})=>t(n,r,Ex(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,Ex(e,n))}static defaults(n){return t.defaults(Ex(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,Ex(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,Ex(e,r))}},unescape:(n,r={})=>t.unescape(n,Ex(e,r)),escape:(n,r={})=>t.escape(n,Ex(e,r)),filter:(n,r={})=>t.filter(n,Ex(e,r)),defaults:n=>t.defaults(Ex(e,n)),makeRe:(n,r={})=>t.makeRe(n,Ex(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,Ex(e,r)),match:(n,r,i={})=>t.match(n,r,Ex(e,i)),sep:t.sep,GLOBSTAR:Tx})};var Dx=(e,t={})=>(lx(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Pae(e,{max:t.braceExpandMax}));bx.braceExpand=Dx,bx.makeRe=(e,t={})=>new kx(e,t).makeRe(),bx.match=(e,t,n={})=>{let r=new kx(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};var Ox=/[?*]|[+@!]\(.*?\)|\[|\]/,Coe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),kx=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){lx(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||Cx,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]===`?`||!Ox.test(e[2]))&&!Ox.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(Tx)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(Tx,i),o=t.lastIndexOf(Tx),[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===Tx?(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===Tx)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 Dx(this.pattern,this.options)}parse(e){lx(e);let t=this.options;if(e===`**`)return Tx;if(e===``)return``;let n,r=null;(n=e.match(foe))?r=t.dot?moe:poe:(n=e.match(noe))?r=(t.nocase?t.dot?ooe:aoe:t.dot?ioe:roe)(n[1]):(n=e.match(hoe))?r=(t.nocase?t.dot?_oe:goe:t.dot?voe:yoe)(n):(n=e.match(soe))?r=t.dot?loe:coe:(n=e.match(uoe))&&(r=doe);let i=yx.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?boe:t.dot?xoe:Soe,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`?Coe(e):e===Tx?Tx:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e!==Tx||a===Tx||(a===void 0?i!==void 0&&i!==Tx?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==Tx&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=Tx))});let i=t.filter(e=>e!==Tx);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 bx.defaults(e).Minimatch}};bx.AST=yx,bx.Minimatch=kx,bx.escape=toe,bx.unescape=fx;var Ax={};function jx(){throw Error(`gunzipSync is not available in the browser`)}function Mx(){throw Error(`gzipSync is not available in the browser`)}var Nx=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 Nx{};function Px(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 Fx(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 Ix(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 Lx(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 Rx(e,t){return Ix(e,t,``)}function zx(e,t){return Lx(e,t,``)}function Bx(e,t){return t.slice(0,woe(e,t))}function woe(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 Vx(e){let t;for(t=e.length-1;t>=0&&e[t].match(/\s/);t--);return e.substring(t+1)}function Hx(e){let t=e.match(/^\s*/);return t?t[0]:``}var Ux=`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}`,Toe=RegExp(`[${Ux}]+|\\s+|[^${Ux}]`,`ug`);new class extends Nx{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(Toe)||[];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)&&Wx(n,i,r,e),n=e,r=null,i=null)}),(r||i)&&Wx(n,i,r,null),e}};function Wx(e,t,n,r){if(t&&n){let i=Hx(t.value),a=Vx(t.value),o=Hx(n.value),s=Vx(n.value);if(e){let r=Px(i,o);e.value=Lx(e.value,o,r),t.value=Rx(t.value,r),n.value=Rx(n.value,r)}if(r){let e=Fx(a,s);r.value=Ix(r.value,s,e),t.value=zx(t.value,e),n.value=zx(n.value,e)}}else if(n){if(e){let e=Hx(n.value);n.value=n.value.substring(e.length)}if(r){let e=Hx(r.value);r.value=r.value.substring(e.length)}}else if(e&&r){let n=Hx(r.value),i=Hx(t.value),a=Vx(t.value),o=Px(n,i);t.value=Rx(t.value,o);let s=Fx(Rx(n,o),a);t.value=zx(t.value,s),r.value=Ix(r.value,n,s),e.value=Lx(e.value,n,n.slice(0,n.length-s.length))}else if(r){let e=Hx(r.value),n=Bx(Vx(t.value),e);t.value=zx(t.value,n)}else if(e){let n=Bx(Vx(e.value),Hx(t.value));t.value=Rx(t.value,n)}}new class extends Nx{tokenize(e){let t=RegExp(`(\\r?\\n)|[${Ux}]+|[^\\S\\n\\r]+|[^${Ux}]`,`ug`);return e.match(t)||[]}},new class extends Nx{constructor(){super(...arguments),this.tokenize=Gx}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 Iy(e.idbKey);return t?(await Ly(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 zy;throw e}),a,o=new Promise(t=>{a=setTimeout(()=>{r=!0,by.cancel(e,`mount: timed out`),t(zy)},Ry)}),s=await Promise.race([i,o]);if(a&&clearTimeout(a),s===zy)throw Error(`mount: timed out after ${Math.round(Ry/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 Py();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 Iy(e.idbKey);if(!t)throw Error(`mount: no directory handle found in storage`);await Ly(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 Vy(){return crypto.randomUUID()}function Hy(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 Uy(e){return e.split(`/`).pop()||`data`}function Wy(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 vie=5*1024*1024,Gy=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=Wy(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??vie,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=Hy(Uy(e),ly(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 yie(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 bie=25*1024*1024,Ky=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=yie(e.source),this.cache=e.cache,this.maxBodyBytes=e.maxBodyBytes??bie,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}},xie=class extends Error{constructor(e){super(e),this.name=`ProfileNotConfiguredError`}};async function Sie(){let{getAccounts:e}=await I(async()=>{let{getAccounts:e}=await Promise.resolve().then(()=>T8);return{getAccounts:e}},void 0),t=e().find(e=>e.providerId===`adobe`);if(!t?.accessToken)throw new xie(`No Adobe IMS account found. Log in via Settings → Providers → Adobe first.`);return{identity:`adobe-ims`,getBearerToken:async()=>t.accessToken}}var Cie=`slicc-mount-cache`,qy=`listings`,Jy=`bodies`,Yy=class{mountId;ttlMs;dbName;dbPromise=null;constructor(e){this.mountId=e.mountId,this.ttlMs=e.ttlMs,this.dbName=e.dbName??Cie}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(qy)||e.createObjectStore(qy),e.objectStoreNames.contains(Jy)||e.createObjectStore(Jy)},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(qy,`readonly`).objectStore(qy).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(qy,`readwrite`),o={entries:t,cachedAt:Date.now()};a.objectStore(qy).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(qy,`readwrite`);i.objectStore(qy).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(Jy,`readonly`).objectStore(Jy).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,Jy,this.key(e),i)}catch(t){if(t instanceof DOMException&&t.name===`QuotaExceededError`){await this.evictLru(.25);try{await this.txPut(r,Jy,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(Jy,`readwrite`);i.objectStore(Jy).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(qy),n(Jy)])}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(Jy,`readonly`).objectStore(Jy),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(Jy,`readwrite`),i=r.objectStore(Jy);for(let{key:e}of a)i.delete(e);r.oncomplete=()=>e(),r.onerror=()=>n(r.error)})}};function Xy(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function wie(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 Tie=new Set([`invalid_profile`,`invalid_request`,`profile_not_configured`,`fetch_failed`,`internal`]),Eie=new Set([101,103,204,205,304]);function Qy(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`||Tie.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=wie(e.bodyBase64)}catch(e){throw new R(`EIO`,`mount transport: response body decode failed: ${e instanceof Error?e.message:String(e)}`)}let n=Eie.has(e.status)?null:t;return new Response(n,{status:e.status,headers:new Headers(e.headers)})}async function $y(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 eb(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 tb(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 Qy(Xy()?await eb(`mount.s3-sign-and-forward`,n):await $y(`/api/s3-sign-and-forward`,n))}}function nb(e){let t=e?.getImsToken??(async()=>(await Sie()).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 Qy(Xy()?await eb(`mount.da-sign-and-forward`,r):await $y(`/api/da-sign-and-forward`,r))}}var rb=c({DaMountBackend:()=>Gy,RemoteMountCache:()=>Yy,S3MountBackend:()=>Ky,makeSignedFetchDa:()=>nb,makeSignedFetchS3:()=>tb}),Die=`slicc-mount-table`,Oie=2,ib=`mounts`,ab=`mount-entries`;function ob(){return new Promise((e,t)=>{let n=indexedDB.open(Die,Oie);n.onupgradeneeded=e=>{let t=n.result,r=e.oldVersion;if(t.objectStoreNames.contains(ib)||t.createObjectStore(ib),t.objectStoreNames.contains(ab)||t.createObjectStore(ab),r<2){let e=n.transaction,t=e.objectStore(ib),r=e.objectStore(ab),i=t.getAllKeys();i.onsuccess=()=>{for(let e of i.result){if(typeof e!=`string`)continue;let t={targetPath:e,descriptor:{kind:`local`,mountId:Vy(),idbHandleKey:e},createdAt:Date.now()};r.put(t,e)}}}},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}async function kie(e,t){let n=await ob();try{let r=e.descriptor.kind===`local`&&t?[ib,ab]:[ab],i=n.transaction(r,`readwrite`);i.objectStore(ab).put(e,e.targetPath),e.descriptor.kind===`local`&&t&&i.objectStore(ib).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 Aie(e){let t=await ob();try{let n=t.transaction([ib,ab],`readwrite`);n.objectStore(ab).delete(e),n.objectStore(ib).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 sb(){let e=await ob();try{return await new Promise((t,n)=>{let r=e.transaction(ab,`readonly`),i=r.objectStore(ab).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 cb(e){let t=await ob();try{return await new Promise((n,r)=>{let i=t.transaction(ib,`readonly`).objectStore(ib).get(e);i.onsuccess=()=>n(i.result??null),i.onerror=()=>r(i.error)})}finally{t.close()}}async function jie(){let e=await ob();try{let t=e.transaction([ib,ab],`readwrite`);t.objectStore(ib).clear(),t.objectStore(ab).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 lb(e,t,n){let r=[],i=[];for(let a of e){let{targetPath:e,descriptor:o}=a;if(o.kind===`local`){let a=await cb(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=By.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 Yy({mountId:o.mountId,ttlMs:3e4}),a=new Ky({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:tb(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 Yy({mountId:o.mountId,ttlMs:3e4}),a=new Gy({source:o.source,profile:o.profile,cache:i,mountId:o.mountId,signedFetch:nb()});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 Mie=Object.assign({"/packages/dev-tools/providers.build.json":{include:[`*`],exclude:[`amazon-bedrock`]}})[`/packages/dev-tools/providers.build.json`]??{include:[`*`],exclude:[]};function ub(e){let{include:t,exclude:n}=Mie;return n.includes(`*`)||n.includes(e)?!1:!!(t.includes(`*`)||t.includes(e))}var Nie=Object.assign({"./built-in/azure-ai-foundry.ts":()=>I(()=>import(`./azure-ai-foundry-Bo0FAJyX.js`),[]),"./built-in/azure-openai.ts":()=>I(()=>import(`./azure-openai-D9cMP_Fj.js`),__vite__mapDeps([16,3])),"./built-in/bedrock-camp.ts":()=>I(()=>Promise.resolve().then(()=>Bxe),void 0),"./built-in/local-llm.ts":()=>I(()=>import(`./local-llm-tWVawqAZ.js`),__vite__mapDeps([17,14,5,1,2,3]))}),Pie=Object.assign({"/packages/webapp/providers/adobe.ts":()=>I(()=>import(`./adobe-xcpfIdRj.js`),__vite__mapDeps([18,19])),"/packages/webapp/providers/github-copilot.ts":()=>I(()=>import(`./github-copilot-Bs5NPvgU.js`),[]),"/packages/webapp/providers/github.ts":()=>I(()=>import(`./github-D12QW14k.js`),__vite__mapDeps([20,21,19])),"/packages/webapp/providers/openai-codex.ts":()=>I(()=>import(`./openai-codex-CKIJ_djo.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([22,23])),"/packages/webapp/providers/xai-grok.ts":()=>I(()=>import(`./xai-grok-BQCbJ4jC.js`),__vite__mapDeps([24,25,23,22]))}),db=new Map,fb=null;function Fie(){return fb||(fb=(async()=>{for(let[e,t]of Object.entries(Nie)){let e=await t();e.config&&ub(e.config.id)&&(db.set(e.config.id,e.config),e.register?.())}for(let[e,t]of Object.entries(Pie)){let e=await t();e.config&&(db.set(e.config.id,e.config),e.register?.())}})(),fb)}function pb(e){return db.get(e)}function Iie(){return[...db.keys()]}function Lie(e){db.set(e.id,e)}var Rie=`slicc-groups`,mb=3,hb={SCOOPS:`scoops`,MESSAGES:`messages`,SESSIONS:`sessions`,TASKS:`tasks`,STATE:`state`,WEBHOOKS:`webhooks`,CRONTASKS:`crontasks`},gb=null;async function zie(){if(gb){let e=Object.values(hb).every(e=>gb.objectStoreNames.contains(e));if(gb.version===mb&&e)return gb;gb.close(),gb=null}return new Promise((e,t)=>{let n=indexedDB.open(Rie,mb);n.onupgradeneeded=e=>{let t=e.target.result,n=e.oldVersion;if(n<1){if(!t.objectStoreNames.contains(hb.MESSAGES)){let e=t.createObjectStore(hb.MESSAGES,{keyPath:`id`});e.createIndex(`chatJid`,`chatJid`),e.createIndex(`timestamp`,`timestamp`),e.createIndex(`chatJid_timestamp`,[`chatJid`,`timestamp`])}t.objectStoreNames.contains(hb.SESSIONS)||t.createObjectStore(hb.SESSIONS,{keyPath:`groupFolder`}),t.objectStoreNames.contains(hb.TASKS)||t.createObjectStore(hb.TASKS,{keyPath:`id`}).createIndex(`groupFolder`,`groupFolder`),t.objectStoreNames.contains(hb.STATE)||t.createObjectStore(hb.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(hb.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(hb.SCOOPS)||t.createObjectStore(hb.SCOOPS,{keyPath:`jid`}).createIndex(`type`,`type`)}n<3&&(t.objectStoreNames.contains(hb.WEBHOOKS)||t.createObjectStore(hb.WEBHOOKS,{keyPath:`id`}),t.objectStoreNames.contains(hb.CRONTASKS)||t.createObjectStore(hb.CRONTASKS,{keyPath:`id`}))},n.onsuccess=()=>{gb=n.result,e(gb)},n.onerror=()=>t(n.error)})}async function _b(e,t=`readonly`){return(await zie()).transaction(e,t).objectStore(e)}async function Bie(){let e=await _b(hb.MESSAGES,`readwrite`);return new Promise((t,n)=>{let r=e.clear();r.onsuccess=()=>t(),r.onerror=()=>n(r.error)})}async function Vie(e){let t=await _b(hb.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 vb(e,t){let n=await _b(hb.STATE,`readwrite`);return new Promise((r,i)=>{let a=n.put({key:e,value:t});a.onsuccess=()=>r(),a.onerror=()=>i(a.error)})}function yb(e){return e.headers.get(`x-proxy-error`)===`1`}async function bb(e){let t=`Proxy error ${e.status}`,n;try{n=await e.text()}catch{return t}return Hie(n,t)}function Hie(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 xb=`tray`,Sb=`trayWorkerUrl`,Cb=`lead`;function wb(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 Tb(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=wb(t.toString());return s?{workerBaseUrl:s,trayId:i,joinUrl:n}:null}catch{return null}}function Uie(e,t){let n=new URL(e);return n.searchParams.delete(Sb),n.searchParams.delete(Cb),n.searchParams.set(xb,t),n.toString()}var Wie=c({DEFAULT_PRODUCTION_TRAY_WORKER_BASE_URL:()=>Ob,DEFAULT_STAGING_TRAY_WORKER_BASE_URL:()=>Gie,TRAY_JOIN_STORAGE_KEY:()=>Db,TRAY_LEGACY_LEAD_QUERY_PARAM:()=>Cb,TRAY_QUERY_PARAM:()=>xb,TRAY_WORKER_QUERY_PARAM:()=>Sb,TRAY_WORKER_STORAGE_KEY:()=>Eb,buildTrayLaunchUrl:()=>Fb,buildTrayLeadLaunchUrl:()=>Jie,buildTrayLeadValue:()=>qie,buildTrayUrlValue:()=>Pb,buildTrayWorkerUrl:()=>kb,fetchRuntimeConfig:()=>Lb,hasStoredTrayJoinUrl:()=>Nb,normalizeTrayWorkerBaseUrl:()=>wb,parseTrayJoinUrlValue:()=>jb,parseTrayLeadValue:()=>Kie,parseTrayUrlValue:()=>Ab,resolveTrayRuntimeConfig:()=>Ib,resolveTrayWorkerBaseUrl:()=>Yie,storeTrayJoinUrl:()=>Mb}),Eb=`slicc.trayWorkerBaseUrl`,Db=`slicc.trayJoinUrl`,Ob=`https://www.sliccy.ai`,Gie=`https://slicc-tray-hub-staging.minivelos.workers.dev`;function kb(e,t){let n=wb(e);if(!n)throw Error(`Invalid tray worker base URL: ${e}`);let r=t.replace(/^\/+/,``);return new URL(r,`${n}/`).toString()}function Ab(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 Tb(t.toString());let i=wb(t.toString());return i?{workerBaseUrl:i,trayId:r,joinUrl:null}:null}catch{return null}}function jb(e){let t=Ab(e);return t?.joinUrl?t:null}function Mb(e,t){let n=jb(t);return n?(e.setItem(Db,n.joinUrl),e.setItem(Eb,n.workerBaseUrl),n):null}function Nb(e){return!!jb(e?.getItem(`slicc.trayJoinUrl`)??null)}function Pb(e,t){let n=wb(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 Fb(e,t,n){return Uie(e,Pb(t,n))}function Kie(e){return Ab(e)}function qie(e,t){return Pb(e,t)}function Jie(e,t,n){return Fb(e,t,n)}async function Ib(e){let t=Xie(e.locationHref);if(t)return e.storage&&(t.joinUrl&&e.storage.setItem(Db,t.joinUrl),e.storage.setItem(Eb,t.workerBaseUrl)),t;let n=jb(e.storage?.getItem(`slicc.trayJoinUrl`)??null);if(n)return e.storage&&e.storage.setItem(Eb,n.workerBaseUrl),n;let r=e.runtimeConfigFetcher?await Zie(e.runtimeConfigFetcher):null;if(r?.joinConfig)return e.storage&&(e.storage.setItem(Db,r.joinConfig.joinUrl),e.storage.setItem(Eb,r.joinConfig.workerBaseUrl)),r.joinConfig;let i=r?.workerBaseUrl??null,a=wb(e.storage?.getItem(`slicc.trayWorkerBaseUrl`)??null),o=wb(e.envBaseUrl??null),s=wb(e.defaultWorkerBaseUrl??null),c=i??a??o??s;return c?(e.storage&&e.storage.setItem(Eb,c),{workerBaseUrl:c,trayId:null,joinUrl:null}):null}async function Yie(e){return(await Ib(e))?.workerBaseUrl??null}async function Lb(e=fetch){try{let t=await e(`/api/runtime-config`,{cache:`no-store`});return t.ok?await t.json():null}catch{return null}}function Xie(e){try{let t=new URL(e),n=Ab(t.searchParams.get(xb));if(n)return n;let r=Ab(t.searchParams.get(Cb));if(r)return r;let i=wb(t.searchParams.get(Sb));return i?{workerBaseUrl:i,trayId:null,joinUrl:null}:Tb(e)||null}catch{return null}}async function Zie(e){let t=await e();if(!t)return null;let n=jb(t.trayJoinUrl??null);return{workerBaseUrl:wb(t.trayWorkerBaseUrl??null),joinConfig:n}}var Rb=$v(`tray-leader`),Qie=`leader-tray-session`,$ie=3e4,eae=1e4,tae=1e3,nae=3e4,rae=2,iae=20,zb={state:`inactive`,session:null,error:null};function Bb(){return{...zb,session:zb.session?{...zb.session}:null}}var Vb=new Set;function aae(e){return Vb.add(e),()=>{Vb.delete(e)}}function Hb(e){if(zb={...e,session:e.session?{...e.session}:null},Vb.size!==0)for(let e of[...Vb])try{e(Bb())}catch{}}var Ub=class{key;constructor(e=Qie){this.key=e}async load(){return oae(await Vie(this.key))}async save(e){await vb(this.key,JSON.stringify(e))}async clear(){await vb(this.key,``)}};function oae(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 sae=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 Ub,this.fetchImpl=e.fetchImpl??uae(),this.webSocketFactory=e.webSocketFactory??(e=>new WebSocket(e)),this.pingIntervalMs=e.pingIntervalMs??$ie,this.connectTimeoutMs=e.connectTimeoutMs??eae;let t=e.reconnect;this.reconnectEnabled=t!==!1;let n=t===!1||!t?{}:t;this.reconnectBaseDelayMs=n.baseDelayMs??tae,this.reconnectMaxDelayMs=n.maxDelayMs??nae,this.reconnectBackoffMultiplier=n.backoffMultiplier??rae,this.reconnectMaxAttempts=n.maxAttempts??iae,this.reconnectSleep=n.sleep??(e=>new Promise(t=>setTimeout(t,e)))}async start(){if(this.stopped=!1,this.currentSession&&this.socket)return Hb({state:`leader`,session:this.currentSession,error:null}),this.currentSession;Hb({state:`connecting`,session:null,error:null}),this.currentSession=null;try{let e=await this.connectOnce();Rb.info(`Leader joined tray`,{trayId:e.trayId,controllerId:e.controllerId,runtime:e.runtime});try{this.options.onLeaderReady?.(e)}catch(e){Rb.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return e}catch(e){throw Hb({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,Hb({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),Hb({state:`leader`,session:n,error:null}),n}async handleUnexpectedDisconnect(e){if(this.stopped)return;if(!this.reconnectEnabled){Rb.warn(`Leader WebSocket dropped and auto-reconnect is disabled`,{reason:e}),this.tearDownSocket(),this.currentSession=null,Hb({state:`error`,session:null,error:`Leader WebSocket dropped: ${e}`});return}if(this.reconnecting)return;this.reconnecting=!0;let t=++this.reconnectGeneration;Rb.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++,Hb({state:`reconnecting`,session:this.currentSession,error:null,reconnectAttempts:n}),this.options.onReconnecting?.(n,i),Rb.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,Rb.info(`Leader reconnect successful`,{attempt:n,trayId:e.trayId}),this.options.onReconnected?.(e);try{this.options.onLeaderReady?.(e)}catch(e){Rb.warn(`onLeaderReady callback threw`,{error:e instanceof Error?e.message:String(e)})}return}catch(e){i=e instanceof Error?e.message:String(e),Rb.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,Hb({state:`error`,session:null,error:`Leader reconnect failed after ${n} attempts: ${i}`,reconnectAttempts:n}),Rb.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||!cae(t))throw t;return Rb.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(kb(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=lae(e.data);if(n){if(n.type===`leader.connected`){i||(i=!0,clearTimeout(a),t(r));return}if(n.type===`pong`){Rb.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=>{Rb.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 Wb.fromResponse(n);return await n.json()}},Wb=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 cae(e){return e instanceof Wb&&[403,404,410].includes(e.status)}function lae(e){if(typeof e!=`string`)return null;try{return JSON.parse(e)}catch{return null}}function uae(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(yb(a))throw Error(await bb(a));return a}}var Gb=$v(`welcome-detection`),Kb=`/shared/.welcomed`,dae=`browser-coding-agent`,fae=1,qb=`sessions`,pae=`session-cone`,Jb=`[Sprinkle Event: welcome]`;function Yb(){return new Promise((e,t)=>{let n=indexedDB.open(dae,fae);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(qb)||e.createObjectStore(qb,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error),n.onblocked=()=>{}})}function mae(){return Yb().catch(()=>new Promise((e,t)=>{setTimeout(()=>{Yb().then(e,t)},120)}))}async function Xb(){let e=await mae();try{return await new Promise((t,n)=>{let r=e.transaction(qb,`readonly`).objectStore(qb).get(pae);r.onsuccess=()=>t(r.result??null),r.onerror=()=>n(r.error)})}finally{e.close()}}async function hae(){try{let e=await Xb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>gae(e))}catch(e){return Gb.warn(`Failed to scan cone chat session for welcome lick`,{error:e instanceof Error?e.message:String(e)}),!1}}function gae(e){let t=e.content;return typeof t==`string`?t.includes(Jb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Jb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Jb)}return!1}):!1}async function Zb(e){let t=!1;try{t=await e.exists(Kb)}catch(e){return Gb.warn(`Failed to read welcomed marker`,{path:Kb,error:e instanceof Error?e.message:String(e)}),{isFirstRun:!1}}return t||await hae()?{isFirstRun:!1}:{isFirstRun:!0}}async function _ae(e){await e.writeFile(Kb,`1`)}var Qb=`"action":"onboarding-complete-with-provider"`;function vae(e){let t=e.content;return typeof t==`string`?t.includes(Qb):Array.isArray(t)?t.some(e=>{if(typeof e==`string`)return e.includes(Qb);if(e&&typeof e==`object`){let t=e.text;if(typeof t==`string`)return t.includes(Qb)}return!1}):!1}async function yae(){try{let e=await Xb();return!e||!Array.isArray(e.messages)?!1:e.messages.some(e=>vae(e))}catch(e){return Gb.warn(`Failed to scan cone chat session for final lick`,{error:e instanceof Error?e.message:String(e)}),!1}}s((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 $b=(e,t,n)=>{let r=e instanceof RegExp?ex(e,n):e,i=t instanceof RegExp?ex(t,n):t,a=r!==null&&i!=null&&bae(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)}},ex=(e,t)=>{let n=t.match(e);return n?n[0]:null},bae=(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},tx=`\0SLASH`+Math.random()+`\0`,nx=`\0OPEN`+Math.random()+`\0`,rx=`\0CLOSE`+Math.random()+`\0`,ix=`\0COMMA`+Math.random()+`\0`,ax=`\0PERIOD`+Math.random()+`\0`,xae=new RegExp(tx,`g`),Sae=new RegExp(nx,`g`),Cae=new RegExp(rx,`g`),wae=new RegExp(ix,`g`),Tae=new RegExp(ax,`g`),Eae=/\\\\/g,Dae=/\\{/g,Oae=/\\}/g,kae=/\\,/g,Aae=/\\\./g,jae=1e5;function ox(e){return isNaN(e)?e.charCodeAt(0):parseInt(e,10)}function Mae(e){return e.replace(Eae,tx).replace(Dae,nx).replace(Oae,rx).replace(kae,ix).replace(Aae,ax)}function Nae(e){return e.replace(xae,`\\`).replace(Sae,`{`).replace(Cae,`}`).replace(wae,`,`).replace(Tae,`.`)}function sx(e){if(!e)return[``];let t=[],n=$b(`{`,`}`,e);if(!n)return e.split(`,`);let{pre:r,body:i,post:a}=n,o=r.split(`,`);o[o.length-1]+=`{`+i+`}`;let s=sx(a);return a.length&&(o[o.length-1]+=s.shift(),o.push.apply(o,s)),t.push.apply(t,o),t}function Pae(e,t={}){if(!e)return[];let{max:n=jae}=t;return e.slice(0,2)===`{}`&&(e=`\\{\\}`+e.slice(2)),cx(Mae(e),n,!0).map(Nae)}function Fae(e){return`{`+e+`}`}function Iae(e){return/^-?0\d/.test(e)}function Lae(e,t){return e<=t}function Rae(e,t){return e>=t}function cx(e,t,n){let r=[],i=$b(`{`,`}`,e);if(!i)return[e];let a=i.pre,o=i.post.length?cx(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+rx+i.post,cx(e,t,!0)):[e];let d;if(l)d=i.body.split(/\.\./);else if(d=sx(i.body),d.length===1&&d[0]!==void 0&&(d=cx(d[0],t,!1).map(Fae),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=ox(d[0]),t=ox(d[1]),n=Math.max(d[0].length,d[1].length),r=d.length===3&&d[2]!==void 0?Math.abs(ox(d[2])):1,i=Lae;t<e&&(r*=-1,i=Rae);let a=d.some(Iae);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,cx(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 zae=1024*64,lx=e=>{if(typeof e!=`string`)throw TypeError(`invalid pattern`);if(e.length>zae)throw TypeError(`pattern is too long`)},Bae={"[: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]},ux=e=>e.replace(/[[\]\\-]/g,`\\$&`),Vae=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),dx=e=>e.join(``),Hae=(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(Bae))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(ux(d)+`-`+ux(t)):t===d&&r.push(ux(t)),d=``,a++;continue}if(e.startsWith(`-]`,a+1)){r.push(ux(t+`-`)),a+=2;continue}if(e.startsWith(`-`,a+1)){d=t,a+=2;continue}r.push(ux(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[Vae(r[0].length===2?r[0].slice(-1):r[0]),!1,u-n,!1];let f=`[`+(l?`^`:``)+dx(r)+`]`,p=`[`+(l?``:`^`)+dx(i)+`]`;return[r.length&&i.length?`(`+f+`|`+p+`)`:r.length?f:p,s,u-n,!0]},fx=(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`),px,Uae=new Set([`!`,`?`,`+`,`*`,`@`]),mx=e=>Uae.has(e),hx=e=>mx(e.type),Wae=new Map([[`!`,[`@`]],[`?`,[`?`,`@`]],[`@`,[`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`]]]),Gae=new Map([[`!`,[`?`]],[`@`,[`?`]],[`+`,[`?`,`*`]]]),Kae=new Map([[`!`,[`?`,`@`]],[`?`,[`?`,`@`]],[`@`,[`?`,`@`]],[`*`,[`*`,`+`,`?`,`@`]],[`+`,[`+`,`@`,`?`,`*`]]]),gx=new Map([[`!`,new Map([[`!`,`@`]])],[`?`,new Map([[`*`,`*`],[`+`,`*`]])],[`@`,new Map([[`!`,`!`],[`?`,`?`],[`@`,`@`],[`*`,`*`],[`+`,`+`]])],[`+`,new Map([[`?`,`*`],[`*`,`*`]])]]),qae=`(?!(?:^|/)\\.\\.?(?:$|/))`,_x=`(?!\\.)`,Jae=new Set([`[`,`.`]),Yae=new Set([`..`,`.`]),Xae=new Set(`().*{}+?[]^$\\!`),Zae=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),Qae=`[^/]`,$ae=`[^/]*?`,vx=`[^/]+?`,eoe=0,yx=class{type;#e;#t;#n=!1;#r=[];#i;#a;#o;#s=!1;#c;#l;#u=!1;id=++eoe;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 px&&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 px&&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 px(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&&mx(n)&&e.charAt(u)===`(`&&i<=a){t.push(d),d=``;let a=new px(n,t);u=px.#f(e,a,u,r,i+1),t.push(a);continue}d+=n}return t.push(d),u}let u=n+1,d=new px(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&&mx(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 px(n,d);d.push(o),u=px.#f(e,o,u,r,i+a);continue}if(n===`|`){d.push(p),p=``,f.push(d),d=new px(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,Gae)}#m(e,t=Wae){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=Kae){return!!t.get(this.type)?.includes(e)}#g(e,t){let n=e.#r[0],r=new px(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!!gx.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=gx.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 px(null,void 0,t);return px.#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()),!hx(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`?px.#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&&Yae.has(this.#r[0]))){let n=Jae,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?qae:o?_x:``}let a=``;return this.isEnd()&&this.#e.#s&&this.#i?.type===`!`&&(a=`(?:$|\\/)`),[i+r+a,fx(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,fx(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?_x:``)+vx;else{let n=this.type===`!`?`))`+(this.isStart()&&!t&&!e?_x:``)+`[^/]*?)`:this.type===`@`?`)`:this.type===`?`?`)?`:this.type===`+`&&a?`)`:this.type===`*`&&a?`)?`:`)${this.type}`;o=r+i+n}return[o,fx(i),this.#t=!!this.#t,this.#n]}#x(){if(hx(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+=(Xae.has(c)?`\\`:``)+c;continue}if(c===`*`){if(o)continue;o=!0,i+=n&&/^[*]+$/.test(e)?vx:$ae,t=!0;continue}else o=!1;if(c===`\\`){s===e.length-1?i+=`\\\\`:r=!0;continue}if(c===`[`){let[n,r,o,c]=Hae(e,s);if(o){i+=n,a||=r,s+=o-1,t||=c;continue}}if(c===`?`){i+=Qae,t=!0;continue}i+=Zae(c)}return[i,fx(e),!!t,a]}};px=yx;var toe=(e,{windowsPathsNoEscape:t=!1,magicalBraces:n=!1}={})=>n?t?e.replace(/[?*()[\]{}]/g,`[$&]`):e.replace(/[?*()[\]\\{}]/g,`\\$&`):t?e.replace(/[?*()[\]]/g,`[$&]`):e.replace(/[?*()[\]\\]/g,`\\$&`),bx=(e,t,n={})=>(lx(t),!n.nocomment&&t.charAt(0)===`#`?!1:new kx(t,n).match(e)),noe=/^\*+([^+@!?\*\[\(]*)$/,roe=e=>t=>!t.startsWith(`.`)&&t.endsWith(e),ioe=e=>t=>t.endsWith(e),aoe=e=>(e=e.toLowerCase(),t=>!t.startsWith(`.`)&&t.toLowerCase().endsWith(e)),ooe=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),soe=/^\*+\.\*+$/,coe=e=>!e.startsWith(`.`)&&e.includes(`.`),loe=e=>e!==`.`&&e!==`..`&&e.includes(`.`),uoe=/^\.\*+$/,doe=e=>e!==`.`&&e!==`..`&&e.startsWith(`.`),foe=/^\*+$/,poe=e=>e.length!==0&&!e.startsWith(`.`),moe=e=>e.length!==0&&e!==`.`&&e!==`..`,hoe=/^\?+([^+@!?\*\[\(]*)?$/,goe=([e,t=``])=>{let n=xx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},_oe=([e,t=``])=>{let n=Sx([e]);return t?(t=t.toLowerCase(),e=>n(e)&&e.toLowerCase().endsWith(t)):n},voe=([e,t=``])=>{let n=Sx([e]);return t?e=>n(e)&&e.endsWith(t):n},yoe=([e,t=``])=>{let n=xx([e]);return t?e=>n(e)&&e.endsWith(t):n},xx=([e])=>{let t=e.length;return e=>e.length===t&&!e.startsWith(`.`)},Sx=([e])=>{let t=e.length;return e=>e.length===t&&e!==`.`&&e!==`..`},Cx=typeof process==`object`&&process?{}.__MINIMATCH_TESTING_PLATFORM__||process.platform:`posix`,wx={win32:{sep:`\\`},posix:{sep:`/`}};bx.sep=Cx===`win32`?wx.win32.sep:wx.posix.sep;var Tx=Symbol(`globstar **`);bx.GLOBSTAR=Tx;var boe=`[^/]*?`,xoe=`(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?`,Soe=`(?:(?!(?:\\/|^)\\.).)*?`;bx.filter=(e,t={})=>n=>bx(n,e,t);var Ex=(e,t={})=>Object.assign({},e,t);bx.defaults=e=>{if(!e||typeof e!=`object`||!Object.keys(e).length)return bx;let t=bx;return Object.assign((n,r,i={})=>t(n,r,Ex(e,i)),{Minimatch:class extends t.Minimatch{constructor(t,n={}){super(t,Ex(e,n))}static defaults(n){return t.defaults(Ex(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n,r={}){super(t,n,Ex(e,r))}static fromGlob(n,r={}){return t.AST.fromGlob(n,Ex(e,r))}},unescape:(n,r={})=>t.unescape(n,Ex(e,r)),escape:(n,r={})=>t.escape(n,Ex(e,r)),filter:(n,r={})=>t.filter(n,Ex(e,r)),defaults:n=>t.defaults(Ex(e,n)),makeRe:(n,r={})=>t.makeRe(n,Ex(e,r)),braceExpand:(n,r={})=>t.braceExpand(n,Ex(e,r)),match:(n,r,i={})=>t.match(n,r,Ex(e,i)),sep:t.sep,GLOBSTAR:Tx})};var Dx=(e,t={})=>(lx(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Pae(e,{max:t.braceExpandMax}));bx.braceExpand=Dx,bx.makeRe=(e,t={})=>new kx(e,t).makeRe(),bx.match=(e,t,n={})=>{let r=new kx(t,n);return e=e.filter(e=>r.match(e)),r.options.nonull&&!e.length&&e.push(t),e};var Ox=/[?*]|[+@!]\(.*?\)|\[|\]/,Coe=e=>e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,`\\$&`),kx=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;maxGlobstarRecursion;regexp;constructor(e,t={}){lx(e),t||={},this.options=t,this.maxGlobstarRecursion=t.maxGlobstarRecursion??200,this.pattern=e,this.platform=t.platform||Cx,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]===`?`||!Ox.test(e[2]))&&!Ox.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(Tx)?this.#e(e,t,n,r,i):this.#n(e,t,n,r,i)}#e(e,t,n,r,i){let a=t.indexOf(Tx,i),o=t.lastIndexOf(Tx),[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===Tx?(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===Tx)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 Dx(this.pattern,this.options)}parse(e){lx(e);let t=this.options;if(e===`**`)return Tx;if(e===``)return``;let n,r=null;(n=e.match(foe))?r=t.dot?moe:poe:(n=e.match(noe))?r=(t.nocase?t.dot?ooe:aoe:t.dot?ioe:roe)(n[1]):(n=e.match(hoe))?r=(t.nocase?t.dot?_oe:goe:t.dot?voe:yoe)(n):(n=e.match(soe))?r=t.dot?loe:coe:(n=e.match(uoe))&&(r=doe);let i=yx.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?boe:t.dot?xoe:Soe,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`?Coe(e):e===Tx?Tx:e._src});t.forEach((e,r)=>{let i=t[r+1],a=t[r-1];e!==Tx||a===Tx||(a===void 0?i!==void 0&&i!==Tx?t[r+1]=`(?:\\/|`+n+`\\/)?`+i:t[r]=n:i===void 0?t[r-1]=a+`(?:\\/|\\/`+n+`)?`:i!==Tx&&(t[r-1]=a+`(?:\\/|\\/`+n+`\\/)`+i,t[r+1]=Tx))});let i=t.filter(e=>e!==Tx);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 bx.defaults(e).Minimatch}};bx.AST=yx,bx.Minimatch=kx,bx.escape=toe,bx.unescape=fx;var Ax={};function jx(){throw Error(`gunzipSync is not available in the browser`)}function Mx(){throw Error(`gzipSync is not available in the browser`)}var Nx=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 Nx{};function Px(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 Fx(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 Ix(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 Lx(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 Rx(e,t){return Ix(e,t,``)}function zx(e,t){return Lx(e,t,``)}function Bx(e,t){return t.slice(0,woe(e,t))}function woe(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 Vx(e){let t;for(t=e.length-1;t>=0&&e[t].match(/\s/);t--);return e.substring(t+1)}function Hx(e){let t=e.match(/^\s*/);return t?t[0]:``}var Ux=`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}`,Toe=RegExp(`[${Ux}]+|\\s+|[^${Ux}]`,`ug`);new class extends Nx{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(Toe)||[];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)&&Wx(n,i,r,e),n=e,r=null,i=null)}),(r||i)&&Wx(n,i,r,null),e}};function Wx(e,t,n,r){if(t&&n){let i=Hx(t.value),a=Vx(t.value),o=Hx(n.value),s=Vx(n.value);if(e){let r=Px(i,o);e.value=Lx(e.value,o,r),t.value=Rx(t.value,r),n.value=Rx(n.value,r)}if(r){let e=Fx(a,s);r.value=Ix(r.value,s,e),t.value=zx(t.value,e),n.value=zx(n.value,e)}}else if(n){if(e){let e=Hx(n.value);n.value=n.value.substring(e.length)}if(r){let e=Hx(r.value);r.value=r.value.substring(e.length)}}else if(e&&r){let n=Hx(r.value),i=Hx(t.value),a=Vx(t.value),o=Px(n,i);t.value=Rx(t.value,o);let s=Fx(Rx(n,o),a);t.value=zx(t.value,s),r.value=Ix(r.value,n,s),e.value=Lx(e.value,n,n.slice(0,n.length-s.length))}else if(r){let e=Hx(r.value),n=Bx(Vx(t.value),e);t.value=zx(t.value,n)}else if(e){let n=Bx(Vx(e.value),Hx(t.value));t.value=Rx(t.value,n)}}new class extends Nx{tokenize(e){let t=RegExp(`(\\r?\\n)|[${Ux}]+|[^\\S\\n\\r]+|[^${Ux}]`,`ug`);return e.match(t)||[]}},new class extends Nx{constructor(){super(...arguments),this.tokenize=Gx}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(`
@@ -747,7 +747,7 @@ ${o.repeat(a)}}`}return String(e)}var pO,mO;B({},{base64Command:()=>hO,flagsForF
747
747
  };
748
748
  window.slicc = api;
749
749
  window.bridge = api;
750
- })();`}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(${KL()?`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),JL(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-CEA11eY2.js`),__vite__mapDeps([26,27])),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(`
750
+ })();`}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(${KL()?`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),JL(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--ueqTKSL.js`),__vite__mapDeps([26,27])),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(`
751
751
  `);t.textContent=`(function() { var slicc = ${r}; var bridge = slicc;\n`+e.textContent+(a?`
752
752
  `+a:``)+`
753
753
  })();`}n.appendChild(t),this.scripts.push(t)}}dispose(){this.messageHandler&&=(window.removeEventListener(`message`,this.messageHandler),null),this.iframe&&=(YL(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 oR(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 sR(){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(oR(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(`
@@ -983,7 +983,7 @@ ${this.parser.parse(e)}</blockquote>
983
983
  ${e}</tr>
984
984
  `}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?`th`:`td`;return(e.align?`<${n} align="${e.align}">`:`<${n}>`)+t+`</${n}>
985
985
  `}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>${N6(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=P6(e);if(i===null)return r;e=i;let a=`<a href="`+e+`"`;return t&&(a+=` title="`+N6(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=P6(e);if(i===null)return N6(n);e=i;let a=`<img src="${e}" alt="${N6(n)}"`;return t&&(a+=` title="${N6(t)}"`),a+=`>`,a}text(e){return`tokens`in e&&e.tokens?this.parser.parseInline(e.tokens):`escaped`in e&&e.escaped?e.text:N6(e.text)}},H6=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}},U6=class e{options;renderer;textRenderer;constructor(e){this.options=e||t6,this.options.renderer=this.options.renderer||new V6,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new H6}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}},W6=class{options;block;constructor(e){this.options=e||t6}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?B6.lex:B6.lexInline}provideParser(e=this.block){return e?U6.parse:U6.parseInline}},G6=class{defaults=e6();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=U6;Renderer=V6;TextRenderer=H6;Lexer=B6;Tokenizer=z6;Hooks=W6;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 V6(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 z6(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 W6;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];W6.passThroughHooks.has(n)?t[r]=e=>{if(this.defaults.async&&W6.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 B6.lex(e,t??this.defaults)}parser(e,t){return U6.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?B6.lex:B6.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?U6.parse:U6.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?B6.lex:B6.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?U6.parse:U6.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+=`
986
- Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+N6(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},K6=new G6;function q6(e,t){return K6.parse(e,t)}q6.options=q6.setOptions=function(e){return K6.setOptions(e),q6.defaults=K6.defaults,n6(q6.defaults),q6},q6.getDefaults=e6,q6.defaults=t6,q6.use=function(...e){return K6.use(...e),q6.defaults=K6.defaults,n6(q6.defaults),q6},q6.walkTokens=function(e,t){return K6.walkTokens(e,t)},q6.parseInline=K6.parseInline,q6.Parser=U6,q6.parser=U6.parse,q6.Renderer=V6,q6.TextRenderer=H6,q6.Lexer=B6,q6.lexer=B6.lex,q6.Tokenizer=z6,q6.Hooks=W6,q6.parse=q6,q6.options,q6.setOptions,q6.use,q6.walkTokens,q6.parseInline,U6.parse,B6.lex;function J6(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)}function yxe(e,t){let n=J6(e);return t===`shtml`||([`js`,`javascript`,`ts`,`typescript`,`jsx`,`tsx`].includes(t)?n=xxe(n):t===`json`?n=Sxe(n):[`bash`,`sh`,`shell`,`zsh`].includes(t)&&(n=Cxe(n))),n}function bxe(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 xxe(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(/(&quot;[^&]*?&quot;|&#x27;[^&]*?&#x27;|`[^`]*?`)/g,`<span class="tok-string">$1</span>`);let t=bxe(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 Sxe(e){return e=e.replace(/(&quot;[^&]*?&quot;)\s*:/g,`<span class="tok-keyword">$1</span>:`),e=e.replace(/:\s*(&quot;[^&]*?&quot;)/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 Cxe(e){return e=e.replace(/(#[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/(&quot;[^&]*?&quot;|&#x27;[^&]*?&#x27;)/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 wxe=new G6({gfm:!0,breaks:!0,async:!1,renderer:{code({text:e,lang:t}){let n=t??``,r=yxe(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}>`}}}),Txe={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 Exe(e){return Pbe(e,Txe)}function Dxe(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 Oxe=/<p><strong>Error:<\/strong>\s*([\s\S]*?)<\/p>/g,kxe=/<pre><code class="language-shtml">[\s\S]*?<\/code><\/pre>/g,Axe=`<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 Y6(e){return Dxe(Exe(wxe.parse(e)))}function jxe(e){return e.replace(Oxe,(e,t)=>`<div class="msg__error" role="alert"><div class="msg__error-label">Error</div><div class="msg__error-body">${t}</div></div>`)}function Mxe(e){return e.replace(kxe,Axe)}function X6(e){return Y6(e)}function Z6(e,t=!1){let n=jxe(Y6(e));return t&&(n=Mxe(n)),n}function Nxe(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??Pxe(t.state)??`Mirroring another browser.`}}function Pxe(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 Q6(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.`}var Fxe=32e3,Ixe=1024;function $6(e,t,n){let r=e.maxTokens>0?e.maxTokens>=e.contextWindow-Ixe?Math.min(e.maxTokens,Fxe):e.maxTokens:void 0;return{temperature:t?.temperature,maxTokens:t?.maxTokens??r,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,maxRetries:t?.maxRetries,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata}}function e8(e){return e===`xhigh`?`high`:e}function t8(e,t,n,r){let i={minimal:1024,low:2048,medium:8192,high:16384,...r}[e8(n)],a=Math.min(e+i,t);return a<=i&&(i=Math.max(0,a-1024)),{maxTokens:a,thinkingBudget:i}}var Lxe=`(image omitted: model does not support images)`,Rxe=`(tool image omitted: model does not support images)`;function n8(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 zxe(e,t){return t.input.includes(`image`)?e:e.map(e=>e.role===`user`&&Array.isArray(e.content)?{...e,content:n8(e.content,Lxe)}:e.role===`toolResult`?{...e,content:n8(e.content,Rxe)}:e)}function r8(e,t,n){let r=new Map,i=zxe(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 Bxe=c({bedrockCampRegionFromBaseUrl:()=>i8,config:()=>Vxe,isBedrockCampCompatible:()=>a8,register:()=>uSe,streamBedrockCamp:()=>m8,streamSimpleBedrockCamp:()=>h8}),Vxe={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`},Hxe=/^(us|eu|global|apac)\./,Uxe=/\.anthropic\.claude-(opus|sonnet|haiku)-4/,Wxe=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function i8(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(Wxe)?.[1]??null}catch{return null}}function Gxe(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):!1}function a8(e,t){if(!Hxe.test(e.id)||!Uxe.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return Gxe(n,t)}function Kxe(e,t){return!s8(e,t,[`claude-opus-4-7`,`opus-4-7`])}function qxe(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function o8(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function s8(e,t,n){return o8(e,t).some(e=>n.some(t=>e.includes(t)))}function Jxe(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function c8(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function Yxe(e,t,n){let r=[],i=r8(e.messages,t,Jxe);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:c8(n.content)}]:n.content.map(e=>{if(e.type===`text`)return{text:c8(e.text)};if(e.type===`image`)return{image:l8(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:c8(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;Zxe(t)?!r.thinkingSignature||r.thinkingSignature.trim().length===0?e.push({text:c8(r.thinking)}):e.push({reasoningContent:{reasoningText:{text:c8(r.thinking),signature:r.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:c8(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:l8(e.mimeType,e.data)}:{text:c8(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:l8(e.mimeType,e.data)}:{text:c8(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`&&f8(t)&&r.length>0){let e=r[r.length-1];e.role===`user`&&Array.isArray(e.content)&&e.content.push(p8(n))}return r}function l8(e,t){return{source:{bytes:t},format:Xxe(e)}}function Xxe(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 Zxe(e){return d8(e)}function u8(e,t){return s8(e,t,[`opus-4-6`,`opus-4-7`,`sonnet-4-6`])}function Qxe(e,t){return s8(e,t,[`opus-4-7`])}function $xe(e,t){return s8(e,t,[`opus-4-6`])}function eSe(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 tSe(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 $xe(t,n)?`max`:`high`;default:return`high`}}function nSe(e){if(i8(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 rSe(e,t){if(!t.reasoning||!e.reasoning||!d8(e))return;let n=nSe(e)?void 0:t.thinkingDisplay??`summarized`;if(u8(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:tSe(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 d8(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 f8(e){let t=o8(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 p8(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function iSe(e,t,n){if(!e)return;let r=[{text:c8(e)}];return n!==`none`&&f8(t)&&r.push(p8(n)),r}function aSe(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 oSe(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 sSe(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,Qc(t,n.usage)),n.stopReason=aSe(e.stopReason||`end_turn`)}function cSe(e){return e??`short`}function lSe(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}var m8=(e,t,n={})=>{let r=nl();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=cSe(n.cacheRetention),c={};n.maxTokens!==void 0&&(c.maxTokens=n.maxTokens),n.temperature!==void 0&&Kxe(e.id,e.name)&&(c.temperature=n.temperature);let l={modelId:e.id,messages:Yxe(t,e,s),system:iSe(t.systemPrompt,e,s),inferenceConfig:c,toolConfig:eSe(t.tools,n.toolChoice),additionalModelRequestFields:rSe(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:lSe(f)},e),!f.ok){let e=await f.text();throw Error(oSe(f.status,e))}if(sSe(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},h8=(e,t,n)=>{let r=$6(e,n,void 0),i=n?qxe(n):{};if(!n?.reasoning)return m8(e,t,{...r,...i,reasoning:void 0});if(d8(e)){if(u8(e.id,e.name))return m8(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=t8(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return m8(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[e8(n.reasoning)]:a.budgetTokens}})}return m8(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function uSe(){Rc({api:`bedrock-camp-converse`,stream:m8,streamSimple:h8})}var dSe=c({copyTextToClipboard:()=>g8});async function g8(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 _8=null,v8=!1;function fSe(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function y8(){if(!v8&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let e=fSe();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${e}`),e===`extension`?(_8=(await I(()=>import(`./rum-DW84CvBs.js`),[])).default,typeof window<`u`&&(window.addEventListener(`error`,e=>{x8(`js`,S8(e.message??``))}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;x8(`js`,S8(t instanceof Error?t.message:String(t)))}))):(typeof window<`u`&&(window.SAMPLE_PAGEVIEWS_AT_RATE=`high`),_8=(await I(()=>import(`./src-C9oNvq2b.js`),[])).sampleRUM),v8=!0,_8&&_8(`navigate`,{source:typeof document<`u`?document.referrer:``,target:e})}catch{}}function pSe(e,t){_8?.(`formsubmit`,{source:e,target:t})}function mSe(e){_8?.(`viewblock`,{source:e})}function b8(e){_8?.(`viewmedia`,{source:e})}function x8(e,t){_8?.(`error`,{source:e,target:t})}function hSe(e){_8?.(`signup`,{source:e})}function S8(e){return(e??``).slice(0,200).replace(/(\/[a-z]+)(?:\/[^\s/]+)+/gi,`$1/.../`)}var C8=`slicc_oauth_extra_domains`;function w8(e){try{let t=e.getItem(C8);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 gSe(e,t){try{e.setItem(C8,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 T8=c({addAccount:()=>Q8,applyProviderDefaults:()=>U8,clearAllSettings:()=>f5,describeInvalidJoinUrl:()=>Q6,downloadProviders:()=>d5,exportProviders:()=>u5,getAccounts:()=>K8,getAllAvailableModels:()=>G8,getAllExtraOAuthDomains:()=>Y8,getApiKey:()=>l5,getApiKeyForProvider:()=>n5,getApiVersionForProvider:()=>a5,getAvailableProviders:()=>I8,getBaseUrlForProvider:()=>r5,getDeploymentForProvider:()=>i5,getExtraOAuthDomains:()=>q8,getOAuthAccountInfo:()=>V8,getProviderConfig:()=>R8,getProviderModels:()=>B8,getSelectedModelId:()=>o5,getSelectedProvider:()=>c5,isModelHiddenFromPicker:()=>W8,logoutOAuthAccount:()=>e5,migrateLegacyAuthOnlySelection:()=>F8,providerOffersLlmModels:()=>L8,removeAccount:()=>$8,resolveCurrentModel:()=>m5,resolveModelById:()=>p5,saveOAuthAccount:()=>t5,setExtraOAuthDomains:()=>J8,setSelectedModelId:()=>s5,showProviderSettings:()=>_5}),E8=Yc,D8=Zc;function O8(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function k8(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){H8.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 A8=`slicc_accounts`,j8=`selected-model`,M8=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],_Se=new Set([`github`]);function N8(e){let t;try{t=Xc()}catch{return!1}return t.includes(e)&&!ub(e)}var P8=!1;function vSe(){if(!P8){P8=!0;for(let e of M8)try{localStorage.removeItem(e)}catch{}F8()}}function F8(){try{let e=localStorage.getItem(j8);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(_Se.has(n)||N8(n))&&localStorage.removeItem(j8)}}}catch{}try{let e=localStorage.getItem(A8);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`&&N8(e.providerId)));n.length!==t.length&&localStorage.setItem(A8,JSON.stringify(n))}catch{}}function I8(){let e=Xc().filter(ub),t=Iie();return[...new Set([...e,...t])].filter(e=>!pb(e)?.hidden)}function L8(e){try{if(B8(e).length>0)return!0}catch{}try{if(Zc(e).length>0)return!0}catch{}let t=pb(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function R8(e){return pb(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function z8(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 B8(e){try{if(e===`bedrock-camp`){let e=i8(r5(`bedrock-camp`));return D8(`amazon-bedrock`).filter(t=>a8(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=R8(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return H8.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of Xc())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?{...a,api:i,provider:e}:{id:n.id,name:n.name??n.id,provider:e,api:i,baseUrl:``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,reasoning:!0},s=t.modelOverrides?.[n.id];return s&&z8(o,s),z8(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&&z8(i,a),i})}return D8(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return H8.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function V8(e){let t=K8().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 ySe=Object.assign({})[`/packages/webapp/providers.json`]??[],H8=$v(`provider-settings`);function U8(e=ySe){if(e.length===0||K8().length>0)return;let t=new Set(I8());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){H8.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Q8(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(j8)&&localStorage.setItem(j8,`${n.providerId}:${n.model}`)}var bSe=[/haiku/i];function W8(e){return bSe.some(t=>t.test(e))}function xSe(e){return e.filter(e=>!W8(e.id))}function G8(){let e=K8();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=R8(n.providerId);if(e.hidden||N8(n.providerId))continue;let r=xSe(B8(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 K8(){vSe();let e=localStorage.getItem(A8);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 q8(e){return w8(localStorage)[e]??[]}function J8(e,t){let n=w8(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,gSe(localStorage,n)}function Y8(){return w8(localStorage)}function X8(e){localStorage.setItem(A8,JSON.stringify(e))}async function Z8(e){if(lF()){X8(e);return}let t=cF();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(A8,r)}catch(e){H8.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Q8(e,t,n,r,i){let a=K8().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),X8(a)}async function $8(e){let t=K8().find(t=>t.providerId===e),n=R8(e);t&&n?.isOAuth&&await e5(e);let r=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(r)await chrome.storage.local.remove([`oauth.${e}.token`,`oauth.${e}.token_DOMAINS`]);else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&H8.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(t){H8.error(`OAuth replica removal failed`,{providerId:e,isExtension:r,error:t instanceof Error?t.message:String(t)})}await Z8(K8().filter(t=>t.providerId!==e));let i=localStorage.getItem(j8)??``,a=i.indexOf(`:`);a>0&&i.slice(0,a)===e&&localStorage.removeItem(j8)}async function e5(e){let t=K8().find(t=>t.providerId===e);if(!t)return;let n=R8(e);if(!n?.isOAuth)return;if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){H8.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-CrkKpOgi.js`);return{openIdpLogoutUrl:e}},[]);await t(r).catch(t=>{H8.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Z8(K8().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t));let r=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(r)await chrome.storage.local.remove([`oauth.${e}.token`,`oauth.${e}.token_DOMAINS`]);else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&H8.warn(`OAuth replica DELETE non-ok during logout`,{providerId:e,status:t.status})}}catch(t){H8.error(`OAuth replica removal failed during logout`,{providerId:e,isExtension:r,error:t instanceof Error?t.message:String(t)})}}async function t5(e){let t=K8().find(t=>t.providerId===e.providerId),n=K8().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 Z8(n);let r=R8(e.providerId)?.oauthTokenDomains??[],i=q8(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 chrome.storage.local.set({[`oauth.${e.providerId}.token`]:e.accessToken,[`oauth.${e.providerId}.token_DOMAINS`]:o.join(`,`)});let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,providerId:e.providerId},n=>{chrome.runtime.lastError&&H8.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t(n??{})})});if(t.error&&H8.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t.maskedValue){let n=K8(),r=n.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=t.maskedValue,await Z8(n))}}else{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=K8(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Z8(r))}else H8.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){H8.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var SSe=`local`;function n5(e){let t=K8().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(R8(e).optionalApiKey?SSe:null):null}function r5(e){return K8().find(t=>t.providerId===e)?.baseUrl??null}function i5(e){return K8().find(t=>t.providerId===e)?.deployment??null}function a5(e){return K8().find(t=>t.providerId===e)?.apiVersion??null}function o5(){let e=localStorage.getItem(j8)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function s5(e){if(e.includes(`:`))localStorage.setItem(j8,e);else{let t=c5();localStorage.setItem(j8,`${t}:${e}`)}}function CSe(){return localStorage.getItem(j8)||``}function c5(){let e=CSe(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K8();return n.length>0?n[0].providerId:`anthropic`}function l5(){return n5(c5())}function u5(){let e=K8(),t=c5(),n=o5();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 d5(){let e=JSON.stringify(u5(),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 f5(){let e=K8();await Promise.allSettled(e.map(e=>$8(e.providerId))),localStorage.removeItem(A8),localStorage.removeItem(j8);for(let e of M8)localStorage.removeItem(e)}function p5(e){if(!e)return m5();let t=c5(),n=r5(t);try{let r=R8(t),i=E8(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=B8(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{return m5()}}function m5(){let e=c5(),t=o5(),n=r5(e),r=B8(e),i=R8(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=R8(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=E8(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{let e=r.find(e=>e.id===o);return e?n?{...e,baseUrl:n}:e:E8(`anthropic`,`claude-sonnet-4-0`)}}function wSe(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function h5(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 g5={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 _5(e){return hSe(`button`),new Promise(t=>{let n=localStorage.getItem(A8)??``,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;`,K8().length>0?a():e?.autoJoinUrl?s(e.autoJoinUrl):e?.preferTrayJoin?c():o(),r.appendChild(i),document.body.appendChild(r);function a(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let s=K8(),l=`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(s.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 s){let n=R8(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 s=document.createElement(`div`);s.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,s.textContent=n.name,i.appendChild(s);let c=document.createElement(`div`);c.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?(c.textContent=t.userName?`Logged out — was ${t.userName}`:`Logged out`,c.style.color=`var(--s2-content-disabled)`):t.userName?c.textContent=t.userName:t.accessToken?c.textContent=`Logged in`:c.textContent=wSe(t.apiKey),t.baseUrl&&(c.textContent+=` • `+t.baseUrl),i.appendChild(c),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=l,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(h5(g5.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`,()=>{o(t)}),u.appendChild(d),n.isOAuth){let e=t.loggedOut===!0,r=document.createElement(`button`);r.style.cssText=l,e?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(h5(g5.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-CrkKpOgi.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},[]),r={forceReauth:!0};if(n.onOAuthLoginIntercepted){let e=await t();e&&await n.onOAuthLoginIntercepted(e,a,r)}else if(n.onOAuthLogin){let t=e();await n.onOAuthLogin(t,a,r)}})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(h5(g5.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 e5(t.providerId),a()})),u.appendChild(r)}let f=document.createElement(`button`);f.style.cssText=l,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(h5(g5.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 $8(t.providerId),a()}),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=s.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,d.style.flex=`1`,d.textContent=`Add Account`,d.addEventListener(`click`,()=>o()),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`,()=>d5()),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=dF(),g=h.state!==`inactive`,_=Nb(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`,()=>c()),i.appendChild(v);let y=document.createElement(`hr`);y.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(y);let b=document.createElement(`button`);b.className=`dialog__btn`,b.textContent=`Get Started`,b.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(A8)??``)!==n)}),i.appendChild(b)}function o(e){i.innerHTML=``;let t=!!e,n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=t?`Edit Account`:`Add Account`,i.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.textContent=`Provider:`,i.appendChild(r);let o=document.createElement(`select`);if(o.className=`dialog__input`,o.style.marginBottom=`8px`,t){let t=R8(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,o.appendChild(n),o.disabled=!0,o.style.opacity=`0.7`}else{let e=document.createElement(`option`);e.value=``,e.textContent=`Select a provider…`,e.disabled=!0,e.selected=!0,e.hidden=!0,o.appendChild(e);let t=I8(),n=new Set(K8().map(e=>e.providerId)),r=[...t].sort((e,t)=>{let n=R8(e).name,r=R8(t).name;return n.localeCompare(r)});for(let e of r){if(n.has(e)||!L8(e))continue;let t=R8(e),r=document.createElement(`option`);r.value=e,r.textContent=t.name,o.appendChild(r)}}i.appendChild(o);let s=document.createElement(`div`);s.className=`dialog__desc`,s.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(s);let l=document.createElement(`div`);l.style.cssText=`margin-bottom: 16px; display: none;`;let u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Login`,u.style.cssText=`width: 100%; margin-bottom: 8px;`,l.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(d);let f=()=>{let e=l,t=d,n=u;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 g8(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)})};u.addEventListener(`click`,async()=>{let e=o.value;if(!e)return;let t=R8(e);if(!t.onOAuthLogin&&!t.onOAuthLoginIntercepted)return;let n=K8().some(t=>t.providerId===e),r=r5(e);if(t.requiresBaseUrl&&!v.value.trim()&&!r){d.textContent=`Base URL is required.`,d.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&Q8(e,``,v.value.trim()),d.textContent=`Opening login window...`;try{if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CrkKpOgi.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:f()})}else if(t.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CrkKpOgi.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}}catch(t){if(!n)try{await $8(e)}catch{}H8.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),d.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(d.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),i.appendChild(l);let p=document.createElement(`div`),m=document.createElement(`div`);m.className=`dialog__desc`,p.appendChild(m);let h=document.createElement(`input`);h.className=`dialog__input`,h.type=`password`,h.autocomplete=`off`,h.spellcheck=!1,t&&(h.value=e.apiKey),p.appendChild(h),i.appendChild(p);let g=document.createElement(`div`),_=document.createElement(`div`);_.className=`dialog__desc`,_.textContent=`Base URL:`,g.appendChild(_);let v=document.createElement(`input`);v.className=`dialog__input`,v.type=`text`,v.autocomplete=`off`,v.spellcheck=!1,t&&e.baseUrl&&(v.value=e.baseUrl),g.appendChild(v);let y=document.createElement(`div`);y.className=`dialog__desc`,y.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,g.appendChild(y),i.appendChild(g);let b=document.createElement(`div`);b.style.display=`none`;let ee=document.createElement(`div`);ee.className=`dialog__desc`,ee.textContent=`Deployment:`,b.appendChild(ee);let te=document.createElement(`input`);te.className=`dialog__input`,te.type=`text`,te.autocomplete=`off`,te.spellcheck=!1,t&&e.deployment&&(te.value=e.deployment),b.appendChild(te);let ne=document.createElement(`div`);ne.className=`dialog__desc`,ne.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(ne),i.appendChild(b);let x=document.createElement(`div`);x.style.display=`none`;let S=document.createElement(`div`);S.className=`dialog__desc`,S.textContent=`API Version:`,x.appendChild(S);let re=document.createElement(`input`);re.className=`dialog__input`,re.type=`text`,re.autocomplete=`off`,re.spellcheck=!1,t&&e.apiVersion&&(re.value=e.apiVersion),x.appendChild(re);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 ie=document.createElement(`div`);ie.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(ie);let w=document.createElement(`button`);w.className=`dialog__btn`,w.textContent=t?`Save`:`Add`;function T(){let e=o.value;if(!e){s.textContent=``,l.style.display=`none`,p.style.display=`none`,g.style.display=`none`,b.style.display=`none`,x.style.display=`none`,w.style.display=`none`;return}let t=R8(e);if(s.textContent=t.description,t.isOAuth)l.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),u.textContent=`Login with ${t.name}`,w.style.display=`none`;else{l.style.display=`none`,m.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;p.style.display=e?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,w.style.display=``}t.requiresDeployment?(b.style.display=``,te.placeholder=t.deploymentPlaceholder||`deployment-name`,ne.textContent=t.deploymentDescription||``):b.style.display=`none`,t.requiresApiVersion?(x.style.display=``,!re.value&&t.apiVersionDefault&&(re.value=t.apiVersionDefault),re.placeholder=t.apiVersionDefault||`api-version`,C.textContent=t.apiVersionDescription||``):x.style.display=`none`}o.addEventListener(`change`,()=>{ie.style.display=`none`,T()}),T();function ae(){let e=o.value;if(!e)return;let t=R8(e);if(t.requiresApiKey&&h.value.trim().length<5){ie.textContent=`API key is required (at least 5 characters).`,ie.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){ie.textContent=`Base URL is required for this provider.`,ie.style.display=``,v.focus();return}if(t.requiresDeployment&&!te.value.trim()){ie.textContent=`Deployment name is required for this provider.`,ie.style.display=``,te.focus();return}Q8(e,h.value.trim(),v.value.trim()||void 0,te.value.trim()||void 0,re.value.trim()||void 0),a()}w.addEventListener(`click`,ae);let E=e=>{e.key===`Enter`&&ae()};h.addEventListener(`keydown`,E),v.addEventListener(`keydown`,E),te.addEventListener(`keydown`,E),re.addEventListener(`keydown`,E),i.appendChild(w);let oe=K8().length>0;if(!t&&!oe){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`,()=>{c()}),i.appendChild(e)}else if(oe){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{a()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=o.value;if(!e)return;let t=R8(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function s(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 s=document.createElement(`div`);s.className=`dialog__desc`,s.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;`,s.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,i.appendChild(s);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=Mb(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(O8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else k8(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`,()=>{o()}),i.appendChild(u)}function c(){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 s=document.createElement(`summary`);s.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,s.textContent=`How do I get the sync URL?`,a.appendChild(s);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=Mb(window.localStorage,e);if(!n){f.textContent=Q6(e),f.style.display=``,d.focus();return}if(O8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else k8(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`,()=>{o()}),i.appendChild(h),d.addEventListener(`input`,()=>{f.style.display=`none`}),d.addEventListener(`keydown`,e=>{e.key===`Enter`&&m.click()}),requestAnimationFrame(()=>d.focus())}})}var TSe=`slicc:adobe-daily-uuid:`,v5=new Map;function ESe(){return new Date().toISOString().slice(0,10)}function DSe(){try{let e=globalThis.localStorage;return!e||typeof e.getItem!=`function`||typeof e.setItem!=`function`?null:e}catch{return null}}function y5(e){let t=ESe(),n=DSe(),r=TSe+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=v5.get(e);if(i&&i.date===t)return i.uuid;let a=crypto.randomUUID();return v5.set(e,{uuid:a,date:t}),a}var b5=$v(`quick-llm`);async function x5(e){let t=l5();if(!t)return b5.debug(`No API key for active provider — skipping`),null;let n=c5(),r=o5(),i;if(i=e.modelId?S5(n,e.modelId)??S5(n,r):OSe(n,r),!i)return b5.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`]=MSe());try{let n=(await Fl(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 b5.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function OSe(e,t){let n=B8(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ASe(r.id),a=n.filter(e=>kSe(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function kSe(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 ASe(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 S5(e,t){return B8(e).find(e=>e.id===t)}var jSe=`ui-quick-llm`;function MSe(){return y5(jSe)}var NSe=`browser-coding-agent`,PSe=1,C5=`sessions`;function FSe(){return new Promise((e,t)=>{let n=indexedDB.open(NSe,PSe);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(C5)||e.createObjectStore(C5,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var w5=class{db=null;async init(){this.db=await FSe()}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(C5,`readwrite`);i.objectStore(C5).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(C5,`readonly`).objectStore(C5).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(C5,`readonly`).objectStore(C5).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(C5,`readwrite`);i.objectStore(C5).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)}},T5=[`#000000`,`#cd3131`,`#0dbc79`,`#e5e510`,`#2472c8`,`#bc3fbc`,`#11a8cd`,`#e5e5e5`],E5=[`#666666`,`#f14c4c`,`#23d18b`,`#f5f543`,`#3b8eea`,`#d670d6`,`#29b8db`,`#ffffff`],D5=()=>({fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,strike:!1,inverse:!1}),O5=e=>Math.max(0,Math.min(255,Math.floor(e)||0));function ISe(e){if(e<0||e>255)return``;if(e<8)return T5[e];if(e<16)return E5[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 k5(e,t){let n=e[t+1];if(n===5){let n=e[t+2];return{color:typeof n==`number`?ISe(n):null,consumed:3}}return n===2?{color:`rgb(${O5(e[t+2]??0)},${O5(e[t+3]??0)},${O5(e[t+4]??0)})`,consumed:5}:{color:null,consumed:2}}function LSe(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,D5());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=T5[t-30];else if(t===38){let t=k5(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=T5[t-40];else if(t===48){let t=k5(r,e);t.color&&(n.bg=t.color),e+=t.consumed-1}else t===49?n.bg=null:t>=90&&t<=97?n.fg=E5[t-90]:t>=100&&t<=107&&(n.bg=E5[t-100])}return n}function RSe(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 zSe=e=>!!(e.fg||e.bg||e.bold||e.dim||e.italic||e.underline||e.strike||e.inverse),A5=(e,t)=>{let n=J6(e);return zSe(t)?`<span style="${RSe(t)}">${n}</span>`:n},j5=/\x1b\[[?!#>]?[\d;]*[@-~]|\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,BSe=/^\x1b\[([\d;]*)m$/;function VSe(e){if(!e)return``;let t=``,n=0,r=D5();j5.lastIndex=0;let i;for(;(i=j5.exec(e))!==null;){let a=e.slice(n,i.index);a&&(t+=A5(a,r));let o=BSe.exec(i[0]);if(o){let e=o[1]===``?[]:o[1].split(`;`).map(e=>Number(e)||0);r=LSe(r,e)}n=i.index+i[0].length}let a=e.slice(n);return a&&(t+=A5(a,r)),t}function HSe(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 USe={icon:l3,title:`tool`,preview:e=>L5(e,80)},WSe={read_file:{icon:hX,title:`read`,preview:e=>I5(e,`path`)??``,renderBody:XSe},write_file:{icon:iX,title:`write`,preview:e=>I5(e,`path`)??``},edit_file:{icon:tX,title:`edit`,preview:e=>I5(e,`path`)??``,renderBody:tCe},bash:{icon:F4,title:`bash`,preview:e=>{let t=I5(e,`command`)??``;return t?HSe(`$ ${R5(t,120)}`):``},renderBody:eCe},browser:{icon:SQ,title:`browser`,preview:e=>L5(e,80)},javascript:{icon:iq,title:`javascript`,preview:e=>R5((I5(e,`code`)??``).replace(/\s+/g,` `),100)},send_message:{icon:t2,title:`message`,preview:e=>{let t=I5(e,`text`)??``;return t?`"${R5(t,100)}"`:``}},feed_scoop:{icon:n3,title:`feed`,preview:e=>I5(e,`scoop_name`)??``},scoop_scoop:{icon:z$,title:`scoop`,preview:e=>I5(e,`name`)??``},drop_scoop:{icon:W4,title:`drop`,preview:e=>I5(e,`scoop_name`)??``},scoop_mute:{icon:a3,title:`mute`,preview:e=>z5(e)},scoop_unmute:{icon:i3,title:`unmute`,preview:e=>z5(e)},scoop_wait:{icon:M$,title:`wait`,preview:e=>{let t=z5(e),n=I5(e,`timeout_ms`);return n===void 0||n===``?t:t?`${t} (${n}ms)`:`${n}ms`}},list_scoops:{icon:C0,title:`list scoops`,preview:()=>``},list_tasks:{icon:i0,title:`list tasks`,preview:()=>``},register_scoop:{icon:Q4,title:`register`,preview:e=>I5(e,`name`)??``},schedule_task:{icon:NK,title:`schedule`,preview:e=>I5(e,`cron`)??I5(e,`name`)??``},update_global_memory:{icon:qH,title:`memory`,preview:e=>R5((I5(e,`content`)??``).split(`
986
+ Please report this to https://github.com/markedjs/marked.`,e){let e=`<p>An error occurred:</p><pre>`+N6(n.message+``,!0)+`</pre>`;return t?Promise.resolve(e):e}if(t)return Promise.reject(n);throw n}}},K6=new G6;function q6(e,t){return K6.parse(e,t)}q6.options=q6.setOptions=function(e){return K6.setOptions(e),q6.defaults=K6.defaults,n6(q6.defaults),q6},q6.getDefaults=e6,q6.defaults=t6,q6.use=function(...e){return K6.use(...e),q6.defaults=K6.defaults,n6(q6.defaults),q6},q6.walkTokens=function(e,t){return K6.walkTokens(e,t)},q6.parseInline=K6.parseInline,q6.Parser=U6,q6.parser=U6.parse,q6.Renderer=V6,q6.TextRenderer=H6,q6.Lexer=B6,q6.lexer=B6.lex,q6.Tokenizer=z6,q6.Hooks=W6,q6.parse=q6,q6.options,q6.setOptions,q6.use,q6.walkTokens,q6.parseInline,U6.parse,B6.lex;function J6(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)}function yxe(e,t){let n=J6(e);return t===`shtml`||([`js`,`javascript`,`ts`,`typescript`,`jsx`,`tsx`].includes(t)?n=xxe(n):t===`json`?n=Sxe(n):[`bash`,`sh`,`shell`,`zsh`].includes(t)&&(n=Cxe(n))),n}function bxe(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 xxe(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(/(&quot;[^&]*?&quot;|&#x27;[^&]*?&#x27;|`[^`]*?`)/g,`<span class="tok-string">$1</span>`);let t=bxe(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 Sxe(e){return e=e.replace(/(&quot;[^&]*?&quot;)\s*:/g,`<span class="tok-keyword">$1</span>:`),e=e.replace(/:\s*(&quot;[^&]*?&quot;)/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 Cxe(e){return e=e.replace(/(#[^\n]*)/g,`<span class="tok-comment">$1</span>`),e=e.replace(/(&quot;[^&]*?&quot;|&#x27;[^&]*?&#x27;)/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 wxe=new G6({gfm:!0,breaks:!0,async:!1,renderer:{code({text:e,lang:t}){let n=t??``,r=yxe(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}>`}}}),Txe={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 Exe(e){return Pbe(e,Txe)}function Dxe(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 Oxe=/<p><strong>Error:<\/strong>\s*([\s\S]*?)<\/p>/g,kxe=/<pre><code class="language-shtml">[\s\S]*?<\/code><\/pre>/g,Axe=`<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 Y6(e){return Dxe(Exe(wxe.parse(e)))}function jxe(e){return e.replace(Oxe,(e,t)=>`<div class="msg__error" role="alert"><div class="msg__error-label">Error</div><div class="msg__error-body">${t}</div></div>`)}function Mxe(e){return e.replace(kxe,Axe)}function X6(e){return Y6(e)}function Z6(e,t=!1){let n=jxe(Y6(e));return t&&(n=Mxe(n)),n}function Nxe(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??Pxe(t.state)??`Mirroring another browser.`}}function Pxe(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 Q6(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.`}var Fxe=32e3,Ixe=1024;function $6(e,t,n){let r=e.maxTokens>0?e.maxTokens>=e.contextWindow-Ixe?Math.min(e.maxTokens,Fxe):e.maxTokens:void 0;return{temperature:t?.temperature,maxTokens:t?.maxTokens??r,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,maxRetries:t?.maxRetries,maxRetryDelayMs:t?.maxRetryDelayMs,metadata:t?.metadata}}function e8(e){return e===`xhigh`?`high`:e}function t8(e,t,n,r){let i={minimal:1024,low:2048,medium:8192,high:16384,...r}[e8(n)],a=Math.min(e+i,t);return a<=i&&(i=Math.max(0,a-1024)),{maxTokens:a,thinkingBudget:i}}var Lxe=`(image omitted: model does not support images)`,Rxe=`(tool image omitted: model does not support images)`;function n8(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 zxe(e,t){return t.input.includes(`image`)?e:e.map(e=>e.role===`user`&&Array.isArray(e.content)?{...e,content:n8(e.content,Lxe)}:e.role===`toolResult`?{...e,content:n8(e.content,Rxe)}:e)}function r8(e,t,n){let r=new Map,i=zxe(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 Bxe=c({bedrockCampRegionFromBaseUrl:()=>i8,config:()=>Vxe,isBedrockCampCompatible:()=>a8,register:()=>uSe,streamBedrockCamp:()=>m8,streamSimpleBedrockCamp:()=>h8}),Vxe={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`},Hxe=/^(us|eu|global|apac)\./,Uxe=/\.anthropic\.claude-(opus|sonnet|haiku)-4/,Wxe=/bedrock-runtime(?:-fips)?\.([a-z0-9-]+)\.amazonaws\.com(?:\.cn)?$/i;function i8(e){if(!e)return null;try{let{hostname:t}=new URL(e);return t.toLowerCase().match(Wxe)?.[1]??null}catch{return null}}function Gxe(e,t){return e===`global`?!0:e===`us`?t.startsWith(`us-`):e===`eu`?t.startsWith(`eu-`):e===`apac`?t.startsWith(`ap-`):!1}function a8(e,t){if(!Hxe.test(e.id)||!Uxe.test(e.id))return!1;if(!t)return!0;let n=e.id.split(`.`,1)[0];return Gxe(n,t)}function Kxe(e,t){return!s8(e,t,[`claude-opus-4-7`,`opus-4-7`])}function qxe(e){return{onPayload:e.onPayload,onResponse:e.onResponse,toolChoice:e.toolChoice,thinkingDisplay:e.thinkingDisplay,interleavedThinking:e.interleavedThinking,requestMetadata:e.requestMetadata}}function o8(e,t){return(t?[e,t]:[e]).flatMap(e=>{let t=e.toLowerCase();return[t,t.replace(/[\s_.:]+/g,`-`)]})}function s8(e,t,n){return o8(e,t).some(e=>n.some(t=>e.includes(t)))}function Jxe(e){let t=e.replace(/[^a-zA-Z0-9_-]/g,`_`);return t.length>64?t.slice(0,64):t}function c8(e){return e?e.replace(/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g,`�`):``}function Yxe(e,t,n){let r=[],i=r8(e.messages,t,Jxe);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:c8(n.content)}]:n.content.map(e=>{if(e.type===`text`)return{text:c8(e.text)};if(e.type===`image`)return{image:l8(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:c8(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;Zxe(t)?!r.thinkingSignature||r.thinkingSignature.trim().length===0?e.push({text:c8(r.thinking)}):e.push({reasoningContent:{reasoningText:{text:c8(r.thinking),signature:r.thinkingSignature}}}):e.push({reasoningContent:{reasoningText:{text:c8(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:l8(e.mimeType,e.data)}:{text:c8(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:l8(e.mimeType,e.data)}:{text:c8(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`&&f8(t)&&r.length>0){let e=r[r.length-1];e.role===`user`&&Array.isArray(e.content)&&e.content.push(p8(n))}return r}function l8(e,t){return{source:{bytes:t},format:Xxe(e)}}function Xxe(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 Zxe(e){return d8(e)}function u8(e,t){return s8(e,t,[`opus-4-6`,`opus-4-7`,`sonnet-4-6`])}function Qxe(e,t){return s8(e,t,[`opus-4-7`])}function $xe(e,t){return s8(e,t,[`opus-4-6`])}function eSe(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 tSe(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 $xe(t,n)?`max`:`high`;default:return`high`}}function nSe(e){if(i8(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 rSe(e,t){if(!t.reasoning||!e.reasoning||!d8(e))return;let n=nSe(e)?void 0:t.thinkingDisplay??`summarized`;if(u8(e.id,e.name))return{thinking:{type:`adaptive`,...n===void 0?{}:{display:n}},output_config:{effort:tSe(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 d8(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 f8(e){let t=o8(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 p8(e){return{cachePoint:{type:`default`,...e===`long`?{ttl:`1h`}:{}}}}function iSe(e,t,n){if(!e)return;let r=[{text:c8(e)}];return n!==`none`&&f8(t)&&r.push(p8(n)),r}function aSe(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 oSe(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 sSe(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,Qc(t,n.usage)),n.stopReason=aSe(e.stopReason||`end_turn`)}function cSe(e){return e??`short`}function lSe(e){let t={};return e.headers.forEach((e,n)=>{t[n.toLowerCase()]=e}),t}var m8=(e,t,n={})=>{let r=nl();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=cSe(n.cacheRetention),c={};n.maxTokens!==void 0&&(c.maxTokens=n.maxTokens),n.temperature!==void 0&&Kxe(e.id,e.name)&&(c.temperature=n.temperature);let l={modelId:e.id,messages:Yxe(t,e,s),system:iSe(t.systemPrompt,e,s),inferenceConfig:c,toolConfig:eSe(t.tools,n.toolChoice),additionalModelRequestFields:rSe(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:lSe(f)},e),!f.ok){let e=await f.text();throw Error(oSe(f.status,e))}if(sSe(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},h8=(e,t,n)=>{let r=$6(e,n,void 0),i=n?qxe(n):{};if(!n?.reasoning)return m8(e,t,{...r,...i,reasoning:void 0});if(d8(e)){if(u8(e.id,e.name))return m8(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets});let a=t8(r.maxTokens||0,e.maxTokens,n.reasoning,n.thinkingBudgets);return m8(e,t,{...r,...i,maxTokens:a.maxTokens,reasoning:n.reasoning,thinkingBudgets:{...n.thinkingBudgets||{},[e8(n.reasoning)]:a.budgetTokens}})}return m8(e,t,{...r,...i,reasoning:n.reasoning,thinkingBudgets:n.thinkingBudgets})};function uSe(){Rc({api:`bedrock-camp-converse`,stream:m8,streamSimple:h8})}var dSe=c({copyTextToClipboard:()=>g8});async function g8(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 _8=null,v8=!1;function fSe(){return typeof chrome<`u`&&chrome?.runtime?.id?`extension`:typeof document<`u`&&document.documentElement?.dataset?.electronOverlay?`electron`:`cli`}async function y8(){if(!v8&&!(typeof localStorage<`u`&&localStorage.getItem(`telemetry-disabled`)===`true`))try{let e=fSe();typeof window<`u`&&(window.RUM_GENERATION=`slicc-${e}`),e===`extension`?(_8=(await I(()=>import(`./rum-DW84CvBs.js`),[])).default,typeof window<`u`&&(window.addEventListener(`error`,e=>{x8(`js`,S8(e.message??``))}),window.addEventListener(`unhandledrejection`,e=>{let t=e.reason;x8(`js`,S8(t instanceof Error?t.message:String(t)))}))):(typeof window<`u`&&(window.SAMPLE_PAGEVIEWS_AT_RATE=`high`),_8=(await I(()=>import(`./src-C9oNvq2b.js`),[])).sampleRUM),v8=!0,_8&&_8(`navigate`,{source:typeof document<`u`?document.referrer:``,target:e})}catch{}}function pSe(e,t){_8?.(`formsubmit`,{source:e,target:t})}function mSe(e){_8?.(`viewblock`,{source:e})}function b8(e){_8?.(`viewmedia`,{source:e})}function x8(e,t){_8?.(`error`,{source:e,target:t})}function hSe(e){_8?.(`signup`,{source:e})}function S8(e){return(e??``).slice(0,200).replace(/(\/[a-z]+)(?:\/[^\s/]+)+/gi,`$1/.../`)}var C8=`slicc_oauth_extra_domains`;function w8(e){try{let t=e.getItem(C8);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 gSe(e,t){try{e.setItem(C8,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 T8=c({addAccount:()=>Q8,applyProviderDefaults:()=>U8,clearAllSettings:()=>f5,describeInvalidJoinUrl:()=>Q6,downloadProviders:()=>d5,exportProviders:()=>u5,getAccounts:()=>K8,getAllAvailableModels:()=>G8,getAllExtraOAuthDomains:()=>Y8,getApiKey:()=>l5,getApiKeyForProvider:()=>n5,getApiVersionForProvider:()=>a5,getAvailableProviders:()=>I8,getBaseUrlForProvider:()=>r5,getDeploymentForProvider:()=>i5,getExtraOAuthDomains:()=>q8,getOAuthAccountInfo:()=>V8,getProviderConfig:()=>R8,getProviderModels:()=>B8,getSelectedModelId:()=>o5,getSelectedProvider:()=>c5,isModelHiddenFromPicker:()=>W8,logoutOAuthAccount:()=>e5,migrateLegacyAuthOnlySelection:()=>F8,providerOffersLlmModels:()=>L8,removeAccount:()=>$8,resolveCurrentModel:()=>m5,resolveModelById:()=>p5,saveOAuthAccount:()=>t5,setExtraOAuthDomains:()=>J8,setSelectedModelId:()=>s5,showProviderSettings:()=>_5}),E8=Yc,D8=Zc;function O8(){return typeof chrome<`u`&&!!chrome?.runtime?.id}function k8(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){H8.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 A8=`slicc_accounts`,j8=`selected-model`,M8=[`slicc_provider`,`slicc_api_key`,`slicc_base_url`,`anthropic_api_key`,`api_provider`,`azure_resource`,`bedrock_region`],_Se=new Set([`github`]);function N8(e){let t;try{t=Xc()}catch{return!1}return t.includes(e)&&!ub(e)}var P8=!1;function vSe(){if(!P8){P8=!0;for(let e of M8)try{localStorage.removeItem(e)}catch{}F8()}}function F8(){try{let e=localStorage.getItem(j8);if(e){let t=e.indexOf(`:`);if(t>0){let n=e.slice(0,t);(_Se.has(n)||N8(n))&&localStorage.removeItem(j8)}}}catch{}try{let e=localStorage.getItem(A8);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`&&N8(e.providerId)));n.length!==t.length&&localStorage.setItem(A8,JSON.stringify(n))}catch{}}function I8(){let e=Xc().filter(ub),t=Iie();return[...new Set([...e,...t])].filter(e=>!pb(e)?.hidden)}function L8(e){try{if(B8(e).length>0)return!0}catch{}try{if(Zc(e).length>0)return!0}catch{}let t=pb(e);return!!(t?.modelOverrides&&Object.keys(t.modelOverrides).length>0)}function R8(e){return pb(e)||{id:e,name:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `),description:`${e} provider`,requiresApiKey:!0,requiresBaseUrl:!1}}function z8(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 B8(e){try{if(e===`bedrock-camp`){let e=i8(r5(`bedrock-camp`));return D8(`amazon-bedrock`).filter(t=>a8(t,e)).map(e=>({...e,api:`bedrock-camp-converse`,provider:`bedrock-camp`}))}let t=R8(e);if(t.getModelIds){let n;try{n=t.getModelIds()}catch(t){return H8.error(`Provider getModelIds callback failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}let r=new Map;for(let e of Xc())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?{...a,api:i,provider:e}:{id:n.id,name:n.name??n.id,provider:e,api:i,baseUrl:``,contextWindow:2e5,maxTokens:16384,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},inputCost:0,outputCost:0,cacheReadCost:0,cacheWriteCost:0,reasoning:!0},s=t.modelOverrides?.[n.id];return s&&z8(o,s),z8(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&&z8(i,a),i})}return D8(e===`azure-ai-foundry`?`anthropic`:e)}catch(t){return H8.error(`Failed to load models`,{providerId:e,error:t instanceof Error?t.message:String(t)}),[]}}function V8(e){let t=K8().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 ySe=Object.assign({})[`/packages/webapp/providers.json`]??[],H8=$v(`provider-settings`);function U8(e=ySe){if(e.length===0||K8().length>0)return;let t=new Set(I8());for(let n of e)if(!(!n.providerId||!n.apiKey)){if(!t.has(n.providerId)){H8.warn(`Unknown provider "${n.providerId}" in providers.json — skipping`);continue}Q8(n.providerId,n.apiKey,n.baseUrl)}let n=e.find(e=>e.providerId&&e.apiKey&&t.has(e.providerId));n?.model&&!localStorage.getItem(j8)&&localStorage.setItem(j8,`${n.providerId}:${n.model}`)}var bSe=[/haiku/i];function W8(e){return bSe.some(t=>t.test(e))}function xSe(e){return e.filter(e=>!W8(e.id))}function G8(){let e=K8();if(e.length===0)return[];let t=new Map;for(let n of e){if(t.has(n.providerId))continue;let e=R8(n.providerId);if(e.hidden||N8(n.providerId))continue;let r=xSe(B8(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 K8(){vSe();let e=localStorage.getItem(A8);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 q8(e){return w8(localStorage)[e]??[]}function J8(e,t){let n=w8(localStorage),r=t.map(e=>e.trim()).filter(e=>e.length>0);r.length===0?delete n[e]:n[e]=r,gSe(localStorage,n)}function Y8(){return w8(localStorage)}function X8(e){localStorage.setItem(A8,JSON.stringify(e))}async function Z8(e){if(lF()){X8(e);return}let t=cF();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(A8,r)}catch(e){H8.warn(`worker-shim mirror failed after successful page write — reload to refresh`,{error:e instanceof Error?e.message:String(e)})}}function Q8(e,t,n,r,i){let a=K8().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),X8(a)}async function $8(e){let t=K8().find(t=>t.providerId===e),n=R8(e);t&&n?.isOAuth&&await e5(e);let r=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(r)await chrome.storage.local.remove([`oauth.${e}.token`,`oauth.${e}.token_DOMAINS`]);else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&H8.warn(`OAuth replica DELETE non-ok`,{providerId:e,status:t.status})}}catch(t){H8.error(`OAuth replica removal failed`,{providerId:e,isExtension:r,error:t instanceof Error?t.message:String(t)})}await Z8(K8().filter(t=>t.providerId!==e));let i=localStorage.getItem(j8)??``,a=i.indexOf(`:`);a>0&&i.slice(0,a)===e&&localStorage.removeItem(j8)}async function e5(e){let t=K8().find(t=>t.providerId===e);if(!t)return;let n=R8(e);if(!n?.isOAuth)return;if(n.onOAuthLogout)try{await n.onOAuthLogout()}catch(t){H8.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-DK0AQV_B.js`);return{openIdpLogoutUrl:e}},[]);await t(r).catch(t=>{H8.warn(`IdP logout popup failed`,{providerId:e,error:t instanceof Error?t.message:String(t)})})}}await Z8(K8().map(t=>t.providerId===e?{providerId:t.providerId,apiKey:``,baseUrl:t.baseUrl,userName:t.userName,userAvatar:t.userAvatar,loggedOut:!0}:t));let r=typeof chrome<`u`&&!!chrome?.runtime?.id;try{if(r)await chrome.storage.local.remove([`oauth.${e}.token`,`oauth.${e}.token_DOMAINS`]);else{let t=await fetch(`/api/secrets/oauth/${e}`,{method:`DELETE`});!t.ok&&t.status!==404&&H8.warn(`OAuth replica DELETE non-ok during logout`,{providerId:e,status:t.status})}}catch(t){H8.error(`OAuth replica removal failed during logout`,{providerId:e,isExtension:r,error:t instanceof Error?t.message:String(t)})}}async function t5(e){let t=K8().find(t=>t.providerId===e.providerId),n=K8().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 Z8(n);let r=R8(e.providerId)?.oauthTokenDomains??[],i=q8(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 chrome.storage.local.set({[`oauth.${e.providerId}.token`]:e.accessToken,[`oauth.${e.providerId}.token_DOMAINS`]:o.join(`,`)});let t=await new Promise(t=>{chrome.runtime.sendMessage({type:`secrets.mask-oauth-token`,providerId:e.providerId},n=>{chrome.runtime.lastError&&H8.error(`SW mask-oauth-token transport failed`,{providerId:e.providerId,error:chrome.runtime.lastError.message}),t(n??{})})});if(t.error&&H8.warn(`SW mask-oauth-token returned error`,{providerId:e.providerId,error:t.error}),t.maskedValue){let n=K8(),r=n.find(t=>t.providerId===e.providerId);r&&(r.maskedValue=t.maskedValue,await Z8(n))}}else{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=K8(),i=r.find(t=>t.providerId===e.providerId);i&&typeof n.maskedValue==`string`&&(i.maskedValue=n.maskedValue,await Z8(r))}else H8.warn(`OAuth replica POST non-ok`,{providerId:e.providerId,status:t.status})}}catch(t){H8.error(`OAuth replica sync failed`,{providerId:e.providerId,isExtension:s,error:t instanceof Error?t.message:String(t)})}}var SSe=`local`;function n5(e){let t=K8().find(t=>t.providerId===e);return t?t.accessToken||t.apiKey||(R8(e).optionalApiKey?SSe:null):null}function r5(e){return K8().find(t=>t.providerId===e)?.baseUrl??null}function i5(e){return K8().find(t=>t.providerId===e)?.deployment??null}function a5(e){return K8().find(t=>t.providerId===e)?.apiVersion??null}function o5(){let e=localStorage.getItem(j8)||``,t=e.indexOf(`:`);return t>=0?e.slice(t+1):e}function s5(e){if(e.includes(`:`))localStorage.setItem(j8,e);else{let t=c5();localStorage.setItem(j8,`${t}:${e}`)}}function CSe(){return localStorage.getItem(j8)||``}function c5(){let e=CSe(),t=e.indexOf(`:`);if(t>0)return e.slice(0,t);let n=K8();return n.length>0?n[0].providerId:`anthropic`}function l5(){return n5(c5())}function u5(){let e=K8(),t=c5(),n=o5();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 d5(){let e=JSON.stringify(u5(),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 f5(){let e=K8();await Promise.allSettled(e.map(e=>$8(e.providerId))),localStorage.removeItem(A8),localStorage.removeItem(j8);for(let e of M8)localStorage.removeItem(e)}function p5(e){if(!e)return m5();let t=c5(),n=r5(t);try{let r=R8(t),i=E8(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=B8(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{return m5()}}function m5(){let e=c5(),t=o5(),n=r5(e),r=B8(e),i=R8(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=R8(e),i=t.isOAuth||e===`azure-ai-foundry`?`anthropic`:e===`bedrock-camp`?`amazon-bedrock`:e,a=E8(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{let e=r.find(e=>e.id===o);return e?n?{...e,baseUrl:n}:e:E8(`anthropic`,`claude-sonnet-4-0`)}}function wSe(e){return e.length<=10?`****`:e.slice(0,4)+`...`+e.slice(-4)}function h5(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 g5={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 _5(e){return hSe(`button`),new Promise(t=>{let n=localStorage.getItem(A8)??``,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;`,K8().length>0?a():e?.autoJoinUrl?s(e.autoJoinUrl):e?.preferTrayJoin?c():o(),r.appendChild(i),document.body.appendChild(r);function a(){i.innerHTML=``;let e=document.createElement(`div`);e.className=`dialog__title`,e.textContent=`Accounts`,i.appendChild(e);let s=K8(),l=`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(s.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 s){let n=R8(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 s=document.createElement(`div`);s.style.cssText=`font-size: 14px; font-weight: 600; color: var(--s2-content-default);`,s.textContent=n.name,i.appendChild(s);let c=document.createElement(`div`);c.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?(c.textContent=t.userName?`Logged out — was ${t.userName}`:`Logged out`,c.style.color=`var(--s2-content-disabled)`):t.userName?c.textContent=t.userName:t.accessToken?c.textContent=`Logged in`:c.textContent=wSe(t.apiKey),t.baseUrl&&(c.textContent+=` • `+t.baseUrl),i.appendChild(c),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=l,d.setAttribute(`aria-label`,`Edit account`),d.appendChild(h5(g5.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`,()=>{o(t)}),u.appendChild(d),n.isOAuth){let e=t.loggedOut===!0,r=document.createElement(`button`);r.style.cssText=l,e?(r.setAttribute(`aria-label`,`Log in`),r.setAttribute(`title`,`Log in`),r.appendChild(h5(g5.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-DK0AQV_B.js`);return{createOAuthLauncher:e,createInterceptingOAuthLauncherForCurrentRuntime:t}},[]),r={forceReauth:!0};if(n.onOAuthLoginIntercepted){let e=await t();e&&await n.onOAuthLoginIntercepted(e,a,r)}else if(n.onOAuthLogin){let t=e();await n.onOAuthLogin(t,a,r)}})):(r.setAttribute(`aria-label`,`Log out`),r.setAttribute(`title`,`Log out`),r.appendChild(h5(g5.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 e5(t.providerId),a()})),u.appendChild(r)}let f=document.createElement(`button`);f.style.cssText=l,f.setAttribute(`aria-label`,`Remove account`),f.appendChild(h5(g5.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 $8(t.providerId),a()}),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=s.length>0?`dialog__btn dialog__btn--secondary`:`dialog__btn`,d.style.flex=`1`,d.textContent=`Add Account`,d.addEventListener(`click`,()=>o()),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`,()=>d5()),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=dF(),g=h.state!==`inactive`,_=Nb(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`,()=>c()),i.appendChild(v);let y=document.createElement(`hr`);y.style.cssText=`border: none; border-top: 1px solid var(--s2-border-subtle); margin: 16px 0;`,i.appendChild(y);let b=document.createElement(`button`);b.className=`dialog__btn`,b.textContent=`Get Started`,b.addEventListener(`click`,()=>{r.remove(),t((localStorage.getItem(A8)??``)!==n)}),i.appendChild(b)}function o(e){i.innerHTML=``;let t=!!e,n=document.createElement(`div`);n.className=`dialog__title`,n.textContent=t?`Edit Account`:`Add Account`,i.appendChild(n);let r=document.createElement(`div`);r.className=`dialog__desc`,r.textContent=`Provider:`,i.appendChild(r);let o=document.createElement(`select`);if(o.className=`dialog__input`,o.style.marginBottom=`8px`,t){let t=R8(e.providerId),n=document.createElement(`option`);n.value=e.providerId,n.textContent=t.name,o.appendChild(n),o.disabled=!0,o.style.opacity=`0.7`}else{let e=document.createElement(`option`);e.value=``,e.textContent=`Select a provider…`,e.disabled=!0,e.selected=!0,e.hidden=!0,o.appendChild(e);let t=I8(),n=new Set(K8().map(e=>e.providerId)),r=[...t].sort((e,t)=>{let n=R8(e).name,r=R8(t).name;return n.localeCompare(r)});for(let e of r){if(n.has(e)||!L8(e))continue;let t=R8(e),r=document.createElement(`option`);r.value=e,r.textContent=t.name,o.appendChild(r)}}i.appendChild(o);let s=document.createElement(`div`);s.className=`dialog__desc`,s.style.cssText=`font-size: 12px; color: var(--s2-content-tertiary); margin-bottom: 16px; margin-top: -4px;`,i.appendChild(s);let l=document.createElement(`div`);l.style.cssText=`margin-bottom: 16px; display: none;`;let u=document.createElement(`button`);u.className=`dialog__btn`,u.textContent=`Login`,u.style.cssText=`width: 100%; margin-bottom: 8px;`,l.appendChild(u);let d=document.createElement(`div`);d.className=`dialog__desc`,d.style.cssText=`font-size: 12px; color: var(--s2-content-secondary); text-align: center;`,l.appendChild(d);let f=()=>{let e=l,t=d,n=u;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 g8(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)})};u.addEventListener(`click`,async()=>{let e=o.value;if(!e)return;let t=R8(e);if(!t.onOAuthLogin&&!t.onOAuthLoginIntercepted)return;let n=K8().some(t=>t.providerId===e),r=r5(e);if(t.requiresBaseUrl&&!v.value.trim()&&!r){d.textContent=`Base URL is required.`,d.style.color=`var(--slicc-cone)`,v.focus();return}t.requiresBaseUrl&&v.value.trim()&&Q8(e,``,v.value.trim()),d.textContent=`Opening login window...`;try{if(t.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DK0AQV_B.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:f()})}else if(t.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DK0AQV_B.js`);return{createOAuthLauncher:e}},[]),n=e();await t.onOAuthLogin(n,a)}}catch(t){if(!n)try{await $8(e)}catch{}H8.error(`OAuth login failed`,{providerId:e,error:t instanceof Error?t.message:String(t)}),d.textContent=`Login failed: ${t instanceof Error?t.message:String(t)}`}}),t&&e.userName&&(d.textContent=`Logged in as ${e.userName}`,u.textContent=`Re-login`),i.appendChild(l);let p=document.createElement(`div`),m=document.createElement(`div`);m.className=`dialog__desc`,p.appendChild(m);let h=document.createElement(`input`);h.className=`dialog__input`,h.type=`password`,h.autocomplete=`off`,h.spellcheck=!1,t&&(h.value=e.apiKey),p.appendChild(h),i.appendChild(p);let g=document.createElement(`div`),_=document.createElement(`div`);_.className=`dialog__desc`,_.textContent=`Base URL:`,g.appendChild(_);let v=document.createElement(`input`);v.className=`dialog__input`,v.type=`text`,v.autocomplete=`off`,v.spellcheck=!1,t&&e.baseUrl&&(v.value=e.baseUrl),g.appendChild(v);let y=document.createElement(`div`);y.className=`dialog__desc`,y.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,g.appendChild(y),i.appendChild(g);let b=document.createElement(`div`);b.style.display=`none`;let ee=document.createElement(`div`);ee.className=`dialog__desc`,ee.textContent=`Deployment:`,b.appendChild(ee);let te=document.createElement(`input`);te.className=`dialog__input`,te.type=`text`,te.autocomplete=`off`,te.spellcheck=!1,t&&e.deployment&&(te.value=e.deployment),b.appendChild(te);let ne=document.createElement(`div`);ne.className=`dialog__desc`,ne.style.cssText=`font-size: 11px; color: var(--s2-content-secondary); margin-top: -12px; margin-bottom: 16px;`,b.appendChild(ne),i.appendChild(b);let x=document.createElement(`div`);x.style.display=`none`;let S=document.createElement(`div`);S.className=`dialog__desc`,S.textContent=`API Version:`,x.appendChild(S);let re=document.createElement(`input`);re.className=`dialog__input`,re.type=`text`,re.autocomplete=`off`,re.spellcheck=!1,t&&e.apiVersion&&(re.value=e.apiVersion),x.appendChild(re);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 ie=document.createElement(`div`);ie.style.cssText=`color: var(--slicc-cone); font-size: 12px; margin-bottom: 8px; display: none;`,i.appendChild(ie);let w=document.createElement(`button`);w.className=`dialog__btn`,w.textContent=t?`Save`:`Add`;function T(){let e=o.value;if(!e){s.textContent=``,l.style.display=`none`,p.style.display=`none`,g.style.display=`none`,b.style.display=`none`,x.style.display=`none`,w.style.display=`none`;return}let t=R8(e);if(s.textContent=t.description,t.isOAuth)l.style.display=``,p.style.display=`none`,g.style.display=t.requiresBaseUrl?``:`none`,t.requiresBaseUrl&&(v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``),u.textContent=`Login with ${t.name}`,w.style.display=`none`;else{l.style.display=`none`,m.textContent=`${t.requiresApiKey?`API Key`:`API Key (optional)`}${t.apiKeyEnvVar?` (${t.apiKeyEnvVar})`:``}:`,h.placeholder=t.apiKeyPlaceholder||`API key`;let e=t.requiresApiKey||t.optionalApiKey;p.style.display=e?``:`none`,v.placeholder=t.baseUrlPlaceholder||`https://...`,y.textContent=t.baseUrlDescription||``,g.style.display=t.requiresBaseUrl?``:`none`,w.style.display=``}t.requiresDeployment?(b.style.display=``,te.placeholder=t.deploymentPlaceholder||`deployment-name`,ne.textContent=t.deploymentDescription||``):b.style.display=`none`,t.requiresApiVersion?(x.style.display=``,!re.value&&t.apiVersionDefault&&(re.value=t.apiVersionDefault),re.placeholder=t.apiVersionDefault||`api-version`,C.textContent=t.apiVersionDescription||``):x.style.display=`none`}o.addEventListener(`change`,()=>{ie.style.display=`none`,T()}),T();function ae(){let e=o.value;if(!e)return;let t=R8(e);if(t.requiresApiKey&&h.value.trim().length<5){ie.textContent=`API key is required (at least 5 characters).`,ie.style.display=``,h.focus();return}if(t.requiresBaseUrl&&!v.value.trim()){ie.textContent=`Base URL is required for this provider.`,ie.style.display=``,v.focus();return}if(t.requiresDeployment&&!te.value.trim()){ie.textContent=`Deployment name is required for this provider.`,ie.style.display=``,te.focus();return}Q8(e,h.value.trim(),v.value.trim()||void 0,te.value.trim()||void 0,re.value.trim()||void 0),a()}w.addEventListener(`click`,ae);let E=e=>{e.key===`Enter`&&ae()};h.addEventListener(`keydown`,E),v.addEventListener(`keydown`,E),te.addEventListener(`keydown`,E),re.addEventListener(`keydown`,E),i.appendChild(w);let oe=K8().length>0;if(!t&&!oe){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`,()=>{c()}),i.appendChild(e)}else if(oe){let e=document.createElement(`button`);e.className=`dialog__btn dialog__btn--secondary`,e.style.marginTop=`8px`,e.textContent=`Back`,e.addEventListener(`click`,()=>{a()}),i.appendChild(e)}requestAnimationFrame(()=>{let e=o.value;if(!e)return;let t=R8(e);t.requiresApiKey?h.focus():t.requiresBaseUrl&&v.focus()})}function s(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 s=document.createElement(`div`);s.className=`dialog__desc`,s.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;`,s.textContent=e.length>80?e.slice(0,40)+`…`+e.slice(-37):e,i.appendChild(s);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=Mb(window.localStorage,e);if(!n){c.textContent=`Invalid sync URL.`,c.style.display=``,c.style.color=`var(--slicc-cone)`;return}if(O8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else k8(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`,()=>{o()}),i.appendChild(u)}function c(){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 s=document.createElement(`summary`);s.style.cssText=`cursor: pointer; user-select: none; color: var(--s2-content-secondary);`,s.textContent=`How do I get the sync URL?`,a.appendChild(s);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=Mb(window.localStorage,e);if(!n){f.textContent=Q6(e),f.style.display=``,d.focus();return}if(O8()){let e={type:`refresh-tray-runtime`,joinUrl:n.joinUrl,workerBaseUrl:n.workerBaseUrl};chrome.runtime.sendMessage({source:`panel`,payload:e}).catch(()=>{})}else k8(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`,()=>{o()}),i.appendChild(h),d.addEventListener(`input`,()=>{f.style.display=`none`}),d.addEventListener(`keydown`,e=>{e.key===`Enter`&&m.click()}),requestAnimationFrame(()=>d.focus())}})}var TSe=`slicc:adobe-daily-uuid:`,v5=new Map;function ESe(){return new Date().toISOString().slice(0,10)}function DSe(){try{let e=globalThis.localStorage;return!e||typeof e.getItem!=`function`||typeof e.setItem!=`function`?null:e}catch{return null}}function y5(e){let t=ESe(),n=DSe(),r=TSe+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=v5.get(e);if(i&&i.date===t)return i.uuid;let a=crypto.randomUUID();return v5.set(e,{uuid:a,date:t}),a}var b5=$v(`quick-llm`);async function x5(e){let t=l5();if(!t)return b5.debug(`No API key for active provider — skipping`),null;let n=c5(),r=o5(),i;if(i=e.modelId?S5(n,e.modelId)??S5(n,r):OSe(n,r),!i)return b5.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`]=MSe());try{let n=(await Fl(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 b5.debug(`Quick label call failed`,{error:e instanceof Error?e.message:String(e)}),null}}function OSe(e,t){let n=B8(e);if(n.length===0)return;let r=n.find(e=>e.id===t)??n[0],i=ASe(r.id),a=n.filter(e=>kSe(e,r,i));return a.length===0?r:(a.sort((e,t)=>(e.cost?.input??0)-(t.cost?.input??0)),a[0])}function kSe(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 ASe(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 S5(e,t){return B8(e).find(e=>e.id===t)}var jSe=`ui-quick-llm`;function MSe(){return y5(jSe)}var NSe=`browser-coding-agent`,PSe=1,C5=`sessions`;function FSe(){return new Promise((e,t)=>{let n=indexedDB.open(NSe,PSe);n.onupgradeneeded=()=>{let e=n.result;e.objectStoreNames.contains(C5)||e.createObjectStore(C5,{keyPath:`id`})},n.onsuccess=()=>e(n.result),n.onerror=()=>t(n.error)})}var w5=class{db=null;async init(){this.db=await FSe()}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(C5,`readwrite`);i.objectStore(C5).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(C5,`readonly`).objectStore(C5).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(C5,`readonly`).objectStore(C5).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(C5,`readwrite`);i.objectStore(C5).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)}},T5=[`#000000`,`#cd3131`,`#0dbc79`,`#e5e510`,`#2472c8`,`#bc3fbc`,`#11a8cd`,`#e5e5e5`],E5=[`#666666`,`#f14c4c`,`#23d18b`,`#f5f543`,`#3b8eea`,`#d670d6`,`#29b8db`,`#ffffff`],D5=()=>({fg:null,bg:null,bold:!1,dim:!1,italic:!1,underline:!1,strike:!1,inverse:!1}),O5=e=>Math.max(0,Math.min(255,Math.floor(e)||0));function ISe(e){if(e<0||e>255)return``;if(e<8)return T5[e];if(e<16)return E5[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 k5(e,t){let n=e[t+1];if(n===5){let n=e[t+2];return{color:typeof n==`number`?ISe(n):null,consumed:3}}return n===2?{color:`rgb(${O5(e[t+2]??0)},${O5(e[t+3]??0)},${O5(e[t+4]??0)})`,consumed:5}:{color:null,consumed:2}}function LSe(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,D5());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=T5[t-30];else if(t===38){let t=k5(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=T5[t-40];else if(t===48){let t=k5(r,e);t.color&&(n.bg=t.color),e+=t.consumed-1}else t===49?n.bg=null:t>=90&&t<=97?n.fg=E5[t-90]:t>=100&&t<=107&&(n.bg=E5[t-100])}return n}function RSe(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 zSe=e=>!!(e.fg||e.bg||e.bold||e.dim||e.italic||e.underline||e.strike||e.inverse),A5=(e,t)=>{let n=J6(e);return zSe(t)?`<span style="${RSe(t)}">${n}</span>`:n},j5=/\x1b\[[?!#>]?[\d;]*[@-~]|\x1b\][\s\S]*?(?:\x07|\x1b\\)/g,BSe=/^\x1b\[([\d;]*)m$/;function VSe(e){if(!e)return``;let t=``,n=0,r=D5();j5.lastIndex=0;let i;for(;(i=j5.exec(e))!==null;){let a=e.slice(n,i.index);a&&(t+=A5(a,r));let o=BSe.exec(i[0]);if(o){let e=o[1]===``?[]:o[1].split(`;`).map(e=>Number(e)||0);r=LSe(r,e)}n=i.index+i[0].length}let a=e.slice(n);return a&&(t+=A5(a,r)),t}function HSe(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 USe={icon:l3,title:`tool`,preview:e=>L5(e,80)},WSe={read_file:{icon:hX,title:`read`,preview:e=>I5(e,`path`)??``,renderBody:XSe},write_file:{icon:iX,title:`write`,preview:e=>I5(e,`path`)??``},edit_file:{icon:tX,title:`edit`,preview:e=>I5(e,`path`)??``,renderBody:tCe},bash:{icon:F4,title:`bash`,preview:e=>{let t=I5(e,`command`)??``;return t?HSe(`$ ${R5(t,120)}`):``},renderBody:eCe},browser:{icon:SQ,title:`browser`,preview:e=>L5(e,80)},javascript:{icon:iq,title:`javascript`,preview:e=>R5((I5(e,`code`)??``).replace(/\s+/g,` `),100)},send_message:{icon:t2,title:`message`,preview:e=>{let t=I5(e,`text`)??``;return t?`"${R5(t,100)}"`:``}},feed_scoop:{icon:n3,title:`feed`,preview:e=>I5(e,`scoop_name`)??``},scoop_scoop:{icon:z$,title:`scoop`,preview:e=>I5(e,`name`)??``},drop_scoop:{icon:W4,title:`drop`,preview:e=>I5(e,`scoop_name`)??``},scoop_mute:{icon:a3,title:`mute`,preview:e=>z5(e)},scoop_unmute:{icon:i3,title:`unmute`,preview:e=>z5(e)},scoop_wait:{icon:M$,title:`wait`,preview:e=>{let t=z5(e),n=I5(e,`timeout_ms`);return n===void 0||n===``?t:t?`${t} (${n}ms)`:`${n}ms`}},list_scoops:{icon:C0,title:`list scoops`,preview:()=>``},list_tasks:{icon:i0,title:`list tasks`,preview:()=>``},register_scoop:{icon:Q4,title:`register`,preview:e=>I5(e,`name`)??``},schedule_task:{icon:NK,title:`schedule`,preview:e=>I5(e,`cron`)??I5(e,`name`)??``},update_global_memory:{icon:qH,title:`memory`,preview:e=>R5((I5(e,`content`)??``).split(`
987
987
  `).find(e=>e.trim().length>0)??``,100)},delegate_to_scoop:{icon:D2,title:`delegate`,preview:e=>I5(e,`scoop_name`)??``}};function M5(e){return WSe[e]??{...USe,title:e}}function N5(e){return e.result===void 0?`running`:e.isError?`error`:`success`}function GSe(e){return B5(M5(e).icon)}function P5(){return B5(cq)}function KSe(e){return e.length===0?[]:e.length<3?e.map(e=>({kind:`single`,toolCall:e})):[{kind:`cluster`,toolCalls:[...e]}]}function qSe(e){return F5(e.map(e=>M5(e.name).title))}function F5(e){return R5(e.join(`, `),120)}function JSe(e){let t=M5(e.name);if(t.renderBody)try{return t.renderBody(e)}catch{}return YSe(e)}function I5(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 L5(e,t){if(e==null)return``;if(typeof e==`string`)return R5(e,t);try{return R5(JSON.stringify(e),t)}catch{return R5(String(e),t)}}function R5(e,t){return e.length<=t?e:e.slice(0,t-1).trimEnd()+`…`}function z5(e){if(!e||typeof e!=`object`)return``;let t=e.scoop_names;return Array.isArray(t)?R5(t.filter(e=>typeof e==`string`).join(`, `),100):``}function B5(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 YSe(e){let t=document.createElement(`div`);return t.className=`tool-call__body`,e.input!==void 0&&t.appendChild(ZSe(e.input)),e.result!==void 0&&t.appendChild(V5(e)),t}function XSe(e){let t=document.createElement(`div`);return t.className=`tool-call__body`,e.result!==void 0&&t.appendChild(V5(e)),t}function V5(e){let t=document.createElement(`pre`);return t.className=`tool-call__result${e.isError?` tool-call__result--error`:``}`,t.textContent=e.result??``,t}function ZSe(e){let t=document.createElement(`pre`);return t.className=`tool-call__yaml`,t.innerHTML=H5(e,0),t}function H5(e,t){let n=` `.repeat(t);if(e==null)return`${n}<span class="tool-call__yaml-null">~</span>`;if(typeof e==`string`)return $Se(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=>U5(e)?`${n}- ${W5(e)}`:`${n}- ${H5(e,t+1).replace(/^\s+/,``)}`).join(`
988
988
  `);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])=>QSe(e,n,t)).join(`
989
989
  `)}return`${n}${J6(String(e))}`}function QSe(e,t,n){let r=` `.repeat(n),i=`<span class="tool-call__yaml-key">${J6(e)}</span>`;return U5(t)?`${r}${i}: ${W5(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${H5(t,n+1)}`}function U5(e){return typeof e!=`object`||!e}function W5(e){if(e==null)return`<span class="tool-call__yaml-null">~</span>`;if(typeof e==`string`){if(e.includes(`
@@ -1599,7 +1599,7 @@ ${n}
1599
1599
  `,this.container.appendChild(i)}};function C7(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 twe=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
1600
1600
  `,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 nwe(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 rwe=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()}},iwe=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:Y5}};function awe(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=w7(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=w7(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 w7(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 owe(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 g8(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 T7=$v(`ui.layout`),E7=`<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>`,D7=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 rwe;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)}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=G8(),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}=R8(t.providerId),n=(e?t.models.find(t=>t.id.toLowerCase().includes(e.toLowerCase())):void 0)??t.models[0];s5(`${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 nwe(e)}appendTrayMenu(e){let t=Nxe(Bb(),dF()),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(()=>gF),void 0),I(()=>Promise.resolve().then(()=>Wie),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);T7.error(`enable-tray failed`,{error:t}),O7(`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 g8(t.joinUrl);owe({joinUrl:t.joinUrl,copied:n,onReset:CF()})}),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(()=>gF);return{leaveTray:e}},void 0);await e()}catch(e){let t=e instanceof Error?e.message:String(e);T7.error(`leave-tray failed`,{error:t}),O7(`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=K8().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=K8(),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=R8(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()=>{R8(r.providerId)?.isOAuth?await e5(r.providerId):await $8(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 f5(),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(),l5()||await f5(),await _5()&&(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
1601
1601
  Double-click — fastest reset, memory extracts in background
1602
- 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 iwe(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 yCe(a),terminal:new twe(this.terminalContainer,{onClearTerminal:()=>{this.panels.terminal.clearTerminal(),this.openTerminal()}}),fileBrowser:new ECe(o,{onRunCommand:async e=>{await this.runFileBrowserCommand(e),this.openTerminal()}}),memory:new DCe(this.memoryContainer),scoops:new ewe(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));awe(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:E7,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:E7,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 O7(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 k7=$v(`new-session`),A7=`ui-new-session`;async function j7(e){let t=l5()??void 0,n;try{n=m5()}catch(e){k7.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let r=n?.provider===`adobe`?{"X-Session-Id":y5(A7)}:void 0,i=new w5;try{await i.init()}catch(e){return k7.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}return f7({sessionStore:i,vfs:e.vfs,model:n,apiKey:t,headers:r})}async function M7(e){let t=new w5;try{await t.init()}catch(e){return k7.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}return f7({sessionStore:t,vfs:e.vfs,mode:`quick`})}async function swe(e){let t={found:0,enriched:[]},n=[];try{n=await XCe(e.vfs)}catch(e){return k7.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=l5()??void 0,i;try{i=m5()}catch(e){return k7.info(`No active model — skipping background enrichment`,{error:e instanceof Error?e.message:String(e)}),t}if(!r||!i)return k7.info(`LLM credentials unavailable — leaving pending entries for later boot`,{pending:n.length}),t;let a=i.provider===`adobe`?{"X-Session-Id":y5(A7)}:void 0;for(let o of n)try{let n=await ZCe(e.vfs,o,{model:i,apiKey:r,headers:a});n&&t.enriched.push(n)}catch(e){k7.warn(`Background enrichment threw (entry stays pending)`,{filename:o.filename,error:e instanceof Error?e.message:String(e)})}return k7.info(`Background enrichment pass complete`,{found:t.found,enriched:t.enriched.length}),t}function N7(e){let t=()=>{swe({vfs:e}).catch(()=>{})},n=globalThis.requestIdleCallback;typeof n==`function`?n(t):setTimeout(t,0)}function P7(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 F7(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 I7=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}}},L7=$v(`tray-sync`),R7=32*1024;function z7(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/R7),o=!0;for(let n=0;n<a;n++){let r=i.slice(n*R7,(n+1)*R7);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 B7(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 V7=32*1024;function cwe(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/V7),a=!0;for(let t=0;t<i;t++){let o=r.slice(t*V7,(t+1)*V7);if(!e.send({type:`snapshot_chunk`,chunkData:o,chunkIndex:t,totalChunks:i,scoopJid:n})){a=!1,L7.error(`Failed to send snapshot chunk`,{chunkIndex:t,totalChunks:i,totalSize:r.length});break}}return L7.debug(`Snapshot sent in chunks`,{totalChunks:i,totalSize:r.length}),a}function lwe(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 L7.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 H7=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){L7.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 L7.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 uwe(e){return new H7(e)}function dwe(e){return new H7(e)}var U7=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=B7(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)}},W7=$v(`data-channel-keepalive`),G7=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++,W7.debug(`Missed pong`,{missedPongs:this.missedPongs,maxMissed:this.maxMissed}),this.missedPongs>=this.maxMissed)){W7.warn(`Channel declared dead`,{missedPongs:this.missedPongs}),this.stop(),this.onDead();return}this.awaitingPong=!0,this.sendPing()}}},K7=64*1024;async function q7(e,t){try{switch(t.op){case`readFile`:return await fwe(e,t.path,t.encoding);case`writeFile`:return[await pwe(e,t.path,t.content,t.encoding)];case`stat`:return[await mwe(e,t.path)];case`readDir`:return[await hwe(e,t.path)];case`mkdir`:return[await gwe(e,t.path,t.recursive)];case`rm`:return[await _we(e,t.path,t.recursive)];case`exists`:return[await vwe(e,t.path)];case`walk`:return[await ywe(e,t.path)];default:return[{ok:!1,error:`Unknown fs operation: ${t.op}`}]}}catch(e){return[bwe(e)]}}async function fwe(e,t,n){return(n??`utf-8`)===`utf-8`?J7(await e.readFile(t,{encoding:`utf-8`}),`utf-8`):J7(xwe(await e.readFile(t,{encoding:`binary`})),`base64`)}async function pwe(e,t,n,r){if(r===`base64`){let r=Swe(n);await e.writeFile(t,r)}else await e.writeFile(t,n);return{ok:!0,data:{type:`void`}}}async function mwe(e,t){return{ok:!0,data:{type:`stat`,stat:await e.stat(t)}}}async function hwe(e,t){return{ok:!0,data:{type:`dirEntries`,entries:await e.readDir(t)}}}async function gwe(e,t,n){return await e.mkdir(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function _we(e,t,n){return await e.rm(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function vwe(e,t){return{ok:!0,data:{type:`exists`,exists:await e.exists(t)}}}async function ywe(e,t){let n=[];for await(let r of e.walk(t))n.push(r);return{ok:!0,data:{type:`paths`,paths:n}}}function J7(e,t){if(e.length<=K7)return[{ok:!0,data:{type:`file`,content:e,encoding:t}}];let n=Math.ceil(e.length/K7),r=[];for(let i=0;i<n;i++){let a=i*K7,o=e.slice(a,a+K7);r.push({ok:!0,data:{type:`file`,content:o,encoding:t},chunkIndex:i,totalChunks:n})}return r}function bwe(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 xwe(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Swe(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 Y7=$v(`tray-follower-sync`),Cwe=15e3,wwe=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=dwe(e),this.unsubscribe=this.sync.onMessage(e=>{this.handleLeaderMessage(e)}),this.keepalive=new G7({sendPing:()=>this.sync.send({type:`ping`}),onDead:()=>{Y7.warn(`Leader keepalive dead, cleaning up`),this.handleDisconnect(`Keepalive timeout — leader not responding`),this.options.onDead?.()}}),this.keepalive.start(),e.addEventListener(`close`,()=>{Y7.warn(`Data channel closed`),this.handleDisconnect(`Data channel closed`)}),e.addEventListener(`error`,()=>{Y7.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?Gv(n):n;this.sync.send({type:`user_message`,text:e,messageId:r,attachments:i}),Y7.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`}),Y7.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`),Y7.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}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??Cwe;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})}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,mF({...dF(),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`:Y7.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=lwe(this.snapshotChunkBuffer,e);this.snapshotChunkBuffer=t.buffer,t.result&&(Y7.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),Y7.debug(`Skipping own message echo`,{messageId:e.messageId});break}Y7.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`:Y7.warn(`Error from leader`,{error:e.error}),this.emitEvent({type:`error`,error:e.error});break;case`targets.registry`:Y7.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`:Y7.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`:Y7.debug(`Sprinkle update received`,{sprinkleName:e.sprinkleName}),this.options.onSprinkleUpdate?.(e.sprinkleName,e.data);break;case`ping`:this.keepalive.receivePing(),this.sync.send({type:`pong`});break;case`pong`:this.keepalive.receivePong(),hF(Date.now());break;default:Y7.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){Y7.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)){Y7.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){Y7.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)?Y7.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){Y7.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){Y7.error(`Listener error`,{eventType:e.type,error:t instanceof Error?t.message:String(t)})}}createRemoteTransport(e,t){let n=new U7({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),Y7.debug(`Tracking remote CDP session`,{remoteSessionId:e})}n===`Target.detachFromTarget`&&i&&this.remoteCDPSessions.has(i)&&(this.remoteCDPSessions.delete(i),Y7.debug(`Removed remote CDP session on detach`,{sessionId:i})),z7(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=B7(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 q7(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})})}},X7=$v(`tray-follower`);function Z7(e){let t=new URL(e);return t.searchParams.set(`json`,`true`),t.toString()}async function Twe(e){let t=Z7(e.joinUrl),n=await jwe(await(e.fetchImpl??fetch)(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:e.controllerId,runtime:e.runtime})}));return X7.info(`Follower tray attach response`,{trayId:n.trayId,action:n.result.action,code:n.result.code,participantCount:n.participantCount}),Ewe(n)}function Ewe(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 Dwe(e){return Q7(await $7(e,{action:`poll`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,cursor:e.cursor}))}async function Owe(e){return Q7(await $7(e,{action:`answer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,answer:e.answer}))}async function kwe(e){return Q7(await $7(e,{action:`ice-candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:e.candidate}))}async function Awe(e){return Q7(await $7(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 jwe(e){let t=null,n=null;try{t=await e.text(),n=JSON.parse(t)}catch{}if(!Mwe(n)){let n=t?t.slice(0,200):`(empty)`;throw X7.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 $7(e,t){let n=Z7(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(!Nwe(i))throw Error(`Tray follower bootstrap returned an invalid response (${r.status})`);return i}function Mwe(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`&&e9(r.bootstrap):r.action===`fail`?(r.code===`INVALID_JOIN_CAPABILITY`||r.code===`TRAY_EXPIRED`)&&typeof r.error==`string`:!1}function Nwe(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`&&e9(t.bootstrap)&&Array.isArray(t.events)}function e9(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 t9=$v(`tray-webrtc`),Pwe=`tray-control`,Fwe=250,Iwe=class{options;peerConnectionFactory;dataChannelLabel;peers=new Map;iceServers;constructor(e){this.options=e,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>n9(this.iceServers)),this.dataChannelLabel=e.dataChannelLabel??Pwe}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=i9(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`)&&(t9.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`?(t9.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`?(t9.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:r9(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){t9.warn(`Failed to report tray bootstrap failure`,{error:e instanceof Error?e.message:String(e)})}}}},Lwe=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??(()=>n9(this.iceServers)),this.controllerIdFactory=e.controllerIdFactory??(()=>crypto.randomUUID()),this.sleep=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),this.pollIntervalMs=e.pollIntervalMs??Fwe}async start(){this.stopped=!1;let e=this.controllerIdFactory(),t=Date.now();mF({state:`connecting`,joinUrl:this.options.joinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:t,lastError:null}),t9.info(`Follower tray join starting`,{joinUrl:this.options.joinUrl});let n=0;for(;;){a9(this.stopped),n++;let t;try{t=await Twe({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 mF({...dF(),attachAttempts:n,lastError:t}),e}if(mF({...dF(),attachAttempts:n,lastAttachCode:t.code}),t.action===`wait`){let e=t.retryAfterMs??1e3;t9.info(`Follower tray attach waiting`,{attempt:n,code:t.code,retryAfterMs:e}),n%10==0&&t9.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 mF({state:`error`,joinUrl:this.options.joinUrl,trayId:null,error:e,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:e}),t9.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 mF({state:`connected`,joinUrl:this.options.joinUrl,trayId:r.trayId,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:null}),t9.info(`Follower tray connected`,{trayId:r.trayId,controllerId:e}),r}catch(e){let r=e instanceof Error?e.message:String(e);throw mF({state:`error`,joinUrl:this.options.joinUrl,trayId:t.trayId,error:r,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:r}),t9.warn(`Follower tray bootstrap failed`,{error:r}),e}}}stop(){this.stopped=!0,this.activePeer?.peer.close(),this.activePeer?.channel?.close(),this.activePeer=null,mF({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(a9(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 Dwe({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 Owe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,answer:r9(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 Awe({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`)&&(t9.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?(t9.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?(t9.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=i9(n);r&&kwe({joinUrl:this.options.joinUrl,controllerId:e,bootstrapId:t,candidate:r,fetchImpl:this.fetchImpl}).catch(e=>{t9.warn(`Failed to send follower ICE candidate`,{error:e instanceof Error?e.message:String(e)})})}),r}};function Rwe(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 Lwe({...e,sleep:o,onDisconnected:e=>{s||(t9.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),mF({...dF(),state:`reconnecting`,error:null,reconnectAttempts:f}),t9.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,mF({...dF(),state:`connected`,joinUrl:e.joinUrl,trayId:i.trayId,error:null,lastPingTime:null,reconnectAttempts:0,connectingSince:null,lastError:null}),t9.info(`Reconnect successful`,{attempt:f,trayId:i.trayId}),t.onConnected(i);return}catch(e){m=e instanceof Error?e.message:String(e),t9.warn(`Reconnect attempt failed`,{attempt:f,error:m}),n?.stop(),l=null}p=Math.min(p*r,i)}s||(c=!1,mF({...dF(),state:`error`,error:`Reconnect failed after ${f} attempts: ${m}`,reconnectAttempts:f}),t9.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||t9.error(`Initial follower connection failed`,{error:e instanceof Error?e.message:String(e)})}),u}function n9(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 r9(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 i9(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 a9(e){if(e)throw Error(`Tray follower stopped before WebRTC bootstrap completed`)}var zwe=c({SprinkleFollowerController:()=>s9}),o9=$v(`sprinkle-follower`),s9=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}o9.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),o9.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 aR(r,this.createBridge(e));this.addSprinkle(e,t.title,r,this.zone);try{await i.render(n,e)}catch(t){o9.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){o9.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){o9.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){o9.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){o9.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){o9.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){o9.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 o9.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:f3(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`))}}},c9=$v(`page-follower-tray`);function l9(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.browserAPI.setTrayTargetProvider(null),n.close(),null)};return a=Rwe({joinUrl:e.joinUrl,runtime:`slicc-standalone`,fetchImpl:e._fetchImpl,peerConnectionFactory:e._peerConnectionFactory,sleep:e._sleep},{onConnected:a=>{o();let s=`follower-${a.bootstrapId}`,c=null,l=new wwe(a.channel,{browserTransport:e.browserAPI.getTransport(),browserAPI:e.browserAPI,onSnapshot:e.onSnapshot,onUserMessage:e.onUserMessage,onStatus:e.onStatus,onTargetsChanged:()=>void d(),onSprinklesList:t=>{e.onSprinklesList?.(t),c?.updateAvailable(t)},onSprinkleUpdate:(e,t)=>c?.handleSprinkleUpdate(e,t),onDisconnect:e=>{c9.warn(`Follower sync disconnected`,{reason:e}),o()}});e.addSprinkle&&e.removeSprinkle&&(c=new s9({sync:l,addSprinkle:e.addSprinkle,removeSprinkle:e.removeSprinkle}),r=c);let u=new I7(c9,{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(t.map(e=>({targetId:e.targetId,title:e.title,url:e.url})),s)}catch(e){c9.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),l.requestSnapshot(),i=setInterval(()=>void d(),t),d(),c9.info(`Follower sync wired`,{trayId:a.trayId})},onReconnecting:e=>{c9.info(`Follower reconnecting`,{attempt:e})},onGaveUp:e=>{c9.warn(`Follower reconnect gave up`,{lastError:e}),o()},sleep:e._sleep}),{stop(){o(),a?.cancel(),a=null},get currentSync(){return n}}}var Bwe=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});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}},u9=$v(`tray-leader-sync`);function Vwe(e){return e?e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}var Hwe=class e{options;followers=new Map;registry=new Bwe;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=uwe(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new G7({sendPing:()=>r.send({type:`ping`}),onDead:()=>{u9.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:Vwe(n?.runtime)}),u9.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(),u9.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),u9.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?Gv(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){u9.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,cwe(n.sync,i,r),u9.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){u9.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){u9.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){u9.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){u9.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`:{u9.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?Gv(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n);break}case`abort`:u9.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:u9.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{u9.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`:u9.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`:u9.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop)}catch(e){u9.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break;case`targets.advertise`:u9.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),u9.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`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 U7({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),u9.debug(`Cleaned up stale remote transport`,{key:e}))}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}})}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.followers.get(n);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);z7(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=B7(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&&z7(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)}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`));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}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 q7(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?q7(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})})}},d9=$v(`page-leader-tray`);function f9(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i,a;a=new Hwe({getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerCountChanged:e.onFollowerCountChanged,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs}),e.browserAPI.setTrayTargetProvider(a),i=new Iwe({sendControlMessage:e=>r.sendControlMessage(e),onPeerConnected:(e,t)=>{d9.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)=>{d9.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}}),r=new sae({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=>{d9.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{d9.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{d9.info(`Leader tray reconnected`,{trayId:e.trayId}),u(e)},onReconnectGaveUp:(e,t)=>{d9.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t})}});let o=e.onAgentEvent(e=>a.broadcastEvent(e)),s=[],c=new I7(d9,{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){d9.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){d9.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t));function u(t){let n=e._historyOverride??Uwe();if(n)try{let e=Fb(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){d9.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}return r.start().then(e=>{u(e)}).catch(e=>{d9.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()),Bb()},leader:r,peers:i,sync:a}}function Uwe(){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)}}}var Wwe=[{id:`chat`,label:`Chat`},{id:`terminal`,label:`Terminal`},{id:`files`,label:`Files`},{id:`memory`,label:`Memory`}],p9=`chat`,Gwe=new Set(Wwe.map(e=>e.id));function Kwe(e){return Gwe.has(e)}function qwe(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(`runtime`)===`hosted-leader`?`hosted-leader`:Ywe(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function Jwe(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function m9(e){try{let t=new URL(e).searchParams.get(`tab`);return t&&Kwe(t)?t:p9}catch{return p9}}function Ywe(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function Xwe(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`slicc-electron-overlay:set-tab`}function h9(e){return e.toLowerCase().endsWith(SL)}function Zwe(e){return Array.from(e).find(e=>h9(e.name))??null}function g9(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 Qwe(e){if(!e)return null;if(e.files){let t=Zwe(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&&h9(e.name))return e}return null}function $we(e){if(!e)return[];let t=[],n=new Set,r=e=>{!e||n.has(e)||h9(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 _9=$v(`sprinkle-icon`),eTe=`<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">`,tTe=`</svg>`,v9=null;function nTe(){return v9||=I(()=>Promise.resolve().then(()=>Xye).then(e=>e.icons),void 0),v9}function rTe(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function y9(e){return String(e).replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function iTe(e){return`${eTe}${e.map(([e,t])=>{let n=Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}="${y9(t)}"`);return n.length?`<${e} ${n.join(` `)}/>`:`<${e}/>`}).join(``)}${tTe}`}async function aTe(e){let t=rTe(e),n=(await nTe())[t];return n?iTe(n):null}function oTe(e){return/^\s*<svg\b/i.test(e)}function sTe(e){return/^data:/i.test(e)}function cTe(e){return e.startsWith(`/`)}function b9(e){return/\.(svg|png|jpe?g|webp|gif|ico)$/i.test(e)}function lTe(e){return/^[a-z][a-z0-9-]*$/.test(e)}function x9(e){return`<img src="${y9(e)}" width="16" height="16" alt="" style="display:block;width:16px;height:16px;object-fit:contain"/>`}async function S9(e,t){if(!e)return null;if(oTe(e))return x9(C9(e));if(sTe(e))return x9(e);if(cTe(e)&&t){try{if(b9(e)&&e.toLowerCase().endsWith(`.svg`)){let n=await t.readFile(e,{encoding:`utf-8`}),r=w9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));return r?x9(C9(r)):null}if(b9(e)){let n=await t.readFile(e,{encoding:`binary`}),r=n instanceof Uint8Array?n:new Uint8Array;return x9(`data:${uTe(e)};base64,${T9(r)}`)}let n=await t.readFile(e,{encoding:`utf-8`}),r=w9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));if(r)return x9(C9(r))}catch(t){_9.warn(`Failed to read sprinkle icon from VFS`,{path:e,error:t instanceof Error?t.message:String(t)})}return null}if(lTe(e)){let t=await aTe(e);if(t)return t;_9.warn(`Unknown Lucide icon name`,{spec:e})}return null}function C9(e){return`data:image/svg+xml;base64,${T9(new TextEncoder().encode(e))}`}function w9(e){let t=e.match(/<svg\b[\s\S]*?<\/svg>/i);return t?t[0]:null}function uTe(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 T9(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 dTe=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:mTe(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:f3(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)}},fTe=`slicc-sprinkle-routes`;function pTe(){try{let e=localStorage.getItem(fTe);return e?JSON.parse(e):{}}catch{return{}}}function mTe(e){return pTe()[e]}var hTe=[`/shared/sprinkles`],gTe=new Set([`welcome`,`connect-llm`]);async function _Te(e){let t=new Map;for(let n of hTe)await e.exists(n)&&await E9(e,n,t);return await E9(e,`/`,t),t}async function E9(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=vTe(r);if(!gTe.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:yTe(i,t),autoOpen:bTe(i),icon:xTe(i)})}}}function vTe(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function yTe(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 bTe(e){return/data-sprinkle-autoopen\b/.test(e)}function xTe(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=STe(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=D9(i,`href`);if(a!==void 0)return a.trim()}let r=D9(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function STe(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 D9(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var CTe=c({SprinkleManager:()=>F9,readOpenSprinklesFromUrl:()=>j9,writeOpenSprinklesToUrl:()=>M9}),O9=$v(`sprinkle-manager`),k9=`slicc-open-sprinkles`,A9=`sprinkles`;function j9(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(A9);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function M9(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(A9):t.searchParams.set(A9,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var N9=`slicc-known-sprinkles`,P9=`slicc-autoopened-once`,wTe=[`/workspace`,`/shared`,`/scoops`],TTe=250,F9=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=lF(),n=cF();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 dTe(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&&O9.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=j9();if(e!==null){for(let t of e)try{await this.open(t)}catch{O9.warn(`Failed to restore sprinkle`,{name:t})}return}else{let e=localStorage.getItem(k9);if(e)try{let t=JSON.parse(e);for(let e of t)try{await this.open(e)}catch{O9.warn(`Failed to restore sprinkle`,{name:e})}}finally{try{localStorage.removeItem(k9)}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{O9.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),O9.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{O9.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(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}}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(N9,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(P9);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(P9,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(k9,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,M9([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<TTe))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)){O9.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),O9.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{O9.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),O9.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{O9.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 _Te(this.fs),O9.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){O9.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){O9.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){O9.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){O9.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 aR(o,this.bridge.createAPI(e));await s.render(a,e),this.openSprinkles.get(e).renderer=s,this.persistOpenSprinkles(),mSe(e),O9.info(`Sprinkle opened`,{name:e,title:r.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),O9.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){O9.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(),O9.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),O9.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=>{O9.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=wTe.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){O9.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){O9.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}},ETe=100,I9=6,L9=null,R9=null,z9=null;function DTe(){return L9||(L9=document.createElement(`div`),L9.className=`s2-tooltip`,document.body.appendChild(L9)),L9}function OTe(e){let t=e.getAttribute(`data-tooltip`);if(!t)return;let n=DTe();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-I9,s=r.left+r.width/2-i.width/2):a===`right`?(o=r.top+r.height/2-i.height/2,s=r.right+I9):a===`left`?(o=r.top+r.height/2-i.height/2,s=r.left-i.width-I9):(o=r.bottom+I9,s=r.left+r.width/2-i.width/2),a===`bottom`&&o+i.height>window.innerHeight-4?o=r.top-i.height-I9:a===`top`&&o<4?o=r.bottom+I9:a===`left`&&s<4?s=r.right+I9:a===`right`&&s+i.width>window.innerWidth-4&&(s=r.left-i.width-I9),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 B9(){R9&&=(clearTimeout(R9),null),z9=null,L9?.classList.remove(`s2-tooltip--visible`)}function kTe(){document.addEventListener(`pointerover`,e=>{let t=e.target.closest?.(`[data-tooltip]`);t&&t===z9||(B9(),t&&(z9=t,R9=setTimeout(()=>OTe(t),ETe)))},!0),document.addEventListener(`pointerout`,e=>{if(!z9)return;let t=e.relatedTarget;t&&z9.contains(t)||B9()},!0),document.addEventListener(`pointerdown`,B9,!0)}var $=$v(`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 ATe(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=By.fromHandle(r,{mountId:Vy()});await e.mount(t,i),$.info(`Mounted folder from welcome onboarding`,{name:r.name,path:t})}t.close()}function jTe(){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 MTe(){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 NTe(e,t,n,r){let i=jTe(),a=0,o=!1,s=()=>{a=0,o||i.hide()};window.addEventListener(`dragenter`,e=>{g9(e.dataTransfer)&&(e.preventDefault(),a+=1,o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragover`,e=>{g9(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=Qwe(c.dataTransfer),u=$we(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 IL(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 PTe(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 yae())return;let r=e?await PTe(e):{},{getSelectedModelId:i,getProviderConfig:a,getProviderModels:o}=await I(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await Promise.resolve().then(()=>T8);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-BDRYlJgy.js`);return{OffscreenClient:e}},[]),{VirtualFS:i}=await I(async()=>{let{VirtualFS:e}=await Promise.resolve().then(()=>xL);return{VirtualFS:e}},void 0),{publishAgentBridgeProxy:a}=await I(async()=>{let{publishAgentBridgeProxy:e}=await import(`./agent-bridge-Dl768bk5.js`);return{publishAgentBridgeProxy:e}},[]),o=new D7(e,!n);await o.panels.chat.initSession(`session-cone`),a();let s=null,c=await i.create({dbName:`slicc-fs`});o.panels.fileBrowser.setFs(c),$.info(`File browser wired to shared VFS (local IndexedDB)`),sb().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await lb(e,c,$);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 l=new BroadcastChannel(`preview-vfs`);l.onmessage=e=>{if(e.data?.type!==`preview-vfs-read`)return;let{id:t,path:n,asText:r}=e.data;(async()=>{try{let e=r?`utf-8`:`binary`,i=await c.readFile(n,{encoding:e});l.postMessage({type:`preview-vfs-response`,id:t,content:i})}catch(e){let r=e instanceof Error?e.message:String(e);r.includes(`ENOENT`)||$.error(`Preview VFS read failed`,{path:n,error:r}),l.postMessage({type:`preview-vfs-response`,id:t,error:r})}})()},NTe(c,MTe(),async()=>{await o.panels.fileBrowser.refresh()},e=>o.panels.chat.addAttachmentsFromFiles(e));{let{registerSessionCostsProvider:e}=await I(async()=>{let{registerSessionCostsProvider:e}=await import(`./cost-command-DLZ-4OGZ.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 u,d=new Set,f=async e=>{s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid),o.setScoopSwitcherSelected?.(e.jid),o.panels.scoops.setSelectedJid(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await o.panels.chat.switchToContext(t,!e.isCone,n),u.requestScoopMessages(e.jid),u.isProcessing(e.jid)&&o.panels.chat.setProcessing(!0),m(e)};u=new r({onStatusChange:(e,t)=>{o.panels.scoops.updateScoopStatus(e,t),o.updateScoopSwitcherStatus?.(e,t),s?.jid===e&&(o.setAgentProcessing(t===`processing`),t===`processing`?o.panels.chat.setProcessing(!0):t===`ready`&&o.panels.chat.setProcessing(!1))},onScoopCreated:e=>{o.panels.scoops.refreshScoops(),o.refreshScoopSwitcher?.(),s||(s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid))},onScoopListUpdate:()=>{let e=new Set(u.getScoops().map(e=>e.folder));for(let t of d)e.has(t)||o.panels.chat.deleteSessionById(`session-${t}`);if(d=e,o.panels.scoops.refreshScoops(),o.refreshScoopSwitcher?.(),!s){let e=u.getScoops().find(e=>e.isCone);e&&(s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid))}},onIncomingMessage:(e,t)=>{if(h3(t.channel)){let n=new Date(t.timestamp).getTime(),r=t.channel;if(s?.jid===e)o.panels.chat.addLickMessage(t.id,t.content,r,n);else{let i=u.getScoops().find(t=>t.jid===e),a=i?.isCone?`session-cone`:i?`session-${i.folder}`:`session-${e}`;o.panels.chat.persistLickToSession(a,{id:t.id,content:t.content,channel:r,timestamp:n})}return}if(s?.jid===e){let e=t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content;o.panels.chat.addUserMessage(e,t.attachments)}},onScoopMessagesReplaced:(e,t)=>{s?.jid===e&&o.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{s?.jid===e&&o.panels.chat.setCompactionState(t)},onReady:async()=>{try{$.info(`Offscreen engine ready, scoop count:`,u.getScoops().length);let e=window.localStorage.getItem(Db);e&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:e,workerBaseUrl:window.localStorage.getItem(Eb)}}).catch(()=>{});let t=s??u.getScoops().find(e=>e.isCone)??u.getScoops()[0];t&&(s=t,u.setSelectedScoopJid(t.jid),await f(t))}catch(e){$.error(`Failed to initialize on ready`,{error:e instanceof Error?e.message:String(e)})}}}),chrome.runtime.onMessage.addListener(e=>(!Qg(e)||e.source!==`service-worker`||e.payload.type!==`detached-active`||n||HL(u,o),!1)),n&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>{}),n||(o.setShowPopoutButton(!0),o.setPopoutClickHandler(()=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e),o.resetPopoutButton()})})),u.setLocalFS(c),(async()=>{try{let{RemoteTerminalView:e}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-C3fqiRYe.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:t}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-CjaA9Kwn.js`);return{fetchSecretEnvVars:e}},[]),n=await t(),r=new e({client:u,cwd:`/`,env:Object.keys(n).length>0?n:void 0});await o.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)}})(),o.panels.chat.setAttachmentWriter(VL(c));let p=u.createAgentHandle();o.panels.chat.setAgent(p),o.panels.scoops.setOrchestrator(u),o.panels.memory.setOrchestrator(u),o.setScoopSwitcherOrchestrator?.(u),o.onScoopSelect=f;let m=e=>{let t=e.config?.modelId,n=t?p5(t):m5();o.panels.chat.setModelSupportsReasoning(!!n.reasoning,el(n).includes(`xhigh`)),o.panels.chat.setThinkingLevel(e.config?.thinkingLevel)};o.onModelChange=e=>{localStorage.setItem(`selected-model`,e),u.updateModel(),s&&m(s)},o.onThinkingLevelChange=e=>{s&&u.setScoopThinkingLevel(s.jid,e)},o.onModelsRefreshed=()=>{s&&m(s)},o.onClearChat=async e=>{if(e?.freeze===`quick`)try{await M7({vfs:c})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await j7({vfs:c})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await o.panels.chat.deleteSessionById(`session-cone`),await u.clearAllMessages()},o.onClearFilesystem=async()=>{u.clearFilesystem()};let{OnboardingOrchestrator:h}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-C0LGn2uj.js`);return{OnboardingOrchestrator:e}},[]),g=CR,{getAvailableProviders:_,getProviderConfig:v,getProviderModels:y,addAccount:b,setSelectedModelId:ee,getAccounts:te,isModelHiddenFromPicker:ne,providerOffersLlmModels:x}=await I(async()=>{let{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>T8);return{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:S,resolveDeviceCodeDecision:re}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),C=()=>{let e=_().filter(e=>x(e)),t=e.map(e=>{let t=v(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]=y(t).filter(e=>!ne(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}},ie=null,w=()=>ie||(ie=new h({fs:c,postSystemMessage:e=>o.panels.chat.addSystemMessage(e),postDipReference:e=>o.panels.chat.addSystemMessage(e),getProviderCatalogue:C,saveAccount:(e,t,n,r,i)=>b(e,t,n,r,i),setSelectedModel:e=>ee(e),resolveModelLabel:(e,t)=>{try{return y(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>g(e),fireFinalLick:e=>{P7(u),G9(String(e?.action??``),T,()=>u.sendSprinkleLick(`welcome`,e),`orchestrator-ext`)},launchOAuth:async(e,t)=>{try{let n=v(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&b(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CrkKpOgi.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:S({broadcastToDip:g})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CrkKpOgi.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:F7(e,n,y,ne)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),ie),T=U9(),ae=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(T.has(t))return $.debug(`Suppressing duplicate welcome lick (ext)`,{action:t}),!0;T.add(t),W9(T)}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 re(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return w().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=w(),t=n?.data??{};return t.mountWorkspace&&Z9(c).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=te();if(e.length>0){let t=e[0],n=(()=>{try{return v(t.providerId)}catch{return null}})();return g({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(c,t.providerId,e=>{G9(String(e.action??``),T,()=>u.sendSprinkleLick(`welcome`,e),`fast-forward-ext`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return w().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&w().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&&w().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`?(c.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};o.panels.chat.onDipLick=(e,t)=>{ae({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||u.sendSprinkleLick(`inline`,{action:e,data:t})};let E=new F9(c,async e=>{if(e.type===`sprinkle`){if(ae(e)){e.body?.action===`shortcut-migrate`&&E.close(`welcome`);return}if(e.sprinkleName===`welcome`&&e.body?.action===`request-mount`){try{let e=await Py();if(e.cancelled){E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(e.error){$.warn(`Mount picker popup failed`,e.error),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(!e.handleInIdb||typeof e.idbKey!=`string`){$.warn(`Mount picker popup returned unexpected result`,e),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}let t=await Iy(e.idbKey);if(!t){$.warn(`Mount picker popup did not store a handle`),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}await Ly(t),await ATe(t),E.sendToSprinkle(`welcome`,{action:`mount-complete`,dirName:t.name})}catch(e){$.warn(`Mount picker failed`,e),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`})}return}u.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>o.addSprinkle(e,t,n,r,i),removeSprinkle:e=>o.removeSprinkle(e),minimizeSprinkle:e=>o.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>o.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>o.unregisterSprinkle(e),closeSprinkleContent:e=>o.closeSprinkleContent(e)},()=>{let e=u.getScoops().find(e=>e.isCone);e&&u.stopScoop(e.jid)},{autoOpenBehavior:`attention`,onAttachImage:(e,t,n)=>o.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9});window.__slicc_sprinkleManager=E,window.__slicc_reloadSkills=()=>(chrome.runtime.sendMessage({source:`panel`,payload:{type:`reload-skills`}}),Promise.resolve()),u.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 E.refresh(),e=E.available();break;case`opened`:e=E.opened();break;case`refresh`:await E.refresh(),e=E.available().length;break;case`open`:await E.open(r),e=!0;break;case`close`:E.close(r),e=!0;break;case`send`:E.sendToSprinkle(r,i),e=!0;break;case`openNewAutoOpen`:await E.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 E.refresh(),o.onSprinkleClose=e=>E.close(e),o.onSprinkleActivate=e=>{E.activate(e)},o.getAvailableSprinkles=()=>[],o.onOpenSprinkle=(e,t)=>E.open(e,t),o.resolveSprinkleIcon=e=>S9(e,c),o.updateAddButtons(),await E.restoreOpenSprinkles();let{PanelFollowerSprinkleProxy:oe}=await I(async()=>{let{PanelFollowerSprinkleProxy:e}=await import(`./follower-sprinkle-bridge-s7l1_5A4.js`);return{PanelFollowerSprinkleProxy:e}},[]),{SprinkleFollowerController:se}=await I(async()=>{let{SprinkleFollowerController:e}=await Promise.resolve().then(()=>zwe);return{SprinkleFollowerController:e}},void 0),ce={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})})}},D={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)}},O=null;O=new se({sync:new oe(ce,D,{onSprinklesList:e=>void O?.updateAvailable(e),onSprinkleUpdate:(e,t)=>O?.handleSprinkleUpdate(e,t)}),addSprinkle:(e,t,n,r,i)=>o.addSprinkle(e,t,n,r,i),removeSprinkle:e=>o.removeSprinkle(e)});let k=FR({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:E,client:u,chat:o.panels.chat,log:$});if(window.addEventListener(`beforeunload`,()=>k.dispose(),{once:!0}),!c.getWatcher()){let{FsWatcher:e}=await I(async()=>{let{FsWatcher:e}=await Promise.resolve().then(()=>xL);return{FsWatcher:e}},void 0);c.setWatcher(new e)}let A=c.getWatcher();A&&E.setupWatcher(A),!await c.exists(`/shared/.welcomed`)&&localStorage.getItem(`slicc-welcomed`)&&(await c.writeFile(`/shared/.welcomed`,`1`).catch(()=>{}),localStorage.removeItem(`slicc-welcomed`)),Nb(window.localStorage)||Zb(c).then(e=>{e.isFirstRun&&(T.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),T.delete(`first-run`),W9(T)),T.add(`first-run`),W9(T),w().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e)),$.info(`SprinkleManager initialized (extension mode)`),u.requestState(),$.info(`Extension UI connected to offscreen agent engine`);let{installNukeReloadListener:le}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-Ck3z3GSc.js`);return{installNukeReloadListener:e}},[]);le(),Y9()&&await X9(o.panels.chat),y8().catch(()=>{}),N7(c)}async function FTe(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-CC-04rvH.js`);return{spawnKernelWorker:e}},__vite__mapDeps([28,29])),{installPageStorageSync:i}=await I(async()=>{let{installPageStorageSync:e}=await import(`./page-storage-sync-BMnuL0eG.js`);return{installPageStorageSync:e}},[]),{VirtualFS:a}=await I(async()=>{let{VirtualFS:e}=await Promise.resolve().then(()=>xL);return{VirtualFS:e}},void 0),{BrowserAPI:o}=await I(async()=>{let{BrowserAPI:e}=await import(`./cdp-Cu7LW0Bt.js`);return{BrowserAPI:e}},[]),s=await Lb(),c=Jwe(n?`electron-overlay`:`standalone`,s!==null)?Ob:null;await Ib({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:c,runtimeConfigFetcher:async()=>s});let l=new D7(e,n);if(n){let e=m9(window.location.href);l.setActiveTab(e);let t=document.createElement(`style`);t.id=`slicc-electron-overlay-runtime-style`,t.textContent=`
1602
+ 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 iwe(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 yCe(a),terminal:new twe(this.terminalContainer,{onClearTerminal:()=>{this.panels.terminal.clearTerminal(),this.openTerminal()}}),fileBrowser:new ECe(o,{onRunCommand:async e=>{await this.runFileBrowserCommand(e),this.openTerminal()}}),memory:new DCe(this.memoryContainer),scoops:new ewe(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));awe(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:E7,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:E7,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 O7(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 k7=$v(`new-session`),A7=`ui-new-session`;async function j7(e){let t=l5()??void 0,n;try{n=m5()}catch(e){k7.info(`No active model — freezing without LLM enrichment`,{error:e instanceof Error?e.message:String(e)})}let r=n?.provider===`adobe`?{"X-Session-Id":y5(A7)}:void 0,i=new w5;try{await i.init()}catch(e){return k7.warn(`SessionStore init failed — cannot freeze`,{error:e instanceof Error?e.message:String(e)}),null}return f7({sessionStore:i,vfs:e.vfs,model:n,apiKey:t,headers:r})}async function M7(e){let t=new w5;try{await t.init()}catch(e){return k7.warn(`SessionStore init failed — cannot quick-freeze`,{error:e instanceof Error?e.message:String(e)}),null}return f7({sessionStore:t,vfs:e.vfs,mode:`quick`})}async function swe(e){let t={found:0,enriched:[]},n=[];try{n=await XCe(e.vfs)}catch(e){return k7.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=l5()??void 0,i;try{i=m5()}catch(e){return k7.info(`No active model — skipping background enrichment`,{error:e instanceof Error?e.message:String(e)}),t}if(!r||!i)return k7.info(`LLM credentials unavailable — leaving pending entries for later boot`,{pending:n.length}),t;let a=i.provider===`adobe`?{"X-Session-Id":y5(A7)}:void 0;for(let o of n)try{let n=await ZCe(e.vfs,o,{model:i,apiKey:r,headers:a});n&&t.enriched.push(n)}catch(e){k7.warn(`Background enrichment threw (entry stays pending)`,{filename:o.filename,error:e instanceof Error?e.message:String(e)})}return k7.info(`Background enrichment pass complete`,{found:t.found,enriched:t.enriched.length}),t}function N7(e){let t=()=>{swe({vfs:e}).catch(()=>{})},n=globalThis.requestIdleCallback;typeof n==`function`?n(t):setTimeout(t,0)}function P7(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 F7(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 I7=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}}},L7=$v(`tray-sync`),R7=32*1024;function z7(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/R7),o=!0;for(let n=0;n<a;n++){let r=i.slice(n*R7,(n+1)*R7);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 B7(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 V7=32*1024;function cwe(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/V7),a=!0;for(let t=0;t<i;t++){let o=r.slice(t*V7,(t+1)*V7);if(!e.send({type:`snapshot_chunk`,chunkData:o,chunkIndex:t,totalChunks:i,scoopJid:n})){a=!1,L7.error(`Failed to send snapshot chunk`,{chunkIndex:t,totalChunks:i,totalSize:r.length});break}}return L7.debug(`Snapshot sent in chunks`,{totalChunks:i,totalSize:r.length}),a}function lwe(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 L7.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 H7=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){L7.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 L7.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 uwe(e){return new H7(e)}function dwe(e){return new H7(e)}var U7=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=B7(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)}},W7=$v(`data-channel-keepalive`),G7=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++,W7.debug(`Missed pong`,{missedPongs:this.missedPongs,maxMissed:this.maxMissed}),this.missedPongs>=this.maxMissed)){W7.warn(`Channel declared dead`,{missedPongs:this.missedPongs}),this.stop(),this.onDead();return}this.awaitingPong=!0,this.sendPing()}}},K7=64*1024;async function q7(e,t){try{switch(t.op){case`readFile`:return await fwe(e,t.path,t.encoding);case`writeFile`:return[await pwe(e,t.path,t.content,t.encoding)];case`stat`:return[await mwe(e,t.path)];case`readDir`:return[await hwe(e,t.path)];case`mkdir`:return[await gwe(e,t.path,t.recursive)];case`rm`:return[await _we(e,t.path,t.recursive)];case`exists`:return[await vwe(e,t.path)];case`walk`:return[await ywe(e,t.path)];default:return[{ok:!1,error:`Unknown fs operation: ${t.op}`}]}}catch(e){return[bwe(e)]}}async function fwe(e,t,n){return(n??`utf-8`)===`utf-8`?J7(await e.readFile(t,{encoding:`utf-8`}),`utf-8`):J7(xwe(await e.readFile(t,{encoding:`binary`})),`base64`)}async function pwe(e,t,n,r){if(r===`base64`){let r=Swe(n);await e.writeFile(t,r)}else await e.writeFile(t,n);return{ok:!0,data:{type:`void`}}}async function mwe(e,t){return{ok:!0,data:{type:`stat`,stat:await e.stat(t)}}}async function hwe(e,t){return{ok:!0,data:{type:`dirEntries`,entries:await e.readDir(t)}}}async function gwe(e,t,n){return await e.mkdir(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function _we(e,t,n){return await e.rm(t,{recursive:n}),{ok:!0,data:{type:`void`}}}async function vwe(e,t){return{ok:!0,data:{type:`exists`,exists:await e.exists(t)}}}async function ywe(e,t){let n=[];for await(let r of e.walk(t))n.push(r);return{ok:!0,data:{type:`paths`,paths:n}}}function J7(e,t){if(e.length<=K7)return[{ok:!0,data:{type:`file`,content:e,encoding:t}}];let n=Math.ceil(e.length/K7),r=[];for(let i=0;i<n;i++){let a=i*K7,o=e.slice(a,a+K7);r.push({ok:!0,data:{type:`file`,content:o,encoding:t},chunkIndex:i,totalChunks:n})}return r}function bwe(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 xwe(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCharCode(e[n]);return btoa(t)}function Swe(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 Y7=$v(`tray-follower-sync`),Cwe=15e3,wwe=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=dwe(e),this.unsubscribe=this.sync.onMessage(e=>{this.handleLeaderMessage(e)}),this.keepalive=new G7({sendPing:()=>this.sync.send({type:`ping`}),onDead:()=>{Y7.warn(`Leader keepalive dead, cleaning up`),this.handleDisconnect(`Keepalive timeout — leader not responding`),this.options.onDead?.()}}),this.keepalive.start(),e.addEventListener(`close`,()=>{Y7.warn(`Data channel closed`),this.handleDisconnect(`Data channel closed`)}),e.addEventListener(`error`,()=>{Y7.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?Gv(n):n;this.sync.send({type:`user_message`,text:e,messageId:r,attachments:i}),Y7.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`}),Y7.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`),Y7.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}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??Cwe;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})}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,mF({...dF(),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`:Y7.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=lwe(this.snapshotChunkBuffer,e);this.snapshotChunkBuffer=t.buffer,t.result&&(Y7.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),Y7.debug(`Skipping own message echo`,{messageId:e.messageId});break}Y7.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`:Y7.warn(`Error from leader`,{error:e.error}),this.emitEvent({type:`error`,error:e.error});break;case`targets.registry`:Y7.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`:Y7.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`:Y7.debug(`Sprinkle update received`,{sprinkleName:e.sprinkleName}),this.options.onSprinkleUpdate?.(e.sprinkleName,e.data);break;case`ping`:this.keepalive.receivePing(),this.sync.send({type:`pong`});break;case`pong`:this.keepalive.receivePong(),hF(Date.now());break;default:Y7.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){Y7.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)){Y7.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){Y7.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)?Y7.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){Y7.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){Y7.error(`Listener error`,{eventType:e.type,error:t instanceof Error?t.message:String(t)})}}createRemoteTransport(e,t){let n=new U7({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),Y7.debug(`Tracking remote CDP session`,{remoteSessionId:e})}n===`Target.detachFromTarget`&&i&&this.remoteCDPSessions.has(i)&&(this.remoteCDPSessions.delete(i),Y7.debug(`Removed remote CDP session on detach`,{sessionId:i})),z7(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=B7(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 q7(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})})}},X7=$v(`tray-follower`);function Z7(e){let t=new URL(e);return t.searchParams.set(`json`,`true`),t.toString()}async function Twe(e){let t=Z7(e.joinUrl),n=await jwe(await(e.fetchImpl??fetch)(t,{method:`POST`,headers:{"content-type":`application/json`},body:JSON.stringify({controllerId:e.controllerId,runtime:e.runtime})}));return X7.info(`Follower tray attach response`,{trayId:n.trayId,action:n.result.action,code:n.result.code,participantCount:n.participantCount}),Ewe(n)}function Ewe(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 Dwe(e){return Q7(await $7(e,{action:`poll`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,cursor:e.cursor}))}async function Owe(e){return Q7(await $7(e,{action:`answer`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,answer:e.answer}))}async function kwe(e){return Q7(await $7(e,{action:`ice-candidate`,controllerId:e.controllerId,bootstrapId:e.bootstrapId,candidate:e.candidate}))}async function Awe(e){return Q7(await $7(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 jwe(e){let t=null,n=null;try{t=await e.text(),n=JSON.parse(t)}catch{}if(!Mwe(n)){let n=t?t.slice(0,200):`(empty)`;throw X7.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 $7(e,t){let n=Z7(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(!Nwe(i))throw Error(`Tray follower bootstrap returned an invalid response (${r.status})`);return i}function Mwe(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`&&e9(r.bootstrap):r.action===`fail`?(r.code===`INVALID_JOIN_CAPABILITY`||r.code===`TRAY_EXPIRED`)&&typeof r.error==`string`:!1}function Nwe(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`&&e9(t.bootstrap)&&Array.isArray(t.events)}function e9(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 t9=$v(`tray-webrtc`),Pwe=`tray-control`,Fwe=250,Iwe=class{options;peerConnectionFactory;dataChannelLabel;peers=new Map;iceServers;constructor(e){this.options=e,this.iceServers=e.iceServers,this.peerConnectionFactory=e.peerConnectionFactory??(()=>n9(this.iceServers)),this.dataChannelLabel=e.dataChannelLabel??Pwe}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=i9(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`)&&(t9.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`?(t9.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`?(t9.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:r9(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){t9.warn(`Failed to report tray bootstrap failure`,{error:e instanceof Error?e.message:String(e)})}}}},Lwe=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??(()=>n9(this.iceServers)),this.controllerIdFactory=e.controllerIdFactory??(()=>crypto.randomUUID()),this.sleep=e.sleep??(e=>new Promise(t=>setTimeout(t,e))),this.pollIntervalMs=e.pollIntervalMs??Fwe}async start(){this.stopped=!1;let e=this.controllerIdFactory(),t=Date.now();mF({state:`connecting`,joinUrl:this.options.joinUrl,trayId:null,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:0,lastAttachCode:null,connectingSince:t,lastError:null}),t9.info(`Follower tray join starting`,{joinUrl:this.options.joinUrl});let n=0;for(;;){a9(this.stopped),n++;let t;try{t=await Twe({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 mF({...dF(),attachAttempts:n,lastError:t}),e}if(mF({...dF(),attachAttempts:n,lastAttachCode:t.code}),t.action===`wait`){let e=t.retryAfterMs??1e3;t9.info(`Follower tray attach waiting`,{attempt:n,code:t.code,retryAfterMs:e}),n%10==0&&t9.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 mF({state:`error`,joinUrl:this.options.joinUrl,trayId:null,error:e,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:e}),t9.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 mF({state:`connected`,joinUrl:this.options.joinUrl,trayId:r.trayId,error:null,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:null}),t9.info(`Follower tray connected`,{trayId:r.trayId,controllerId:e}),r}catch(e){let r=e instanceof Error?e.message:String(e);throw mF({state:`error`,joinUrl:this.options.joinUrl,trayId:t.trayId,error:r,lastPingTime:null,reconnectAttempts:0,attachAttempts:n,lastAttachCode:t.code,connectingSince:null,lastError:r}),t9.warn(`Follower tray bootstrap failed`,{error:r}),e}}}stop(){this.stopped=!0,this.activePeer?.peer.close(),this.activePeer?.channel?.close(),this.activePeer=null,mF({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(a9(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 Dwe({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 Owe({joinUrl:this.options.joinUrl,controllerId:t,bootstrapId:r.bootstrapId,answer:r9(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 Awe({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`)&&(t9.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?(t9.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?(t9.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=i9(n);r&&kwe({joinUrl:this.options.joinUrl,controllerId:e,bootstrapId:t,candidate:r,fetchImpl:this.fetchImpl}).catch(e=>{t9.warn(`Failed to send follower ICE candidate`,{error:e instanceof Error?e.message:String(e)})})}),r}};function Rwe(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 Lwe({...e,sleep:o,onDisconnected:e=>{s||(t9.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),mF({...dF(),state:`reconnecting`,error:null,reconnectAttempts:f}),t9.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,mF({...dF(),state:`connected`,joinUrl:e.joinUrl,trayId:i.trayId,error:null,lastPingTime:null,reconnectAttempts:0,connectingSince:null,lastError:null}),t9.info(`Reconnect successful`,{attempt:f,trayId:i.trayId}),t.onConnected(i);return}catch(e){m=e instanceof Error?e.message:String(e),t9.warn(`Reconnect attempt failed`,{attempt:f,error:m}),n?.stop(),l=null}p=Math.min(p*r,i)}s||(c=!1,mF({...dF(),state:`error`,error:`Reconnect failed after ${f} attempts: ${m}`,reconnectAttempts:f}),t9.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||t9.error(`Initial follower connection failed`,{error:e instanceof Error?e.message:String(e)})}),u}function n9(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 r9(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 i9(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 a9(e){if(e)throw Error(`Tray follower stopped before WebRTC bootstrap completed`)}var zwe=c({SprinkleFollowerController:()=>s9}),o9=$v(`sprinkle-follower`),s9=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}o9.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),o9.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 aR(r,this.createBridge(e));this.addSprinkle(e,t.title,r,this.zone);try{await i.render(n,e)}catch(t){o9.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){o9.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){o9.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){o9.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){o9.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){o9.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){o9.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 o9.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:f3(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`))}}},c9=$v(`page-follower-tray`);function l9(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.browserAPI.setTrayTargetProvider(null),n.close(),null)};return a=Rwe({joinUrl:e.joinUrl,runtime:`slicc-standalone`,fetchImpl:e._fetchImpl,peerConnectionFactory:e._peerConnectionFactory,sleep:e._sleep},{onConnected:a=>{o();let s=`follower-${a.bootstrapId}`,c=null,l=new wwe(a.channel,{browserTransport:e.browserAPI.getTransport(),browserAPI:e.browserAPI,onSnapshot:e.onSnapshot,onUserMessage:e.onUserMessage,onStatus:e.onStatus,onTargetsChanged:()=>void d(),onSprinklesList:t=>{e.onSprinklesList?.(t),c?.updateAvailable(t)},onSprinkleUpdate:(e,t)=>c?.handleSprinkleUpdate(e,t),onDisconnect:e=>{c9.warn(`Follower sync disconnected`,{reason:e}),o()}});e.addSprinkle&&e.removeSprinkle&&(c=new s9({sync:l,addSprinkle:e.addSprinkle,removeSprinkle:e.removeSprinkle}),r=c);let u=new I7(c9,{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(t.map(e=>({targetId:e.targetId,title:e.title,url:e.url})),s)}catch(e){c9.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),l.requestSnapshot(),i=setInterval(()=>void d(),t),d(),c9.info(`Follower sync wired`,{trayId:a.trayId})},onReconnecting:e=>{c9.info(`Follower reconnecting`,{attempt:e})},onGaveUp:e=>{c9.warn(`Follower reconnect gave up`,{lastError:e}),o()},sleep:e._sleep}),{stop(){o(),a?.cancel(),a=null},get currentSync(){return n}}}var Bwe=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});return e}hasChanged(){return this.dirty}getRuntimeIds(){return[...this.runtimes.keys()]}},u9=$v(`tray-leader-sync`);function Vwe(e){return e?e.includes(`standalone`)?`standalone`:e.includes(`extension`)?`extension`:e.includes(`electron`)?`electron`:`unknown`:`unknown`}var Hwe=class e{options;followers=new Map;registry=new Bwe;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=uwe(t),i=r.onMessage(t=>{this.handleFollowerMessage(e,t)}),a=new G7({sendPing:()=>r.send({type:`ping`}),onDead:()=>{u9.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:Vwe(n?.runtime)}),u9.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(),u9.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),u9.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?Gv(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){u9.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,cwe(n.sync,i,r),u9.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){u9.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){u9.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){u9.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){u9.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`:{u9.info(`Follower user message received`,{bootstrapId:e,messageId:t.messageId});let n=t.attachments?.length?Gv(t.attachments):t.attachments;this.options.onFollowerMessage(t.text,t.messageId,n);break}case`abort`:u9.info(`Follower abort received`,{bootstrapId:e}),this.options.onFollowerAbort();break;case`request_snapshot`:u9.info(`Follower snapshot request received`,{bootstrapId:e,scoopJid:t.scoopJid}),this.sendSnapshotToFollower(e,t.scoopJid);break;case`scoops.select`:{u9.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`:u9.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`:u9.info(`Follower sprinkle lick received`,{bootstrapId:e,sprinkleName:t.sprinkleName});try{this.options.onSprinkleLick?.(t.sprinkleName,t.body,t.targetScoop)}catch(e){u9.warn(`onSprinkleLick handler threw`,{error:e instanceof Error?e.message:String(e)})}break;case`targets.advertise`:u9.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),u9.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`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 U7({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),u9.debug(`Cleaned up stale remote transport`,{key:e}))}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}})}getBestFollowerForTeleport(){let e=[];for(let[t,n]of this.runtimeToBootstrap){let r=this.followers.get(n);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);z7(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=B7(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&&z7(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)}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`));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}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 q7(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?q7(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})})}},d9=$v(`page-leader-tray`);function f9(e){let t=e._refreshIntervalMs??5e3,n=e._fetchImpl??((e,t)=>fetch(e,t)),r,i,a;a=new Hwe({getMessages:e.getMessages,getMessagesForScoop:e.getMessagesForScoop,getScoopJid:e.getScoopJid,getScoops:e.getScoops,getSprinkles:e.getSprinkles,readSprinkleContent:e.readSprinkleContent,onSprinkleLick:e.onSprinkleLick,onFollowerMessage:e.onFollowerMessage,onFollowerAbort:e.onFollowerAbort,onFollowerCountChanged:e.onFollowerCountChanged,browserAPI:e.browserAPI,browserTransport:e.browserTransport,vfs:e.vfs}),e.browserAPI.setTrayTargetProvider(a),i=new Iwe({sendControlMessage:e=>r.sendControlMessage(e),onPeerConnected:(e,t)=>{d9.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)=>{d9.info(`Tray follower disconnected`,{bootstrapId:e,reason:t})}}),r=new sae({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=>{d9.error(`Tray leader bootstrap handling failed`,{error:e instanceof Error?e.message:String(e)})})},onReconnecting:(e,t)=>{d9.info(`Leader tray reconnecting`,{attempt:e,lastError:t})},onReconnected:e=>{d9.info(`Leader tray reconnected`,{trayId:e.trayId}),u(e)},onReconnectGaveUp:(e,t)=>{d9.error(`Leader tray reconnect gave up`,{lastError:e,attempts:t})}});let o=e.onAgentEvent(e=>a.broadcastEvent(e)),s=[],c=new I7(d9,{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){d9.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){d9.error(`Failed to broadcast follower lists`,{error:e instanceof Error?e.message:String(e)})}},t));function u(t){let n=e._historyOverride??Uwe();if(n)try{let e=Fb(n.href,t.workerBaseUrl,t.trayId);e!==n.href&&n.replaceState(null,``,e)}catch(e){d9.debug(`URL bar update skipped`,{error:e instanceof Error?e.message:String(e)})}}return r.start().then(e=>{u(e)}).catch(e=>{d9.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()),Bb()},leader:r,peers:i,sync:a}}function Uwe(){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)}}}var Wwe=[{id:`chat`,label:`Chat`},{id:`terminal`,label:`Terminal`},{id:`files`,label:`Files`},{id:`memory`,label:`Memory`}],p9=`chat`,Gwe=new Set(Wwe.map(e=>e.id));function Kwe(e){return Gwe.has(e)}function qwe(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(`runtime`)===`hosted-leader`?`hosted-leader`:Ywe(t)?`electron-overlay`:`standalone`}catch{return`standalone`}}function Jwe(e,t){return e===`electron-overlay`||e===`hosted-leader`||e===`standalone`&&t}function m9(e){try{let t=new URL(e).searchParams.get(`tab`);return t&&Kwe(t)?t:p9}catch{return p9}}function Ywe(e){return e.pathname===`/electron`||e.pathname===`/electron/`||e.searchParams.get(`runtime`)===`electron-overlay`}function Xwe(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`slicc-electron-overlay:set-tab`}function h9(e){return e.toLowerCase().endsWith(SL)}function Zwe(e){return Array.from(e).find(e=>h9(e.name))??null}function g9(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 Qwe(e){if(!e)return null;if(e.files){let t=Zwe(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&&h9(e.name))return e}return null}function $we(e){if(!e)return[];let t=[],n=new Set,r=e=>{!e||n.has(e)||h9(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 _9=$v(`sprinkle-icon`),eTe=`<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">`,tTe=`</svg>`,v9=null;function nTe(){return v9||=I(()=>Promise.resolve().then(()=>Xye).then(e=>e.icons),void 0),v9}function rTe(e){return e.split(`-`).filter(Boolean).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(``)}function y9(e){return String(e).replace(/&/g,`&amp;`).replace(/"/g,`&quot;`).replace(/'/g,`&#39;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`)}function iTe(e){return`${eTe}${e.map(([e,t])=>{let n=Object.entries(t).filter(([,e])=>e!==void 0).map(([e,t])=>`${e}="${y9(t)}"`);return n.length?`<${e} ${n.join(` `)}/>`:`<${e}/>`}).join(``)}${tTe}`}async function aTe(e){let t=rTe(e),n=(await nTe())[t];return n?iTe(n):null}function oTe(e){return/^\s*<svg\b/i.test(e)}function sTe(e){return/^data:/i.test(e)}function cTe(e){return e.startsWith(`/`)}function b9(e){return/\.(svg|png|jpe?g|webp|gif|ico)$/i.test(e)}function lTe(e){return/^[a-z][a-z0-9-]*$/.test(e)}function x9(e){return`<img src="${y9(e)}" width="16" height="16" alt="" style="display:block;width:16px;height:16px;object-fit:contain"/>`}async function S9(e,t){if(!e)return null;if(oTe(e))return x9(C9(e));if(sTe(e))return x9(e);if(cTe(e)&&t){try{if(b9(e)&&e.toLowerCase().endsWith(`.svg`)){let n=await t.readFile(e,{encoding:`utf-8`}),r=w9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));return r?x9(C9(r)):null}if(b9(e)){let n=await t.readFile(e,{encoding:`binary`}),r=n instanceof Uint8Array?n:new Uint8Array;return x9(`data:${uTe(e)};base64,${T9(r)}`)}let n=await t.readFile(e,{encoding:`utf-8`}),r=w9(typeof n==`string`?n:new TextDecoder(`utf-8`).decode(n));if(r)return x9(C9(r))}catch(t){_9.warn(`Failed to read sprinkle icon from VFS`,{path:e,error:t instanceof Error?t.message:String(t)})}return null}if(lTe(e)){let t=await aTe(e);if(t)return t;_9.warn(`Unknown Lucide icon name`,{spec:e})}return null}function C9(e){return`data:image/svg+xml;base64,${T9(new TextEncoder().encode(e))}`}function w9(e){let t=e.match(/<svg\b[\s\S]*?<\/svg>/i);return t?t[0]:null}function uTe(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 T9(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 dTe=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:mTe(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:f3(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)}},fTe=`slicc-sprinkle-routes`;function pTe(){try{let e=localStorage.getItem(fTe);return e?JSON.parse(e):{}}catch{return{}}}function mTe(e){return pTe()[e]}var hTe=[`/shared/sprinkles`],gTe=new Set([`welcome`,`connect-llm`]);async function _Te(e){let t=new Map;for(let n of hTe)await e.exists(n)&&await E9(e,n,t);return await E9(e,`/`,t),t}async function E9(e,t,n){for await(let r of e.walk(t)){if(!r.endsWith(`.shtml`))continue;let t=vTe(r);if(!gTe.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:yTe(i,t),autoOpen:bTe(i),icon:xTe(i)})}}}function vTe(e){let t=e.split(`/`).pop()??e;return t.endsWith(`.shtml`)?t.slice(0,-6):t}function yTe(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 bTe(e){return/data-sprinkle-autoopen\b/.test(e)}function xTe(e){let t=/<link\b/gi,n;for(;(n=t.exec(e))!==null;){let t=n.index+n[0].length,r=STe(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=D9(i,`href`);if(a!==void 0)return a.trim()}let r=D9(e,`data-sprinkle-icon`);if(r!==void 0)return r.trim()}function STe(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 D9(e,t){let n=RegExp(`\\b${t}\\s*=\\s*(?:"([^"]*)"|'([^']*)')`,`i`),r=e.match(n);if(r)return r[1]??r[2]??void 0}var CTe=c({SprinkleManager:()=>F9,readOpenSprinklesFromUrl:()=>j9,writeOpenSprinklesToUrl:()=>M9}),O9=$v(`sprinkle-manager`),k9=`slicc-open-sprinkles`,A9=`sprinkles`;function j9(){try{if(typeof window>`u`||!window.location)return null;let e=new URLSearchParams(window.location.search).get(A9);return e===null?null:e===``?[]:e.split(`,`).map(e=>e.trim()).filter(e=>e.length>0)}catch{return null}}function M9(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(A9):t.searchParams.set(A9,e.join(`,`));let n=t.pathname+t.search+t.hash;history.replaceState(history.state??null,``,n)}catch{}}var N9=`slicc-known-sprinkles`,P9=`slicc-autoopened-once`,wTe=[`/workspace`,`/shared`,`/scoops`],TTe=250,F9=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=lF(),n=cF();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 dTe(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&&O9.error(`SprinkleManager broadcast hook detached`),this.onSendToSprinkle=e}async restoreOpenSprinkles(){try{let e=j9();if(e!==null){for(let t of e)try{await this.open(t)}catch{O9.warn(`Failed to restore sprinkle`,{name:t})}return}else{let e=localStorage.getItem(k9);if(e)try{let t=JSON.parse(e);for(let e of t)try{await this.open(e)}catch{O9.warn(`Failed to restore sprinkle`,{name:e})}}finally{try{localStorage.removeItem(k9)}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{O9.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),O9.info(`Surfaced previously-unseen sprinkle`,{name:i.name})}catch{O9.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(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}}persistKnownSprinkles(e){try{let t=new Set([...this.loadKnownSprinkles(),...e]);localStorage.setItem(N9,JSON.stringify([...t]))}catch{}}loadAutoOpenedOnce(){try{let e=localStorage.getItem(P9);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(P9,JSON.stringify([...t]))}catch{}}persistOpenSprinkles(){try{let e=[...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e));localStorage.setItem(k9,JSON.stringify(e))}catch{}this.schedulePersistOpenSprinklesToUrl()}schedulePersistOpenSprinklesToUrl(){this.urlWriteScheduled||(this.urlWriteScheduled=!0,queueMicrotask(()=>{this.urlWriteScheduled=!1,M9([...this.openSprinkles.keys()].filter(e=>!this.attentionOnly.has(e)))}))}async openNewAutoOpenSprinkles(){if(this.inflightRefresh)return this.inflightRefresh;if(!(Date.now()-this.lastRefreshAt<TTe))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)){O9.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),O9.info(`Auto-opened new sprinkle after install`,{name:a.name,attention:t})}catch{O9.warn(`Failed to auto-open new sprinkle`,{name:a.name})}}else try{await this.open(a.name,void 0,{attention:!0}),O9.info(`Surfaced newly-installed sprinkle in rail`,{name:a.name})}catch{O9.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 _Te(this.fs),O9.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){O9.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){O9.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){O9.error(`SprinkleManager.onChange handler threw`,{error:e instanceof Error?e.message:String(e)})}}))}async open(e,t,n={}){if(this.openSprinkles.has(e)){O9.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 aR(o,this.bridge.createAPI(e));await s.render(a,e),this.openSprinkles.get(e).renderer=s,this.persistOpenSprinkles(),mSe(e),O9.info(`Sprinkle opened`,{name:e,title:r.title}),this.notifyChange()}markActivated(e){this.attentionOnly.has(e)&&(this.attentionOnly.delete(e),this.persistOpenSprinkles(),O9.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){O9.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(),O9.info(`Sprinkle closed`,{name:e}),this.notifyChange())}minimize(e){this.openSprinkles.has(e)&&(this.callbacks.minimizeSprinkle(e),O9.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=>{O9.warn(`Sprinkle refresh on watcher event failed`,{error:e instanceof Error?e.message:String(e)})})},150)},r=wTe.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){O9.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){O9.error(`onSendToSprinkle hook threw`,{name:e,error:t instanceof Error?t.message:String(t)})}}},ETe=100,I9=6,L9=null,R9=null,z9=null;function DTe(){return L9||(L9=document.createElement(`div`),L9.className=`s2-tooltip`,document.body.appendChild(L9)),L9}function OTe(e){let t=e.getAttribute(`data-tooltip`);if(!t)return;let n=DTe();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-I9,s=r.left+r.width/2-i.width/2):a===`right`?(o=r.top+r.height/2-i.height/2,s=r.right+I9):a===`left`?(o=r.top+r.height/2-i.height/2,s=r.left-i.width-I9):(o=r.bottom+I9,s=r.left+r.width/2-i.width/2),a===`bottom`&&o+i.height>window.innerHeight-4?o=r.top-i.height-I9:a===`top`&&o<4?o=r.bottom+I9:a===`left`&&s<4?s=r.right+I9:a===`right`&&s+i.width>window.innerWidth-4&&(s=r.left-i.width-I9),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 B9(){R9&&=(clearTimeout(R9),null),z9=null,L9?.classList.remove(`s2-tooltip--visible`)}function kTe(){document.addEventListener(`pointerover`,e=>{let t=e.target.closest?.(`[data-tooltip]`);t&&t===z9||(B9(),t&&(z9=t,R9=setTimeout(()=>OTe(t),ETe)))},!0),document.addEventListener(`pointerout`,e=>{if(!z9)return;let t=e.relatedTarget;t&&z9.contains(t)||B9()},!0),document.addEventListener(`pointerdown`,B9,!0)}var $=$v(`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 ATe(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=By.fromHandle(r,{mountId:Vy()});await e.mount(t,i),$.info(`Mounted folder from welcome onboarding`,{name:r.name,path:t})}t.close()}function jTe(){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 MTe(){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 NTe(e,t,n,r){let i=jTe(),a=0,o=!1,s=()=>{a=0,o||i.hide()};window.addEventListener(`dragenter`,e=>{g9(e.dataTransfer)&&(e.preventDefault(),a+=1,o||i.show(`Drop files`,`.skill archives install; other files attach to chat.`))}),window.addEventListener(`dragover`,e=>{g9(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=Qwe(c.dataTransfer),u=$we(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 IL(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 PTe(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 yae())return;let r=e?await PTe(e):{},{getSelectedModelId:i,getProviderConfig:a,getProviderModels:o}=await I(async()=>{let{getSelectedModelId:e,getProviderConfig:t,getProviderModels:n}=await Promise.resolve().then(()=>T8);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-C-HybLAA.js`);return{OffscreenClient:e}},[]),{VirtualFS:i}=await I(async()=>{let{VirtualFS:e}=await Promise.resolve().then(()=>xL);return{VirtualFS:e}},void 0),{publishAgentBridgeProxy:a}=await I(async()=>{let{publishAgentBridgeProxy:e}=await import(`./agent-bridge-D-rPsRyB.js`);return{publishAgentBridgeProxy:e}},[]),o=new D7(e,!n);await o.panels.chat.initSession(`session-cone`),a();let s=null,c=await i.create({dbName:`slicc-fs`});o.panels.fileBrowser.setFs(c),$.info(`File browser wired to shared VFS (local IndexedDB)`),sb().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await lb(e,c,$);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 l=new BroadcastChannel(`preview-vfs`);l.onmessage=e=>{if(e.data?.type!==`preview-vfs-read`)return;let{id:t,path:n,asText:r}=e.data;(async()=>{try{let e=r?`utf-8`:`binary`,i=await c.readFile(n,{encoding:e});l.postMessage({type:`preview-vfs-response`,id:t,content:i})}catch(e){let r=e instanceof Error?e.message:String(e);r.includes(`ENOENT`)||$.error(`Preview VFS read failed`,{path:n,error:r}),l.postMessage({type:`preview-vfs-response`,id:t,error:r})}})()},NTe(c,MTe(),async()=>{await o.panels.fileBrowser.refresh()},e=>o.panels.chat.addAttachmentsFromFiles(e));{let{registerSessionCostsProvider:e}=await I(async()=>{let{registerSessionCostsProvider:e}=await import(`./cost-command-Po1gR-Hi.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 u,d=new Set,f=async e=>{s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid),o.setScoopSwitcherSelected?.(e.jid),o.panels.scoops.setSelectedJid(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await o.panels.chat.switchToContext(t,!e.isCone,n),u.requestScoopMessages(e.jid),u.isProcessing(e.jid)&&o.panels.chat.setProcessing(!0),m(e)};u=new r({onStatusChange:(e,t)=>{o.panels.scoops.updateScoopStatus(e,t),o.updateScoopSwitcherStatus?.(e,t),s?.jid===e&&(o.setAgentProcessing(t===`processing`),t===`processing`?o.panels.chat.setProcessing(!0):t===`ready`&&o.panels.chat.setProcessing(!1))},onScoopCreated:e=>{o.panels.scoops.refreshScoops(),o.refreshScoopSwitcher?.(),s||(s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid))},onScoopListUpdate:()=>{let e=new Set(u.getScoops().map(e=>e.folder));for(let t of d)e.has(t)||o.panels.chat.deleteSessionById(`session-${t}`);if(d=e,o.panels.scoops.refreshScoops(),o.refreshScoopSwitcher?.(),!s){let e=u.getScoops().find(e=>e.isCone);e&&(s=e,u.setSelectedScoopJid(e.jid),o.panels.memory.setSelectedScoop(e.jid))}},onIncomingMessage:(e,t)=>{if(h3(t.channel)){let n=new Date(t.timestamp).getTime(),r=t.channel;if(s?.jid===e)o.panels.chat.addLickMessage(t.id,t.content,r,n);else{let i=u.getScoops().find(t=>t.jid===e),a=i?.isCone?`session-cone`:i?`session-${i.folder}`:`session-${e}`;o.panels.chat.persistLickToSession(a,{id:t.id,content:t.content,channel:r,timestamp:n})}return}if(s?.jid===e){let e=t.channel===`delegation`?`**[Instructions from sliccy]**\n\n${t.content}`:t.content;o.panels.chat.addUserMessage(e,t.attachments)}},onScoopMessagesReplaced:(e,t)=>{s?.jid===e&&o.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{s?.jid===e&&o.panels.chat.setCompactionState(t)},onReady:async()=>{try{$.info(`Offscreen engine ready, scoop count:`,u.getScoops().length);let e=window.localStorage.getItem(Db);e&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`refresh-tray-runtime`,joinUrl:e,workerBaseUrl:window.localStorage.getItem(Eb)}}).catch(()=>{});let t=s??u.getScoops().find(e=>e.isCone)??u.getScoops()[0];t&&(s=t,u.setSelectedScoopJid(t.jid),await f(t))}catch(e){$.error(`Failed to initialize on ready`,{error:e instanceof Error?e.message:String(e)})}}}),chrome.runtime.onMessage.addListener(e=>(!Qg(e)||e.source!==`service-worker`||e.payload.type!==`detached-active`||n||HL(u,o),!1)),n&&chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-claim`}}).catch(()=>{}),n||(o.setShowPopoutButton(!0),o.setPopoutClickHandler(()=>{chrome.runtime.sendMessage({source:`panel`,payload:{type:`detached-popout-request`}}).catch(e=>{console.warn(`[slicc] detached-popout-request failed`,e),o.resetPopoutButton()})})),u.setLocalFS(c),(async()=>{try{let{RemoteTerminalView:e}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-CJvKEhzM.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:t}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-8LsY1D5V.js`);return{fetchSecretEnvVars:e}},[]),n=await t(),r=new e({client:u,cwd:`/`,env:Object.keys(n).length>0?n:void 0});await o.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)}})(),o.panels.chat.setAttachmentWriter(VL(c));let p=u.createAgentHandle();o.panels.chat.setAgent(p),o.panels.scoops.setOrchestrator(u),o.panels.memory.setOrchestrator(u),o.setScoopSwitcherOrchestrator?.(u),o.onScoopSelect=f;let m=e=>{let t=e.config?.modelId,n=t?p5(t):m5();o.panels.chat.setModelSupportsReasoning(!!n.reasoning,el(n).includes(`xhigh`)),o.panels.chat.setThinkingLevel(e.config?.thinkingLevel)};o.onModelChange=e=>{localStorage.setItem(`selected-model`,e),u.updateModel(),s&&m(s)},o.onThinkingLevelChange=e=>{s&&u.setScoopThinkingLevel(s.jid,e)},o.onModelsRefreshed=()=>{s&&m(s)},o.onClearChat=async e=>{if(e?.freeze===`quick`)try{await M7({vfs:c})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await j7({vfs:c})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await o.panels.chat.deleteSessionById(`session-cone`),await u.clearAllMessages()},o.onClearFilesystem=async()=>{u.clearFilesystem()};let{OnboardingOrchestrator:h}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-q_dw4jTj.js`);return{OnboardingOrchestrator:e}},[]),g=CR,{getAvailableProviders:_,getProviderConfig:v,getProviderModels:y,addAccount:b,setSelectedModelId:ee,getAccounts:te,isModelHiddenFromPicker:ne,providerOffersLlmModels:x}=await I(async()=>{let{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>T8);return{getAvailableProviders:e,getProviderConfig:t,getProviderModels:n,addAccount:r,setSelectedModelId:i,getAccounts:a,isModelHiddenFromPicker:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:S,resolveDeviceCodeDecision:re}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),C=()=>{let e=_().filter(e=>x(e)),t=e.map(e=>{let t=v(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]=y(t).filter(e=>!ne(e.id)).map(e=>({id:e.id,name:e.name}))}catch{n[t]=[]}return{providers:t,models:n}},ie=null,w=()=>ie||(ie=new h({fs:c,postSystemMessage:e=>o.panels.chat.addSystemMessage(e),postDipReference:e=>o.panels.chat.addSystemMessage(e),getProviderCatalogue:C,saveAccount:(e,t,n,r,i)=>b(e,t,n,r,i),setSelectedModel:e=>ee(e),resolveModelLabel:(e,t)=>{try{return y(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>g(e),fireFinalLick:e=>{P7(u),G9(String(e?.action??``),T,()=>u.sendSprinkleLick(`welcome`,e),`orchestrator-ext`)},launchOAuth:async(e,t)=>{try{let n=v(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&b(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DK0AQV_B.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:S({broadcastToDip:g})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DK0AQV_B.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:F7(e,n,y,ne)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),ie),T=U9(),ae=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(T.has(t))return $.debug(`Suppressing duplicate welcome lick (ext)`,{action:t}),!0;T.add(t),W9(T)}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 re(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return w().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=w(),t=n?.data??{};return t.mountWorkspace&&Z9(c).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=te();if(e.length>0){let t=e[0],n=(()=>{try{return v(t.providerId)}catch{return null}})();return g({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(c,t.providerId,e=>{G9(String(e.action??``),T,()=>u.sendSprinkleLick(`welcome`,e),`fast-forward-ext`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return w().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&w().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&&w().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`?(c.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};o.panels.chat.onDipLick=(e,t)=>{ae({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||u.sendSprinkleLick(`inline`,{action:e,data:t})};let E=new F9(c,async e=>{if(e.type===`sprinkle`){if(ae(e)){e.body?.action===`shortcut-migrate`&&E.close(`welcome`);return}if(e.sprinkleName===`welcome`&&e.body?.action===`request-mount`){try{let e=await Py();if(e.cancelled){E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(e.error){$.warn(`Mount picker popup failed`,e.error),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}if(!e.handleInIdb||typeof e.idbKey!=`string`){$.warn(`Mount picker popup returned unexpected result`,e),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}let t=await Iy(e.idbKey);if(!t){$.warn(`Mount picker popup did not store a handle`),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`});return}await Ly(t),await ATe(t),E.sendToSprinkle(`welcome`,{action:`mount-complete`,dirName:t.name})}catch(e){$.warn(`Mount picker failed`,e),E.sendToSprinkle(`welcome`,{action:`mount-cancelled`})}return}u.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>o.addSprinkle(e,t,n,r,i),removeSprinkle:e=>o.removeSprinkle(e),minimizeSprinkle:e=>o.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>o.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>o.unregisterSprinkle(e),closeSprinkleContent:e=>o.closeSprinkleContent(e)},()=>{let e=u.getScoops().find(e=>e.isCone);e&&u.stopScoop(e.jid)},{autoOpenBehavior:`attention`,onAttachImage:(e,t,n)=>o.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9});window.__slicc_sprinkleManager=E,window.__slicc_reloadSkills=()=>(chrome.runtime.sendMessage({source:`panel`,payload:{type:`reload-skills`}}),Promise.resolve()),u.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 E.refresh(),e=E.available();break;case`opened`:e=E.opened();break;case`refresh`:await E.refresh(),e=E.available().length;break;case`open`:await E.open(r),e=!0;break;case`close`:E.close(r),e=!0;break;case`send`:E.sendToSprinkle(r,i),e=!0;break;case`openNewAutoOpen`:await E.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 E.refresh(),o.onSprinkleClose=e=>E.close(e),o.onSprinkleActivate=e=>{E.activate(e)},o.getAvailableSprinkles=()=>[],o.onOpenSprinkle=(e,t)=>E.open(e,t),o.resolveSprinkleIcon=e=>S9(e,c),o.updateAddButtons(),await E.restoreOpenSprinkles();let{PanelFollowerSprinkleProxy:oe}=await I(async()=>{let{PanelFollowerSprinkleProxy:e}=await import(`./follower-sprinkle-bridge-BavA0y-a.js`);return{PanelFollowerSprinkleProxy:e}},[]),{SprinkleFollowerController:se}=await I(async()=>{let{SprinkleFollowerController:e}=await Promise.resolve().then(()=>zwe);return{SprinkleFollowerController:e}},void 0),ce={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})})}},D={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)}},O=null;O=new se({sync:new oe(ce,D,{onSprinklesList:e=>void O?.updateAvailable(e),onSprinkleUpdate:(e,t)=>O?.handleSprinkleUpdate(e,t)}),addSprinkle:(e,t,n,r,i)=>o.addSprinkle(e,t,n,r,i),removeSprinkle:e=>o.removeSprinkle(e)});let k=FR({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:E,client:u,chat:o.panels.chat,log:$});if(window.addEventListener(`beforeunload`,()=>k.dispose(),{once:!0}),!c.getWatcher()){let{FsWatcher:e}=await I(async()=>{let{FsWatcher:e}=await Promise.resolve().then(()=>xL);return{FsWatcher:e}},void 0);c.setWatcher(new e)}let A=c.getWatcher();A&&E.setupWatcher(A),!await c.exists(`/shared/.welcomed`)&&localStorage.getItem(`slicc-welcomed`)&&(await c.writeFile(`/shared/.welcomed`,`1`).catch(()=>{}),localStorage.removeItem(`slicc-welcomed`)),Nb(window.localStorage)||Zb(c).then(e=>{e.isFirstRun&&(T.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),T.delete(`first-run`),W9(T)),T.add(`first-run`),W9(T),w().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e)),$.info(`SprinkleManager initialized (extension mode)`),u.requestState(),$.info(`Extension UI connected to offscreen agent engine`);let{installNukeReloadListener:le}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-D9F-SaCE.js`);return{installNukeReloadListener:e}},[]);le(),Y9()&&await X9(o.panels.chat),y8().catch(()=>{}),N7(c)}async function FTe(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-DiUZmxNj.js`);return{spawnKernelWorker:e}},__vite__mapDeps([28,29])),{installPageStorageSync:i}=await I(async()=>{let{installPageStorageSync:e}=await import(`./page-storage-sync-BMnuL0eG.js`);return{installPageStorageSync:e}},[]),{VirtualFS:a}=await I(async()=>{let{VirtualFS:e}=await Promise.resolve().then(()=>xL);return{VirtualFS:e}},void 0),{BrowserAPI:o}=await I(async()=>{let{BrowserAPI:e}=await import(`./cdp-CUD-ZSn-.js`);return{BrowserAPI:e}},[]),s=await Lb(),c=Jwe(n?`electron-overlay`:`standalone`,s!==null)?Ob:null;await Ib({locationHref:window.location.href,storage:window.localStorage,envBaseUrl:null,defaultWorkerBaseUrl:c,runtimeConfigFetcher:async()=>s});let l=new D7(e,n);if(n){let e=m9(window.location.href);l.setActiveTab(e);let t=document.createElement(`style`);t.id=`slicc-electron-overlay-runtime-style`,t.textContent=`
1603
1603
  #app > .tab-bar { display: none !important; }
1604
1604
  #app > .tab-content {
1605
1605
  height: calc(100vh - var(--s2-header-height));
@@ -1607,7 +1607,7 @@ Long press — discard without saving`),n.setAttribute(`label`,`New session. Cli
1607
1607
  #app > .tab-content > .tab-content__panel {
1608
1608
  height: 100%;
1609
1609
  }
1610
- `,document.head.appendChild(t),window.addEventListener(`message`,e=>{e.source===window.parent&&Xwe(e.data)&&l.setActiveTab(m9(`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 l.panels.chat.initSession(`session-cone`),$.info(`Session initialized (kernel-worker mode)`);let u=await a.create({dbName:`slicc-fs`});l.panels.fileBrowser.setFs(u),sb().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await lb(e,u,$);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 d=new BroadcastChannel(`preview-vfs`);d.onmessage=e=>{if(e.data?.type!==`preview-vfs-read`)return;let{id:t,path:n,asText:r}=e.data;(async()=>{try{let e=r?`utf-8`:`binary`,i=await u.readFile(n,{encoding:e});d.postMessage({type:`preview-vfs-response`,id:t,content:i})}catch(e){let r=e instanceof Error?e.message:String(e);r.includes(`ENOENT`)||$.error(`Preview VFS read failed`,{path:n,error:r}),d.postMessage({type:`preview-vfs-response`,id:t,error:r})}})()};let f=new o,p=f.getTransport();try{await f.connect()}catch(e){$.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}globalThis.__slicc_browser=f;let m=null,h,g=e=>{let t=e.config?.modelId,n=t?p5(t):m5();l.panels.chat.setModelSupportsReasoning(!!n.reasoning,el(n).includes(`xhigh`)),l.panels.chat.setThinkingLevel(e.config?.thinkingLevel)},_=async e=>{m=e,h.setSelectedScoopJid(e.jid),l.panels.scoops.setSelectedJid(e.jid),l.panels.memory.setSelectedScoop(e.jid),l.setScoopSwitcherSelected?.(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await l.panels.chat.switchToContext(t,!e.isCone,n),h.requestScoopMessages(e.jid),h.isProcessing(e.jid)&&l.panels.chat.setProcessing(!0),g(e)},v=typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,{OffscreenClient:y}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-BDRYlJgy.js`);return{OffscreenClient:e}},[]),b=r({realCdpTransport:p,instanceId:v,callbacks:{onStatusChange:(e,t)=>{l.panels.scoops.updateScoopStatus(e,t),l.updateScoopSwitcherStatus?.(e,t),m?.jid===e&&(l.setAgentProcessing(t===`processing`),t===`processing`?l.panels.chat.setProcessing(!0):t===`ready`&&l.panels.chat.setProcessing(!1))},onScoopCreated:e=>{l.panels.scoops.refreshScoops(),l.refreshScoopSwitcher?.(),m||_(e)},onScoopListUpdate:()=>{l.panels.scoops.refreshScoops(),l.refreshScoopSwitcher?.()},onIncomingMessage:(e,t)=>{m?.jid===e&&t.channel!==`web`&&h3(t.channel)&&l.panels.chat.addLickMessage(t.id,t.content,t.channel,new Date(t.timestamp).getTime())},onScoopMessagesReplaced:(e,t)=>{m?.jid===e&&l.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{m?.jid===e&&l.panels.chat.setCompactionState(t)},onReady:()=>{$.info(`Kernel worker ready, scoop count:`,h.getScoops().length);let e=h.getScoops().find(e=>e.isCone);e&&!m&&_(e)}}});h=b.client,l.panels.scoops.setOrchestrator(h),l.panels.memory.setOrchestrator(h),l.setScoopSwitcherOrchestrator?.(h),l.onScoopSelect=_,l.onClearChat=async()=>{await Bie().catch(()=>{}),await new vy().clearAll().catch(()=>{});let e=h.getScoops();for(let t of e){let e=t.isCone?`session-cone`:`session-${t.folder}`;await l.panels.chat.deleteSessionById(e)}h.clearAllMessages()},l.onModelChange=e=>{localStorage.setItem(`selected-model`,e),h.updateModel(),m&&g(m)},l.onThinkingLevelChange=e=>{m&&h.setScoopThinkingLevel(m.jid,e)},l.onModelsRefreshed=()=>{m&&g(m)},h.setLocalFS(u),l.onClearChat=async e=>{if(e?.freeze===`quick`)try{await M7({vfs:u})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await j7({vfs:u})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await l.panels.chat.deleteSessionById(`session-cone`),await h.clearAllMessages()},l.panels.scoops.setVfs(u),l.onFrozenSessionOpen=e=>{(async()=>{try{let t=await u.readFile(y7(e),{encoding:`utf-8`}),n=x7(typeof t==`string`?t:new TextDecoder().decode(t)),r=n.title||e.title;await l.panels.chat.displayFrozenSession({contextId:`frozen:${e.filename}`,messages:n.messages,title:r}),l.setThreadHeaderName(`❄ ${r}`),l.setActiveTab(`chat`)}catch(t){$.warn(`Failed to open frozen session`,{filename:e.filename,error:t instanceof Error?t.message:String(t)})}})()},l.panels.chat.onMessagesChanged=e=>{let t=2e5;try{t=m5().contextWindow??t}catch{}let n=e/t;l.setNewSessionGlow(n)};let ee=h.createAgentHandle();l.panels.chat.setAgent(ee),l.panels.chat.setAttachmentWriter(VL(u)),l.panels.chat.setDeleteQueuedMessageCallback(e=>{$.warn(`deleteQueuedMessage is a no-op in kernel-worker mode`)});try{await b.ready,$.info(`Worker boot handshake complete`)}catch(e){throw $.error(`Worker failed to signal ready`,e),e}h.requestState();let te=i({send:e=>h.sendRaw(e)}),ne=new Set([`setItem`,`removeItem`,`clear`]);for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);if(t!==null&&!ne.has(t)&&!t.includes(`\0`)){let e=localStorage.getItem(t);e!==null&&h.sendRaw({type:`local-storage-set`,key:t,value:e})}}let{SprinkleManager:x}=await I(async()=>{let{SprinkleManager:e}=await Promise.resolve().then(()=>CTe);return{SprinkleManager:e}},void 0),{installSprinkleManagerHandlerOverChannel:S}=await I(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),re=U9(),{OnboardingOrchestrator:C}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-C0LGn2uj.js`);return{OnboardingOrchestrator:e}},[]),{addAccount:ie,getAccounts:w,getAvailableProviders:T,getProviderConfig:ae,getProviderModels:E,isModelHiddenFromPicker:oe,setSelectedModelId:se,providerOffersLlmModels:ce}=await I(async()=>{let{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>T8);return{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:D,resolveDeviceCodeDecision:O}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),k=null,A,le=()=>k||(k=new C({fs:u,postSystemMessage:e=>l.panels.chat.addSystemMessage(e),postDipReference:e=>l.panels.chat.addSystemMessage(e),getProviderCatalogue:ye,saveAccount:(e,t,n,r,i)=>ie(e,t,n,r,i),setSelectedModel:e=>se(e),resolveModelLabel:(e,t)=>{try{return E(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>CR(e),fireFinalLick:e=>{P7(h),G9(String(e?.action??``),re,()=>h.sendSprinkleLick(`welcome`,e),`orchestrator-worker`)},launchOAuth:async(e,t)=>{try{let n=ae(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&ie(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-CrkKpOgi.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:D({broadcastToDip:e=>CR(e)})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-CrkKpOgi.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:F7(e,n,E,oe)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),k),j=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(re.has(t))return $.debug(`Suppressing duplicate welcome lick (worker)`,{action:t}),!0;re.add(t),W9(re)}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 O(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return le().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=le(),t=n?.data??{};return t.mountWorkspace&&Z9(u).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=w();if(e.length>0){let t=e[0],n=(()=>{try{return ae(t.providerId)}catch{return null}})();return CR({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(u,t.providerId,e=>{G9(String(e.action??``),re,()=>h.sendSprinkleLick(`welcome`,e),`fast-forward-worker`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return le().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&le().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&&le().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`?(u.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};l.panels.chat.onDipLick=(e,t)=>{j({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||h.sendSprinkleLick(`inline`,{action:e,data:t})},A=new x(u,async e=>{if(e.type===`sprinkle`){if(j(e)){e.body?.action===`shortcut-migrate`&&A.close(`welcome`);return}e.sprinkleName&&h.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.removeSprinkle(e),minimizeSprinkle:e=>l.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>l.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>l.unregisterSprinkle(e),closeSprinkleContent:e=>l.closeSprinkleContent(e)},()=>{let e=h.getScoops().find(e=>e.isCone);e&&h.stopScoop(e.jid)},{onAttachImage:(e,t,n)=>l.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9}),window.__slicc_sprinkleManager=A;let M=S(A,{instanceId:v}),ue=null,de=null,fe=e=>({workerBaseUrl:e,getMessages:()=>l.panels.chat.getMessages(),getScoopJid:()=>m?.jid??`cone`,getScoops:()=>h.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(A.opened());return A.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=A.available().find(t=>t.name===e);if(!t)return null;try{let e=await u.readFile(t.path,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder(`utf-8`).decode(e)}catch{return null}},onSprinkleLick:(e,t,n)=>h.sendSprinkleLick(e,t,n),onFollowerMessage:(e,t,n)=>{l.panels.chat.addUserMessage(e,n),ee.sendMessage(e,t,n),ue?.sync.broadcastUserMessage(e,t,n)},onFollowerAbort:()=>ee.stop(),onFollowerCountChanged:e=>{let t=ue?.peers.getPeers()??[];window.localStorage.setItem(`slicc.leaderTrayFollowers`,JSON.stringify(t.map(e=>({runtimeId:e.bootstrapId,runtime:e.runtime,connectedAt:e.connectedAt??void 0}))))},sendWebhookEvent:(e,t,n)=>h.sendWebhookEvent(e,t,n),onAgentEvent:e=>ee.onEvent(e),browserAPI:f,browserTransport:p,vfs:u}),pe=e=>{SF(()=>e.reset()),A.setSendToSprinkleHook((t,n)=>e.sync.broadcastSprinkleUpdate(t,n)),l.panels.chat.setOnLocalUserMessage((t,n,r)=>e.sync.broadcastUserMessage(t,n,r))},me=()=>{SF(null),l.panels.chat.setOnLocalUserMessage(void 0),A.setSendToSprinkleHook(void 0)},he=async e=>{let{performTrayLeave:t}=await I(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-CVgDGO_d.js`);return{performTrayLeave:e}},[]);return await t({workerBaseUrl:e.workerBaseUrl,requestId:e.requestId},{getLeader:()=>ue,setLeader:e=>{ue=e},getFollower:()=>de,setFollower:e=>{de=e},startLeader:e=>f9(fe(e)),clearLeaderHooks:me,wireLeaderHooks:pe,storage:window.localStorage,log:$})},{installPanelRpcHandler:ge}=await I(async()=>{let{installPanelRpcHandler:e}=await Promise.resolve().then(()=>iF);return{installPanelRpcHandler:e}},void 0),{createStandalonePanelRpcHandlers:_e}=await I(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-BHCM5KGv.js`);return{createStandalonePanelRpcHandlers:e}},[]),ve=ge({instanceId:v,handlers:_e({resetTray:async()=>{if(!ue)throw Error(`no active tray session to reset`);return await ue.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await he({workerBaseUrl:e,requestId:t})})});window.addEventListener(`beforeunload`,()=>ve(),{once:!0}),await A.refresh(),l.onSprinkleClose=e=>A.close(e),l.onSprinkleActivate=e=>{A.activate(e)},l.getAvailableSprinkles=()=>[],l.onOpenSprinkle=(e,t)=>A.open(e,t),l.resolveSprinkleIcon=e=>S9(e,u),l.updateAddButtons(),await A.restoreOpenSprinkles().catch(e=>{$.warn(`Failed to restore open sprinkles`,e)});{let e=window.localStorage.getItem(Db),n=window.localStorage.getItem(Eb);if(t===`hosted-leader`){window.localStorage.removeItem(Db),await new Ub().clear();let e=window.localStorage.getItem(Eb);if(!e)throw Error(`hosted-leader: TRAY_WORKER_STORAGE_KEY not seeded — runtime-config resolution failed`);ue=f9({...fe(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.23.0`})}).catch(e=>{$.error(`failed to POST /api/cloud-status`,{error:String(e)})})}}),pe(ue),(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();if(!t.adobeImsToken)return;localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`),await t5({providerId:`adobe`,accessToken:t.adobeImsToken,tokenExpiresAt:Date.now()+3600*1e3,userName:`cloud-injected`}),$.info(`hosted-leader: Adobe IMS token injected from secrets.env`)}catch(e){$.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}})()}else e?de=l9({joinUrl:e,onSnapshot:e=>l.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>l.panels.chat.addUserMessage(e,r),onStatus:e=>l.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>l.panels.chat.setAgent(e),browserAPI:f,addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.removeSprinkle(e)}):n&&(ue=f9(fe(n)),pe(ue))}aae(e=>{window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(Bb())),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=ue;ue=null,SF(null),l.panels.chat.setOnLocalUserMessage(void 0),A.setSendToSprinkleHook(void 0);let a=de;de=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{de=l9({joinUrl:n,onSnapshot:e=>l.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>l.panels.chat.addUserMessage(e,r),onStatus:e=>l.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>l.panels.chat.setAgent(e),browserAPI:f,addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.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;he({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`,()=>{ue?.stop(),de?.stop()},{once:!0}),Nb(window.localStorage)||Zb(u).then(e=>{e.isFirstRun&&(re.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),re.delete(`first-run`),W9(re)),re.add(`first-run`),W9(re),le().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e));function ye(){let e=T().filter(e=>ce(e)),t=e.map(e=>{let t=ae(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]=E(t).filter(e=>!oe(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)=>{h.sendRaw({type:`tool-ui-action`,requestId:e,action:t,data:n})};let{RemoteTerminalView:be}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-C3fqiRYe.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:xe}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-CjaA9Kwn.js`);return{fetchSecretEnvVars:e}},[]),N=await xe(),Se=new be({client:h,cwd:`/`,env:Object.keys(N).length>0?N:void 0});l.panels.terminal.mountRemoteShell(Se).catch(e=>{$.error(`Failed to mount remote terminal view`,e)});let{installNukeReloadListener:Ce}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-Ck3z3GSc.js`);return{installNukeReloadListener:e}},[]),P=Ce();window.addEventListener(`beforeunload`,()=>{te(),M(),P(),Se.dispose(),b.dispose()},{once:!0}),Y9()&&await X9(l.panels.chat),y8().catch(()=>{}),N7(u),$.info(`Standalone kernel-worker UI ready`)}function ITe(){if(typeof chrome<`u`&&chrome?.runtime?.id)return;let e=new Blob([`
1610
+ `,document.head.appendChild(t),window.addEventListener(`message`,e=>{e.source===window.parent&&Xwe(e.data)&&l.setActiveTab(m9(`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 l.panels.chat.initSession(`session-cone`),$.info(`Session initialized (kernel-worker mode)`);let u=await a.create({dbName:`slicc-fs`});l.panels.fileBrowser.setFs(u),sb().then(async e=>{if(e.length===0)return;let{needsRecovery:t}=await lb(e,u,$);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 d=new BroadcastChannel(`preview-vfs`);d.onmessage=e=>{if(e.data?.type!==`preview-vfs-read`)return;let{id:t,path:n,asText:r}=e.data;(async()=>{try{let e=r?`utf-8`:`binary`,i=await u.readFile(n,{encoding:e});d.postMessage({type:`preview-vfs-response`,id:t,content:i})}catch(e){let r=e instanceof Error?e.message:String(e);r.includes(`ENOENT`)||$.error(`Preview VFS read failed`,{path:n,error:r}),d.postMessage({type:`preview-vfs-response`,id:t,error:r})}})()};let f=new o,p=f.getTransport();try{await f.connect()}catch(e){$.warn(`Initial CDP connect failed; worker-forwarded commands will retry on demand`,e instanceof Error?e.message:String(e))}globalThis.__slicc_browser=f;let m=null,h,g=e=>{let t=e.config?.modelId,n=t?p5(t):m5();l.panels.chat.setModelSupportsReasoning(!!n.reasoning,el(n).includes(`xhigh`)),l.panels.chat.setThinkingLevel(e.config?.thinkingLevel)},_=async e=>{m=e,h.setSelectedScoopJid(e.jid),l.panels.scoops.setSelectedJid(e.jid),l.panels.memory.setSelectedScoop(e.jid),l.setScoopSwitcherSelected?.(e.jid);let t=e.isCone?`session-cone`:`session-${e.folder}`,n=e.isCone?void 0:e.name;await l.panels.chat.switchToContext(t,!e.isCone,n),h.requestScoopMessages(e.jid),h.isProcessing(e.jid)&&l.panels.chat.setProcessing(!0),g(e)},v=typeof crypto<`u`&&typeof crypto.randomUUID==`function`?crypto.randomUUID():`slicc-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,{OffscreenClient:y}=await I(async()=>{let{OffscreenClient:e}=await import(`./offscreen-client-C-HybLAA.js`);return{OffscreenClient:e}},[]),b=r({realCdpTransport:p,instanceId:v,callbacks:{onStatusChange:(e,t)=>{l.panels.scoops.updateScoopStatus(e,t),l.updateScoopSwitcherStatus?.(e,t),m?.jid===e&&(l.setAgentProcessing(t===`processing`),t===`processing`?l.panels.chat.setProcessing(!0):t===`ready`&&l.panels.chat.setProcessing(!1))},onScoopCreated:e=>{l.panels.scoops.refreshScoops(),l.refreshScoopSwitcher?.(),m||_(e)},onScoopListUpdate:()=>{l.panels.scoops.refreshScoops(),l.refreshScoopSwitcher?.()},onIncomingMessage:(e,t)=>{m?.jid===e&&t.channel!==`web`&&h3(t.channel)&&l.panels.chat.addLickMessage(t.id,t.content,t.channel,new Date(t.timestamp).getTime())},onScoopMessagesReplaced:(e,t)=>{m?.jid===e&&l.panels.chat.loadMessages(t)},onCompactionStateChange:(e,t)=>{m?.jid===e&&l.panels.chat.setCompactionState(t)},onReady:()=>{$.info(`Kernel worker ready, scoop count:`,h.getScoops().length);let e=h.getScoops().find(e=>e.isCone);e&&!m&&_(e)}}});h=b.client,l.panels.scoops.setOrchestrator(h),l.panels.memory.setOrchestrator(h),l.setScoopSwitcherOrchestrator?.(h),l.onScoopSelect=_,l.onClearChat=async()=>{await Bie().catch(()=>{}),await new vy().clearAll().catch(()=>{});let e=h.getScoops();for(let t of e){let e=t.isCone?`session-cone`:`session-${t.folder}`;await l.panels.chat.deleteSessionById(e)}h.clearAllMessages()},l.onModelChange=e=>{localStorage.setItem(`selected-model`,e),h.updateModel(),m&&g(m)},l.onThinkingLevelChange=e=>{m&&h.setScoopThinkingLevel(m.jid,e)},l.onModelsRefreshed=()=>{m&&g(m)},h.setLocalFS(u),l.onClearChat=async e=>{if(e?.freeze===`quick`)try{await M7({vfs:u})}catch(e){$.warn(`Quick freezer step failed (clearing anyway)`,{error:String(e)})}else if(e?.freeze!==!1)try{await j7({vfs:u})}catch(e){$.warn(`Freezer step failed (clearing anyway)`,{error:String(e)})}else $.info(`New session: freezer skipped (long-press)`);await l.panels.chat.deleteSessionById(`session-cone`),await h.clearAllMessages()},l.panels.scoops.setVfs(u),l.onFrozenSessionOpen=e=>{(async()=>{try{let t=await u.readFile(y7(e),{encoding:`utf-8`}),n=x7(typeof t==`string`?t:new TextDecoder().decode(t)),r=n.title||e.title;await l.panels.chat.displayFrozenSession({contextId:`frozen:${e.filename}`,messages:n.messages,title:r}),l.setThreadHeaderName(`❄ ${r}`),l.setActiveTab(`chat`)}catch(t){$.warn(`Failed to open frozen session`,{filename:e.filename,error:t instanceof Error?t.message:String(t)})}})()},l.panels.chat.onMessagesChanged=e=>{let t=2e5;try{t=m5().contextWindow??t}catch{}let n=e/t;l.setNewSessionGlow(n)};let ee=h.createAgentHandle();l.panels.chat.setAgent(ee),l.panels.chat.setAttachmentWriter(VL(u)),l.panels.chat.setDeleteQueuedMessageCallback(e=>{$.warn(`deleteQueuedMessage is a no-op in kernel-worker mode`)});try{await b.ready,$.info(`Worker boot handshake complete`)}catch(e){throw $.error(`Worker failed to signal ready`,e),e}h.requestState();let te=i({send:e=>h.sendRaw(e)}),ne=new Set([`setItem`,`removeItem`,`clear`]);for(let e=0;e<localStorage.length;e++){let t=localStorage.key(e);if(t!==null&&!ne.has(t)&&!t.includes(`\0`)){let e=localStorage.getItem(t);e!==null&&h.sendRaw({type:`local-storage-set`,key:t,value:e})}}let{SprinkleManager:x}=await I(async()=>{let{SprinkleManager:e}=await Promise.resolve().then(()=>CTe);return{SprinkleManager:e}},void 0),{installSprinkleManagerHandlerOverChannel:S}=await I(async()=>{let{installSprinkleManagerHandlerOverChannel:e}=await import(`./sprinkle-bridge-channel-gxatjtur.js`);return{installSprinkleManagerHandlerOverChannel:e}},[]),re=U9(),{OnboardingOrchestrator:C}=await I(async()=>{let{OnboardingOrchestrator:e}=await import(`./onboarding-orchestrator-q_dw4jTj.js`);return{OnboardingOrchestrator:e}},[]),{addAccount:ie,getAccounts:w,getAvailableProviders:T,getProviderConfig:ae,getProviderModels:E,isModelHiddenFromPicker:oe,setSelectedModelId:se,providerOffersLlmModels:ce}=await I(async()=>{let{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}=await Promise.resolve().then(()=>T8);return{addAccount:e,getAccounts:t,getAvailableProviders:n,getProviderConfig:r,getProviderModels:i,isModelHiddenFromPicker:a,setSelectedModelId:o,providerOffersLlmModels:s}},void 0),{createSprinkleDeviceCodePrompter:D,resolveDeviceCodeDecision:O}=await I(async()=>{let{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}=await import(`./device-code-bridge-CbHxw098.js`);return{createSprinkleDeviceCodePrompter:e,resolveDeviceCodeDecision:t}},[]),k=null,A,le=()=>k||(k=new C({fs:u,postSystemMessage:e=>l.panels.chat.addSystemMessage(e),postDipReference:e=>l.panels.chat.addSystemMessage(e),getProviderCatalogue:ye,saveAccount:(e,t,n,r,i)=>ie(e,t,n,r,i),setSelectedModel:e=>se(e),resolveModelLabel:(e,t)=>{try{return E(e).find(e=>e.id===t)?.name??null}catch{return null}},broadcastToDip:e=>CR(e),fireFinalLick:e=>{P7(h),G9(String(e?.action??``),re,()=>h.sendSprinkleLick(`welcome`,e),`orchestrator-worker`)},launchOAuth:async(e,t)=>{try{let n=ae(e);if(!n.isOAuth||!n.onOAuthLogin&&!n.onOAuthLoginIntercepted)return{ok:!1,message:`Provider does not support OAuth.`};if(n.requiresBaseUrl&&t&&ie(e,``,t),n.onOAuthLoginIntercepted){let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await I(async()=>{let{createInterceptingOAuthLauncherForCurrentRuntime:e}=await import(`./oauth-service-DK0AQV_B.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:D({broadcastToDip:e=>CR(e)})})}else if(n.onOAuthLogin){let{createOAuthLauncher:e}=await I(async()=>{let{createOAuthLauncher:e}=await import(`./oauth-service-DK0AQV_B.js`);return{createOAuthLauncher:e}},[]),t=e();await n.onOAuthLogin(t,()=>void 0)}return{ok:!0,model:F7(e,n,E,oe)}}catch(e){return{ok:!1,message:e instanceof Error?e.message:`OAuth login failed.`}}}}),k),j=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(re.has(t))return $.debug(`Suppressing duplicate welcome lick (worker)`,{action:t}),!0;re.add(t),W9(re)}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 O(e===`cancel`?`cancel`:`continue`),!0}if(r===`first-run`)return le().handleFirstRun(),!0;if(r===`onboarding-complete`){let e=le(),t=n?.data??{};return t.mountWorkspace&&Z9(u).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=w();if(e.length>0){let t=e[0],n=(()=>{try{return ae(t.providerId)}catch{return null}})();return CR({type:`slicc-already-connected`,provider:t.providerId,note:n?.name?`Already connected to ${n.name}.`:`Already connected.`}),Q9(u,t.providerId,e=>{G9(String(e.action??``),re,()=>h.sendSprinkleLick(`welcome`,e),`fast-forward-worker`)}).catch(e=>$.warn(`Failed to fire fast-forward final lick`,e)),!0}return le().handleConnectReady(),!0}if(r===`connect-attempt`){let e=n?.data;return e&&le().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&&le().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`?(u.writeFile(`/shared/.welcomed`,`1`).catch(e=>$.warn(`Failed to persist welcome completion marker`,e)),!0):!1};l.panels.chat.onDipLick=(e,t)=>{j({type:`sprinkle`,sprinkleName:`inline`,targetScoop:void 0,timestamp:new Date().toISOString(),body:{action:e,data:t}})||h.sendSprinkleLick(`inline`,{action:e,data:t})},A=new x(u,async e=>{if(e.type===`sprinkle`){if(j(e)){e.body?.action===`shortcut-migrate`&&A.close(`welcome`);return}e.sprinkleName&&h.sendSprinkleLick(e.sprinkleName,e.body,e.targetScoop)}},{addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.removeSprinkle(e),minimizeSprinkle:e=>l.minimizeSprinkle(e),registerSprinkle:(e,t,n)=>l.registerSprinkle(e,t,n?.icon,n?.zone),unregisterSprinkle:e=>l.unregisterSprinkle(e),closeSprinkleContent:e=>l.closeSprinkleContent(e)},()=>{let e=h.getScoops().find(e=>e.isCone);e&&h.stopScoop(e.jid)},{onAttachImage:(e,t,n)=>l.panels.chat.addImageAttachment(e,t,n),inlineSprinkles:J9}),window.__slicc_sprinkleManager=A;let M=S(A,{instanceId:v}),ue=null,de=null,fe=e=>({workerBaseUrl:e,getMessages:()=>l.panels.chat.getMessages(),getScoopJid:()=>m?.jid??`cone`,getScoops:()=>h.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(A.opened());return A.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=A.available().find(t=>t.name===e);if(!t)return null;try{let e=await u.readFile(t.path,{encoding:`utf-8`});return typeof e==`string`?e:new TextDecoder(`utf-8`).decode(e)}catch{return null}},onSprinkleLick:(e,t,n)=>h.sendSprinkleLick(e,t,n),onFollowerMessage:(e,t,n)=>{l.panels.chat.addUserMessage(e,n),ee.sendMessage(e,t,n),ue?.sync.broadcastUserMessage(e,t,n)},onFollowerAbort:()=>ee.stop(),onFollowerCountChanged:e=>{let t=ue?.peers.getPeers()??[];window.localStorage.setItem(`slicc.leaderTrayFollowers`,JSON.stringify(t.map(e=>({runtimeId:e.bootstrapId,runtime:e.runtime,connectedAt:e.connectedAt??void 0}))))},sendWebhookEvent:(e,t,n)=>h.sendWebhookEvent(e,t,n),onAgentEvent:e=>ee.onEvent(e),browserAPI:f,browserTransport:p,vfs:u}),pe=e=>{SF(()=>e.reset()),A.setSendToSprinkleHook((t,n)=>e.sync.broadcastSprinkleUpdate(t,n)),l.panels.chat.setOnLocalUserMessage((t,n,r)=>e.sync.broadcastUserMessage(t,n,r))},me=()=>{SF(null),l.panels.chat.setOnLocalUserMessage(void 0),A.setSendToSprinkleHook(void 0)},he=async e=>{let{performTrayLeave:t}=await I(async()=>{let{performTrayLeave:e}=await import(`./tray-leave-runtime-DB4sGbH0.js`);return{performTrayLeave:e}},[]);return await t({workerBaseUrl:e.workerBaseUrl,requestId:e.requestId},{getLeader:()=>ue,setLeader:e=>{ue=e},getFollower:()=>de,setFollower:e=>{de=e},startLeader:e=>f9(fe(e)),clearLeaderHooks:me,wireLeaderHooks:pe,storage:window.localStorage,log:$})},{installPanelRpcHandler:ge}=await I(async()=>{let{installPanelRpcHandler:e}=await Promise.resolve().then(()=>iF);return{installPanelRpcHandler:e}},void 0),{createStandalonePanelRpcHandlers:_e}=await I(async()=>{let{createStandalonePanelRpcHandlers:e}=await import(`./panel-rpc-handlers-BSkdF8o-.js`);return{createStandalonePanelRpcHandlers:e}},[]),ve=ge({instanceId:v,handlers:_e({resetTray:async()=>{if(!ue)throw Error(`no active tray session to reset`);return await ue.reset()},leaveTray:async({workerBaseUrl:e,requestId:t})=>await he({workerBaseUrl:e,requestId:t})})});window.addEventListener(`beforeunload`,()=>ve(),{once:!0}),await A.refresh(),l.onSprinkleClose=e=>A.close(e),l.onSprinkleActivate=e=>{A.activate(e)},l.getAvailableSprinkles=()=>[],l.onOpenSprinkle=(e,t)=>A.open(e,t),l.resolveSprinkleIcon=e=>S9(e,u),l.updateAddButtons(),await A.restoreOpenSprinkles().catch(e=>{$.warn(`Failed to restore open sprinkles`,e)});{let e=window.localStorage.getItem(Db),n=window.localStorage.getItem(Eb);if(t===`hosted-leader`){window.localStorage.removeItem(Db),await new Ub().clear();let e=window.localStorage.getItem(Eb);if(!e)throw Error(`hosted-leader: TRAY_WORKER_STORAGE_KEY not seeded — runtime-config resolution failed`);ue=f9({...fe(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.23.2`})}).catch(e=>{$.error(`failed to POST /api/cloud-status`,{error:String(e)})})}}),pe(ue),(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();if(!t.adobeImsToken)return;localStorage.getItem(`selected-model`)||localStorage.setItem(`selected-model`,`adobe:claude-opus-4-6`),await t5({providerId:`adobe`,accessToken:t.adobeImsToken,tokenExpiresAt:Date.now()+3600*1e3,userName:`cloud-injected`}),$.info(`hosted-leader: Adobe IMS token injected from secrets.env`)}catch(e){$.warn(`hosted-leader: bootstrap fetch failed; provider needs manual login`,{error:e instanceof Error?e.message:String(e)})}})()}else e?de=l9({joinUrl:e,onSnapshot:e=>l.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>l.panels.chat.addUserMessage(e,r),onStatus:e=>l.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>l.panels.chat.setAgent(e),browserAPI:f,addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.removeSprinkle(e)}):n&&(ue=f9(fe(n)),pe(ue))}aae(e=>{window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(e))}),window.localStorage.setItem(`slicc.leaderTrayStatus`,JSON.stringify(Bb())),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=ue;ue=null,SF(null),l.panels.chat.setOnLocalUserMessage(void 0),A.setSendToSprinkleHook(void 0);let a=de;de=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{de=l9({joinUrl:n,onSnapshot:e=>l.panels.chat.loadMessages(e),onUserMessage:(e,t,n,r)=>l.panels.chat.addUserMessage(e,r),onStatus:e=>l.panels.chat.setProcessing(e===`processing`),setChatAgent:e=>l.panels.chat.setAgent(e),browserAPI:f,addSprinkle:(e,t,n,r,i)=>l.addSprinkle(e,t,n,r,i),removeSprinkle:e=>l.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;he({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`,()=>{ue?.stop(),de?.stop()},{once:!0}),Nb(window.localStorage)||Zb(u).then(e=>{e.isFirstRun&&(re.has(`first-run`)&&($.info(`Clearing stale welcome dedup entry — install state is fresh`),re.delete(`first-run`),W9(re)),re.add(`first-run`),W9(re),le().handleFirstRun())}).catch(e=>$.warn(`Welcome detection failed`,e));function ye(){let e=T().filter(e=>ce(e)),t=e.map(e=>{let t=ae(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]=E(t).filter(e=>!oe(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)=>{h.sendRaw({type:`tool-ui-action`,requestId:e,action:t,data:n})};let{RemoteTerminalView:be}=await I(async()=>{let{RemoteTerminalView:e}=await import(`./remote-terminal-view-CJvKEhzM.js`);return{RemoteTerminalView:e}},[]),{fetchSecretEnvVars:xe}=await I(async()=>{let{fetchSecretEnvVars:e}=await import(`./secret-env-8LsY1D5V.js`);return{fetchSecretEnvVars:e}},[]),N=await xe(),Se=new be({client:h,cwd:`/`,env:Object.keys(N).length>0?N:void 0});l.panels.terminal.mountRemoteShell(Se).catch(e=>{$.error(`Failed to mount remote terminal view`,e)});let{installNukeReloadListener:Ce}=await I(async()=>{let{installNukeReloadListener:e}=await import(`./nuke-command-D9F-SaCE.js`);return{installNukeReloadListener:e}},[]),P=Ce();window.addEventListener(`beforeunload`,()=>{te(),M(),P(),Se.dispose(),b.dispose()},{once:!0}),Y9()&&await X9(l.panels.chat),y8().catch(()=>{}),N7(u),$.info(`Standalone kernel-worker UI ready`)}function ITe(){if(typeof chrome<`u`&&chrome?.runtime?.id)return;let e=new Blob([`
1611
1611
  let lastPong = Date.now();
1612
1612
  let frozen = false;
1613
1613
  setInterval(() => {
@@ -1627,4 +1627,4 @@ Long press — discard without saving`),n.setAttribute(`label`,`New session. Cli
1627
1627
  }
1628
1628
  }
1629
1629
  };
1630
- `],{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 LTe(){ITe(),eR(),kTe();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);if(`serviceWorker`in navigator)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 Fie(),U8();let{bootstrapOAuthReplicas:t}=await I(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-BLTEErh7.js`);return{bootstrapOAuthReplicas:e}},[]);await Promise.race([t().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),!l5()&&Nb(window.localStorage);let n=typeof chrome<`u`&&!!chrome?.runtime?.id,r=qwe(window.location.href,n);return r===`extension-detached`?$9(e,{detached:!0}):r===`extension`?$9(e):FTe(e,r)}LTe().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{Fre as $,Fy as A,Al as B,Db as C,pb as D,bb as E,uie as F,Nl as G,Dl as H,Il as I,Qc as J,tl as K,oie as L,Bl as M,hie as N,Lie as O,die as P,Xc as Q,El as R,Ob as S,yb as T,kl as U,Ml as V,jl as W,Yc as X,Kre as Y,Zc as Z,xL as _,a5 as a,_ae as b,V8 as c,dSe as d,I as et,r8 as f,NR as g,$ye as h,Y8 as i,$v as j,R as k,t5 as l,$6 as m,y5 as n,s as nt,r5 as o,t8 as p,nl as q,K8 as r,u as rt,i5 as s,U7 as t,Rc as tt,J8 as u,mF as v,Eb as w,Hb as x,cF as y,Ol as z};
1630
+ `],{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 LTe(){ITe(),eR(),kTe();let e=document.getElementById(`app`);if(!e)throw Error(`#app element not found`);if(`serviceWorker`in navigator)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 Fie(),U8();let{bootstrapOAuthReplicas:t}=await I(async()=>{let{bootstrapOAuthReplicas:e}=await import(`./oauth-bootstrap-CF2U0zkY.js`);return{bootstrapOAuthReplicas:e}},[]);await Promise.race([t().catch(e=>{$.error(`OAuth bootstrap failed`,e)}),new Promise(e=>setTimeout(e,1e4))]),!l5()&&Nb(window.localStorage);let n=typeof chrome<`u`&&!!chrome?.runtime?.id,r=qwe(window.location.href,n);return r===`extension-detached`?$9(e,{detached:!0}):r===`extension`?$9(e):FTe(e,r)}LTe().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{Fre as $,Fy as A,Al as B,Db as C,pb as D,bb as E,uie as F,Nl as G,Dl as H,Il as I,Qc as J,tl as K,oie as L,Bl as M,hie as N,Lie as O,die as P,Xc as Q,El as R,Ob as S,yb as T,kl as U,Ml as V,jl as W,Yc as X,Kre as Y,Zc as Z,xL as _,a5 as a,_ae as b,V8 as c,dSe as d,I as et,r8 as f,NR as g,$ye as h,Y8 as i,$v as j,R as k,t5 as l,$6 as m,y5 as n,s as nt,r5 as o,t8 as p,nl as q,K8 as r,u as rt,i5 as s,U7 as t,Rc as tt,J8 as u,mF as v,Eb as w,Hb as x,cF as y,Ol as z};