@thangnm.nip/arouter 0.1.16 → 0.1.18

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 (155) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/app-path-routes-manifest.json +8 -6
  3. package/.next/standalone/.next/build-manifest.json +2 -2
  4. package/.next/standalone/.next/routes-manifest.json +14 -0
  5. package/.next/standalone/.next/server/app/(dashboard)/mitm/page.js +3 -3
  6. package/.next/standalone/.next/server/app/(dashboard)/mitm/page.js.nft.json +1 -1
  7. package/.next/standalone/.next/server/app/(dashboard)/mitm/page_client-reference-manifest.js +1 -1
  8. package/.next/standalone/.next/server/app/(dashboard)/page.js +1 -1
  9. package/.next/standalone/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  10. package/.next/standalone/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  11. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.html +2 -2
  13. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  14. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  15. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
  21. package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
  22. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  23. package/.next/standalone/.next/server/app/_not-found.html +1 -1
  24. package/.next/standalone/.next/server/app/_not-found.rsc +14 -13
  25. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +14 -13
  26. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  27. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +5 -4
  28. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  29. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  30. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  31. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  32. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  33. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/console-logs/route_client-reference-manifest.js +1 -1
  34. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/logs/route_client-reference-manifest.js +1 -1
  35. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  36. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  37. package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/settings/route_client-reference-manifest.js +1 -1
  38. package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  40. package/.next/standalone/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
  41. package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  42. package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  43. package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
  44. package/.next/standalone/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  45. package/.next/standalone/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  46. package/.next/standalone/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
  47. package/.next/standalone/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  48. package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  49. package/.next/standalone/.next/server/app/api/providers/client/route.js +2 -0
  50. package/.next/standalone/.next/server/app/api/providers/client/route.js.nft.json +1 -0
  51. package/.next/standalone/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -0
  52. package/.next/standalone/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  53. package/.next/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  54. package/.next/standalone/.next/server/app/api/usage/[id]/route.js +2 -0
  55. package/.next/standalone/.next/server/app/api/usage/[id]/route.js.nft.json +1 -0
  56. package/.next/standalone/.next/server/app/api/usage/[id]/route_client-reference-manifest.js +1 -0
  57. package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
  58. package/.next/standalone/.next/server/app/index.html +1 -1
  59. package/.next/standalone/.next/server/app/index.rsc +16 -15
  60. package/.next/standalone/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +1 -1
  61. package/.next/standalone/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  62. package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +16 -15
  63. package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  64. package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +5 -4
  65. package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  66. package/.next/standalone/.next/server/app/mitm.html +1 -1
  67. package/.next/standalone/.next/server/app/mitm.rsc +16 -15
  68. package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk/mitm/__PAGE__.segment.rsc +2 -2
  69. package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk/mitm.segment.rsc +1 -1
  70. package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  71. package/.next/standalone/.next/server/app/mitm.segments/_full.segment.rsc +16 -15
  72. package/.next/standalone/.next/server/app/mitm.segments/_head.segment.rsc +1 -1
  73. package/.next/standalone/.next/server/app/mitm.segments/_index.segment.rsc +5 -4
  74. package/.next/standalone/.next/server/app/mitm.segments/_tree.segment.rsc +2 -2
  75. package/.next/standalone/.next/server/app-paths-manifest.json +8 -6
  76. package/.next/standalone/.next/server/chunks/17.js +1 -0
  77. package/.next/standalone/.next/server/chunks/182.js +3 -3
  78. package/.next/standalone/.next/server/chunks/900.js +1 -1
  79. package/.next/standalone/.next/server/pages/404.html +1 -1
  80. package/.next/standalone/.next/server/pages/500.html +2 -2
  81. package/.next/standalone/.next/server/server-reference-manifest.js +1 -1
  82. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  83. package/.next/standalone/.next/static/IH6-ya3VS5IgydfgTMabe/_buildManifest.js +1 -0
  84. package/.next/standalone/.next/static/chunks/{497-ccc7bd75dbf8f86a.js → 497-8d84de9ebf3a0e47.js} +1 -1
  85. package/.next/standalone/.next/static/chunks/{702-1294e38572a8fef5.js → 702-2c12ecf123019d5d.js} +1 -1
  86. package/.next/standalone/.next/static/chunks/app/(dashboard)/mitm/{page-7b00b393f7d9f26e.js → page-92d8f757eb03c60d.js} +2 -2
  87. package/.next/standalone/.next/static/chunks/app/(dashboard)/page-419c1820686842ea.js +1 -0
  88. package/.next/standalone/.next/static/chunks/app/_global-error/page-419c1820686842ea.js +1 -0
  89. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-419c1820686842ea.js +1 -0
  90. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/console-logs/route-419c1820686842ea.js +1 -0
  91. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/logs/route-419c1820686842ea.js +1 -0
  92. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-419c1820686842ea.js +1 -0
  93. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/settings/route-419c1820686842ea.js +1 -0
  94. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-419c1820686842ea.js +1 -0
  95. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-419c1820686842ea.js +1 -0
  96. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-419c1820686842ea.js +1 -0
  97. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-419c1820686842ea.js +1 -0
  98. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-419c1820686842ea.js +1 -0
  99. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-419c1820686842ea.js +1 -0
  100. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-419c1820686842ea.js +1 -0
  101. package/.next/standalone/.next/static/chunks/app/api/keys/route-419c1820686842ea.js +1 -0
  102. package/.next/standalone/.next/static/chunks/app/api/locale/route-419c1820686842ea.js +1 -0
  103. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-419c1820686842ea.js +1 -0
  104. package/.next/standalone/.next/static/chunks/app/api/models/route-419c1820686842ea.js +1 -0
  105. package/.next/standalone/.next/static/chunks/app/api/providers/client/route-419c1820686842ea.js +1 -0
  106. package/.next/standalone/.next/static/chunks/app/api/providers/route-419c1820686842ea.js +1 -0
  107. package/.next/standalone/.next/static/chunks/app/api/settings/route-419c1820686842ea.js +1 -0
  108. package/.next/standalone/.next/static/chunks/app/api/usage/[id]/route-419c1820686842ea.js +1 -0
  109. package/.next/standalone/.next/static/chunks/app/api/version/route-419c1820686842ea.js +1 -0
  110. package/.next/standalone/.next/static/chunks/app/layout-7070335bf833b346.js +1 -0
  111. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-419c1820686842ea.js +1 -0
  112. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-419c1820686842ea.js +1 -0
  113. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-419c1820686842ea.js +1 -0
  114. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-419c1820686842ea.js +1 -0
  115. package/.next/standalone/.next/static/css/73a57e9fc54d09c4.css +3 -0
  116. package/.next/standalone/package.json +2 -2
  117. package/.next/standalone/public/icons/icon-192.svg +11 -3
  118. package/.next/standalone/public/icons/icon-512.svg +11 -3
  119. package/.next/standalone/public/manifest.json +30 -0
  120. package/.next/standalone/public/offline.html +113 -0
  121. package/.next/standalone/public/sw.js +56 -8
  122. package/.next/standalone/src/mitm/logger.js +21 -3
  123. package/.next/standalone/src/mitm/manager.js +54 -2
  124. package/.next/standalone/src/mitm/server.js +25 -1
  125. package/package.json +2 -2
  126. package/.next/standalone/.next/server/chunks/219.js +0 -1
  127. package/.next/standalone/.next/static/47Vl4XkcsFJjPtC0N_x6v/_buildManifest.js +0 -1
  128. package/.next/standalone/.next/static/chunks/app/(dashboard)/page-5c09ac097fc0cc9b.js +0 -1
  129. package/.next/standalone/.next/static/chunks/app/_global-error/page-5c09ac097fc0cc9b.js +0 -1
  130. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/alias/route-5c09ac097fc0cc9b.js +0 -1
  131. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/console-logs/route-5c09ac097fc0cc9b.js +0 -1
  132. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/logs/route-5c09ac097fc0cc9b.js +0 -1
  133. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/route-5c09ac097fc0cc9b.js +0 -1
  134. package/.next/standalone/.next/static/chunks/app/api/cli-tools/antigravity-mitm/settings/route-5c09ac097fc0cc9b.js +0 -1
  135. package/.next/standalone/.next/static/chunks/app/api/cli-tools/claude-settings/route-5c09ac097fc0cc9b.js +0 -1
  136. package/.next/standalone/.next/static/chunks/app/api/cli-tools/codex-settings/route-5c09ac097fc0cc9b.js +0 -1
  137. package/.next/standalone/.next/static/chunks/app/api/cli-tools/copilot-settings/route-5c09ac097fc0cc9b.js +0 -1
  138. package/.next/standalone/.next/static/chunks/app/api/cli-tools/droid-settings/route-5c09ac097fc0cc9b.js +0 -1
  139. package/.next/standalone/.next/static/chunks/app/api/cli-tools/openclaw-settings/route-5c09ac097fc0cc9b.js +0 -1
  140. package/.next/standalone/.next/static/chunks/app/api/cli-tools/opencode-settings/route-5c09ac097fc0cc9b.js +0 -1
  141. package/.next/standalone/.next/static/chunks/app/api/keys/[id]/route-5c09ac097fc0cc9b.js +0 -1
  142. package/.next/standalone/.next/static/chunks/app/api/keys/route-5c09ac097fc0cc9b.js +0 -1
  143. package/.next/standalone/.next/static/chunks/app/api/locale/route-5c09ac097fc0cc9b.js +0 -1
  144. package/.next/standalone/.next/static/chunks/app/api/models/alias/route-5c09ac097fc0cc9b.js +0 -1
  145. package/.next/standalone/.next/static/chunks/app/api/models/route-5c09ac097fc0cc9b.js +0 -1
  146. package/.next/standalone/.next/static/chunks/app/api/providers/route-5c09ac097fc0cc9b.js +0 -1
  147. package/.next/standalone/.next/static/chunks/app/api/settings/route-5c09ac097fc0cc9b.js +0 -1
  148. package/.next/standalone/.next/static/chunks/app/api/version/route-5c09ac097fc0cc9b.js +0 -1
  149. package/.next/standalone/.next/static/chunks/app/layout-6e491caa4df42293.js +0 -1
  150. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/app-error-5c09ac097fc0cc9b.js +0 -1
  151. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/forbidden-5c09ac097fc0cc9b.js +0 -1
  152. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/not-found-5c09ac097fc0cc9b.js +0 -1
  153. package/.next/standalone/.next/static/chunks/next/dist/client/components/builtin/unauthorized-5c09ac097fc0cc9b.js +0 -1
  154. package/.next/standalone/.next/static/css/4291792acb7bd8fe.css +0 -3
  155. /package/.next/standalone/.next/static/{47Vl4XkcsFJjPtC0N_x6v → IH6-ya3VS5IgydfgTMabe}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[702],{85:(e,i,a)=>{a.d(i,{A:()=>m});var n=a(1934),o=a(9311),t=a(620);function r(e){let i=document.documentElement,a=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?a:e)?i.classList.add("dark"):i.classList.remove("dark")}let m=(0,n.v)((0,o.Zr)((e,i)=>({theme:t.B2.defaultTheme,setTheme:i=>{e({theme:i}),r(i)},toggleTheme:()=>{let a="dark"===i().theme?"light":"dark";e({theme:a}),r(a)},initTheme:()=>{r(i().theme)}}),{name:t.B2.storageKey}))},620:(e,i,a)=>{a.d(i,{fg:()=>n.fg,vQ:()=>o,zN:()=>n.zN,B2:()=>t});var n=a(2679);a(7202);let o={name:"aRouter",description:"AI Infrastructure Management",version:"0.1.16"},t={storageKey:"theme",defaultTheme:"system"}},1110:(e,i,a)=>{a.d(i,{ThemeProvider:()=>r});var n=a(5155),o=a(2115),t=a(85);function r({children:e}){let{initTheme:i}=(0,t.A)();return(0,o.useEffect)(()=>{i()},[i]),(0,n.jsx)(n.Fragment,{children:e})}},2679:(e,i,a)=>{a.d(i,{Q2:()=>m,fg:()=>o,gb:()=>r,mq:()=>t,zN:()=>n});let n={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}};function t(e){return"string"==typeof e&&e.startsWith("openai-compatible-")}function r(e){return"string"==typeof e&&e.startsWith("anthropic-compatible-")}let m={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},...n,...o};Object.values(m).reduce((e,i)=>(e[i.alias]=i.id,e),{}),Object.values(m).reduce((e,i)=>(e[i.id]=i.alias,e),{})},3006:(e,i,a)=>{a.d(i,{FE:()=>p,Tl:()=>l,wn:()=>h});var n=a(3308);let o={},t=n.Xn,r=[];function m(){if("u"<typeof document)return n.Xn;let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${n.CL}=`)),i=e?decodeURIComponent(e.split("=")[1]):n.Xn;return(0,n.QC)(i)}async function s(e){if("en"===e){o={};return}try{let i=await fetch(`/i18n/literals/${e}.json`);o=await i.json()}catch(e){console.error("Failed to load translations:",e),o={}}}function l(e){if(!e||"string"!=typeof e)return e;let i=e.trim();return i&&"en"!==t&&o[i]||e}function d(e){if(!e.nodeValue||!e.nodeValue.trim())return;let i=e.parentElement;if(!i)return;let a=i;for(;a;){if(a.hasAttribute&&a.hasAttribute("data-i18n-skip"))return;a=a.parentElement}if(["script","style","code","pre","colgroup","table","thead","tbody","tfoot","tr","select","datalist","optgroup"].includes(i.tagName?.toLowerCase()))return;e._originalText||(e._originalText=e.nodeValue);let n=l(e._originalText);n!==e.nodeValue&&(e.nodeValue=n)}function c(e){let i;if(!e)return;let a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1),n=[];for(;i=a.nextNode();)n.push(i);n.forEach(d)}async function p(){t=m(),await s(t),c(document.body),new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE?c(e):e.nodeType===Node.TEXT_NODE&&d(e)})})}).observe(document.body,{childList:!0,subtree:!0})}async function h(){t=m(),await s(t),r.forEach(e=>e()),c(document.body)}},3308:(e,i,a)=>{a.d(i,{CL:()=>t,QC:()=>r,Xn:()=>o,YZ:()=>n});let n=["en","vi","zh-CN"],o="en",t="locale";function r(e){return"zh"===e||"zh-CN"===e?"zh-CN":"en"===e?"en":"vi"===e?"vi":o}},7202:(e,i,a)=>{a.d(i,{Xg:()=>l,KC:()=>d});var n=a(4642);let o={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},t="https://api.kimi.com/coding/v1/messages",r={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,n.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,n.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,n.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,n.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecret:"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",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,n.platform)()}/${(0,n.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...o}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:t,format:"claude",headers:{...o}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...o}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...o}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"}},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3"},"kimi-coding":{baseUrl:t,format:"claude",headers:{...o},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...o}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"gemini"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"}},m={cc:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],cx:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}],gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2"},{id:"deepseek-3.1",name:"DeepSeek 3.1"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"}],cu:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],cl:[{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}],anthropic:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"}],openrouter:[{id:"auto",name:"Auto (Best Available)"}],glm:[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],deepseek:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],groq:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}],xai:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}],fireworks:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}],cerebras:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}],cohere:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}],nvidia:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],siliconflow:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}],hyperbolic:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},s={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",vertex:"vertex","vertex-partner":"vertex-partner"},l=Object.fromEntries(Object.keys(r).map(e=>[e,s[e]||e]));function d(e){return m[l[e]||e]||[]}Object.entries(a(2679).Q2).filter(([,e])=>e.passthroughModels).map(([e])=>e),Object.entries(m).flatMap(([e,i])=>i.map(i=>({provider:e,model:i.id,name:i.name})))}}]);
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[702],{85:(e,i,a)=>{a.d(i,{A:()=>m});var n=a(1934),o=a(9311),t=a(620);function r(e){let i=document.documentElement,a=window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light";"dark"===("system"===e?a:e)?i.classList.add("dark"):i.classList.remove("dark")}let m=(0,n.v)((0,o.Zr)((e,i)=>({theme:t.B2.defaultTheme,setTheme:i=>{e({theme:i}),r(i)},toggleTheme:()=>{let a="dark"===i().theme?"light":"dark";e({theme:a}),r(a)},initTheme:()=>{r(i().theme)}}),{name:t.B2.storageKey}))},620:(e,i,a)=>{a.d(i,{fg:()=>n.fg,vQ:()=>o,zN:()=>n.zN,B2:()=>t});var n=a(2679);a(7202);let o={name:"aRouter",description:"AI Infrastructure Management",version:"0.1.18"},t={storageKey:"theme",defaultTheme:"system"}},1110:(e,i,a)=>{a.d(i,{ThemeProvider:()=>r});var n=a(5155),o=a(2115),t=a(85);function r({children:e}){let{initTheme:i}=(0,t.A)();return(0,o.useEffect)(()=>{i()},[i]),(0,n.jsx)(n.Fragment,{children:e})}},2679:(e,i,a)=>{a.d(i,{Q2:()=>m,fg:()=>o,gb:()=>r,mq:()=>t,zN:()=>n});let n={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},o={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}};function t(e){return"string"==typeof e&&e.startsWith("openai-compatible-")}function r(e){return"string"==typeof e&&e.startsWith("anthropic-compatible-")}let m={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},...n,...o};Object.values(m).reduce((e,i)=>(e[i.alias]=i.id,e),{}),Object.values(m).reduce((e,i)=>(e[i.id]=i.alias,e),{})},3006:(e,i,a)=>{a.d(i,{FE:()=>p,Tl:()=>l,wn:()=>h});var n=a(3308);let o={},t=n.Xn,r=[];function m(){if("u"<typeof document)return n.Xn;let e=document.cookie.split(";").find(e=>e.trim().startsWith(`${n.CL}=`)),i=e?decodeURIComponent(e.split("=")[1]):n.Xn;return(0,n.QC)(i)}async function s(e){if("en"===e){o={};return}try{let i=await fetch(`/i18n/literals/${e}.json`);o=await i.json()}catch(e){console.error("Failed to load translations:",e),o={}}}function l(e){if(!e||"string"!=typeof e)return e;let i=e.trim();return i&&"en"!==t&&o[i]||e}function d(e){if(!e.nodeValue||!e.nodeValue.trim())return;let i=e.parentElement;if(!i)return;let a=i;for(;a;){if(a.hasAttribute&&a.hasAttribute("data-i18n-skip"))return;a=a.parentElement}if(["script","style","code","pre","colgroup","table","thead","tbody","tfoot","tr","select","datalist","optgroup"].includes(i.tagName?.toLowerCase()))return;e._originalText||(e._originalText=e.nodeValue);let n=l(e._originalText);n!==e.nodeValue&&(e.nodeValue=n)}function c(e){let i;if(!e)return;let a=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1),n=[];for(;i=a.nextNode();)n.push(i);n.forEach(d)}async function p(){t=m(),await s(t),c(document.body),new MutationObserver(e=>{e.forEach(e=>{e.addedNodes.forEach(e=>{e.nodeType===Node.ELEMENT_NODE?c(e):e.nodeType===Node.TEXT_NODE&&d(e)})})}).observe(document.body,{childList:!0,subtree:!0})}async function h(){t=m(),await s(t),r.forEach(e=>e()),c(document.body)}},3308:(e,i,a)=>{a.d(i,{CL:()=>t,QC:()=>r,Xn:()=>o,YZ:()=>n});let n=["en","vi","zh-CN"],o="en",t="locale";function r(e){return"zh"===e||"zh-CN"===e?"zh-CN":"en"===e?"en":"vi"===e?"vi":o}},7202:(e,i,a)=>{a.d(i,{Xg:()=>l,KC:()=>d});var n=a(4642);let o={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},t="https://api.kimi.com/coding/v1/messages",r={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,n.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,n.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,n.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,n.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecret:"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",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,n.platform)()}/${(0,n.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...o}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:t,format:"claude",headers:{...o}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...o}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...o}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"}},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3"},"kimi-coding":{baseUrl:t,format:"claude",headers:{...o},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...o}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"gemini"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"}},m={cc:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],cx:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}],gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2"},{id:"deepseek-3.1",name:"DeepSeek 3.1"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"}],cu:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],cl:[{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}],anthropic:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"}],openrouter:[{id:"auto",name:"Auto (Best Available)"}],glm:[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],deepseek:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],groq:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}],xai:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}],fireworks:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}],cerebras:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}],cohere:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}],nvidia:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],siliconflow:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}],hyperbolic:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},s={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",vertex:"vertex","vertex-partner":"vertex-partner"},l=Object.fromEntries(Object.keys(r).map(e=>[e,s[e]||e]));function d(e){return m[l[e]||e]||[]}Object.entries(a(2679).Q2).filter(([,e])=>e.passthroughModels).map(([e])=>e),Object.entries(m).flatMap(([e,i])=>i.map(i=>({provider:e,model:i.id,name:i.name})))}}]);
@@ -1,7 +1,7 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[46],{1872:(e,t,s)=>{Promise.resolve().then(s.bind(s,2302))},2302:(e,t,s)=>{"use strict";s.d(t,{default:()=>u});var a=s(5155),i=s(2115);let l={claude:{id:"claude",name:"Claude Code",icon:"terminal",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-6"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-6"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3-pro-high","gemini-3-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-4o-mini","claude-haiku-4.5","gpt-4o","gpt-5-mini"],defaultModels:[{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"},{id:"gpt-5-mini",name:"GPT-5 Mini",alias:"gpt-5-mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"}]},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Cline Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Kilo Code Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → Ollama"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Model",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Add the following configuration to your models array:"}],codeBlock:{language:"json",code:`{
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[46],{1872:(e,t,s)=>{Promise.resolve().then(s.bind(s,4507))},4507:(e,t,s)=>{"use strict";s.d(t,{default:()=>g});var a=s(5155),r=s(2115);let i={claude:{id:"claude",name:"Claude Code",icon:"terminal",color:"#D97757",description:"Anthropic Claude Code CLI",configType:"env",envVars:{baseUrl:"ANTHROPIC_BASE_URL",model:"ANTHROPIC_MODEL",opusModel:"ANTHROPIC_DEFAULT_OPUS_MODEL",sonnetModel:"ANTHROPIC_DEFAULT_SONNET_MODEL",haikuModel:"ANTHROPIC_DEFAULT_HAIKU_MODEL"},modelAliases:["default","sonnet","opus","haiku","opusplan"],settingsFile:"~/.claude/settings.json",defaultModels:[{id:"opus",name:"Claude Opus",alias:"opus",envKey:"ANTHROPIC_DEFAULT_OPUS_MODEL",defaultValue:"cc/claude-opus-4-6"},{id:"sonnet",name:"Claude Sonnet",alias:"sonnet",envKey:"ANTHROPIC_DEFAULT_SONNET_MODEL",defaultValue:"cc/claude-sonnet-4-6"},{id:"haiku",name:"Claude Haiku",alias:"haiku",envKey:"ANTHROPIC_DEFAULT_HAIKU_MODEL",defaultValue:"cc/claude-haiku-4-5-20251001"}]},openclaw:{id:"openclaw",name:"Open Claw",image:"/providers/openclaw.png",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI",image:"/providers/codex.png",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.png",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.png",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",modelAliases:["claude-opus-4-6-thinking","claude-sonnet-4-6","gemini-3-flash","gpt-oss-120b-medium","gemini-3-pro-high","gemini-3-pro-low"],defaultModels:[{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro Low",alias:"gemini-3.1-pro-low"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium",alias:"gpt-oss-120b-medium"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.png",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-4o-mini","claude-haiku-4.5","gpt-4o","gpt-5-mini"],defaultModels:[{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"},{id:"gpt-5-mini",name:"GPT-5 Mini",alias:"gpt-5-mini"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"}]},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.png",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.png",color:"#000000",description:"Cursor AI Code Editor",configType:"guide",requiresExternalUrl:!0,notes:[{type:"warning",text:"Requires Cursor Pro account to use this feature."},{type:"cloudCheck",text:"Cursor routes requests through its own server, so local endpoint is not supported. Please enable Tunnel or Cloud Endpoint in Settings."}],guideSteps:[{step:1,title:"Open Settings",desc:"Go to Settings → Models"},{step:2,title:"Enable OpenAI API",desc:'Enable "OpenAI API key" option'},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Add Custom Model",desc:'Click "View All Model" → "Add Custom Model"'},{step:6,title:"Select Model",type:"modelSelector"}]},cline:{id:"cline",name:"Cline",image:"/providers/cline.png",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Cline Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Kilo Code Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → OpenAI Compatible"},{step:3,title:"Base URL",value:"{{baseUrl}}/v1",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},roo:{id:"roo",name:"Roo",image:"/providers/roo.png",color:"#FF6B6B",description:"Roo AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Settings",desc:"Go to Roo Settings panel"},{step:2,title:"Select Provider",desc:"Choose API Provider → Ollama"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"API Key",type:"apiKeySelector"},{step:5,title:"Select Model",type:"modelSelector"}]},continue:{id:"continue",name:"Continue",image:"/providers/continue.png",color:"#7C3AED",description:"Continue AI Assistant",configType:"guide",guideSteps:[{step:1,title:"Open Config",desc:"Open Continue configuration file"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Select Model",type:"modelSelector"},{step:4,title:"Add Model Config",desc:"Add the following configuration to your models array:"}],codeBlock:{language:"json",code:`{
2
2
  "apiBase": "{{baseUrl}}",
3
3
  "title": "{{model}}",
4
4
  "model": "{{model}}",
5
5
  "provider": "openai",
6
6
  "apiKey": "{{apiKey}}"
7
- }`}}};var r=s(7202),n=s(2679),o=s(5497);function d({apiKeys:e,cloudEnabled:t,onStatusChange:s,onModelsLoaded:l}){let[r,n]=(0,i.useState)(null),[d,c]=(0,i.useState)(!1),[p,x]=(0,i.useState)(!1),[m,u]=(0,i.useState)(""),[g,h]=(0,i.useState)(null),[y,f]=(0,i.useState)(null),[b,v]=(0,i.useState)("http://localhost:20128/v1/chat/completions"),[j,N]=(0,i.useState)(""),[w,S]=(0,i.useState)(!1),[C,k]=(0,i.useState)(!1),[A,E]=(0,i.useState)(null),[T,P]=(0,i.useState)(!1),[I,O]=(0,i.useState)(!1),[M,_]=(0,i.useState)(null),D="u">typeof navigator&&navigator.userAgent?.includes("Windows"),R=r?.isAdmin!==!1;(0,i.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings");if(e.ok){let t=await e.json();t.endpoint&&v(t.endpoint),t.apiKey&&N(t.apiKey),S(!0)}}catch{}})()},[]),(0,i.useEffect)(()=>{L()},[]),(0,i.useEffect)(()=>{if(!r?.running)return;let e=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings?status=true");e.ok&&_(await e.json())}catch{}};e();let t=setInterval(e,5e3);return()=>clearInterval(t)},[r?.running]);let L=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();if(n(t),s?.(t),t.running)try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings");if(e.ok){let t=await e.json(),s=t.endpoint||b,a=t.apiKey||j,i=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:s,apiKey:a})}),r=await i.json();r.models?.length>0&&(l?.(r.models),E(r))}}catch{}}}catch{n({running:!1,certExists:!1,dnsStatus:{}})}},F=async()=>{O(!0);try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})});if(e.ok)S(!0),h({type:"success",text:"Configuration saved"});else{let t=await e.json();h({type:"error",text:t.error||"Failed to save"})}}catch(e){h({type:"error",text:e.message})}finally{O(!1)}},K=async()=>{P(!0),E(null);try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})}),t=await e.json();E(t),t.models?.length>0&&l?.(t.models)}catch(e){E({success:!1,reachable:!1,message:e.message})}finally{P(!1)}},$=e=>{D||r?.hasCachedPassword?H(e,""):(f(e),x(!0),h(null))},H=async(e,t)=>{c(!0),h(null);try{if("trust-cert"===e){let e=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trust-cert",sudoPassword:t})}),s=await e.json();e.ok?h({type:"success",text:"Certificate trusted successfully"}):h({type:"error",text:s.error||"Failed to trust certificate"})}else if("start"===e){E(null),_(null),await F(),h({type:"info",text:"Validating endpoint..."});let e=0;try{let t=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})}),s=await t.json();if(!t.ok||!s.reachable||!s.models||0===s.models.length){h({type:"error",text:`Endpoint invalid: ${s.message||s.error||"cannot load models"}`}),c(!1),await L();return}e=s.models.length,l&&l(s.models),E(s)}catch(e){h({type:"error",text:`Endpoint invalid: ${e.message}`}),c(!1),await L();return}let s=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:j||"sk_default",sudoPassword:t})}),a=await s.json();s.ok?h({type:"success",text:`Server started (${e} models loaded)`}):h({type:"error",text:a.error||"Failed to start server"})}else{let e=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:t})}),s=await e.json();console.log("STOP SERVER REPONSE:",e.status,s),e.ok?h({type:"success",text:"Server stopped — all DNS cleared"}):h({type:"error",text:s.error||"Failed to stop server"})}x(!1),u(""),await L()}catch(e){h({type:"error",text:e.message})}finally{c(!1),f(null)}},U=()=>{m.trim()?H(y,m):h({type:"error",text:"Sudo password is required"})},z=r?.running;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.Zp,{padding:"sm",className:"border-primary/20 bg-primary/5",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"security"}),(0,a.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"MITM Server"}),z?(0,a.jsx)(o.Ex,{variant:"success",size:"sm",children:"Running"}):(0,a.jsx)(o.Ex,{variant:"error",size:"sm",children:"Stopped"})]}),(0,a.jsx)("div",{className:"flex items-center gap-1 text-xs text-text-muted","data-i18n-skip":"true",children:[{label:"Cert",ok:r?.certExists},{label:"Trusted",ok:r?.certTrusted},{label:"Server",ok:z}].map(({label:e,ok:t})=>(0,a.jsxs)("span",{className:`flex items-center gap-0.5 px-1.5 py-0.5 rounded ${t?"text-green-600":"text-text-muted"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:t?"check_circle":"cancel"}),e]},e))})]}),(0,a.jsxs)("div",{className:"px-2 py-2 rounded-lg bg-surface/50 border border-border/50 flex flex-col gap-2",children:[(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"Purpose:"})," Use Antigravity IDE & GitHub Copilot → with ANY provider/model from Router"]}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"How it works:"})," IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → Router endpoint → response back to IDE"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 px-2 py-2 rounded-lg bg-surface/30 border border-border/30",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-medium text-text-main uppercase tracking-wider",children:"Router Configuration"}),M&&null!==M.ok&&(0,a.jsxs)("div",{className:`flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium ${M.ok?"bg-green-500/15 text-green-600":"bg-red-500/15 text-red-500"}`,children:[(0,a.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${M.ok?"bg-green-500":"bg-red-500"}`}),M.ok?"Valid":"Invalid"]})]}),M&&!1===M.ok&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-[11px] bg-red-500/10 text-red-500 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{className:"break-all",children:M.detail})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("label",{className:"text-[11px] text-text-muted",children:"Endpoint URL"}),(0,a.jsx)("input",{type:"text",value:b,onChange:e=>{v(e.target.value),S(!1),E(null)},placeholder:"http://localhost:20128/v1/chat/completions",disabled:z,className:`w-full px-2.5 py-1.5 bg-surface rounded-md text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 text-text-main placeholder-text-muted/50 ${z?"opacity-50 cursor-not-allowed":""}`})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("label",{className:"text-[11px] text-text-muted",children:"API Key"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{type:C?"text":"password",value:j,onChange:e=>{N(e.target.value),S(!1),E(null)},placeholder:"Enter API key",disabled:z,className:`w-full px-2.5 py-1.5 pr-8 bg-surface rounded-md text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 text-text-main placeholder-text-muted/50 ${z?"opacity-50 cursor-not-allowed":""}`}),(0,a.jsx)("button",{type:"button",onClick:()=>k(e=>!e),className:"absolute right-1.5 top-1/2 -translate-y-1/2 flex items-center justify-center w-5 h-5 rounded text-text-muted hover:text-text-main transition-colors",title:C?"Hide API Key":"Show API Key",children:(0,a.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:"18px"},children:C?"visibility":"visibility_off"})})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,a.jsxs)("button",{onClick:K,disabled:T||!b||z,className:"px-3 py-1 rounded-md bg-blue-500/10 border border-blue-500/30 text-blue-500 font-medium text-[11px] flex items-center gap-1 hover:bg-blue-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T?"hourglass_empty":"sync"}),T?"Loading...":"Load Models"]}),(0,a.jsxs)("button",{onClick:F,disabled:I||w||!b||z,className:"px-3 py-1 rounded-md bg-green-500/10 border border-green-500/30 text-green-600 font-medium text-[11px] flex items-center gap-1 hover:bg-green-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"save"}),I?"Saving...":w?"Saved ✓":"Save"]})]}),A&&(0,a.jsxs)("div",{className:`flex flex-col gap-1.5 px-2 py-1.5 rounded text-[11px] ${A.reachable?A.status>=200&&A.status<300?"bg-green-500/10 text-green-600":"bg-yellow-500/10 text-yellow-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:A.reachable?A.status>=200&&A.status<300?"check_circle":"warning":"error"}),(0,a.jsx)("span",{children:A.message})]}),A.models?.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1 max-h-[120px] overflow-y-auto",children:A.models.map(e=>(0,a.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-green-500/15 text-green-700 text-[10px] font-mono",children:e},e))})]})]}),g&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===g.type?"bg-green-500/10 text-green-600":"info"===g.type?"bg-amber-500/10 text-amber-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===g.type?"check_circle":"info"===g.type?"hourglass_top":"error"}),(0,a.jsx)("span",{children:g.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap","data-i18n-skip":"true",children:[r?.certExists&&!r?.certTrusted&&(0,a.jsxs)("button",{onClick:()=>$("trust-cert"),disabled:d,className:"px-4 py-1.5 rounded-lg bg-yellow-500/10 border border-yellow-500/30 text-yellow-600 font-medium text-xs flex items-center gap-1.5 hover:bg-yellow-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"verified_user"}),"Trust Cert"]}),z?(0,a.jsxs)("button",{onClick:()=>$("stop"),disabled:d,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop Server"]}):(0,a.jsxs)("button",{onClick:()=>$("start"),disabled:d||!b||D&&!R,className:"px-4 py-1.5 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-xs flex items-center gap-1.5 hover:bg-primary/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start Server"]}),z&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Enable DNS per tool below to activate interception"})]}),D&&!R&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"shield_lock"}),(0,a.jsx)("span",{children:"Administrator required — restart as Administrator to use MITM"})]})]})}),p&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and server startup"})]}),(0,a.jsx)(o.pd,{type:"password",placeholder:"Enter sudo password",value:m,onChange:e=>u(e.target.value),onKeyDown:e=>{"Enter"!==e.key||d||U()}}),g&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:g.text})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(o.$n,{variant:"ghost",size:"sm",onClick:()=>{x(!1),u(""),h(null)},disabled:d,children:"Cancel"}),(0,a.jsx)(o.$n,{variant:"primary",size:"sm",onClick:U,loading:d,children:"Confirm"})]})]})})]})}var c=s(5772);function p({tool:e,isExpanded:t,onToggle:s,serverRunning:l,dnsActive:r,hasCachedPassword:n,apiKeys:d,activeProviders:p,hasActiveProviders:x,modelAliases:m={},cloudEnabled:u,loadedModels:g=[],onDnsChange:h}){let[y,f]=(0,i.useState)(!1),[b,v]=(0,i.useState)(null),[j,N]=(0,i.useState)(!1),[w,S]=(0,i.useState)(""),[C,k]=(0,i.useState)(null),[A,E]=(0,i.useState)({}),[T,P]=(0,i.useState)(null),[I,O]=(0,i.useState)({top:0,right:0}),[M,_]=(0,i.useState)(""),D="u">typeof navigator&&navigator.userAgent?.includes("Windows");(0,i.useEffect)(()=>{t&&R()},[t]),(0,i.useEffect)(()=>{if(!T)return;let e=e=>{e.target.closest("[data-model-dropdown]")||P(null)};return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[T]);let R=async()=>{try{let t=await fetch(`/api/cli-tools/antigravity-mitm/alias?tool=${e.id}`);if(t.ok){let e=await t.json();Object.keys(e.aliases||{}).length>0&&E(e.aliases)}}catch{}},L=(0,i.useCallback)(async t=>{try{await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,mappings:t})})}catch{}},[e.id]),F=(e,t)=>{E(s=>({...s,[e]:t}))},K=()=>{if(!l)return;let e=r?"disable":"enable";D||n?$(e,""):(k(e),N(!0),v(null))},$=async(t,s)=>{f(!0),v(null);try{let a=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,action:t,sudoPassword:s})}),i=await a.json();if(!a.ok)throw Error(i.error||"Failed to toggle DNS");"enable"===t?v({type:"success",text:"DNS enabled successfully.",warning:`Please restart ${e.name} to apply changes.`}):v({type:"success",text:"DNS disabled — traffic restored"}),N(!1),S(""),h?.(i)}catch(e){v({type:"error",text:e.message})}finally{f(!1),k(null)}},H=()=>{w.trim()?$(C,w):v({type:"error",text:"Sudo password is required"})};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(o.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(c.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),l?r?(0,a.jsx)(o.Ex,{variant:"success",size:"sm",children:"Active"}):(0,a.jsx)(o.Ex,{variant:"warning",size:"sm",children:"DNS off"}):(0,a.jsx)(o.Ex,{variant:"error",size:"sm",children:"Server off"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Intercept ",e.name," requests via MITM proxy"]})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform ${t?"rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted px-1",children:[(0,a.jsxs)("p",{children:["Toggle DNS to redirect ",e.name," traffic through Router via MITM."]}),!r&&(0,a.jsx)("p",{className:"text-amber-600 text-[10px] mt-1",children:"⚠️ Enable DNS to edit model mappings"})]}),b&&(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===b.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===b.type?"check_circle":"error"}),(0,a.jsx)("span",{children:b.text})]}),b.warning&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-amber-500/10 text-amber-600 border border-amber-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,a.jsx)("span",{className:"font-medium",children:b.warning})]})]}),e.defaultModels?.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-2",children:e.defaultModels.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 relative",children:[(0,a.jsx)("span",{className:"w-36 shrink-0 text-xs font-semibold text-text-main text-right",children:e.name}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:A[e.alias]||"",onChange:t=>F(e.alias,t.target.value),onBlur:t=>{var s,a;return s=e.alias,a=t.target.value,void L({...A,[s]:a})},placeholder:"provider/model-id",disabled:!r,className:`flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 ${!r?"opacity-50 cursor-not-allowed":""}`}),(0,a.jsx)("div",{className:"relative","data-model-dropdown":!0,children:(0,a.jsx)("button",{ref:t=>{t&&(t._alias=e.alias)},onClick:t=>{if(T===e.alias)P(null);else{_("");let s=t.currentTarget.getBoundingClientRect(),a=Math.min(32*g.length,280);O({top:window.innerHeight-s.bottom<a+8?Math.max(8,s.top-a-4):s.bottom+4,right:window.innerWidth-s.right}),P(e.alias)}},disabled:!r||0===g.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 ${r&&g.length>0?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,title:0===g.length?"Load Models first (from server card above)":"Select model",children:"Select"})}),A[e.alias]&&(0,a.jsx)("button",{onClick:()=>{F(e.alias,""),L({...A,[e.alias]:""})},className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias))}),e.defaultModels?.length===0&&(0,a.jsx)("p",{className:"text-xs text-text-muted px-1",children:"Model mappings will be available soon."}),(0,a.jsx)("div",{children:r?(0,a.jsxs)("button",{onClick:K,disabled:!l||y,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop DNS"]}):(0,a.jsxs)(o.$n,{variant:"primary",size:"sm",onClick:K,loading:y,disabled:!l||y,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"play_circle"}),"Start DNS"]})})]})]}),T&&g.length>0&&(0,a.jsxs)("div",{"data-model-dropdown":!0,className:"fixed z-[999] bg-surface border border-border rounded-lg shadow-xl max-h-[280px] w-[340px] overflow-hidden flex flex-col",style:{top:I.top,right:I.right},children:[(0,a.jsx)("div",{className:"sticky top-0 p-1.5 border-b border-border bg-surface",children:(0,a.jsx)("input",{type:"text",value:M,onChange:e=>_(e.target.value),placeholder:"Search models...",className:"w-full px-2 py-1 bg-background rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50",autoFocus:!0})}),(0,a.jsx)("div",{className:"overflow-y-auto flex-1",children:g.filter(e=>!M||e.toLowerCase().includes(M.toLowerCase())).map(e=>(0,a.jsx)("button",{onClick:()=>{let t;E(t={...A,[T]:e}),L(t),P(null)},className:`w-full text-left px-3 py-2 text-xs font-mono hover:bg-primary/10 transition-colors border-b border-border/30 last:border-0 ${A[T]===e?"bg-primary/15 text-primary font-semibold":"text-text-main"}`,children:e},e))})]}),j&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required to modify /etc/hosts and flush DNS cache"})]}),(0,a.jsx)(o.pd,{type:"password",placeholder:"Enter sudo password",value:w,onChange:e=>S(e.target.value),onKeyDown:e=>{"Enter"!==e.key||y||H()}}),b&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:b.text})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(o.$n,{variant:"ghost",size:"sm",onClick:()=>{N(!1),S(""),v(null)},disabled:y,children:"Cancel"}),(0,a.jsx)(o.$n,{variant:"primary",size:"sm",onClick:H,loading:y,children:"Confirm"})]})]})})]})}function x(){let[e,t]=(0,i.useState)([]),[s,l]=(0,i.useState)(!0),[r,n]=(0,i.useState)("mitm"),[o,d]=(0,i.useState)(!0),[c,p]=(0,i.useState)(!1),[x,m]=(0,i.useState)(0),u=(0,i.useRef)(null),g=(0,i.useRef)(null),h=(0,i.useRef)(null),y=(0,i.useCallback)(()=>{h.current&&(h.current.close(),h.current=null),p(!1),t([]),m(e=>e+1)},[]);return(0,i.useEffect)(()=>{if(!o){h.current&&(h.current.close(),h.current=null),p(!1);return}let e=new EventSource(`/api/cli-tools/antigravity-mitm/console-logs?stream=true&filter=${r}`);return h.current=e,e.onopen=()=>p(!0),e.onmessage=e=>{try{let s=JSON.parse(e.data);s.clear?t([]):s.line&&t(e=>{let t=[...e,s.line];return t.length>500?t.slice(-500):t})}catch{}},e.onerror=()=>{e.close(),h.current=null,p(!1)},()=>{e.close(),h.current=null,p(!1)}},[o,r,x]),(0,i.useEffect)(()=>{s&&u.current&&u.current.scrollIntoView({behavior:"smooth"})},[e,s]),(0,a.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between pb-2",children:[(0,a.jsxs)("div",{className:"text-sm font-semibold flex items-center gap-2 cursor-pointer select-none",onClick:()=>d(!o),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"terminal"}),"Console Logs",(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] transition-transform ${o?"rotate-180":""}`,children:"expand_more"})]}),o&&(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsxs)("select",{value:r,onChange:e=>{n(e.target.value),t([])},className:"px-1.5 py-0.5 rounded border border-border bg-surface text-[10px] cursor-pointer",children:[(0,a.jsx)("option",{value:"mitm",children:"MITM Only"}),(0,a.jsx)("option",{value:"all",children:"All Logs"})]}),(0,a.jsx)("button",{onClick:()=>{l(!s),!s&&u.current&&u.current.scrollIntoView({behavior:"smooth"})},className:`p-0.5 rounded transition-colors ${s?"text-primary":"text-muted hover:text-foreground"}`,title:s?"Auto-scroll ON":"Auto-scroll OFF",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:s?"vertical_align_bottom":"pause"})}),(0,a.jsx)("button",{onClick:()=>t([]),className:"p-0.5 rounded text-muted hover:text-foreground transition-colors",title:"Clear logs",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete_sweep"})})]})]}),o&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{ref:g,onScroll:()=>{if(!g.current)return;let{scrollTop:e,scrollHeight:t,clientHeight:s}=g.current;l(t-e-s<40)},className:"bg-zinc-950 rounded-lg p-3 font-mono text-[11px] leading-[1.6] overflow-auto border border-zinc-800",style:{maxHeight:"280px",minHeight:"120px"},children:[0===e.length?(0,a.jsx)("div",{className:"text-zinc-600 italic text-center py-4",children:c?"Waiting for logs...":"Disconnected — click Reconnect below"}):e.map((e,t)=>(0,a.jsx)("div",{className:`whitespace-pre-wrap break-all ${e.includes("❌")||e.includes("[ERROR]")||e.includes("error")?"text-red-400":e.includes("⚡")||e.includes("intercept")?"text-emerald-400":e.includes("⏩")||e.includes("passthrough")?"text-amber-400":e.includes("\uD83D\uDE80")||e.includes("✅")?"text-green-400":e.includes("\uD83D\uDD10")?"text-blue-400":e.includes("\uD83C\uDF10")?"text-cyan-400":e.includes("\uD83D\uDD0D")?"text-purple-400":e.includes("⏹")?"text-orange-400":e.includes("WARNING")||e.includes("warn")?"text-yellow-400":"text-zinc-300"}`,children:e},t)),(0,a.jsx)("div",{ref:u})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-1.5",children:[(0,a.jsxs)("span",{className:"text-[10px] text-muted",children:[e.length," lines"]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[!c&&(0,a.jsx)("button",{onClick:y,className:"flex items-center justify-center rounded p-2 text-primary hover:bg-primary/20 transition-colors",title:"Reconnect to console logs",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",style:{fontSize:"18px"},children:"sync"})}),(0,a.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${c?"bg-green-500 animate-pulse":"bg-red-500"}`}),(0,a.jsx)("span",{className:`text-[10px] ${c?"text-muted":"text-red-400"}`,children:c?"Connected":"Disconnected"})]})]})]})]})}let m=["antigravity","copilot"];function u(){let[e,t]=(0,i.useState)([]),[s,o]=(0,i.useState)([]),[c,u]=(0,i.useState)({}),[g,h]=(0,i.useState)(!1),[y,f]=(0,i.useState)(null),[b,v]=(0,i.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1}),[j,N]=(0,i.useState)([]);(0,i.useEffect)(()=>{w(),S(),C(),k()},[]);let w=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let s=await e.json();t(s.connections||[])}}catch{}},S=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();o(t.keys||[])}}catch{}},C=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();u(t.aliases||{})}}catch{}},k=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();h(t.cloudEnabled||!1)}}catch{}},A=()=>e.filter(e=>!1!==e.isActive),E=Object.entries(l).filter(([e])=>m.includes(e));return(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,a.jsx)("div",{children:(0,a.jsx)(d,{apiKeys:s,cloudEnabled:g,onStatusChange:v,onModelsLoaded:N})}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[E.map(([e,t])=>(0,a.jsx)(p,{tool:t,isExpanded:y===e,onToggle:()=>f(y===e?null:e),serverRunning:b.running,dnsActive:b.dnsStatus?.[e]||!1,hasCachedPassword:b.hasCachedPassword||!1,apiKeys:s,activeProviders:A(),hasActiveProviders:A().some(e=>(0,r.KC)(e.provider).length>0||(0,n.mq)(e.provider)||(0,n.gb)(e.provider)),modelAliases:c,cloudEnabled:g,loadedModels:j,onDnsChange:e=>v(t=>({...t,dnsStatus:e.dnsStatus??t.dnsStatus}))},e)),(0,a.jsx)(x,{})]})]})}}},e=>{e.O(0,[852,702,497,441,794,358],()=>e(e.s=1872)),_N_E=e.O()}]);
7
+ }`}}};var l=s(7202),n=s(2679),o=s(5497);function d({apiKeys:e,cloudEnabled:t,onStatusChange:s,onModelsLoaded:i}){let[l,n]=(0,r.useState)(null),[d,c]=(0,r.useState)(!1),[x,p]=(0,r.useState)(!1),[m,u]=(0,r.useState)(""),[g,h]=(0,r.useState)(null),[f,y]=(0,r.useState)(null),[b,v]=(0,r.useState)("http://localhost:20128/v1/chat/completions"),[j,N]=(0,r.useState)(""),[w,S]=(0,r.useState)(!1),[C,k]=(0,r.useState)(!1),[A,E]=(0,r.useState)(null),[T,P]=(0,r.useState)(!1),[I,O]=(0,r.useState)(!1),[M,_]=(0,r.useState)(null),D="u">typeof navigator&&navigator.userAgent?.includes("Windows"),R=l?.isAdmin!==!1;(0,r.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings");if(e.ok){let t=await e.json();t.endpoint&&v(t.endpoint),t.apiKey&&N(t.apiKey),S(!0)}}catch{}})()},[]),(0,r.useEffect)(()=>{$()},[]),(0,r.useEffect)(()=>{if(!l?.running)return;let e=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings?status=true");e.ok&&_(await e.json())}catch{}};e();let t=setInterval(e,5e3);return()=>clearInterval(t)},[l?.running]);let $=async()=>{try{let e=await fetch("/api/cli-tools/antigravity-mitm");if(e.ok){let t=await e.json();if(n(t),s?.(t),t.running)try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings");if(e.ok){let t=await e.json(),s=t.endpoint||b,a=t.apiKey||j,r=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:s,apiKey:a})}),l=await r.json();l.models?.length>0&&(i?.(l.models),E(l))}}catch{}}}catch{n({running:!1,certExists:!1,dnsStatus:{}})}},L=async()=>{O(!0);try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})});if(e.ok)S(!0),h({type:"success",text:"Configuration saved"});else{let t=await e.json();h({type:"error",text:t.error||"Failed to save"})}}catch(e){h({type:"error",text:e.message})}finally{O(!1)}},F=async()=>{P(!0),E(null);try{let e=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})}),t=await e.json();E(t),t.models?.length>0&&i?.(t.models)}catch(e){E({success:!1,reachable:!1,message:e.message})}finally{P(!1)}},K=e=>{D||l?.hasCachedPassword?q(e,""):(y(e),p(!0),h(null))},q=async(e,t)=>{c(!0),h(null);try{if("trust-cert"===e){let e=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"trust-cert",sudoPassword:t})}),s=await e.json();e.ok?h({type:"success",text:"Certificate trusted successfully"}):h({type:"error",text:s.error||"Failed to trust certificate"})}else if("start"===e){E(null),_(null),await L(),h({type:"info",text:"Validating endpoint..."});let e=0;try{let t=await fetch("/api/cli-tools/antigravity-mitm/settings",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({endpoint:b,apiKey:j})}),s=await t.json();if(!t.ok||!s.reachable||!s.models||0===s.models.length){h({type:"error",text:`Endpoint invalid: ${s.message||s.error||"cannot load models"}`}),c(!1),await $();return}e=s.models.length,i&&i(s.models),E(s)}catch(e){h({type:"error",text:`Endpoint invalid: ${e.message}`}),c(!1),await $();return}let s=await fetch("/api/cli-tools/antigravity-mitm",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({apiKey:j||"sk_default",sudoPassword:t})}),a=await s.json();s.ok?h({type:"success",text:`Server started (${e} models loaded)`}):h({type:"error",text:a.error||"Failed to start server"})}else{let e=await fetch("/api/cli-tools/antigravity-mitm",{method:"DELETE",headers:{"Content-Type":"application/json"},body:JSON.stringify({sudoPassword:t})}),s=await e.json();console.log("STOP SERVER REPONSE:",e.status,s),e.ok?h({type:"success",text:"Server stopped — all DNS cleared"}):h({type:"error",text:s.error||"Failed to stop server"})}p(!1),u(""),await $()}catch(e){h({type:"error",text:e.message})}finally{c(!1),y(null)}},U=()=>{m.trim()?q(f,m):h({type:"error",text:"Sudo password is required"})},z=l?.running;return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.Zp,{padding:"sm",className:"border-primary/20 bg-primary/5",children:(0,a.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-primary text-[20px]",children:"security"}),(0,a.jsx)("span",{className:"font-semibold text-sm text-text-main",children:"MITM Server"}),z?(0,a.jsx)(o.Ex,{variant:"success",size:"sm",children:"Running"}):(0,a.jsx)(o.Ex,{variant:"error",size:"sm",children:"Stopped"})]}),(0,a.jsx)("div",{className:"flex items-center gap-1 text-xs text-text-muted","data-i18n-skip":"true",children:[{label:"Cert",ok:l?.certExists},{label:"Trusted",ok:l?.certTrusted},{label:"Server",ok:z}].map(({label:e,ok:t})=>(0,a.jsxs)("span",{className:`flex items-center gap-0.5 px-1.5 py-0.5 rounded ${t?"text-green-600":"text-text-muted"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:t?"check_circle":"cancel"}),e]},e))})]}),(0,a.jsxs)("div",{className:"px-2 py-2 rounded-lg bg-surface/50 border border-border/50 flex flex-col gap-2",children:[(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"Purpose:"})," Use Antigravity IDE & GitHub Copilot → with ANY provider/model from Router"]}),(0,a.jsxs)("p",{className:"text-[11px] text-text-muted leading-relaxed",children:[(0,a.jsx)("span",{className:"font-medium text-text-main",children:"How it works:"})," IDE request → DNS redirect to localhost:443 → MITM proxy intercepts → Router endpoint → response back to IDE"]})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-2 px-2 py-2 rounded-lg bg-surface/30 border border-border/30",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("p",{className:"text-[11px] font-medium text-text-main uppercase tracking-wider",children:"Router Configuration"}),M&&null!==M.ok&&(0,a.jsxs)("div",{className:`flex items-center gap-1 px-2 py-0.5 rounded-full text-[10px] font-medium ${M.ok?"bg-green-500/15 text-green-600":"bg-red-500/15 text-red-500"}`,children:[(0,a.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${M.ok?"bg-green-500":"bg-red-500"}`}),M.ok?"Valid":"Invalid"]})]}),M&&!1===M.ok&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-[11px] bg-red-500/10 text-red-500 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{className:"break-all",children:M.detail})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("label",{className:"text-[11px] text-text-muted",children:"Endpoint URL"}),(0,a.jsx)("input",{type:"text",value:b,onChange:e=>{v(e.target.value),S(!1),E(null)},placeholder:"http://localhost:20128/v1/chat/completions",disabled:z,className:`w-full px-2.5 py-1.5 bg-surface rounded-md text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 text-text-main placeholder-text-muted/50 ${z?"opacity-50 cursor-not-allowed":""}`})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,a.jsx)("label",{className:"text-[11px] text-text-muted",children:"API Key"}),(0,a.jsxs)("div",{className:"relative",children:[(0,a.jsx)("input",{type:C?"text":"password",value:j,onChange:e=>{N(e.target.value),S(!1),E(null)},placeholder:"Enter API key",disabled:z,className:`w-full px-2.5 py-1.5 pr-8 bg-surface rounded-md text-xs border border-border focus:outline-none focus:ring-1 focus:ring-primary/50 text-text-main placeholder-text-muted/50 ${z?"opacity-50 cursor-not-allowed":""}`}),(0,a.jsx)("button",{type:"button",onClick:()=>k(e=>!e),className:"absolute right-1.5 top-1/2 -translate-y-1/2 flex items-center justify-center w-5 h-5 rounded text-text-muted hover:text-text-main transition-colors",title:C?"Hide API Key":"Show API Key",children:(0,a.jsx)("span",{className:"material-symbols-outlined",style:{fontSize:"18px"},children:C?"visibility":"visibility_off"})})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 mt-1",children:[(0,a.jsxs)("button",{onClick:F,disabled:T||!b||z,className:"px-3 py-1 rounded-md bg-blue-500/10 border border-blue-500/30 text-blue-500 font-medium text-[11px] flex items-center gap-1 hover:bg-blue-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:T?"hourglass_empty":"sync"}),T?"Loading...":"Load Models"]}),(0,a.jsxs)("button",{onClick:L,disabled:I||w||!b||z,className:"px-3 py-1 rounded-md bg-green-500/10 border border-green-500/30 text-green-600 font-medium text-[11px] flex items-center gap-1 hover:bg-green-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"save"}),I?"Saving...":w?"Saved ✓":"Save"]})]}),A&&(0,a.jsxs)("div",{className:`flex flex-col gap-1.5 px-2 py-1.5 rounded text-[11px] ${A.reachable?A.status>=200&&A.status<300?"bg-green-500/10 text-green-600":"bg-yellow-500/10 text-yellow-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:A.reachable?A.status>=200&&A.status<300?"check_circle":"warning":"error"}),(0,a.jsx)("span",{children:A.message})]}),A.models?.length>0&&(0,a.jsx)("div",{className:"flex flex-wrap gap-1 mt-1 max-h-[120px] overflow-y-auto",children:A.models.map(e=>(0,a.jsx)("span",{className:"px-1.5 py-0.5 rounded bg-green-500/15 text-green-700 text-[10px] font-mono",children:e},e))})]})]}),g&&(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===g.type?"bg-green-500/10 text-green-600":"info"===g.type?"bg-amber-500/10 text-amber-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===g.type?"check_circle":"info"===g.type?"hourglass_top":"error"}),(0,a.jsx)("span",{children:g.text})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2 flex-wrap","data-i18n-skip":"true",children:[l?.certExists&&!l?.certTrusted&&(0,a.jsxs)("button",{onClick:()=>K("trust-cert"),disabled:d,className:"px-4 py-1.5 rounded-lg bg-yellow-500/10 border border-yellow-500/30 text-yellow-600 font-medium text-xs flex items-center gap-1.5 hover:bg-yellow-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"verified_user"}),"Trust Cert"]}),z?(0,a.jsxs)("button",{onClick:()=>K("stop"),disabled:d,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop Server"]}):(0,a.jsxs)("button",{onClick:()=>K("start"),disabled:d||!b||D&&!R,className:"px-4 py-1.5 rounded-lg bg-primary/10 border border-primary/30 text-primary font-medium text-xs flex items-center gap-1.5 hover:bg-primary/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"play_circle"}),"Start Server"]}),z&&(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Enable DNS per tool below to activate interception"})]}),D&&!R&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"shield_lock"}),(0,a.jsx)("span",{children:"Administrator required — restart as Administrator to use MITM"})]})]})}),x&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required for SSL certificate and server startup"})]}),(0,a.jsx)(o.pd,{type:"password",placeholder:"Enter sudo password",value:m,onChange:e=>u(e.target.value),onKeyDown:e=>{"Enter"!==e.key||d||U()}}),g&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:g.text})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(o.$n,{variant:"ghost",size:"sm",onClick:()=>{p(!1),u(""),h(null)},disabled:d,children:"Cancel"}),(0,a.jsx)(o.$n,{variant:"primary",size:"sm",onClick:U,loading:d,children:"Confirm"})]})]})})]})}var c=s(5772);function x({tool:e,isExpanded:t,onToggle:s,serverRunning:i,dnsActive:l,hasCachedPassword:n,apiKeys:d,activeProviders:x,hasActiveProviders:p,modelAliases:m={},cloudEnabled:u,loadedModels:g=[],onDnsChange:h}){let[f,y]=(0,r.useState)(!1),[b,v]=(0,r.useState)(null),[j,N]=(0,r.useState)(!1),[w,S]=(0,r.useState)(""),[C,k]=(0,r.useState)(null),[A,E]=(0,r.useState)({}),[T,P]=(0,r.useState)(null),[I,O]=(0,r.useState)({top:0,right:0}),[M,_]=(0,r.useState)(""),D="u">typeof navigator&&navigator.userAgent?.includes("Windows");(0,r.useEffect)(()=>{t&&R()},[t]),(0,r.useEffect)(()=>{if(!T)return;let e=e=>{e.target.closest("[data-model-dropdown]")||P(null)};return document.addEventListener("click",e),()=>document.removeEventListener("click",e)},[T]);let R=async()=>{try{let t=await fetch(`/api/cli-tools/antigravity-mitm/alias?tool=${e.id}`);if(t.ok){let e=await t.json();Object.keys(e.aliases||{}).length>0&&E(e.aliases)}}catch{}},$=(0,r.useCallback)(async t=>{try{await fetch("/api/cli-tools/antigravity-mitm/alias",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,mappings:t})})}catch{}},[e.id]),L=(e,t)=>{E(s=>({...s,[e]:t}))},F=()=>{if(!i)return;let e=l?"disable":"enable";D||n?K(e,""):(k(e),N(!0),v(null))},K=async(t,s)=>{y(!0),v(null);try{let a=await fetch("/api/cli-tools/antigravity-mitm",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({tool:e.id,action:t,sudoPassword:s})}),r=await a.json();if(!a.ok)throw Error(r.error||"Failed to toggle DNS");"enable"===t?v({type:"success",text:"DNS enabled successfully.",warning:`Please restart ${e.name} to apply changes.`}):v({type:"success",text:"DNS disabled — traffic restored"}),N(!1),S(""),h?.(r)}catch(e){v({type:"error",text:e.message})}finally{y(!1),k(null)}},q=()=>{w.trim()?K(C,w):v({type:"error",text:"Sudo password is required"})};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(o.Zp,{padding:"xs",className:"overflow-hidden",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between hover:cursor-pointer",onClick:s,children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0",children:(0,a.jsx)(c.default,{src:e.image,alt:e.name,width:32,height:32,className:"size-8 object-contain rounded-lg",sizes:"32px",onError:e=>{e.target.style.display="none"}})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:e.name}),i?l?(0,a.jsx)(o.Ex,{variant:"success",size:"sm",children:"Active"}):(0,a.jsx)(o.Ex,{variant:"warning",size:"sm",children:"DNS off"}):(0,a.jsx)(o.Ex,{variant:"error",size:"sm",children:"Server off"})]}),(0,a.jsxs)("p",{className:"text-xs text-text-muted",children:["Intercept ",e.name," requests via MITM proxy"]})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform${t?" rotate-180":""}`,children:"expand_more"})]}),t&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex flex-col gap-0.5 text-[11px] text-text-muted px-1",children:[(0,a.jsxs)("p",{children:["Toggle DNS to redirect ",e.name," traffic through Router via MITM."]}),!l&&(0,a.jsx)("p",{className:"text-amber-600 text-[10px] mt-1",children:"⚠️ Enable DNS to edit model mappings"})]}),b&&(0,a.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,a.jsxs)("div",{className:`flex items-center gap-2 px-2 py-1.5 rounded text-xs ${"success"===b.type?"bg-green-500/10 text-green-600":"bg-red-500/10 text-red-600"}`,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"success"===b.type?"check_circle":"error"}),(0,a.jsx)("span",{children:b.text})]}),b.warning&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-amber-500/10 text-amber-600 border border-amber-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"warning"}),(0,a.jsx)("span",{className:"font-medium",children:b.warning})]})]}),e.defaultModels?.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-2",children:e.defaultModels.map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 relative",children:[(0,a.jsx)("span",{className:"w-36 shrink-0 text-xs font-semibold text-text-main text-right",children:e.name}),(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-[14px]",children:"arrow_forward"}),(0,a.jsx)("input",{type:"text",value:A[e.alias]||"",onChange:t=>L(e.alias,t.target.value),onBlur:t=>{var s,a;return s=e.alias,a=t.target.value,void $({...A,[s]:a})},placeholder:"provider/model-id",disabled:!l,className:`flex-1 px-2 py-1.5 bg-surface rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50 ${!l?"opacity-50 cursor-not-allowed":""}`}),(0,a.jsx)("div",{className:"relative","data-model-dropdown":!0,children:(0,a.jsx)("button",{ref:t=>{t&&(t._alias=e.alias)},onClick:t=>{if(T===e.alias)P(null);else{_("");let s=t.currentTarget.getBoundingClientRect(),a=Math.min(32*g.length,280);O({top:window.innerHeight-s.bottom<a+8?Math.max(8,s.top-a-4):s.bottom+4,right:window.innerWidth-s.right}),P(e.alias)}},disabled:!l||0===g.length,className:`px-2 py-1.5 rounded border text-xs transition-colors shrink-0 ${l&&g.length>0?"bg-surface border-border hover:border-primary cursor-pointer":"opacity-50 cursor-not-allowed border-border"}`,title:0===g.length?"Load Models first (from server card above)":"Select model",children:"Select"})}),A[e.alias]&&(0,a.jsx)("button",{onClick:()=>{L(e.alias,""),$({...A,[e.alias]:""})},className:"p-1 text-text-muted hover:text-red-500 rounded transition-colors",title:"Clear",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"close"})})]},e.alias))}),e.defaultModels?.length===0&&(0,a.jsx)("p",{className:"text-xs text-text-muted px-1",children:"Model mappings will be available soon."}),(0,a.jsx)("div",{children:l?(0,a.jsxs)("button",{onClick:F,disabled:!i||f,className:"px-4 py-1.5 rounded-lg bg-red-500/10 border border-red-500/30 text-red-500 font-medium text-xs flex items-center gap-1.5 hover:bg-red-500/20 transition-colors disabled:opacity-50 disabled:cursor-not-allowed",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px]",children:"stop_circle"}),"Stop DNS"]}):(0,a.jsxs)(o.$n,{variant:"primary",size:"sm",onClick:F,loading:f,disabled:!i||f,children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px] mr-1",children:"play_circle"}),"Start DNS"]})})]})]}),T&&g.length>0&&(0,a.jsxs)("div",{"data-model-dropdown":!0,className:"fixed z-[999] bg-surface border border-border rounded-lg shadow-xl max-h-[280px] w-[340px] overflow-hidden flex flex-col",style:{top:I.top,right:I.right},children:[(0,a.jsx)("div",{className:"sticky top-0 p-1.5 border-b border-border bg-surface",children:(0,a.jsx)("input",{type:"text",value:M,onChange:e=>_(e.target.value),placeholder:"Search models...",className:"w-full px-2 py-1 bg-background rounded border border-border text-xs focus:outline-none focus:ring-1 focus:ring-primary/50",autoFocus:!0})}),(0,a.jsx)("div",{className:"overflow-y-auto flex-1",children:g.filter(e=>!M||e.toLowerCase().includes(M.toLowerCase())).map(e=>(0,a.jsx)("button",{onClick:()=>{let t;E(t={...A,[T]:e}),$(t),P(null)},className:`w-full text-left px-3 py-2 text-xs font-mono hover:bg-primary/10 transition-colors border-b border-border/30 last:border-0 ${A[T]===e?"bg-primary/15 text-primary font-semibold":"text-text-main"}`,children:e},e))})]}),j&&(0,a.jsx)("div",{className:"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm",children:(0,a.jsxs)("div",{className:"bg-surface border border-border rounded-xl p-6 w-full max-w-sm flex flex-col gap-4 shadow-xl",children:[(0,a.jsx)("h3",{className:"font-semibold text-text-main",children:"Sudo Password Required"}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-3 bg-yellow-500/10 border border-yellow-500/30 rounded-lg",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-yellow-500 text-[20px]",children:"warning"}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Required to modify /etc/hosts and flush DNS cache"})]}),(0,a.jsx)(o.pd,{type:"password",placeholder:"Enter sudo password",value:w,onChange:e=>S(e.target.value),onKeyDown:e=>{"Enter"!==e.key||f||q()}}),b&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-red-500/10 text-red-600",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:b.text})]}),(0,a.jsxs)("div",{className:"flex items-center justify-end gap-2",children:[(0,a.jsx)(o.$n,{variant:"ghost",size:"sm",onClick:()=>{N(!1),S(""),v(null)},disabled:f,children:"Cancel"}),(0,a.jsx)(o.$n,{variant:"primary",size:"sm",onClick:q,loading:f,children:"Confirm"})]})]})})]})}function p(){let[e,t]=(0,r.useState)([]),[s,i]=(0,r.useState)(!0),[l,n]=(0,r.useState)("mitm"),[o,d]=(0,r.useState)(!0),[c,x]=(0,r.useState)(!1),[p,m]=(0,r.useState)(0),u=(0,r.useRef)(null),g=(0,r.useRef)(null),h=(0,r.useRef)(null),f=(0,r.useCallback)(()=>{h.current&&(h.current.close(),h.current=null),x(!1),t([]),m(e=>e+1)},[]);return(0,r.useEffect)(()=>{if(!o){h.current&&(h.current.close(),h.current=null),x(!1);return}let e=new EventSource(`/api/cli-tools/antigravity-mitm/console-logs?stream=true&filter=${l}`);return h.current=e,e.onopen=()=>x(!0),e.onmessage=e=>{try{let s=JSON.parse(e.data);s.clear?t([]):s.line&&t(e=>{let t=[...e,s.line];return t.length>500?t.slice(-500):t})}catch{}},e.onerror=()=>{e.close(),h.current=null,x(!1)},()=>{e.close(),h.current=null,x(!1)}},[o,l,p]),(0,r.useEffect)(()=>{s&&u.current&&u.current.scrollIntoView({behavior:"smooth"})},[e,s]),(0,a.jsxs)("div",{className:"rounded-xl border border-border bg-card p-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between pb-2",children:[(0,a.jsxs)("div",{className:"text-sm font-semibold flex items-center gap-2 cursor-pointer select-none",onClick:()=>d(!o),children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[16px] text-primary",children:"terminal"}),"Console Logs",(0,a.jsx)("span",{className:`material-symbols-outlined text-[14px] transition-transform ${o?"rotate-180":""}`,children:"expand_more"})]}),o&&(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsxs)("select",{value:l,onChange:e=>{n(e.target.value),t([])},className:"px-1.5 py-0.5 rounded border border-border bg-surface text-[10px] cursor-pointer",children:[(0,a.jsx)("option",{value:"mitm",children:"MITM Only"}),(0,a.jsx)("option",{value:"all",children:"All Logs"})]}),(0,a.jsx)("button",{onClick:()=>{i(!s),!s&&u.current&&u.current.scrollIntoView({behavior:"smooth"})},className:`p-0.5 rounded transition-colors ${s?"text-primary":"text-muted hover:text-foreground"}`,title:s?"Auto-scroll ON":"Auto-scroll OFF",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:s?"vertical_align_bottom":"pause"})}),(0,a.jsx)("button",{onClick:()=>t([]),className:"p-0.5 rounded text-muted hover:text-foreground transition-colors",title:"Clear logs",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"delete_sweep"})})]})]}),o&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{ref:g,onScroll:()=>{if(!g.current)return;let{scrollTop:e,scrollHeight:t,clientHeight:s}=g.current;i(t-e-s<40)},className:"bg-zinc-950 rounded-lg p-3 font-mono text-[11px] leading-[1.6] overflow-auto border border-zinc-800",style:{maxHeight:"280px",minHeight:"120px"},children:[0===e.length?(0,a.jsx)("div",{className:`italic text-center py-4 ${c?"text-zinc-600":"text-red-500 font-semibold"}`,children:c?"Waiting for logs...":"Vui l\xf2ng Stop > Start lại MITM Server để kết nối lại logs hệ thống"}):e.map((e,t)=>(0,a.jsx)("div",{className:`whitespace-pre-wrap break-all ${e.includes("❌")||e.includes("[ERROR]")||e.includes("error")?"text-red-400":e.includes("⚡")||e.includes("intercept")?"text-emerald-400":e.includes("⏩")||e.includes("passthrough")?"text-amber-400":e.includes("\uD83D\uDE80")||e.includes("✅")?"text-green-400":e.includes("\uD83D\uDD10")?"text-blue-400":e.includes("\uD83C\uDF10")?"text-cyan-400":e.includes("\uD83D\uDD0D")?"text-purple-400":e.includes("⏹")?"text-orange-400":e.includes("WARNING")||e.includes("warn")?"text-yellow-400":"text-zinc-300"}`,children:e},t)),(0,a.jsx)("div",{ref:u})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between mt-1.5",children:[(0,a.jsxs)("span",{className:"text-[10px] text-muted",children:[e.length," lines"]}),(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[!c&&(0,a.jsx)("button",{onClick:f,className:"flex items-center justify-center rounded p-2 text-primary hover:bg-primary/20 transition-colors",title:"Reconnect to console logs",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",style:{fontSize:"18px"},children:"sync"})}),(0,a.jsx)("span",{className:`w-1.5 h-1.5 rounded-full ${c?"bg-green-500 animate-pulse":"bg-red-500"}`}),(0,a.jsx)("span",{className:`text-[10px] ${c?"text-muted":"text-red-400"}`,children:c?"Connected":"Disconnected"})]})]})]})]})}function m({serverRunning:e}){let[t,s]=(0,r.useState)(!1),[i,l]=(0,r.useState)(!1),[n,d]=(0,r.useState)([]),[x,p]=(0,r.useState)([]),[m,u]=(0,r.useState)(null);(0,r.useEffect)(()=>{e&&g()},[]),(0,r.useEffect)(()=>{e?g():(d([]),p([]))},[e]),(0,r.useEffect)(()=>{e&&t&&h()},[t]);let g=async()=>{try{let e=await fetch("/api/providers/client");if(!e.ok)return void console.warn("[QuotaChecker] fetchConnections failed:",e.status);let t=await e.json();console.log("[QuotaChecker] connections data:",t);let s=(t.connections||[]).filter(e=>"antigravity"===e.provider);console.log("[QuotaChecker] antigravity connections:",s.length),d(s)}catch(e){console.error("[QuotaChecker] fetchConnections error:",e)}},h=async()=>{l(!0),u(null);try{let e=await fetch("/api/providers/client");if(!e.ok)throw Error("Failed to fetch providers");let t=((await e.json()).connections||[]).filter(e=>"antigravity"===e.provider);d(t);let s=await Promise.all(t.map(async e=>{try{let t=await fetch(`/api/usage/${e.id}`);if(t.ok){let s=await t.json();return{...e,quota:s}}return{...e,quota:null,quotaError:"Failed to fetch quota"}}catch(t){return{...e,quota:null,quotaError:t.message}}}));p(s)}catch(e){u(e.message)}finally{l(!1)}},f=e=>e>80?"bg-green-500":e>50?"bg-yellow-500":"bg-orange-500",y=n.length>0;return(0,a.jsxs)(o.Zp,{padding:"xs",className:`overflow-hidden ${!e?"opacity-60":""}`,children:[(0,a.jsxs)("div",{className:`flex items-center justify-between ${e?"hover:cursor-pointer hover:bg-primary/5":"cursor-not-allowed"} transition-colors rounded px-2`,onClick:()=>e&&s(!t),children:[(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"size-8 flex items-center justify-center shrink-0 rounded-lg bg-gradient-to-br from-blue-500 to-purple-600 text-white",children:(0,a.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"speed"})}),(0,a.jsxs)("div",{className:"min-w-0",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"font-medium text-sm",children:"Quota Checker"}),e?y?(0,a.jsxs)(o.Ex,{variant:"success",size:"sm",children:[n.length," account",n.length>1?"s":""]}):(0,a.jsx)(o.Ex,{variant:"warning",size:"sm",children:"No accounts"}):(0,a.jsx)(o.Ex,{variant:"error",size:"sm",children:"Server off"})]}),(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"Check antigravity provider quota usage"})]})]}),(0,a.jsx)("span",{className:`material-symbols-outlined text-text-muted text-[20px] transition-transform${t?" rotate-180":""}`,children:"expand_more"})]}),t&&e&&(0,a.jsxs)("div",{className:"mt-4 pt-4 border-t border-border flex flex-col gap-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("span",{className:"text-xs text-text-muted",children:"Antigravity Client Quotas"}),(0,a.jsxs)("button",{onClick:e=>{e.stopPropagation(),h()},disabled:i,className:"flex items-center gap-1 px-2 py-1 rounded-md bg-primary/10 text-primary text-[11px] font-medium hover:bg-primary/20 transition-colors disabled:opacity-50",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:i?"hourglass_empty":"refresh"}),i?"Refreshing...":"Refresh"]})]}),m&&!i&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded text-xs bg-red-500/10 text-red-600 border border-red-500/20",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"error"}),(0,a.jsx)("span",{children:m})]}),i&&(0,a.jsxs)("div",{className:"py-6 text-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-2xl animate-spin",children:"progress_activity"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"Loading quota data..."})]}),!i&&!m&&0===x.length&&(0,a.jsxs)("div",{className:"py-6 text-center",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-text-muted text-2xl",children:"cloud_off"}),(0,a.jsx)("p",{className:"text-sm text-text-muted mt-2",children:"No antigravity connections found"}),(0,a.jsx)("p",{className:"text-xs text-text-muted mt-1",children:"Add an antigravity provider to see quota info"})]}),!i&&!m&&x.length>0&&(0,a.jsx)("div",{className:"flex flex-col gap-3 max-h-[400px] overflow-y-auto",children:x.map(e=>(0,a.jsxs)("div",{className:"p-3 rounded-lg border border-border/50 bg-surface",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2 mb-3 pb-2 border-b border-border/30",children:[(0,a.jsx)("div",{className:"w-7 h-7 rounded-full overflow-hidden flex items-center justify-center bg-surface",children:(0,a.jsx)(c.default,{src:"/providers/antigravity.png",alt:"Antigravity",width:28,height:28,className:"w-7 h-7 object-contain"})}),(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-text-main truncate",children:e.name||e.email||"Unknown Account"}),(0,a.jsx)("p",{className:"text-[10px] text-text-muted",children:e.quota?.plan||"Free Tier"})]})]}),e.quota?.quotas&&Object.keys(e.quota.quotas).length>0?(0,a.jsx)("div",{className:"space-y-3",children:Object.entries(e.quota.quotas).map(([e,t])=>(0,a.jsxs)("div",{className:"space-y-1.5",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,a.jsx)("span",{className:`w-2 h-2 rounded-full ${f(t.remainingPercentage)}`}),(0,a.jsx)("span",{className:"text-xs font-medium text-text-main",children:t.displayName||e})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("span",{className:"text-[10px] text-text-muted",children:[t.used.toLocaleString()," / ",t.total.toLocaleString()]}),(0,a.jsxs)("span",{className:`text-[10px] font-medium ${t.remainingPercentage>80?"text-green-500":t.remainingPercentage>50?"text-yellow-500":"text-orange-500"}`,children:[t.remainingPercentage,"%"]})]})]}),(0,a.jsx)("div",{className:"relative h-1.5 bg-black/5 dark:bg-white/5 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:`absolute left-0 top-0 h-full rounded-full transition-all duration-500 ${f(t.remainingPercentage)}`,style:{width:`${t.remainingPercentage}%`}})}),t.resetAt&&(0,a.jsxs)("div",{className:"flex items-center justify-between text-[10px] text-text-muted",children:[(0,a.jsxs)("span",{children:["Resets ",(e=>{if(!e)return"";let t=new Date(e)-new Date;if(t<=0)return"Resetting soon";let s=Math.floor(t/36e5),a=Math.floor(s/24);return a>0?`in ${a}d ${s%24}h`:`in ${s}h ${Math.floor(t%36e5/6e4)}m`})(t.resetAt)]}),(0,a.jsx)("span",{className:"text-[10px] text-text-muted",children:new Date(t.resetAt).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})})]})]},e))}):(0,a.jsx)("div",{className:"py-2 text-center",children:(0,a.jsx)("p",{className:"text-xs text-text-muted",children:"No quota data available"})}),e.quotaError&&(0,a.jsxs)("div",{className:"flex items-center gap-2 px-2 py-1.5 rounded text-xs bg-yellow-500/10 text-yellow-600 mt-2",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[12px]",children:"warning"}),(0,a.jsx)("span",{children:e.quotaError})]})]},e.id))})]}),t&&!e&&(0,a.jsx)("div",{className:"mt-4 pt-4 border-t border-border",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 px-3 py-2 rounded text-xs bg-text-muted/10 text-text-muted",children:[(0,a.jsx)("span",{className:"material-symbols-outlined text-[14px]",children:"info"}),(0,a.jsx)("span",{children:"Start MITM Server to check quota information"})]})})]})}let u=["antigravity","copilot"];function g(){let[e,t]=(0,r.useState)([]),[s,o]=(0,r.useState)([]),[c,g]=(0,r.useState)({}),[h,f]=(0,r.useState)(!1),[y,b]=(0,r.useState)(null),[v,j]=(0,r.useState)({running:!1,certExists:!1,dnsStatus:{},hasCachedPassword:!1}),[N,w]=(0,r.useState)([]);(0,r.useEffect)(()=>{S(),C(),k(),A()},[]);let S=async()=>{try{let e=await fetch("/api/providers");if(e.ok){let s=await e.json();t(s.connections||[])}}catch{}},C=async()=>{try{let e=await fetch("/api/keys");if(e.ok){let t=await e.json();o(t.keys||[])}}catch{}},k=async()=>{try{let e=await fetch("/api/models/alias");if(e.ok){let t=await e.json();g(t.aliases||{})}}catch{}},A=async()=>{try{let e=await fetch("/api/settings");if(e.ok){let t=await e.json();f(t.cloudEnabled||!1)}}catch{}},E=()=>e.filter(e=>!1!==e.isActive),T=Object.entries(i).filter(([e])=>u.includes(e));return(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(d,{apiKeys:s,cloudEnabled:h,onStatusChange:j,onModelsLoaded:w}),(0,a.jsx)("div",{className:"mt-6",children:(0,a.jsx)(m,{serverRunning:v.running})})]}),(0,a.jsxs)("div",{className:"flex flex-col gap-4",children:[T.map(([e,t])=>(0,a.jsx)(x,{tool:t,isExpanded:y===e,onToggle:()=>b(y===e?null:e),serverRunning:v.running,dnsActive:v.dnsStatus?.[e]||!1,hasCachedPassword:v.hasCachedPassword||!1,apiKeys:s,activeProviders:E(),hasActiveProviders:E().some(e=>(0,l.KC)(e.provider).length>0||(0,n.mq)(e.provider)||(0,n.gb)(e.provider)),modelAliases:c,cloudEnabled:h,loadedModels:N,onDnsChange:e=>j(t=>({...t,dnsStatus:e.dnsStatus??t.dnsStatus}))},e)),(0,a.jsx)(p,{})]})]})}}},e=>{e.O(0,[852,702,497,441,794,358],()=>e(e.s=1872)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[558],{1743:()=>{},1934:(e,t,r)=>{"use strict";r.d(t,{v:()=>o});var n=r(2115);let a=e=>{let t,r=new Set,n=(e,n)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=n?n:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,i={setState:n,getState:a,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(n,a,i);return i},i=e=>{let t=e?a(e):a,r=e=>(function(e,t=e=>e){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),n.useCallback(()=>t(e.getInitialState()),[e,t]));return n.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},o=e=>e?i(e):i},2972:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,5154,23)),Promise.resolve().then(r.t.bind(r,1743,23)),Promise.resolve().then(r.bind(r,4635)),Promise.resolve().then(r.bind(r,3667)),Promise.resolve().then(r.bind(r,1110))},3321:(e,t,r)=>{"use strict";var n=r(4645);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},3667:(e,t,r)=>{"use strict";r.d(t,{default:()=>a});var n=r(2115);function a(){return(0,n.useEffect)(()=>{"serviceWorker"in navigator&&navigator.serviceWorker.register("/sw.js").then(e=>{console.log("[PWA] Service Worker registered, scope:",e.scope),setInterval(()=>{e.update()},36e5)}).catch(e=>{console.warn("[PWA] Service Worker registration failed:",e)})},[]),null}},4635:(e,t,r)=>{"use strict";r.d(t,{RuntimeI18nProvider:()=>s});var n=r(5155),a=r(2115),i=r(3321),o=r(3006);function s({children:e}){let t=(0,i.usePathname)();return(0,a.useEffect)(()=>{(0,o.FE)()},[]),(0,a.useEffect)(()=>{t&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{(0,o.wn)()})})},[t]),(0,n.jsx)(n.Fragment,{children:e})}},4642:e=>{var t;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(t={}).endianness=function(){return"LE"},t.hostname=function(){return"u">typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"u">typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"},e.exports=t},5154:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}},9311:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>a});let n=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>n(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>n(t)(e)}}},a=(e,t)=>(r,a,i)=>{let o,s={storage:function(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var t;let n=e=>null===e?null:JSON.parse(e,void 0),a=null!=(t=r.getItem(e))?t:null;return a instanceof Promise?a.then(n):n(a)},setItem:(e,t)=>r.setItem(e,JSON.stringify(t,void 0)),removeItem:e=>r.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},u=!1,l=0,c=new Set,f=new Set,m=s.storage;if(!m)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${s.name}', the given storage is currently unavailable.`),r(...e)},a,i);let d=()=>{let e=s.partialize({...a()});return m.setItem(s.name,{state:e,version:s.version})},v=i.setState;i.setState=(e,t)=>(v(e,t),d());let h=e((...e)=>(r(...e),d()),a,i);i.getInitialState=()=>h;let g=()=>{var e,t;if(!m)return;let i=++l;u=!1,c.forEach(e=>{var t;return e(null!=(t=a())?t:h)});let v=(null==(t=s.onRehydrateStorage)?void 0:t.call(s,null!=(e=a())?e:h))||void 0;return n(m.getItem.bind(m))(s.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===s.version)return[!1,e.state];else{if(s.migrate){let t=s.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;if(i!==l)return;let[n,u]=e;if(r(o=s.merge(u,null!=(t=a())?t:h),!0),n)return d()}).then(()=>{i===l&&(null==v||v(a(),void 0),o=a(),u=!0,f.forEach(e=>e(o)))}).catch(e=>{i===l&&(null==v||v(void 0,e))})};return i.persist={setOptions:e=>{s={...s,...e},e.storage&&(m=e.storage)},clearStorage:()=>{null==m||m.removeItem(s.name)},getOptions:()=>s,rehydrate:()=>g(),hasHydrated:()=>u,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(f.add(e),()=>{f.delete(e)})},s.skipHydration||g(),o||h}}},e=>{e.O(0,[930,702,441,794,358],()=>e(e.s=2972)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[110,139,141,143,167,177,253,286,296,321,472,508,543,552,568,573,580,648,666,747,805,819,851,896,922,966,988],{4441:()=>{}},_=>{_.O(0,[441,794,358],()=>_(_.s=4441)),_N_E=_.O()}]);