vansrouter 0.7.7 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (788) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +13 -13
  3. package/app/.next-cli-build/build-manifest.json +3 -3
  4. package/app/.next-cli-build/prerender-manifest.json +3 -3
  5. package/app/.next-cli-build/react-loadable-manifest.json +4 -4
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +4 -4
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +5 -5
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +2 -2
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +2 -2
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +2 -2
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  72. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  75. package/app/.next-cli-build/server/app/_global-error.rsc +2 -2
  76. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +2 -2
  77. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  78. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  79. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  82. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  83. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  84. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  85. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  86. package/app/.next-cli-build/server/app/_not-found.rsc +5 -5
  87. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +5 -5
  88. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  89. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +5 -5
  90. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  92. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  93. package/app/.next-cli-build/server/app/api/auth/check/route.js.nft.json +1 -1
  94. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  95. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +4 -4
  102. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  106. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  107. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  108. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  109. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  110. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  112. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  117. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  118. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  120. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +2 -2
  121. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  123. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +2 -2
  127. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  128. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  129. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  131. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  134. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  135. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  136. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  138. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  140. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  142. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  144. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  146. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  148. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  149. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  150. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  155. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  157. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  161. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  163. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  164. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  165. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  166. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  167. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  170. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  171. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  173. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  174. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  175. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  184. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  188. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  189. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  190. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  201. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  202. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  203. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  204. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  205. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  208. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  210. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  213. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  217. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +2 -2
  221. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  223. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  229. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  231. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  233. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +3 -3
  235. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  236. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  237. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  242. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  246. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  248. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  250. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  251. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  252. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  253. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  254. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  255. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  256. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js +1 -1
  257. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  259. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  261. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  262. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  263. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  265. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  266. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  270. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  271. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  272. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  273. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  274. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  276. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  277. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  278. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  279. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  280. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  282. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  283. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  284. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  285. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  286. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  287. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  288. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  289. package/app/.next-cli-build/server/app/api/version/shutdown/route.js +1 -1
  290. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  291. package/app/.next-cli-build/server/app/api/version/update/route.js +1 -1
  292. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  293. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  294. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  295. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  296. package/app/.next-cli-build/server/app/callback.html +1 -1
  297. package/app/.next-cli-build/server/app/callback.rsc +5 -5
  298. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +5 -5
  299. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  300. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +5 -5
  301. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +2 -2
  302. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  303. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  304. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  305. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +7 -7
  306. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  307. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  308. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  309. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  310. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +7 -7
  311. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  312. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +5 -5
  313. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +2 -2
  314. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  315. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +7 -7
  316. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  317. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  318. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  319. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  320. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +7 -7
  321. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  322. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +5 -5
  323. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +2 -2
  324. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  325. package/app/.next-cli-build/server/app/dashboard/combos.rsc +7 -7
  326. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  327. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  328. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  329. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  330. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +7 -7
  331. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  332. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +5 -5
  333. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +2 -2
  334. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  335. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +7 -7
  336. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  337. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  338. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  339. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  340. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +7 -7
  341. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  342. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +5 -5
  343. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +2 -2
  344. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  345. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +7 -7
  346. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  347. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  348. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  349. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  350. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  351. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +7 -7
  352. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  353. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +5 -5
  354. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +2 -2
  355. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  356. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +7 -7
  357. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  358. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  359. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  360. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  361. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +7 -7
  362. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  363. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +5 -5
  364. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +2 -2
  365. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  366. package/app/.next-cli-build/server/app/dashboard/profile.rsc +7 -7
  367. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  368. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  369. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  370. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  371. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +7 -7
  372. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  373. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +5 -5
  374. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +2 -2
  375. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  376. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +7 -7
  377. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  378. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  379. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  382. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +7 -7
  383. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  384. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +5 -5
  385. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +2 -2
  386. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  387. package/app/.next-cli-build/server/app/dashboard/providers.rsc +7 -7
  388. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  389. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  390. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  391. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  392. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +7 -7
  393. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  394. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +5 -5
  395. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +2 -2
  396. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  397. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +7 -7
  398. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  399. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  400. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  401. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  402. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +7 -7
  403. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  404. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +5 -5
  405. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +2 -2
  406. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  407. package/app/.next-cli-build/server/app/dashboard/quota.rsc +8 -8
  408. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  409. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  410. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  411. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  412. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +8 -8
  413. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  414. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +5 -5
  415. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +2 -2
  416. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  417. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  418. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  420. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +5 -5
  421. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +5 -5
  422. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  423. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +5 -5
  424. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +2 -2
  425. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  428. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  429. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/skills.rsc +7 -7
  431. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  432. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  434. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +7 -7
  436. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +5 -5
  438. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +2 -2
  439. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +7 -7
  441. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  442. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  444. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  445. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +7 -7
  446. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +5 -5
  448. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +2 -2
  449. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/translator.rsc +7 -7
  451. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  452. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  454. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  455. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +7 -7
  456. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +5 -5
  458. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +2 -2
  459. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  460. package/app/.next-cli-build/server/app/dashboard/usage.rsc +7 -7
  461. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  462. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  463. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  464. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  465. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +7 -7
  466. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +5 -5
  468. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +2 -2
  469. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  470. package/app/.next-cli-build/server/app/dashboard.rsc +7 -7
  471. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  472. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  473. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  474. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +7 -7
  475. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  476. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +5 -5
  477. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +2 -2
  478. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  479. package/app/.next-cli-build/server/app/landing/page.js +2 -2
  480. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  481. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  482. package/app/.next-cli-build/server/app/landing.html +1 -1
  483. package/app/.next-cli-build/server/app/landing.rsc +6 -6
  484. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +6 -6
  485. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  486. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +5 -5
  487. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +2 -2
  488. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  490. package/app/.next-cli-build/server/app/login/page.js +1 -1
  491. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  492. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  493. package/app/.next-cli-build/server/app/login.html +1 -1
  494. package/app/.next-cli-build/server/app/login.rsc +6 -6
  495. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +6 -6
  496. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +5 -5
  498. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  500. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  502. package/app/.next-cli-build/server/app/masuk/page.js +1 -1
  503. package/app/.next-cli-build/server/app/masuk/page.js.nft.json +1 -1
  504. package/app/.next-cli-build/server/app/masuk/page_client-reference-manifest.js +1 -1
  505. package/app/.next-cli-build/server/app-paths-manifest.json +13 -13
  506. package/app/.next-cli-build/server/chunks/1253.js +1 -1
  507. package/app/.next-cli-build/server/chunks/1536.js +1 -1
  508. package/app/.next-cli-build/server/chunks/2365.js +1 -1
  509. package/app/.next-cli-build/server/chunks/2554.js +4 -4
  510. package/app/.next-cli-build/server/chunks/2557.js +3 -3
  511. package/app/.next-cli-build/server/chunks/3424.js +1 -1
  512. package/app/.next-cli-build/server/chunks/383.js +1 -1
  513. package/app/.next-cli-build/server/chunks/4004.js +1 -1
  514. package/app/.next-cli-build/server/chunks/4029.js +1 -1
  515. package/app/.next-cli-build/server/chunks/403.js +1 -1
  516. package/app/.next-cli-build/server/chunks/404.js +1 -0
  517. package/app/.next-cli-build/server/chunks/4105.js +1 -1
  518. package/app/.next-cli-build/server/chunks/4418.js +1 -1
  519. package/app/.next-cli-build/server/chunks/4544.js +1 -1
  520. package/app/.next-cli-build/server/chunks/4574.js +2 -2
  521. package/app/.next-cli-build/server/chunks/5006.js +2 -2
  522. package/app/.next-cli-build/server/chunks/5204.js +4 -4
  523. package/app/.next-cli-build/server/chunks/5577.js +1 -1
  524. package/app/.next-cli-build/server/chunks/5598.js +1 -1
  525. package/app/.next-cli-build/server/chunks/6159.js +1 -1
  526. package/app/.next-cli-build/server/chunks/6723.js +1 -1
  527. package/app/.next-cli-build/server/chunks/6850.js +1 -0
  528. package/app/.next-cli-build/server/chunks/7916.js +1 -1
  529. package/app/.next-cli-build/server/chunks/818.js +1 -1
  530. package/app/.next-cli-build/server/chunks/8711.js +1 -1
  531. package/app/.next-cli-build/server/chunks/9294.js +9 -0
  532. package/app/.next-cli-build/server/chunks/9614.js +1 -1
  533. package/app/.next-cli-build/server/chunks/9984.js +1 -1
  534. package/app/.next-cli-build/server/instrumentation.js +1 -1
  535. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  536. package/app/.next-cli-build/server/middleware-react-loadable-manifest.js +1 -1
  537. package/app/.next-cli-build/server/pages/404.html +1 -1
  538. package/app/.next-cli-build/server/pages/500.html +1 -1
  539. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  540. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  541. package/app/.next-cli-build/static/chunks/{1049.3def0dd7804a4e6e.js → 1049.fe7b80c5fc82d475.js} +1 -1
  542. package/app/.next-cli-build/static/chunks/3700-6d19ded215c07e78.js +23 -0
  543. package/app/.next-cli-build/static/chunks/4385-44b1e0069eefa215.js +1 -0
  544. package/app/.next-cli-build/static/chunks/497-4e5f78e924e1b3ac.js +1 -0
  545. package/app/.next-cli-build/static/chunks/5316-26a9be2b5b340adb.js +31 -0
  546. package/app/.next-cli-build/static/chunks/5737-d18fc416e283bc11.js +1 -0
  547. package/app/.next-cli-build/static/chunks/{9078.7b8723a1eed306a9.js → 9078.a9009d83d98ff33c.js} +2 -2
  548. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/[id]/{page-33b2a2889f8a6c95.js → page-13a7a53439c201d2.js} +4 -4
  549. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-91b12eb7fe88deb4.js +1 -0
  550. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-9caaf0fd0cbd7132.js +4 -0
  551. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-6544624e09f8231b.js +1 -0
  552. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/[id]/{page-8af6425bd1f2dff0.js → page-794575f7237c2fd7.js} +1 -1
  553. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/{page-bb2e059c3f3dc49d.js → page-915b307dffadd9e1.js} +1 -1
  554. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-9b704f6f5e9d5617.js +1 -0
  555. package/app/.next-cli-build/static/chunks/app/landing/page-6c0d2c845c953827.js +1 -0
  556. package/app/.next-cli-build/static/chunks/webpack-213376c75275a9d9.js +1 -0
  557. package/app/.next-cli-build/static/css/beef0e694f607395.css +1 -0
  558. package/app/package.json +1 -1
  559. package/app/public/providers/agentrouter.webp +0 -0
  560. package/app/public/providers/alicode-intl.webp +0 -0
  561. package/app/public/providers/alicode.webp +0 -0
  562. package/app/public/providers/amp.webp +0 -0
  563. package/app/public/providers/anthropic-m.webp +0 -0
  564. package/app/public/providers/anthropic.webp +0 -0
  565. package/app/public/providers/antigravity.webp +0 -0
  566. package/app/public/providers/assemblyai.webp +0 -0
  567. package/app/public/providers/aws-polly.webp +0 -0
  568. package/app/public/providers/azure.webp +0 -0
  569. package/app/public/providers/black-forest-labs.webp +0 -0
  570. package/app/public/providers/blackbox.webp +0 -0
  571. package/app/public/providers/brave-search.webp +0 -0
  572. package/app/public/providers/byteplus.webp +0 -0
  573. package/app/public/providers/cartesia.webp +0 -0
  574. package/app/public/providers/cerebras.webp +0 -0
  575. package/app/public/providers/chutes.webp +0 -0
  576. package/app/public/providers/claude.webp +0 -0
  577. package/app/public/providers/cline.webp +0 -0
  578. package/app/public/providers/cloudflare-ai.webp +0 -0
  579. package/app/public/providers/codebuddy-cn.webp +0 -0
  580. package/app/public/providers/codex.webp +0 -0
  581. package/app/public/providers/cohere.webp +0 -0
  582. package/app/public/providers/comfyui.webp +0 -0
  583. package/app/public/providers/commandcode.webp +0 -0
  584. package/app/public/providers/continue.webp +0 -0
  585. package/app/public/providers/copilot.webp +0 -0
  586. package/app/public/providers/coqui.webp +0 -0
  587. package/app/public/providers/cursor.webp +0 -0
  588. package/app/public/providers/deepgram.webp +0 -0
  589. package/app/public/providers/deepseek-tui.webp +0 -0
  590. package/app/public/providers/deepseek.webp +0 -0
  591. package/app/public/providers/droid.webp +0 -0
  592. package/app/public/providers/edge-tts.webp +0 -0
  593. package/app/public/providers/elevenlabs.webp +0 -0
  594. package/app/public/providers/exa.webp +0 -0
  595. package/app/public/providers/fal-ai.webp +0 -0
  596. package/app/public/providers/firecrawl.webp +0 -0
  597. package/app/public/providers/fireworks.webp +0 -0
  598. package/app/public/providers/gemini-cli.webp +0 -0
  599. package/app/public/providers/gemini.webp +0 -0
  600. package/app/public/providers/github.webp +0 -0
  601. package/app/public/providers/glm-cn.webp +0 -0
  602. package/app/public/providers/glm.webp +0 -0
  603. package/app/public/providers/google-pse.webp +0 -0
  604. package/app/public/providers/google-tts.webp +0 -0
  605. package/app/public/providers/grok-web.webp +0 -0
  606. package/app/public/providers/groq.webp +0 -0
  607. package/app/public/providers/hermes.webp +0 -0
  608. package/app/public/providers/huggingface.webp +0 -0
  609. package/app/public/providers/hyperbolic.webp +0 -0
  610. package/app/public/providers/iflow.webp +0 -0
  611. package/app/public/providers/inworld.webp +0 -0
  612. package/app/public/providers/jcode.webp +0 -0
  613. package/app/public/providers/jina-ai.webp +0 -0
  614. package/app/public/providers/jina-reader.webp +0 -0
  615. package/app/public/providers/kilocode.webp +0 -0
  616. package/app/public/providers/kimchi.webp +0 -0
  617. package/app/public/providers/kimi-coding.webp +0 -0
  618. package/app/public/providers/kimi.webp +0 -0
  619. package/app/public/providers/kiro.webp +0 -0
  620. package/app/public/providers/linkup.webp +0 -0
  621. package/app/public/providers/local-device.webp +0 -0
  622. package/app/public/providers/mimo-free.webp +0 -0
  623. package/app/public/providers/minimax-cn.webp +0 -0
  624. package/app/public/providers/minimax.webp +0 -0
  625. package/app/public/providers/mistral.webp +0 -0
  626. package/app/public/providers/nanobanana.webp +0 -0
  627. package/app/public/providers/nebius.webp +0 -0
  628. package/app/public/providers/nvidia.webp +0 -0
  629. package/app/public/providers/oai-cc.webp +0 -0
  630. package/app/public/providers/oai-r.webp +0 -0
  631. package/app/public/providers/ollama-local.webp +0 -0
  632. package/app/public/providers/ollama.webp +0 -0
  633. package/app/public/providers/openai.webp +0 -0
  634. package/app/public/providers/openclaw.webp +0 -0
  635. package/app/public/providers/opencode-go.webp +0 -0
  636. package/app/public/providers/opencode.webp +0 -0
  637. package/app/public/providers/openrouter.webp +0 -0
  638. package/app/public/providers/perplexity-web.webp +0 -0
  639. package/app/public/providers/perplexity.webp +0 -0
  640. package/app/public/providers/playht.webp +0 -0
  641. package/app/public/providers/qoder.webp +0 -0
  642. package/app/public/providers/qwen.webp +0 -0
  643. package/app/public/providers/recraft.webp +0 -0
  644. package/app/public/providers/roo.webp +0 -0
  645. package/app/public/providers/runwayml.webp +0 -0
  646. package/app/public/providers/sdwebui.webp +0 -0
  647. package/app/public/providers/searchapi.webp +0 -0
  648. package/app/public/providers/searxng.webp +0 -0
  649. package/app/public/providers/serper.webp +0 -0
  650. package/app/public/providers/siliconflow.webp +0 -0
  651. package/app/public/providers/stability-ai.webp +0 -0
  652. package/app/public/providers/tavily.webp +0 -0
  653. package/app/public/providers/together.webp +0 -0
  654. package/app/public/providers/topaz.webp +0 -0
  655. package/app/public/providers/tortoise.webp +0 -0
  656. package/app/public/providers/vertex-partner.webp +0 -0
  657. package/app/public/providers/vertex.webp +0 -0
  658. package/app/public/providers/volcengine-ark.webp +0 -0
  659. package/app/public/providers/voyage-ai.webp +0 -0
  660. package/app/public/providers/xai.webp +0 -0
  661. package/app/public/providers/xiaomi-mimo.webp +0 -0
  662. package/app/public/providers/xiaomi-tokenplan.webp +0 -0
  663. package/app/public/providers/youcom.webp +0 -0
  664. package/app/public/providers/zcode.webp +0 -0
  665. package/package.json +1 -1
  666. package/app/.next-cli-build/server/chunks/3133.js +0 -1
  667. package/app/.next-cli-build/server/chunks/5290.js +0 -1
  668. package/app/.next-cli-build/server/chunks/6955.js +0 -9
  669. package/app/.next-cli-build/static/chunks/3700-507d735bbeafc1f1.js +0 -23
  670. package/app/.next-cli-build/static/chunks/4385-7cd46625904c1b7b.js +0 -1
  671. package/app/.next-cli-build/static/chunks/497-e70e37c356d2ad24.js +0 -1
  672. package/app/.next-cli-build/static/chunks/5316-fff7784e40086b07.js +0 -31
  673. package/app/.next-cli-build/static/chunks/5737-db655a51294730ae.js +0 -1
  674. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/[kind]/page-bbef1a0c34a9ee9e.js +0 -1
  675. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/combo/[id]/page-a10e1f3c70f5ab7f.js +0 -4
  676. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/media-providers/web/page-6aa26f4fba64b6d2.js +0 -1
  677. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/quota/page-24d2ff6ef38b5076.js +0 -1
  678. package/app/.next-cli-build/static/chunks/app/landing/page-29ecb0d5c302e58c.js +0 -1
  679. package/app/.next-cli-build/static/chunks/webpack-79b65541449c3a45.js +0 -1
  680. package/app/.next-cli-build/static/css/1fc10f069b479895.css +0 -1
  681. package/app/public/providers/agentrouter.png +0 -0
  682. package/app/public/providers/alicode-intl.png +0 -0
  683. package/app/public/providers/alicode.png +0 -0
  684. package/app/public/providers/amp.png +0 -0
  685. package/app/public/providers/anthropic-m.png +0 -0
  686. package/app/public/providers/anthropic.png +0 -0
  687. package/app/public/providers/antigravity.png +0 -0
  688. package/app/public/providers/assemblyai.png +0 -0
  689. package/app/public/providers/aws-polly.png +0 -0
  690. package/app/public/providers/azure.png +0 -0
  691. package/app/public/providers/black-forest-labs.png +0 -0
  692. package/app/public/providers/blackbox.png +0 -0
  693. package/app/public/providers/brave-search.png +0 -0
  694. package/app/public/providers/byteplus.png +0 -0
  695. package/app/public/providers/cartesia.png +0 -0
  696. package/app/public/providers/cerebras.png +0 -0
  697. package/app/public/providers/chutes.png +0 -0
  698. package/app/public/providers/claude.png +0 -0
  699. package/app/public/providers/cline.png +0 -0
  700. package/app/public/providers/cloudflare-ai.png +0 -0
  701. package/app/public/providers/codebuddy-cn.png +0 -0
  702. package/app/public/providers/codex.png +0 -0
  703. package/app/public/providers/cohere.png +0 -0
  704. package/app/public/providers/comfyui.png +0 -0
  705. package/app/public/providers/commandcode.png +0 -0
  706. package/app/public/providers/continue.png +0 -0
  707. package/app/public/providers/copilot.png +0 -0
  708. package/app/public/providers/coqui.png +0 -0
  709. package/app/public/providers/cursor.png +0 -0
  710. package/app/public/providers/deepgram.png +0 -0
  711. package/app/public/providers/deepseek-tui.png +0 -0
  712. package/app/public/providers/deepseek.png +0 -0
  713. package/app/public/providers/droid.png +0 -0
  714. package/app/public/providers/edge-tts.png +0 -0
  715. package/app/public/providers/elevenlabs.png +0 -0
  716. package/app/public/providers/exa.png +0 -0
  717. package/app/public/providers/fal-ai.png +0 -0
  718. package/app/public/providers/firecrawl.png +0 -0
  719. package/app/public/providers/fireworks.png +0 -0
  720. package/app/public/providers/gemini-cli.png +0 -0
  721. package/app/public/providers/gemini.png +0 -0
  722. package/app/public/providers/github.png +0 -0
  723. package/app/public/providers/glm-cn.png +0 -0
  724. package/app/public/providers/glm.png +0 -0
  725. package/app/public/providers/google-pse.png +0 -0
  726. package/app/public/providers/google-tts.png +0 -0
  727. package/app/public/providers/grok-web.png +0 -0
  728. package/app/public/providers/groq.png +0 -0
  729. package/app/public/providers/hermes.png +0 -0
  730. package/app/public/providers/huggingface.png +0 -0
  731. package/app/public/providers/hyperbolic.png +0 -0
  732. package/app/public/providers/iflow.png +0 -0
  733. package/app/public/providers/inworld.png +0 -0
  734. package/app/public/providers/jcode.png +0 -0
  735. package/app/public/providers/jina-ai.png +0 -0
  736. package/app/public/providers/jina-reader.png +0 -0
  737. package/app/public/providers/kilocode.png +0 -0
  738. package/app/public/providers/kimchi.png +0 -0
  739. package/app/public/providers/kimi-coding.png +0 -0
  740. package/app/public/providers/kimi.png +0 -0
  741. package/app/public/providers/kiro.png +0 -0
  742. package/app/public/providers/linkup.png +0 -0
  743. package/app/public/providers/local-device.png +0 -0
  744. package/app/public/providers/mimo-free.png +0 -0
  745. package/app/public/providers/minimax-cn.png +0 -0
  746. package/app/public/providers/minimax.png +0 -0
  747. package/app/public/providers/mistral.png +0 -0
  748. package/app/public/providers/nanobanana.png +0 -0
  749. package/app/public/providers/nebius.png +0 -0
  750. package/app/public/providers/nvidia.png +0 -0
  751. package/app/public/providers/oai-cc.png +0 -0
  752. package/app/public/providers/oai-r.png +0 -0
  753. package/app/public/providers/ollama-local.png +0 -0
  754. package/app/public/providers/ollama.png +0 -0
  755. package/app/public/providers/openai.png +0 -0
  756. package/app/public/providers/openclaw.png +0 -0
  757. package/app/public/providers/opencode-go.png +0 -0
  758. package/app/public/providers/opencode.png +0 -0
  759. package/app/public/providers/openrouter.png +0 -0
  760. package/app/public/providers/perplexity-web.png +0 -0
  761. package/app/public/providers/perplexity.png +0 -0
  762. package/app/public/providers/playht.png +0 -0
  763. package/app/public/providers/qoder.png +0 -0
  764. package/app/public/providers/qwen.png +0 -0
  765. package/app/public/providers/recraft.png +0 -0
  766. package/app/public/providers/roo.png +0 -0
  767. package/app/public/providers/runwayml.png +0 -0
  768. package/app/public/providers/sdwebui.png +0 -0
  769. package/app/public/providers/searchapi.png +0 -0
  770. package/app/public/providers/searxng.png +0 -0
  771. package/app/public/providers/serper.png +0 -0
  772. package/app/public/providers/siliconflow.png +0 -0
  773. package/app/public/providers/stability-ai.png +0 -0
  774. package/app/public/providers/tavily.png +0 -0
  775. package/app/public/providers/together.png +0 -0
  776. package/app/public/providers/topaz.png +0 -0
  777. package/app/public/providers/tortoise.png +0 -0
  778. package/app/public/providers/vertex-partner.png +0 -0
  779. package/app/public/providers/vertex.png +0 -0
  780. package/app/public/providers/volcengine-ark.png +0 -0
  781. package/app/public/providers/voyage-ai.png +0 -0
  782. package/app/public/providers/xai.png +0 -0
  783. package/app/public/providers/xiaomi-mimo.png +0 -0
  784. package/app/public/providers/xiaomi-tokenplan.png +0 -0
  785. package/app/public/providers/youcom.png +0 -0
  786. package/app/public/providers/zcode.png +0 -0
  787. /package/app/.next-cli-build/static/{dnYXWBMmy78xJ8_-FfW5B → t6yaZcs7Jx5MGCTvAlJGL}/_buildManifest.js +0 -0
  788. /package/app/.next-cli-build/static/{dnYXWBMmy78xJ8_-FfW5B → t6yaZcs7Jx5MGCTvAlJGL}/_ssgManifest.js +0 -0
@@ -1,15 +1,15 @@
1
- exports.id=2554,exports.ids=[2554],exports.modules={13018:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,88844,23))},35411:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(35732).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/VansRouter/VansRouter/src/app/(dashboard)/error.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/VansRouter/VansRouter/src/app/(dashboard)/error.js","default")},45961:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(66238);c(71183);var e=c(84725),f=c.n(e);function g({error:a,reset:b}){return(0,d.jsx)("section",{className:"flex min-h-[calc(100vh-9rem)] items-center justify-center",children:(0,d.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-border bg-surface p-6 shadow-soft",children:[(0,d.jsx)("div",{className:"mb-4 flex h-11 w-11 items-center justify-center rounded-lg bg-red-500/10 text-red-600 dark:text-red-400",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[24px]",children:"warning"})}),(0,d.jsx)("h1",{className:"text-xl font-semibold text-text-main",children:"Dashboard error"}),(0,d.jsx)("p",{className:"mt-2 text-sm leading-6 text-text-muted",children:"This dashboard view failed to render. Retry the view or head back to the dashboard home."}),a?.message?(0,d.jsx)("pre",{className:"mt-4 max-h-36 overflow-auto rounded-md border border-border bg-surface-2 p-3 text-xs text-text-muted",children:a.message}):null,(0,d.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,d.jsxs)("button",{type:"button",onClick:b,className:"inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-hover",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"refresh"}),"Try again"]}),(0,d.jsxs)(f(),{href:"/dashboard",className:"inline-flex items-center gap-2 rounded-md border border-border bg-surface px-4 py-2 text-sm font-medium text-text-main transition-colors hover:bg-surface-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"home"}),"Dashboard"]})]})]})})}},47298:(a,b,c)=>{Promise.resolve().then(c.bind(c,44544))},60390:(a,b,c)=>{"use strict";c.d(b,{d:()=>e,w:()=>d});let d={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:["gemini-3.5-flash-low","gemini-3-flash-agent","gemini-3.5-flash-extra-low","gemini-3.1-pro-low","gemini-pro-agent","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash"],defaultModels:[{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium) / Default",alias:"gemini-3.5-flash-low",mandatory:!0},{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)",alias:"gemini-3-flash-agent"},{id:"gemini-3.5-flash-extra-low",name:"Gemini 3.5 Flash (Low)",alias:"gemini-3.5-flash-extra-low"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)",alias:"gemini-3.1-pro-low"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)",alias:"gemini-pro-agent"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)",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"},{id:"gemini-3-flash",name:"Gemini 3 Flash (Command)",alias:"gemini-3-flash"}]},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-5-mini","gpt-5.4-nano","claude-haiku-4.5","gpt-4o","gpt-4.1"],defaultModels:[{id:"gpt-5-mini",name:"GPT-5 mini",alias:"gpt-5-mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 nano",alias:"gpt-5.4-nano"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.png",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"auto",name:"Auto (Kiro Agent)",alias:"auto"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}},e={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.png",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 / App",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"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.png",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},hermes:{id:"hermes",name:"Hermes Agent",image:"/providers/hermes.png",color:"#8B5CF6",description:"Nous Research self-improving AI agent",configType:"custom"},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:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.png",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"custom"},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
+ exports.id=2554,exports.ids=[2554],exports.modules={13018:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,88844,23))},35411:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(35732).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/VansRouter/VansRouter/src/app/(dashboard)/error.js\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/VansRouter/VansRouter/src/app/(dashboard)/error.js","default")},45961:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>g});var d=c(66238);c(71183);var e=c(84725),f=c.n(e);function g({error:a,reset:b}){return(0,d.jsx)("section",{className:"flex min-h-[calc(100vh-9rem)] items-center justify-center",children:(0,d.jsxs)("div",{className:"w-full max-w-lg rounded-lg border border-border bg-surface p-6 shadow-soft",children:[(0,d.jsx)("div",{className:"mb-4 flex h-11 w-11 items-center justify-center rounded-lg bg-red-500/10 text-red-600 dark:text-red-400",children:(0,d.jsx)("span",{className:"material-symbols-outlined text-[24px]",children:"warning"})}),(0,d.jsx)("h1",{className:"text-xl font-semibold text-text-main",children:"Dashboard error"}),(0,d.jsx)("p",{className:"mt-2 text-sm leading-6 text-text-muted",children:"This dashboard view failed to render. Retry the view or head back to the dashboard home."}),a?.message?(0,d.jsx)("pre",{className:"mt-4 max-h-36 overflow-auto rounded-md border border-border bg-surface-2 p-3 text-xs text-text-muted",children:a.message}):null,(0,d.jsxs)("div",{className:"mt-6 flex flex-wrap gap-3",children:[(0,d.jsxs)("button",{type:"button",onClick:b,className:"inline-flex items-center gap-2 rounded-md bg-primary px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-hover",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"refresh"}),"Try again"]}),(0,d.jsxs)(f(),{href:"/dashboard",className:"inline-flex items-center gap-2 rounded-md border border-border bg-surface px-4 py-2 text-sm font-medium text-text-main transition-colors hover:bg-surface-2",children:[(0,d.jsx)("span",{className:"material-symbols-outlined text-[18px]",children:"home"}),"Dashboard"]})]})]})})}},47298:(a,b,c)=>{Promise.resolve().then(c.bind(c,44544))},60390:(a,b,c)=>{"use strict";c.d(b,{d:()=>e,w:()=>d});let d={antigravity:{id:"antigravity",name:"Antigravity",image:"/providers/antigravity.webp",color:"#4285F4",description:"Google Antigravity IDE with MITM",configType:"mitm",mitmDomain:"daily-cloudcode-pa.googleapis.com",modelAliases:["gemini-3.5-flash-low","gemini-3-flash-agent","gemini-3.5-flash-extra-low","gemini-3.1-pro-low","gemini-pro-agent","claude-sonnet-4-6","claude-opus-4-6-thinking","gpt-oss-120b-medium","gemini-3-flash"],defaultModels:[{id:"gemini-3.5-flash-low",name:"Gemini 3.5 Flash (Medium) / Default",alias:"gemini-3.5-flash-low",mandatory:!0},{id:"gemini-3-flash-agent",name:"Gemini 3.5 Flash (High)",alias:"gemini-3-flash-agent"},{id:"gemini-3.5-flash-extra-low",name:"Gemini 3.5 Flash (Low)",alias:"gemini-3.5-flash-extra-low"},{id:"gemini-3.1-pro-low",name:"Gemini 3.1 Pro (Low)",alias:"gemini-3.1-pro-low"},{id:"gemini-pro-agent",name:"Gemini 3.1 Pro (High)",alias:"gemini-pro-agent"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6 (Thinking)",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"},{id:"gemini-3-flash",name:"Gemini 3 Flash (Command)",alias:"gemini-3-flash"}]},copilot:{id:"copilot",name:"GitHub Copilot",image:"/providers/copilot.webp",color:"#1F6FEB",description:"GitHub Copilot IDE with MITM",configType:"mitm",mitmDomain:"api.individual.githubcopilot.com",modelAliases:["gpt-5-mini","gpt-5.4-nano","claude-haiku-4.5","gpt-4o","gpt-4.1"],defaultModels:[{id:"gpt-5-mini",name:"GPT-5 mini",alias:"gpt-5-mini"},{id:"gpt-5.4-nano",name:"GPT-5.4 nano",alias:"gpt-5.4-nano"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"gpt-4o",name:"GPT-4o",alias:"gpt-4o"},{id:"gpt-4.1",name:"GPT-4.1",alias:"gpt-4.1"}]},kiro:{id:"kiro",name:"Kiro",image:"/providers/kiro.webp",color:"#FF6B00",description:"Kiro IDE with MITM",configType:"mitm",mitmDomain:"q.us-east-1.amazonaws.com",defaultModels:[{id:"auto",name:"Auto (Kiro Agent)",alias:"auto"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5",alias:"claude-sonnet-4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4",alias:"claude-sonnet-4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5",alias:"claude-haiku-4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2",alias:"deepseek-3.2"},{id:"minimax-m2.1",name:"MiniMax M2.1",alias:"minimax-m2.1"},{id:"simple-task",name:"Qwen3 Coder Next",alias:"simple-task"}]}},e={claude:{id:"claude",name:"Claude Code",image:"/providers/claude.webp",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.webp",color:"#FF6B35",description:"Open Claw AI Assistant",configType:"custom"},codex:{id:"codex",name:"OpenAI Codex CLI / App",image:"/providers/codex.webp",color:"#10A37F",description:"OpenAI Codex CLI",configType:"custom"},opencode:{id:"opencode",name:"OpenCode",image:"/providers/opencode.webp",color:"#E87040",description:"OpenCode AI Terminal Assistant",configType:"custom"},cowork:{id:"cowork",name:"Claude Cowork",image:"/providers/claude.webp",color:"#D97757",description:"Claude Desktop Cowork (third-party inference)",configType:"custom"},hermes:{id:"hermes",name:"Hermes Agent",image:"/providers/hermes.webp",color:"#8B5CF6",description:"Nous Research self-improving AI agent",configType:"custom"},droid:{id:"droid",name:"Factory Droid",image:"/providers/droid.webp",color:"#00D4FF",description:"Factory Droid AI Assistant",configType:"custom"},cursor:{id:"cursor",name:"Cursor",image:"/providers/cursor.webp",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.webp",color:"#00D1B2",description:"Cline AI Coding Assistant",configType:"custom"},kilo:{id:"kilo",name:"Kilo Code",image:"/providers/kilocode.webp",color:"#FF6B6B",description:"Kilo Code AI Assistant",configType:"custom"},roo:{id:"roo",name:"Roo",image:"/providers/roo.webp",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.webp",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
- }`}},amp:{id:"amp",name:"Amp CLI",image:"/providers/amp.png",color:"#F97316",description:"Sourcegraph Amp coding assistant CLI",docsUrl:"/docs?section=cli-tools&tool=amp",configType:"guide",defaultCommand:"amp",modelAliases:["g25p","g25f","cs45","g54"],notes:[{type:"info",text:"Use VansRouter model aliases to keep Amp shorthand mappings stable across provider updates."},{type:"warning",text:"Suggested shorthand examples: g25p → gemini/gemini-2.5-pro, g25f → gemini/gemini-2.5-flash, cs45 → cc/claude-sonnet-4-5-20250929."}],guideSteps:[{step:1,title:"Install Amp",desc:"Install the Amp CLI using the package manager supported by your environment."},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Add Shorthands",desc:"Map Amp shorthand names such as g25p or cs45 to VansRouter aliases in your local config."}],codeBlock:{language:"bash",code:`export OPENAI_API_KEY="{{apiKey}}"
7
+ }`}},amp:{id:"amp",name:"Amp CLI",image:"/providers/amp.webp",color:"#F97316",description:"Sourcegraph Amp coding assistant CLI",docsUrl:"/docs?section=cli-tools&tool=amp",configType:"guide",defaultCommand:"amp",modelAliases:["g25p","g25f","cs45","g54"],notes:[{type:"info",text:"Use VansRouter model aliases to keep Amp shorthand mappings stable across provider updates."},{type:"warning",text:"Suggested shorthand examples: g25p → gemini/gemini-2.5-pro, g25f → gemini/gemini-2.5-flash, cs45 → cc/claude-sonnet-4-5-20250929."}],guideSteps:[{step:1,title:"Install Amp",desc:"Install the Amp CLI using the package manager supported by your environment."},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Add Shorthands",desc:"Map Amp shorthand names such as g25p or cs45 to VansRouter aliases in your local config."}],codeBlock:{language:"bash",code:`export OPENAI_API_KEY="{{apiKey}}"
8
8
  export OPENAI_BASE_URL="{{baseUrl}}"
9
9
  amp --model "{{model}}"
10
10
  # Example shorthand aliases you can map locally:
11
11
  # g25p -> gemini/gemini-2.5-pro
12
- # cs45 -> cc/claude-sonnet-4-5-20250929`}},qwen:{id:"qwen",name:"Qwen Code",image:"/providers/qwen.png",color:"#10B981",description:"Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via VansRouter",docsUrl:"https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/",configType:"guide",defaultCommand:"qwen",notes:[{type:"info",text:"Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. VansRouter works as an OpenAI-compatible endpoint."},{type:"info",text:"Any model available in VansRouter can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more."},{type:"warning",text:"Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json"},{type:"error",text:"Qwen OAuth free tier was discontinued on 2026-04-15. Use VansRouter with alicode/openrouter/anthropic/gemini providers instead."}],modelAliases:["coder-model","qwen3-coder-plus","qwen3-coder-flash","vision-model","claude-sonnet-4-6","claude-opus-4-6-thinking","gemini-3-flash","gemini-3.1-pro-high"],defaultModels:[{id:"coder-model",name:"Coder Model (Qwen 3.6 Plus)",alias:"coder-model",envKey:"OPENAI_MODEL",defaultValue:"coder-model",isTopLevel:!0},{id:"qwen3-coder-plus",name:"Qwen 3 Coder Plus",alias:"qwen3-coder-plus",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-plus"},{id:"qwen3-coder-flash",name:"Qwen 3 Coder Flash",alias:"qwen3-coder-flash",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-flash"},{id:"vision-model",name:"Vision Model (Multimodal)",alias:"vision-model",envKey:"OPENAI_MODEL",defaultValue:"vision-model"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6",envKey:"OPENAI_MODEL",defaultValue:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking",envKey:"OPENAI_MODEL",defaultValue:"claude-opus-4-6-thinking"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high",envKey:"OPENAI_MODEL",defaultValue:"gemini-3.1-pro-high"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash",envKey:"OPENAI_MODEL",defaultValue:"gemini-3-flash"}],guideSteps:[{step:1,title:"Install Qwen Code",desc:"npm install -g @qwen-code/qwen-code"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Save Config",desc:"Copy the JSON below to your ~/.qwen/settings.json file."}],codeBlock:{language:"json",code:`{
12
+ # cs45 -> cc/claude-sonnet-4-5-20250929`}},qwen:{id:"qwen",name:"Qwen Code",image:"/providers/qwen.webp",color:"#10B981",description:"Alibaba Qwen Code CLI — supports OpenAI, Anthropic & Gemini providers via VansRouter",docsUrl:"https://qwenlm.github.io/qwen-code-docs/en/users/configuration/model-providers/",configType:"guide",defaultCommand:"qwen",notes:[{type:"info",text:"Qwen Code supports multiple provider types (openai, anthropic, gemini) via modelProviders in settings.json. VansRouter works as an OpenAI-compatible endpoint."},{type:"info",text:"Any model available in VansRouter can be used — not just Qwen models. Select from Qwen, Claude, Gemini, GPT, and more."},{type:"warning",text:"Config path: Linux/macOS ~/.qwen/settings.json • Windows %USERPROFILE%\\.qwen\\settings.json"},{type:"error",text:"Qwen OAuth free tier was discontinued on 2026-04-15. Use VansRouter with alicode/openrouter/anthropic/gemini providers instead."}],modelAliases:["coder-model","qwen3-coder-plus","qwen3-coder-flash","vision-model","claude-sonnet-4-6","claude-opus-4-6-thinking","gemini-3-flash","gemini-3.1-pro-high"],defaultModels:[{id:"coder-model",name:"Coder Model (Qwen 3.6 Plus)",alias:"coder-model",envKey:"OPENAI_MODEL",defaultValue:"coder-model",isTopLevel:!0},{id:"qwen3-coder-plus",name:"Qwen 3 Coder Plus",alias:"qwen3-coder-plus",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-plus"},{id:"qwen3-coder-flash",name:"Qwen 3 Coder Flash",alias:"qwen3-coder-flash",envKey:"OPENAI_MODEL",defaultValue:"qwen3-coder-flash"},{id:"vision-model",name:"Vision Model (Multimodal)",alias:"vision-model",envKey:"OPENAI_MODEL",defaultValue:"vision-model"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"claude-sonnet-4-6",envKey:"OPENAI_MODEL",defaultValue:"claude-sonnet-4-6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking",alias:"claude-opus-4-6-thinking",envKey:"OPENAI_MODEL",defaultValue:"claude-opus-4-6-thinking"},{id:"gemini-3.1-pro-high",name:"Gemini 3.1 Pro High",alias:"gemini-3.1-pro-high",envKey:"OPENAI_MODEL",defaultValue:"gemini-3.1-pro-high"},{id:"gemini-3-flash",name:"Gemini 3 Flash",alias:"gemini-3-flash",envKey:"OPENAI_MODEL",defaultValue:"gemini-3-flash"}],guideSteps:[{step:1,title:"Install Qwen Code",desc:"npm install -g @qwen-code/qwen-code"},{step:2,title:"API Key",type:"apiKeySelector"},{step:3,title:"Base URL",value:"{{baseUrl}}",copyable:!0},{step:4,title:"Select Model",type:"modelSelector"},{step:5,title:"Save Config",desc:"Copy the JSON below to your ~/.qwen/settings.json file."}],codeBlock:{language:"json",code:`{
13
13
  "security": {
14
14
  "auth": {
15
15
  "selectedType": "openai",
@@ -20,4 +20,4 @@ amp --model "{{model}}"
20
20
  "model": {
21
21
  "name": "{{model}}"
22
22
  }
23
- }`}},"deepseek-tui":{id:"deepseek-tui",name:"DeepSeek TUI",image:"/providers/deepseek-tui.png",color:"#4D6BFE",description:"DeepSeek Terminal Coding Agent (Rust TUI)",docsUrl:"https://github.com/DeepSeek-TUI/DeepSeek-TUI",configType:"custom",defaultCommand:"deepseek",modelAliases:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat","deepseek-reasoner"],defaultModels:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",alias:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",alias:"deepseek-v4-flash"},{id:"deepseek-chat",name:"DeepSeek V3 Chat",alias:"deepseek-chat"}],notes:[{type:"info",text:"DeepSeek TUI uses ~/.deepseek/config.toml for configuration. VansRouter will update the provider to 'openai' mode with your base_url, api_key, and model."},{type:"warning",text:"Config path: Linux/macOS ~/.deepseek/config.toml • Windows %USERPROFILE%\\.deepseek\\config.toml"}]},jcode:{id:"jcode",name:"jcode",image:"/providers/jcode.png",color:"#FF6B35",description:"High-performance Rust-based coding agent harness",configType:"custom",docsUrl:"https://github.com/1jehuang/jcode",notes:[{type:"info",text:"jcode is a Rust-based coding agent with semantic memory, multi-agent swarms, and extreme performance (27.8 MB RAM, 14ms boot)."},{type:"info",text:"Configure vansrouter as an OpenAI-compatible provider to route all jcode requests through vansrouter's optimization layer."},{type:"warning",text:"Requires jcode installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"}],defaultModels:[{id:"claude-opus-4-7",name:"Claude Opus 4.7",alias:"opus",defaultValue:"cc/claude-opus-4-7"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"sonnet",defaultValue:"cc/claude-sonnet-4-6"},{id:"gpt-5.5",name:"GPT 5.5",alias:"gpt5",defaultValue:"cx/gpt-5.5"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",alias:"gemini",defaultValue:"gemini/gemini-3.1-pro"}]}}},61643:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(1904),e=c(88844);function f({children:a}){return(0,d.jsx)(e.DashboardLayout,{children:a})}},85873:(a,b,c)=>{Promise.resolve().then(c.bind(c,45961))},88844:(a,b,c)=>{let{createProxy:d}=c(78291);a.exports=d("/home/runner/work/VansRouter/VansRouter/src/shared/components/index.js")},95601:(a,b,c)=>{Promise.resolve().then(c.bind(c,35411))}};
23
+ }`}},"deepseek-tui":{id:"deepseek-tui",name:"DeepSeek TUI",image:"/providers/deepseek-tui.webp",color:"#4D6BFE",description:"DeepSeek Terminal Coding Agent (Rust TUI)",docsUrl:"https://github.com/DeepSeek-TUI/DeepSeek-TUI",configType:"custom",defaultCommand:"deepseek",modelAliases:["deepseek-v4-pro","deepseek-v4-flash","deepseek-chat","deepseek-reasoner"],defaultModels:[{id:"deepseek-v4-pro",name:"DeepSeek V4 Pro",alias:"deepseek-v4-pro"},{id:"deepseek-v4-flash",name:"DeepSeek V4 Flash",alias:"deepseek-v4-flash"},{id:"deepseek-chat",name:"DeepSeek V3 Chat",alias:"deepseek-chat"}],notes:[{type:"info",text:"DeepSeek TUI uses ~/.deepseek/config.toml for configuration. VansRouter will update the provider to 'openai' mode with your base_url, api_key, and model."},{type:"warning",text:"Config path: Linux/macOS ~/.deepseek/config.toml • Windows %USERPROFILE%\\.deepseek\\config.toml"}]},jcode:{id:"jcode",name:"jcode",image:"/providers/jcode.webp",color:"#FF6B35",description:"High-performance Rust-based coding agent harness",configType:"custom",docsUrl:"https://github.com/1jehuang/jcode",notes:[{type:"info",text:"jcode is a Rust-based coding agent with semantic memory, multi-agent swarms, and extreme performance (27.8 MB RAM, 14ms boot)."},{type:"info",text:"Configure vansrouter as an OpenAI-compatible provider to route all jcode requests through vansrouter's optimization layer."},{type:"warning",text:"Requires jcode installed. Install via: curl -fsSL https://raw.githubusercontent.com/1jehuang/jcode/master/scripts/install.sh | bash"}],defaultModels:[{id:"claude-opus-4-7",name:"Claude Opus 4.7",alias:"opus",defaultValue:"cc/claude-opus-4-7"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6",alias:"sonnet",defaultValue:"cc/claude-sonnet-4-6"},{id:"gpt-5.5",name:"GPT 5.5",alias:"gpt5",defaultValue:"cx/gpt-5.5"},{id:"gemini-3.1-pro",name:"Gemini 3.1 Pro",alias:"gemini",defaultValue:"gemini/gemini-3.1-pro"}]}}},61643:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(1904),e=c(88844);function f({children:a}){return(0,d.jsx)(e.DashboardLayout,{children:a})}},85873:(a,b,c)=>{Promise.resolve().then(c.bind(c,45961))},88844:(a,b,c)=>{let{createProxy:d}=c(78291);a.exports=d("/home/runner/work/VansRouter/VansRouter/src/shared/components/index.js")},95601:(a,b,c)=>{Promise.resolve().then(c.bind(c,35411))}};
@@ -14,9 +14,9 @@ ${b}`:b;return}if(Array.isArray(a.system)){if(a.system.some(a=>a.text===b))retur
14
14
 
15
15
  ${c.content}`:b)}},14018:(a,b,c)=>{c.d(b,{N:()=>p});var d=c(69152),e=c(44602),f=c(39621),g=c(77380),h=c(73329),i=c(15261),j=c(92398),k=c(50996),l=c(92913),m=c(23648),n=c(97781),o=c(15204);async function p({providerResponse:a,provider:b,model:c,sourceFormat:q,targetFormat:r,body:s,stream:t,translatedBody:u,finalBody:v,requestStartTime:w,connectionId:x,apiKey:y,apiKeyName:z,clientRawRequest:A,onRequestSuccess:B,reqLogger:C,toolNameMap:D,trackDone:E,appendLog:F}){let G;if(E(),(a.headers.get("content-type")||"").includes("text/event-stream")){let b=await a.text(),d=(0,k.F)(b,c,(0,o.Qv)(s?.tools));if(!d)return F({status:`FAILED ${j.gx.BAD_GATEWAY}`}),(0,i.A1)(j.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");G=d}else try{G=await a.json()}catch(a){return F({status:`FAILED ${j.gx.BAD_GATEWAY}`}),console.error(`[ChatCore] Failed to parse JSON from ${b}:`,a.message),(0,i.A1)(j.gx.BAD_GATEWAY,`Invalid JSON response from ${b}`)}C.logProviderResponse(a.status,a.statusText,a.headers,G),B&&Promise.resolve().then(B).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)}),G=(0,n.kR)(G,D);let H=(0,l.MK)(G);F({tokens:H,status:"200 OK"}),(0,l.qr)({provider:b,model:c,tokens:H,connectionId:x,apiKey:y,endpoint:A?.endpoint});let I=(0,e.nZ)(r,q)?function(a,b,c){if(b===c||b===d.h.OPENAI)return a;if(b===d.h.GEMINI||b===d.h.ANTIGRAVITY||b===d.h.GEMINI_CLI||b===d.h.VERTEX){let b=a.response||a;if(!b?.candidates?.[0])return a;let c=b.candidates[0],d=c.content,e=b.usageMetadata||a.usageMetadata,f="",g="",h=[];if(d?.parts)for(let a of d.parts){!0===a.thought&&a.text?g+=a.text:void 0!==a.text&&(f+=a.text),a.functionCall&&h.push({id:`call_${a.functionCall.name}_${Date.now()}_${h.length}`,type:"function",function:{name:a.functionCall.name,arguments:JSON.stringify(a.functionCall.args||{})}});let b=a.inlineData||a.inline_data;if(b?.data){let a=b.mimeType||b.mime_type||"image/png";f+=`
16
16
  ![image](data:${a};base64,${b.data})
17
- `}}let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&h.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(a.choices||a.content&&!Array.isArray(a.content))return a;let b="",c="",d=[];for(let e of a.content||[])"text"===e.type?b+=(e.text??"").replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,""):"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,f._)(a):a}(G,r,q):G;if(/kimi-k2\./i.test(c||"")&&Array.isArray(I?.choices))for(let a of I.choices){let b=a?.message;if(!b||"assistant"!==b.role)continue;let{message:c,hasTools:d}=(0,g.vH)(b);d&&(a.message=c)}if(I?.choices?.[0]){let a=I.choices[0],b=a.message;Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls")}if(I.object||(I.object="chat.completion"),I.created||(I.created=Math.floor(Date.now()/1e3)),delete I.prompt_filter_results,I?.choices)for(let a of I.choices)delete a.content_filter_results;if(I?.usage&&(I.usage=(0,h.WL)((0,h.O9)(I.usage),q)),I?.choices)for(let a of I.choices){let b=a?.message;b&&(b.reasoning_content&&b.content&&delete b.reasoning_content,b.provider_specific_fields?.reasoning_content&&b.content&&delete b.provider_specific_fields.reasoning_content,b.provider_specific_fields?.reasoning&&b.content&&delete b.provider_specific_fields.reasoning)}C.logConvertedResponse(I);let J=Date.now()-w;return(0,m.ox)((0,l.$R)({provider:b,model:c,connectionId:x,apiKey:y,apiKeyName:z,latency:{ttft:J,total:J},tokens:H||{prompt_tokens:0,completion_tokens:0},request:(0,l.Fo)(s,t),providerRequest:v||u||null,providerResponse:G||null,response:{content:I?.choices?.[0]?.message?.content||I?.content||null,thinking:I?.choices?.[0]?.message?.reasoning_content||I?.reasoning_content||null,finish_reason:I?.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:A?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(I),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}},23648:(a,b,c)=>{c.d(b,{BY:()=>d.BY,E5:()=>d.E5,Rw:()=>d.Rw,SL:()=>d.SL,Zx:()=>d.Zx,_V:()=>d._V,j$:()=>d.j$,ox:()=>d.ox,rg:()=>d.rg,sZ:()=>d.sZ,uw:()=>d.uw});var d=c(45479)},34496:(a,b,c)=>{function d(a){return String(a||"").toLowerCase().replace(/\s+/g," ").replace(/[.!?…]+$/g,"").trim()}function e(a){let b=a?.messages;if(!Array.isArray(b)||0===b.length)return{detected:!1,hint:null};let c=function(a){let b=[];for(let c of a)if(c?.role==="assistant"&&Array.isArray(c.tool_calls))for(let a of c.tool_calls)b.push(function(a){let b=a?.function?.name||a?.name||"",c=function(a){try{let b=JSON.parse(a);return JSON.stringify(b,Object.keys(b).sort())}catch{return a||""}}(a?.function?.arguments||a?.arguments||"");return`${b}::${c}`}(a));return b}(b);if(c.length>=3){if(function(a){let b=new Map;for(let c of a)if(b.set(c,(b.get(c)||0)+1),b.get(c)>=3)return c;return null}(c))return{detected:!0,hint:"You have called the same tool with identical arguments multiple times with no new progress. STOP repeating. Summarize findings from existing results or change your strategy."};if(function(a){let b=a.length;for(let c=Math.floor(b/2);c>=2;c--)for(let d=0;d<=b-2*c;d++){let e=a.slice(d,d+c).join("|"),f=0,g=0;for(;g<=b-c;)a.slice(g,g+c).join("|")===e?(f++,g+=c):g++;if(f>=2)return e}return null}(c))return{detected:!0,hint:"You have repeated the same sequence of tool calls multiple times. This is a loop. STOP this pattern immediately. Summarize what you have already found or take a completely different approach."}}let e=function(a){let b=function(a){let b=[];for(let c of a)if(c?.role==="assistant"){let a=c?"string"==typeof c.content?c.content:Array.isArray(c.content)?c.content.filter(a=>a&&"string"==typeof a.text).map(a=>a.text).join(" "):"":"";a.length>=12&&b.push(a)}return b}(a);if(b.length<3)return{detected:!1,hint:null};let c=new Map;for(let a of b){let b=d(a);if(b.length<12)continue;let e=(c.get(b)||0)+1;if(c.set(b,e),e>=3)return{detected:!0,hint:"You have repeated the same response multiple times without making progress. This is a text loop — you are NOT moving forward. STOP repeating yourself. Either call a tool to act, or give your final answer now with the information you already have."}}let e=new Map;for(let a of b)for(let b of String(a||"").split(/[\n.!?…]+/).map(a=>d(a)).filter(a=>a.length>=12)){let a=(e.get(b)||0)+1;if(e.set(b,a),a>=3)return{detected:!0,hint:"You keep repeating the same planning statement without acting on it. STOP planning in circles. Either execute a tool call NOW, or provide your final answer with current knowledge. Do not restate your plan again."}}return{detected:!1,hint:null}}(b);return e.detected?e:{detected:!1,hint:null}}c.d(b,{k:()=>e})},36110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{wk:()=>K});var e=c(54729),f=c(44602),g=c(69152),h=c(42966),i=c(67860),j=c(78963),k=c(91392),l=c(86954),m=c(85577),n=c(13946),o=c(15261),p=c(92398),q=c(83571),r=c(23648),s=c(63548),t=c(92913),u=c(50996),v=c(14018),w=c(60137),x=c(92201),y=c(94054),z=c(61210),A=c(34496),B=c(63192),C=c(56764),D=c(8789),E=c(98932),F=c(69188),G=c(7916),H=c(81297),I=c(80117),J=a([s]);s=(J.then?(await J)():J)[0];let L=new Set(["kimchi","nvidia"]);async function K({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:J,onRequestSuccess:M,onDisconnect:N,clientRawRequest:O,connectionId:P,userAgent:Q,apiKey:R,apiKeyName:S=null,ccFilterNaming:T,rtkEnabled:U,headroomEnabled:V,headroomUrl:W,headroomCompressUserMessages:X,cavemanEnabled:Y,cavemanLevel:Z,ponytailEnabled:$,ponytailLevel:_,sourceFormatOverride:aa,providerThinking:ab}){var ac;let ad,ae,af,ag,ah,ai,{provider:aj,model:ak,accountCount:al=0}=b,am=Date.now(),an=aa||(0,e.Tz)(a),ao=(0,q.c)(a,ak,Q,T);if(ao)return ao;let ap=m.Xg[aj]||aj,aq=(0,m.ux)(ap,ak),ar=(0,e.oF)(aj,an),as=aq||ar?.format||(0,e.jJ)(aj);ar&&c&&(c.runtimeTransport=ar);let at=(0,m.cY)(ap,ak),au=(0,m.kt)(ap,ak);if(ab?.mode&&"auto"!==ab.mode){let b=(0,G.nl)(aj,ak);if(b?.reasoning){let c=ab.mode;"on"!==c||a.thinking?"off"!==c||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:c}):!1!==b.thinkingCanDisable&&(a={...a,thinking:{type:"disabled"}}):a={...a,thinking:{type:"enabled",budget_tokens:1e4}}}}let av=!0===a.stream||an===g.h.ANTIGRAVITY||an===g.h.GEMINI||an===g.h.GEMINI_CLI,aw=n.xq[aj]?.forceStream===!0,ax=!!aw||!1!==a.stream,ay="nvidia"===aj&&/kimi-k2\.[67]/i.test(ak||"")&&!0===ax,az=!ay&&ax;ay&&d?.debug?.("STREAMCOERCE",`${aj}/${ak} | stream=true → false (upstream)`);let aA=(0,m.OA)(ap,ak);("imageGen"===aA||/image|imagen|image-generation/i.test(ak))&&("antigravity"===aj||"gemini-cli"===aj)&&(ax=!1);let aB=(0,y.J)(O?.headers||{},a);"deepseek-tui"===aB&&!0!==a.stream&&(ax=!1);let aC=O?.headers?.accept||"",aD=aC.includes("application/json"),aE=aC.includes("text/event-stream");!aD||aE||!0===a.stream||aw||(ax=!1);let aF=await (0,l.q)(an,as,ak);O&&aF.logClientRawRequest(O.endpoint,O.body,O.headers),aF.logRawRequest(a),d?.debug?.("FORMAT",`${an} → ${as} | stream=${ax}`);let aG=(0,y.J)(O?.headers||{},a),aH=(0,y.Q)(aG,aj);if(c&&(c.rawHeaders=O?.headers||{}),!aH){let b=(0,G.nl)(aj,ak);(0,H.X)(a,an,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${aj}/${ak}`);try{let b=await (0,I.C)(a,an,as,{signal:void 0});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${as}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}if(aH)d?.debug?.("PASSTHROUGH",`${aG} → ${aj} | native lossless`),ad={...a,model:au},"claude"===aG&&(0,h.u)(ad,au);else{if(!(ad=(0,f.GH)(an,as,au,a,az,c,aj,aF,at,P,aG)))return(0,r.uw)(ak,aj,P,!1,!0),(0,o.A1)(p.gx.BAD_REQUEST,`Failed to translate request for ${an} → ${as}`);ae=ad._toolNameMap,delete ad._toolNameMap,ad.model=au}if(ay&&(ad.stream=!1),"claude"===aG&&Array.isArray(ad.tools)){let{tools:a,stripped:b}=(0,z.F)(ad.tools);b.length>0&&(ad.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aI=aH?an:as;"tts"===(0,m.OA)(ap,ak)&&ad.messages&&(ad.messages=ad.messages.filter(a=>"tool"!==a.role),delete ad.tools);let aJ=(0,E.BI)(ad,U),aK=(0,E.fT)(aJ);aK&&console.log(aK);let aL={},aM=await (0,F.SI)(ad,{enabled:V,url:W,model:au,format:aI,compressUserMessages:X,diagnostics:aL}),aN=(0,F.Nv)(aM),aO=(0,F.O2)(aL);if(aN?(d?.info?.("HEADROOM",`${aN}${aO?` | ${aO}`:""}`),(0,F.cB)(aM,aL)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${aO}`)):V&&d?.warn?.("HEADROOM",`skipped: ${aL.reason||"compression unavailable"}${aL.endpoint?` (${aL.endpoint})`:""}`),Y&&Z&&((0,B.p)(ad,aI,Z),d?.debug?.("CAVEMAN",`${Z} | ${aI}`)),$&&_&&((0,C.U)(ad,aI,_),d?.debug?.("PONYTAIL",`${_} | ${aI}`)),L.has(aj)&&((0,D.o5)(ad,aI,(ac=ad.tools,Array.isArray(ac)?ac.map(a=>a?.function?.name||a?.name).filter(a=>"string"==typeof a&&a.trim()):[])),d?.debug?.("TOOLPROTO",`${aj}/${ak} | ${aI}`)),!function(a,b,c,d,e){let f=(0,A.k)(a);if(!f.detected)return;(0,D.sH)(a,b);let g=a?.messages;if(Array.isArray(g)){let a=null;for(let b=g.length-1;b>=0;b--){let c=g[b];if(c&&("user"===c.role||"tool"===c.role)||c&&"assistant"===c.role&&b===g.length-1){a=c;break}}if(a){let b=`
17
+ `}}let i={role:"assistant"};f&&(i.content=f),g&&(i.reasoning_content=g),h.length>0&&(i.tool_calls=h),i.content||i.tool_calls||(i.content="");let j=(c.finishReason||"stop").toLowerCase();"stop"===j&&h.length>0&&(j="tool_calls");let k={id:`chatcmpl-${b.responseId||Date.now()}`,object:"chat.completion",created:Math.floor(new Date(b.createTime||Date.now()).getTime()/1e3),model:b.modelVersion||"gemini",choices:[{index:0,message:i,finish_reason:j}]};return e&&(k.usage={prompt_tokens:(e.promptTokenCount||0)+(e.thoughtsTokenCount||0),completion_tokens:e.candidatesTokenCount||0,total_tokens:e.totalTokenCount||0},e.thoughtsTokenCount>0&&(k.usage.completion_tokens_details={reasoning_tokens:e.thoughtsTokenCount})),k}if(b===d.h.CLAUDE){if(a.choices||a.content&&!Array.isArray(a.content))return a;let b="",c="",d=[];for(let e of a.content||[])"text"===e.type?b+=(e.text??"").replace(/^\s*```\s*json\s*\n?/i,"").replace(/\n?\s*```\s*$/i,""):"thinking"===e.type?c+=e.thinking||"":"tool_use"===e.type&&d.push({id:e.id,type:"function",function:{name:e.name,arguments:JSON.stringify(e.input||{})}});let e={role:"assistant"};b&&(e.content=b),c&&(e.reasoning_content=c),d.length>0&&(e.tool_calls=d),e.content||e.tool_calls||(e.content="");let f=a.stop_reason||"stop";"end_turn"===f&&(f="stop"),"tool_use"===f&&(f="tool_calls");let g={id:`chatcmpl-${a.id||Date.now()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.model||"claude",choices:[{index:0,message:e,finish_reason:f}]};return a.usage&&(g.usage={prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,total_tokens:(a.usage.input_tokens||0)+(a.usage.output_tokens||0)}),g}return b===d.h.OLLAMA?(0,f._)(a):a}(G,r,q):G;if(/kimi-k2\./i.test(c||"")&&Array.isArray(I?.choices))for(let a of I.choices){let b=a?.message;if(!b||"assistant"!==b.role)continue;let{message:c,hasTools:d}=(0,g.vH)(b);d&&(a.message=c)}if(I?.choices?.[0]){let a=I.choices[0],b=a.message;Array.isArray(b?.tool_calls)&&b.tool_calls.length>0&&"tool_calls"!==a.finish_reason&&(a.finish_reason="tool_calls")}if(I.object||(I.object="chat.completion"),I.created||(I.created=Math.floor(Date.now()/1e3)),delete I.prompt_filter_results,I?.choices)for(let a of I.choices)delete a.content_filter_results;if(I?.usage&&(I.usage=(0,h.WL)((0,h.O9)(I.usage),q)),I?.choices)for(let a of I.choices){let b=a?.message;b&&(b.reasoning_content&&b.content&&delete b.reasoning_content,b.provider_specific_fields?.reasoning_content&&b.content&&delete b.provider_specific_fields.reasoning_content,b.provider_specific_fields?.reasoning&&b.content&&delete b.provider_specific_fields.reasoning)}C.logConvertedResponse(I);let J=Date.now()-w;return(0,m.ox)((0,l.$R)({provider:b,model:c,connectionId:x,apiKey:y,apiKeyName:z,latency:{ttft:J,total:J},tokens:H||{prompt_tokens:0,completion_tokens:0},request:(0,l.Fo)(s,t),providerRequest:v||u||null,providerResponse:G||null,response:{content:I?.choices?.[0]?.message?.content||I?.content||null,thinking:I?.choices?.[0]?.message?.reasoning_content||I?.reasoning_content||null,finish_reason:I?.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:A?.endpoint||null})).catch(a=>{console.error("[RequestDetail] Failed to save:",a.message)}),{success:!0,response:new Response(JSON.stringify(I),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}},23648:(a,b,c)=>{c.d(b,{BY:()=>d.BY,E5:()=>d.E5,Rw:()=>d.Rw,SL:()=>d.SL,Zx:()=>d.Zx,_V:()=>d._V,j$:()=>d.j$,ox:()=>d.ox,rg:()=>d.rg,sZ:()=>d.sZ,uw:()=>d.uw});var d=c(45479)},34496:(a,b,c)=>{function d(a){return String(a||"").toLowerCase().replace(/\s+/g," ").replace(/[.!?…]+$/g,"").trim()}function e(a){let b=a?.messages;if(!Array.isArray(b)||0===b.length)return{detected:!1,hint:null};let c=function(a){let b=[];for(let c of a)if(c?.role==="assistant"&&Array.isArray(c.tool_calls))for(let a of c.tool_calls)b.push(function(a){let b=a?.function?.name||a?.name||"",c=function(a){try{let b=JSON.parse(a);return JSON.stringify(b,Object.keys(b).sort())}catch{return a||""}}(a?.function?.arguments||a?.arguments||"");return`${b}::${c}`}(a));return b}(b);if(c.length>=3){if(function(a){let b=new Map;for(let c of a)if(b.set(c,(b.get(c)||0)+1),b.get(c)>=3)return c;return null}(c))return{detected:!0,hint:"You have called the same tool with identical arguments multiple times with no new progress. STOP repeating. Summarize findings from existing results or change your strategy."};if(function(a){let b=a.length;for(let c=Math.floor(b/2);c>=2;c--)for(let d=0;d<=b-2*c;d++){let e=a.slice(d,d+c).join("|"),f=0,g=0;for(;g<=b-c;)a.slice(g,g+c).join("|")===e?(f++,g+=c):g++;if(f>=2)return e}return null}(c))return{detected:!0,hint:"You have repeated the same sequence of tool calls multiple times. This is a loop. STOP this pattern immediately. Summarize what you have already found or take a completely different approach."}}let e=function(a){let b=function(a){let b=[];for(let c of a)if(c?.role==="assistant"){let a=c?"string"==typeof c.content?c.content:Array.isArray(c.content)?c.content.filter(a=>a&&"string"==typeof a.text).map(a=>a.text).join(" "):"":"";a.length>=12&&b.push(a)}return b}(a);if(b.length<3)return{detected:!1,hint:null};let c=new Map;for(let a of b){let b=d(a);if(b.length<12)continue;let e=(c.get(b)||0)+1;if(c.set(b,e),e>=3)return{detected:!0,hint:"You have repeated the same response multiple times without making progress. This is a text loop — you are NOT moving forward. STOP repeating yourself. Either call a tool to act, or give your final answer now with the information you already have."}}let e=new Map;for(let a of b)for(let b of String(a||"").split(/[\n.!?…]+/).map(a=>d(a)).filter(a=>a.length>=12)){let a=(e.get(b)||0)+1;if(e.set(b,a),a>=3)return{detected:!0,hint:"You keep repeating the same planning statement without acting on it. STOP planning in circles. Either execute a tool call NOW, or provide your final answer with current knowledge. Do not restate your plan again."}}return{detected:!1,hint:null}}(b);return e.detected?e:{detected:!1,hint:null}}c.d(b,{k:()=>e})},36110:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{wk:()=>K});var e=c(54729),f=c(44602),g=c(69152),h=c(42966),i=c(67860),j=c(78963),k=c(91392),l=c(86954),m=c(85577),n=c(13946),o=c(15261),p=c(92398),q=c(83571),r=c(23648),s=c(63548),t=c(92913),u=c(50996),v=c(14018),w=c(60137),x=c(92201),y=c(94054),z=c(61210),A=c(34496),B=c(63192),C=c(56764),D=c(8789),E=c(98932),F=c(69188),G=c(7916),H=c(81297),I=c(80117),J=a([s]);s=(J.then?(await J)():J)[0];let L=new Set(["kimchi","nvidia"]);async function K({body:a,modelInfo:b,credentials:c,log:d,onCredentialsRefreshed:J,onRequestSuccess:M,onDisconnect:N,clientRawRequest:O,connectionId:P,userAgent:Q,apiKey:R,apiKeyName:S=null,ccFilterNaming:T,rtkEnabled:U,headroomEnabled:V,headroomUrl:W,headroomCompressUserMessages:X,cavemanEnabled:Y,cavemanLevel:Z,ponytailEnabled:$,ponytailLevel:_,sourceFormatOverride:aa,providerThinking:ab,clientSignal:ac}){var ad;let ae,af,ag,ah,ai,aj,{provider:ak,model:al,accountCount:am=0}=b,an=Date.now(),ao=aa||(0,e.Tz)(a),ap=(0,q.c)(a,al,Q,T);if(ap)return ap;let aq=m.Xg[ak]||ak,ar=(0,m.ux)(aq,al),as=(0,e.oF)(ak,ao),at=ar||as?.format||(0,e.jJ)(ak);as&&c&&(c.runtimeTransport=as);let au=(0,m.cY)(aq,al),av=(0,m.kt)(aq,al);if(ab?.mode&&"auto"!==ab.mode){let b=(0,G.nl)(ak,al);if(b?.reasoning){let c=ab.mode;"on"!==c||a.thinking?"off"!==c||a.thinking?a.reasoning_effort||(a={...a,reasoning_effort:c}):!1!==b.thinkingCanDisable&&(a={...a,thinking:{type:"disabled"}}):a={...a,thinking:{type:"enabled",budget_tokens:1e4}}}}let aw=!0===a.stream||ao===g.h.ANTIGRAVITY||ao===g.h.GEMINI||ao===g.h.GEMINI_CLI,ax=n.xq[ak]?.forceStream===!0,ay=!!ax||!1!==a.stream,az="nvidia"===ak&&/kimi-k2\.[67]/i.test(al||"")&&!0===ay,aA=!az&&ay;az&&d?.debug?.("STREAMCOERCE",`${ak}/${al} | stream=true → false (upstream)`);let aB=(0,m.OA)(aq,al);("imageGen"===aB||/image|imagen|image-generation/i.test(al))&&("antigravity"===ak||"gemini-cli"===ak)&&(ay=!1);let aC=(0,y.J)(O?.headers||{},a);"deepseek-tui"===aC&&!0!==a.stream&&(ay=!1);let aD=O?.headers?.accept||"",aE=aD.includes("application/json"),aF=aD.includes("text/event-stream");!aE||aF||!0===a.stream||ax||(ay=!1);let aG=await (0,l.q)(ao,at,al);O&&aG.logClientRawRequest(O.endpoint,O.body,O.headers),aG.logRawRequest(a),d?.debug?.("FORMAT",`${ao} → ${at} | stream=${ay}`);let aH=(0,y.J)(O?.headers||{},a),aI=(0,y.Q)(aH,ak);if(c&&(c.rawHeaders=O?.headers||{}),!aI){let b=(0,G.nl)(ak,al);(0,H.X)(a,ao,b)&&d?.debug?.("MODALITY",`stripped unsupported media for ${ak}/${al}`);try{let b=await (0,I.C)(a,ao,at,{signal:void 0});b>0&&d?.debug?.("MODALITY",`prefetched ${b} remote image(s) for ${at}`)}catch(a){d?.warn?.("MODALITY",`image prefetch failed: ${a.message}`)}}if(aI)d?.debug?.("PASSTHROUGH",`${aH} → ${ak} | native lossless`),ae={...a,model:av},"claude"===aH&&(0,h.u)(ae,av);else{if(!(ae=(0,f.GH)(ao,at,av,a,aA,c,ak,aG,au,P,aH)))return(0,r.uw)(al,ak,P,!1,!0),(0,o.A1)(p.gx.BAD_REQUEST,`Failed to translate request for ${ao} → ${at}`);af=ae._toolNameMap,delete ae._toolNameMap,ae.model=av}if(az&&(ae.stream=!1),"claude"===aH&&Array.isArray(ae.tools)){let{tools:a,stripped:b}=(0,z.F)(ae.tools);b.length>0&&(ae.tools=a,d?.debug?.("TOOLDEDUP",`stripped ${b.length}: ${b.slice(0,3).join(", ")}${b.length>3?"...":""}`))}let aJ=aI?ao:at;"tts"===(0,m.OA)(aq,al)&&ae.messages&&(ae.messages=ae.messages.filter(a=>"tool"!==a.role),delete ae.tools);let aK=(0,E.BI)(ae,U),aL=(0,E.fT)(aK);aL&&console.log(aL);let aM={},aN=await (0,F.SI)(ae,{enabled:V,url:W,model:av,format:aJ,compressUserMessages:X,diagnostics:aM}),aO=(0,F.Nv)(aN),aP=(0,F.O2)(aM);if(aO?(d?.info?.("HEADROOM",`${aO}${aP?` | ${aP}`:""}`),(0,F.cB)(aN,aM)&&d?.warn?.("HEADROOM",`reported token delta, but outbound JSON shrank <5%; provider may bill near-original payload | ${aP}`)):V&&d?.warn?.("HEADROOM",`skipped: ${aM.reason||"compression unavailable"}${aM.endpoint?` (${aM.endpoint})`:""}`),Y&&Z&&((0,B.p)(ae,aJ,Z),d?.debug?.("CAVEMAN",`${Z} | ${aJ}`)),$&&_&&((0,C.U)(ae,aJ,_),d?.debug?.("PONYTAIL",`${_} | ${aJ}`)),L.has(ak)&&((0,D.o5)(ae,aJ,(ad=ae.tools,Array.isArray(ad)?ad.map(a=>a?.function?.name||a?.name).filter(a=>"string"==typeof a&&a.trim()):[])),d?.debug?.("TOOLPROTO",`${ak}/${al} | ${aJ}`)),!function(a,b,c,d,e){let f=(0,A.k)(a);if(!f.detected)return;(0,D.sH)(a,b);let g=a?.messages;if(Array.isArray(g)){let a=null;for(let b=g.length-1;b>=0;b--){let c=g[b];if(c&&("user"===c.role||"tool"===c.role)||c&&"assistant"===c.role&&b===g.length-1){a=c;break}}if(a){let b=`
18
18
 
19
- [ROUTER NOTE: ${f.hint}]`;"string"==typeof a.content?a.content.includes("[ROUTER NOTE:")||(a.content+=b):Array.isArray(a.content)?a.content.some(a=>a.text&&a.text.includes("[ROUTER NOTE:"))||a.content.push({type:"text",text:b}):a.content=b.trimStart()}}e?.warn?.("LOOPGUARD",`${c}/${d} | loop detected, hint injected`)}(ad,aI,aj,ak,d),/(?:^|[/_-])kimi(?:[/_-]|$)|(?:^|[/_-])kimi-k2\.(?:6|7)(?:\b|[-_/])/i.test(`${aj}/${ak}`)&&((0,D.sH)(ad,aI),d?.debug?.("TERMINATION",`${aj}/${ak} | ${aI}`)),ab?.mode&&"auto"!==ab.mode){let a=(0,G.nl)(aj,ak);if(a?.reasoning){let b=ab.mode;"off"===b?(ad.reasoning_effort="none",!1!==a.thinkingCanDisable&&(ad.thinking={type:"disabled"}),d?.debug?.("THINKING",`${aj}/${ak} | disabled`)):"on"===b?(ad.thinking={type:"enabled",budget_tokens:1e4},d?.debug?.("THINKING",`${aj}/${ak} | enabled (10k budget)`)):(ad.reasoning_effort=b,d?.debug?.("THINKING",`${aj}/${ak} | effort=${b}`))}}let aP=(0,s.SB)(aj);(0,r.uw)(ak,aj,P,!0),(0,r.E5)({model:ak,provider:aj,connectionId:P,status:"PENDING"}).catch(()=>{});let aQ=ad.messages?.length||ad.input?.length||ad.contents?.length||ad.request?.contents?.length||0;d?.debug?.("REQUEST",`${aj.toUpperCase()} | ${ak} | ${aQ} msgs`);let aR=(0,j.jd)({onDisconnect:a=>{(0,r.uw)(ak,aj,P,!1),N&&N(a)},onError:()=>(0,r.uw)(ak,aj,P,!1),log:d,provider:aj,model:ak}),aS={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(aS.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${aj.toUpperCase()} | ${ak} | conn=${a} | pool=${b} | vercel-relay=${aS.vercelRelayUrl}`)}else if(aS.connectionProxyEnabled&&aS.connectionProxyUrl){let a=aS.connectionProxyUrl;try{let b=new URL(aS.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${aj.toUpperCase()} | ${ak} | conn=${e} | pool=${b} | url=${a}`)}if(aS.connectionProxyEnabled&&aS.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${aj.toUpperCase()} | ${ak} | conn=${a} | no_proxy=${aS.connectionNoProxy}`)}try{let a=await aP.execute({model:ak,body:ad,stream:az,credentials:c,signal:aR.signal,log:d,proxyOptions:aS,accountCount:al});af=a.response,ag=a.url,ah=a.headers,ai=a.transformedBody,aF.logTargetRequest(ag,ah,ai)}catch(c){if((0,r.uw)(ak,aj,P,!1,!0),(0,r.E5)({model:ak,provider:aj,connectionId:P,status:`FAILED ${"AbortError"===c.name?499:p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,r.ox)((0,t.$R)({provider:aj,model:ak,connectionId:P,apiKey:R,apiKeyName:S,latency:{ttft:0,total:Date.now()-am},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,t.Fo)(a,az),providerRequest:ad||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return aR.handleError(c),(0,o.A1)(499,"Request aborted");let b=(0,o.lR)(c,aj,ak,p.gx.BAD_GATEWAY);return console.log(`${i.lm.red}[ERROR] ${b}${i.lm.reset}`),(0,o.A1)(p.gx.BAD_GATEWAY,b)}if(!aP.noAuth&&(af.status===p.gx.UNAUTHORIZED||af.status===p.gx.FORBIDDEN))try{let a=await (0,k.qZ)(()=>aP.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${aj.toUpperCase()} | refreshed`),Object.assign(c,a),J)try{await J(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await aP.execute({model:ak,body:ad,stream:az,credentials:c,signal:aR.signal,log:d,proxyOptions:aS,accountCount:al});a.response.ok&&(af=a.response,ag=a.url)}catch{d?.warn?.("TOKEN",`${aj.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${aj.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${aj.toUpperCase()} | refresh threw: ${a.message}`)}if(!af.ok){(0,r.uw)(ak,aj,P,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,o.zL)(af,aP);(0,r.E5)({model:ak,provider:aj,connectionId:P,status:`FAILED ${b}`}).catch(()=>{}),(0,r.ox)((0,t.$R)({provider:aj,model:ak,connectionId:P,apiKey:R,apiKeyName:S,latency:{ttft:0,total:Date.now()-am},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,t.Fo)(a,az),providerRequest:ai||ad||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,o.lR)(Error(c),aj,ak,b);return console.log(`${i.lm.red}[ERROR] ${e}${i.lm.reset}`),aF.logError(Error(c),ai||ad),(0,o.A1)(b,e,d)}let aT={provider:aj,model:ak,body:a,stream:ax,translatedBody:ad,finalBody:ai,requestStartTime:am,connectionId:P,apiKey:R,apiKeyName:S,clientRawRequest:O,onRequestSuccess:M},aU=a=>(0,r.E5)({model:ak,provider:aj,connectionId:P,...a}).catch(()=>{}),aV=()=>(0,r.uw)(ak,aj,P,!1);if(ay&&av){let a=await (0,v.N)({...aT,stream:az,providerResponse:af,sourceFormat:an,targetFormat:as,reqLogger:aF,toolNameMap:ae,trackDone:aV,appendLog:aU});if(!a.success)return a;let b=await a.response.json(),c=(0,x.y)(b);return aR.handleComplete(),{success:!0,response:c}}if(!av&&aw){let a=await (0,u.I)({...aT,providerResponse:af,sourceFormat:an,trackDone:aV,appendLog:aU});if(a)return aR.handleComplete(),a}if(!ax){let a=await (0,v.N)({...aT,providerResponse:af,sourceFormat:an,targetFormat:as,reqLogger:aF,toolNameMap:ae,trackDone:aV,appendLog:aU});return aR.handleComplete(),a}let{onStreamComplete:aW}=(0,w.$)({...aT});return(0,w.M)({...aT,providerResponse:af,sourceFormat:an,targetFormat:as,userAgent:Q,reqLogger:aF,toolNameMap:ae,streamController:aR,onStreamComplete:aW})}d()}catch(a){d(a)}})},46646:(a,b,c)=>{c.d(b,{Hr:()=>j,nu:()=>h,u9:()=>k,yx:()=>g});var d=c(69152),e=c(30794);let f=new Set(["response.completed","response.done","response.failed","error"]);function g(a,b){return a||(b&&"string"==typeof b.type?b.type:null)}function h(a,b){let c=g(a,b);if(f.has(c))return!0;let d=b?.response?.status;return"completed"===d||"failed"===d}let i=new TextEncoder;function j(){return i.encode(`${k()}data: [DONE]
19
+ [ROUTER NOTE: ${f.hint}]`;"string"==typeof a.content?a.content.includes("[ROUTER NOTE:")||(a.content+=b):Array.isArray(a.content)?a.content.some(a=>a.text&&a.text.includes("[ROUTER NOTE:"))||a.content.push({type:"text",text:b}):a.content=b.trimStart()}}e?.warn?.("LOOPGUARD",`${c}/${d} | loop detected, hint injected`)}(ae,aJ,ak,al,d),/(?:^|[/_-])kimi(?:[/_-]|$)|(?:^|[/_-])kimi-k2\.(?:6|7)(?:\b|[-_/])/i.test(`${ak}/${al}`)&&((0,D.sH)(ae,aJ),d?.debug?.("TERMINATION",`${ak}/${al} | ${aJ}`)),ab?.mode&&"auto"!==ab.mode){let a=(0,G.nl)(ak,al);if(a?.reasoning){let b=ab.mode;"off"===b?(ae.reasoning_effort="none",!1!==a.thinkingCanDisable&&(ae.thinking={type:"disabled"}),d?.debug?.("THINKING",`${ak}/${al} | disabled`)):"on"===b?(ae.thinking={type:"enabled",budget_tokens:1e4},d?.debug?.("THINKING",`${ak}/${al} | enabled (10k budget)`)):(ae.reasoning_effort=b,d?.debug?.("THINKING",`${ak}/${al} | effort=${b}`))}}let aQ=(0,s.SB)(ak);(0,r.uw)(al,ak,P,!0),(0,r.E5)({model:al,provider:ak,connectionId:P,status:"PENDING"}).catch(()=>{});let aR=ae.messages?.length||ae.input?.length||ae.contents?.length||ae.request?.contents?.length||0;d?.debug?.("REQUEST",`${ak.toUpperCase()} | ${al} | ${aR} msgs`);let aS=(0,j.jd)({onDisconnect:a=>{(0,r.uw)(al,ak,P,!1),N&&N(a)},onError:()=>(0,r.uw)(al,ak,P,!1),log:d,provider:ak,model:al});ac&&(ac.aborted?aS.abort():ac.addEventListener("abort",()=>aS.abort(),{once:!0}));let aT={connectionProxyEnabled:c?.providerSpecificData?.connectionProxyEnabled===!0,connectionProxyUrl:c?.providerSpecificData?.connectionProxyUrl||"",connectionNoProxy:c?.providerSpecificData?.connectionNoProxy||"",vercelRelayUrl:c?.providerSpecificData?.vercelRelayUrl||""};if(aT.vercelRelayUrl){let a=c?.connectionName||c?.connectionId||"unknown",b=c?.providerSpecificData?.connectionProxyPoolId||"none";d?.info?.("PROXY",`${ak.toUpperCase()} | ${al} | conn=${a} | pool=${b} | vercel-relay=${aT.vercelRelayUrl}`)}else if(aT.connectionProxyEnabled&&aT.connectionProxyUrl){let a=aT.connectionProxyUrl;try{let b=new URL(aT.connectionProxyUrl),c=b.hostname||"",d=b.port?`:${b.port}`:"",e=b.protocol||"http:";a=`${e}//${c}${d}`}catch{}let b=c?.providerSpecificData?.connectionProxyPoolId||"none",e=c?.connectionName||c?.connectionId||"unknown";d?.info?.("PROXY",`${ak.toUpperCase()} | ${al} | conn=${e} | pool=${b} | url=${a}`)}if(aT.connectionProxyEnabled&&aT.connectionNoProxy){let a=c?.connectionName||c?.connectionId||"unknown";d?.debug?.("PROXY",`${ak.toUpperCase()} | ${al} | conn=${a} | no_proxy=${aT.connectionNoProxy}`)}try{let a=await aQ.execute({model:al,body:ae,stream:aA,credentials:c,signal:aS.signal,log:d,proxyOptions:aT,accountCount:am});ag=a.response,ah=a.url,ai=a.headers,aj=a.transformedBody,aG.logTargetRequest(ah,ai,aj)}catch(c){if((0,r.uw)(al,ak,P,!1,!0),(0,r.E5)({model:al,provider:ak,connectionId:P,status:`FAILED ${"AbortError"===c.name?499:p.gx.BAD_GATEWAY}`}).catch(()=>{}),(0,r.ox)((0,t.$R)({provider:ak,model:al,connectionId:P,apiKey:R,apiKeyName:S,latency:{ttft:0,total:Date.now()-an},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,t.Fo)(a,aA),providerRequest:ae||null,response:{error:c.message||String(c),status:"AbortError"===c.name?499:502,thinking:null},status:"error"})).catch(()=>{}),"AbortError"===c.name)return aS.handleError(c),(0,o.A1)(499,"Request aborted");let b=(0,o.lR)(c,ak,al,p.gx.BAD_GATEWAY);return console.log(`${i.lm.red}[ERROR] ${b}${i.lm.reset}`),(0,o.A1)(p.gx.BAD_GATEWAY,b)}if(!aQ.noAuth&&(ag.status===p.gx.UNAUTHORIZED||ag.status===p.gx.FORBIDDEN))try{let a=await (0,k.qZ)(()=>aQ.refreshCredentials(c,d),3,d);if(a?.accessToken||a?.copilotToken){if(d?.info?.("TOKEN",`${ak.toUpperCase()} | refreshed`),Object.assign(c,a),J)try{await J(a)}catch(a){d?.warn?.("TOKEN",`onCredentialsRefreshed failed: ${a.message}`)}try{let a=await aQ.execute({model:al,body:ae,stream:aA,credentials:c,signal:aS.signal,log:d,proxyOptions:aT,accountCount:am});a.response.ok&&(ag=a.response,ah=a.url)}catch{d?.warn?.("TOKEN",`${ak.toUpperCase()} | retry after refresh failed`)}}else d?.warn?.("TOKEN",`${ak.toUpperCase()} | refresh failed`)}catch(a){d?.warn?.("TOKEN",`${ak.toUpperCase()} | refresh threw: ${a.message}`)}if(!ag.ok){(0,r.uw)(al,ak,P,!1,!0);let{statusCode:b,message:c,resetsAtMs:d}=await (0,o.zL)(ag,aQ);(0,r.E5)({model:al,provider:ak,connectionId:P,status:`FAILED ${b}`}).catch(()=>{}),(0,r.ox)((0,t.$R)({provider:ak,model:al,connectionId:P,apiKey:R,apiKeyName:S,latency:{ttft:0,total:Date.now()-an},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,t.Fo)(a,aA),providerRequest:aj||ae||null,response:{error:c,status:b,thinking:null},status:"error"})).catch(()=>{});let e=(0,o.lR)(Error(c),ak,al,b);return console.log(`${i.lm.red}[ERROR] ${e}${i.lm.reset}`),aG.logError(Error(c),aj||ae),(0,o.A1)(b,e,d)}let aU={provider:ak,model:al,body:a,stream:ay,translatedBody:ae,finalBody:aj,requestStartTime:an,connectionId:P,apiKey:R,apiKeyName:S,clientRawRequest:O,onRequestSuccess:M},aV=a=>(0,r.E5)({model:al,provider:ak,connectionId:P,...a}).catch(()=>{}),aW=()=>(0,r.uw)(al,ak,P,!1);if(az&&aw){let a=await (0,v.N)({...aU,stream:aA,providerResponse:ag,sourceFormat:ao,targetFormat:at,reqLogger:aG,toolNameMap:af,trackDone:aW,appendLog:aV});if(!a.success)return a;let b=await a.response.json(),c=(0,x.y)(b);return aS.handleComplete(),{success:!0,response:c}}if(!aw&&ax){let a=await (0,u.I)({...aU,providerResponse:ag,sourceFormat:ao,trackDone:aW,appendLog:aV});if(a)return aS.handleComplete(),a}if(!ay){let a=await (0,v.N)({...aU,providerResponse:ag,sourceFormat:ao,targetFormat:at,reqLogger:aG,toolNameMap:af,trackDone:aW,appendLog:aV});return aS.handleComplete(),a}let{onStreamComplete:aX}=(0,w.$)({...aU});return(0,w.M)({...aU,providerResponse:ag,sourceFormat:ao,targetFormat:at,userAgent:Q,reqLogger:aG,toolNameMap:af,streamController:aS,onStreamComplete:aX})}d()}catch(a){d(a)}})},46646:(a,b,c)=>{c.d(b,{Hr:()=>j,nu:()=>h,u9:()=>k,yx:()=>g});var d=c(69152),e=c(30794);let f=new Set(["response.completed","response.done","response.failed","error"]);function g(a,b){return a||(b&&"string"==typeof b.type?b.type:null)}function h(a,b){let c=g(a,b);if(f.has(c))return!0;let d=b?.response?.status;return"completed"===d||"failed"===d}let i=new TextEncoder;function j(){return i.encode(`${k()}data: [DONE]
20
20
 
21
21
  `)}function k(){return(0,e.v8)({event:"response.failed",data:{type:"response.failed",response:{id:`resp_${Date.now()}`,status:"failed",error:{type:"stream_error",code:"stream_disconnected",message:"stream closed before response.completed"}}}},d.h.OPENAI_RESPONSES)}},50996:(a,b,c)=>{function d(a,b){let c;if(!a.trim())return;let d=a.match(/^event:\s*(.+)$/m),e=a.match(/^data:\s*(.+)$/m);if(!d||!e)return;let f=d[1].trim(),g=e[1].trim();if("[DONE]"!==g){try{c=JSON.parse(g)}catch{return}"response.created"===f?(b.responseId=c.response?.id||b.responseId,b.created=c.response?.created_at||b.created):"response.output_item.done"===f?b.items.set(c.output_index??0,c.item):"response.completed"===f||"response.done"===f?(b.status="completed",c.response?.usage&&(b.usage.input_tokens=c.response.usage.input_tokens||0,b.usage.output_tokens=c.response.usage.output_tokens||0,b.usage.total_tokens=c.response.usage.total_tokens||0)):"response.failed"===f&&(b.status="failed")}}c.d(b,{I:()=>q,F:()=>p});let e={input_tokens:0,output_tokens:0,total_tokens:0};async function f(a){if(!a||"function"!=typeof a.getReader)return{id:`resp_${Date.now()}`,object:"response",created_at:Math.floor(Date.now()/1e3),status:"failed",output:[],usage:{...e}};let b=new TextDecoder,c="",f={responseId:"",created:Math.floor(Date.now()/1e3),status:"in_progress",usage:{...e},items:new Map};for await(let e of a){let a=(c+=b.decode(e,{stream:!0})).split("\n\n");for(let b of(c=a.pop()||"",a))d(b,f)}c.trim()&&d(c,f);let g=[],h=f.items.size>0?Math.max(...f.items.keys()):-1;for(let a=0;a<=h;a++)g.push(f.items.get(a)||{type:"message",content:[],role:"assistant"});return{id:f.responseId||`resp_${Date.now()}_${Math.random().toString(36).slice(2,8)}`,object:"response",created_at:f.created,status:f.status||"completed",output:g,usage:f.usage}}var g=c(15261),h=c(92398),i=c(69152),j=c(13946),k=c(92913),l=c(15204),m=c(23648);let n=a=>j.xq[a]?.format===i.h.OPENAI_RESPONSES;function o(a){if(!a?.content||!Array.isArray(a.content))return"";let b=a.content.find(a=>"output_text"===a.type);if("string"==typeof b?.text)return b.text;let c=a.content.find(a=>"string"==typeof a.text);return"string"==typeof c?.text?c.text:""}function p(a,b,c=null){let d=[];for(let b of String(a||"").split("\n")){let a=b.trim();if(!a.startsWith("data:"))continue;let c=a.slice(5).trim();if(c&&"[DONE]"!==c)try{d.push(JSON.parse(c))}catch{}}if(0===d.length)return null;let e=d[0],f=[],g=[],h=new Map,i="stop",j=null;for(let a of d){let b=a?.choices?.[0],c=b?.delta||{};if("string"==typeof c.content&&c.content.length>0&&f.push(c.content),"string"==typeof c.reasoning_content&&c.reasoning_content.length>0&&g.push(c.reasoning_content),b?.finish_reason&&(i=b.finish_reason),a?.usage&&"object"==typeof a.usage&&(j=a.usage),Array.isArray(c.tool_calls))for(let a of c.tool_calls){let b=a.index??0;h.has(b)||h.set(b,{id:a.id||"",type:"function",function:{name:"",arguments:""}});let c=h.get(b);a.id&&(c.id=a.id),a.function?.name&&(c.function.name+=a.function.name),a.function?.arguments&&(c.function.arguments+=a.function.arguments)}}let k={role:"assistant",content:f.join("")||(h.size>0?null:"")};if(g.length>0&&(k.reasoning_content=g.join("")),h.size>0){let a=[...h.entries()].sort((a,b)=>a[0]-b[0]).map(([,a])=>a);if(c&&c.length>0)for(let b of a)b.function?.name&&(b.function.name=(0,l.vh)(b.function.name,c));k.tool_calls=a}let m={id:e.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:e.created||Math.floor(Date.now()/1e3),model:e.model||b||"unknown",choices:[{index:0,message:k,finish_reason:i}]};return j&&(m.usage=j),m}async function q({providerResponse:a,sourceFormat:b,provider:c,model:d,body:e,stream:j,translatedBody:r,finalBody:s,requestStartTime:t,connectionId:u,apiKey:v,apiKeyName:w,clientRawRequest:x,onRequestSuccess:y,trackDone:z,appendLog:A}){let B=a.headers.get("content-type")||"";if(!(B.includes("text/event-stream")||""===B&&n(c)))return null;z();let C={provider:c,model:d,connectionId:u,apiKey:v,apiKeyName:w,request:(0,k.Fo)(e,j),providerRequest:s||r||null};if(n(c)||b===i.h.OPENAI_RESPONSES)try{let e,g=await f(a.body);y&&await y();let h=g.usage||{};A({tokens:h,status:"200 OK"}),(0,k.qr)({provider:c,model:d,tokens:h,connectionId:u,apiKey:v,endpoint:x?.endpoint});let{msgItem:j,textContent:l}=function(a){if(!Array.isArray(a))return{msgItem:null,textContent:null};let b=a.filter(a=>a?.type==="message");if(0===b.length)return{msgItem:null,textContent:null};for(let a=b.length-1;a>=0;a--){let c=o(b[a]);if(c.length>0)return{msgItem:b[a],textContent:c}}let c=b[b.length-1];return{msgItem:c,textContent:o(c)}}(g.output),n=Date.now()-t;if((0,m.ox)((0,k.$R)({...C,latency:{ttft:n,total:n},tokens:{prompt_tokens:h.input_tokens||0,completion_tokens:h.output_tokens||0},response:{content:l,thinking:null,finish_reason:g.status||"unknown"},status:"success"},{endpoint:x?.endpoint||null})).catch(()=>{}),b===i.h.OPENAI_RESPONSES)return{success:!0,response:new Response(JSON.stringify(g),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})};let p=h.input_tokens||0,q=h.output_tokens||0,r=(g.output||[]).filter(a=>"function_call"===a.type).map((a,b)=>({id:a.call_id||`call_${a.name}_${Date.now()}_${b}`,type:"function",function:{name:a.name,arguments:"string"==typeof a.arguments?a.arguments:JSON.stringify(a.arguments||{})}})),s=r.length>0;if(b===i.h.ANTIGRAVITY||b===i.h.GEMINI||b===i.h.GEMINI_CLI)e={response:{candidates:[{content:{role:"model",parts:[{text:l||""}]},finishReason:"STOP",index:0}],usageMetadata:{promptTokenCount:p,candidatesTokenCount:q,totalTokenCount:p+q},modelVersion:d,responseId:g.id||`resp_${Date.now()}`}};else{let a={role:"assistant",content:l||(s?null:"")};s&&(a.tool_calls=r);let b="completed"===g.status||"done"===g.status,c=s?"tool_calls":b?"stop":g.status||"stop";e={id:g.id||`chatcmpl-${Date.now()}`,object:"chat.completion",created:g.created_at||Math.floor(Date.now()/1e3),model:g.model||d,choices:[{index:0,message:a,finish_reason:c}],usage:{prompt_tokens:p,completion_tokens:q,total_tokens:p+q}}}return{success:!0,response:new Response(JSON.stringify(e),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Responses API SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}try{let b=await a.text(),f=p(b,d,(0,l.Qv)(e?.tools));if(!f)return(0,g.A1)(h.gx.BAD_GATEWAY,"Invalid SSE response for non-streaming request");y&&await y();let i=f.usage||{};A({tokens:i,status:"200 OK"}),(0,k.qr)({provider:c,model:d,tokens:i,connectionId:u,apiKey:v,endpoint:x?.endpoint});let j=Date.now()-t;if((0,m.ox)((0,k.$R)({...C,latency:{ttft:j,total:j},tokens:i,response:{content:f.choices?.[0]?.message?.content||null,thinking:f.choices?.[0]?.message?.reasoning_content||null,finish_reason:f.choices?.[0]?.finish_reason||"unknown"},status:"success"},{endpoint:x?.endpoint||null})).catch(()=>{}),f?.choices)for(let a of f.choices)a?.message?.reasoning_content&&a.message.content&&delete a.message.reasoning_content;return{success:!0,response:new Response(JSON.stringify(f),{headers:{"Content-Type":"application/json","Access-Control-Allow-Origin":"*"}})}}catch(a){return console.error("[ChatCore] Chat Completions SSE→JSON failed:",a),(0,g.A1)(h.gx.BAD_GATEWAY,"Failed to convert streaming response to JSON")}}},56764:(a,b,c)=>{c.d(b,{U:()=>l});var d=c(5761);let e="You are a lazy senior developer. Lazy means efficient, not careless. The best code is the code never written. Before writing code, stop at the first rung that holds: 1. Does this need to exist at all? Speculative need = skip it, say so in one line (YAGNI). 2. Stdlib does it? Use it. 3. Native platform feature covers it? Use it (native input over a picker lib, CSS over JS, DB constraint over app code). 4. Already-installed dependency solves it? Use it. Never add a new dependency for what a few lines can do. 5. Can it be one line? One line. 6. Only then: the minimum code that works.",f="No unrequested abstractions (no interface with one implementation, no factory for one product, no config for a value that never changes). No boilerplate or scaffolding 'for later'. Deletion over addition. Boring over clever. Fewest files possible; shortest working diff wins. Two stdlib options the same size? Take the one correct on edge cases — lazy means less code, not the flimsier algorithm. Mark deliberate simplifications with a `ponytail:` comment naming the ceiling and upgrade path (e.g. `// ponytail: global lock, per-account locks if throughput matters`).",g="Never simplify away: input validation at trust boundaries, error handling that prevents data loss, security, accessibility, or anything explicitly requested. If the user insists on the full version, build it without re-arguing.",h="now is 2026, Be skeptical: never claim 'fixed', 'working', or 'correct' without concrete proof (test output, diff, reproducible verification). If a test passes, verify it tests what you think it tests. Check for side effects. Never fabricate reports ('all tests pass' without running them). Distinguish pre-existing bugs from ones you caused — run tests BEFORE and AFTER, diff the results. Report honestly: if broken and can't fix, say so. If skipped, explain why. If caveats, state them. Verify before declaring done — run relevant tests AFTER changes, show actual output.",i="Code first. Then at most three short lines: what was skipped and when to add it. Pattern: [code] then skipped: [X], add when [Y]. If the explanation is longer than the code, delete the explanation.",j="ACTIVE EVERY RESPONSE. No drift back to over-building. Still active if unsure.",k={lite:[e,"Level: lite. Build what's asked, but name the lazier alternative in one line — the user picks.",f,i,g,h,j].join(" "),full:[e,"Level: full. The ladder is enforced — stdlib and native first, shortest diff, shortest explanation. Ship the lazy version and question unrequested scope in the same response.",f,i,g,h,j].join(" "),ultra:[e,"Level: ultra. YAGNI extremist. Deletion before addition. Ship the one-liner and challenge the rest of the requirement in the same breath. No feature until a profiler or a real requirement demands it.",f,i,g,h,j].join(" ")};function l(a,b,c){(0,d.J)(a,b,k[c])}},60137:(a,b,c)=>{c.d(b,{$:()=>r,M:()=>q});var d=c(69152),e=c(44602),f=c(67860),g=c(77380),h=c(78963),i=c(13946),j=c(92398),k=c(46646),l=c(92913),m=c(23648),n=c(2933);async function o(a){if(!a||"function"!=typeof a.getReader)return{empty:!0};let b=a.getReader();try{let{done:a,value:c}=await b.read();if(a)return{empty:!0};return{empty:!1,firstChunk:c,reader:b}}catch(a){throw b.cancel?.().catch(()=>{}),a}}let p={[d.h.OPENAI_RESPONSES]:d.h.OPENAI_RESPONSES,[d.h.CLAUDE]:d.h.CLAUDE,[d.h.ANTIGRAVITY]:d.h.ANTIGRAVITY,[d.h.GEMINI]:d.h.ANTIGRAVITY,[d.h.GEMINI_CLI]:d.h.ANTIGRAVITY};async function q({providerResponse:a,provider:b,model:c,sourceFormat:r,targetFormat:s,userAgent:t,body:u,stream:v,translatedBody:w,finalBody:x,requestStartTime:y,connectionId:z,apiKey:A,apiKeyName:B,clientRawRequest:C,onRequestSuccess:D,reqLogger:E,toolNameMap:F,streamController:G,onStreamComplete:H}){let I;D&&Promise.resolve().then(D).catch(a=>{console.error("[ChatCore] onRequestSuccess failed:",a?.message||a)});let J=(a.headers.get("content-type")||"").toLowerCase();!J||J.includes("text/event-stream")||J.includes("application/json")||console.warn("[STREAM] "+b+" | "+c+" | unexpected Content-Type: "+J);try{I=await o(a.body)}catch(a){return{success:!1,status:502,errorCode:"STREAM_EARLY_EOF",error:a?.message||String(a)}}if(I.empty)return{success:!1,status:502,errorCode:"STREAM_EARLY_EOF",error:"Upstream closed stream before any useful content"};let K=function({provider:a,sourceFormat:b,targetFormat:c,userAgent:h,reqLogger:j,toolNameMap:k,model:l,connectionId:m,body:n,onStreamComplete:o,apiKey:q}){let r=h?.toLowerCase().includes("droid")||h?.toLowerCase().includes("codex-cli"),s=i.xq[a]?.format===d.h.OPENAI_RESPONSES&&c===d.h.OPENAI_RESPONSES&&!r,t=/kimi-k2\./i.test(l||"");if(s){let c=p[b]||d.h.OPENAI;return(0,f.i5)(d.h.OPENAI_RESPONSES,c,a,j,k,l,m,n,o,q,t?g.vH:null)}return(0,e.nZ)(c,b)?(0,f.i5)(c,b,a,j,k,l,m,n,o,q,t?g.vH:null):(0,f.l2)(a,j,l,m,n,o,q,t?g.vH:null)}({provider:b,sourceFormat:r,targetFormat:s,userAgent:t,reqLogger:E,toolNameMap:F,model:c,connectionId:z,body:u,onStreamComplete:H,apiKey:A}),L=r===d.h.OPENAI_RESPONSES&&s===d.h.OPENAI_RESPONSES?k.Hr:null,M=i.xq[b]?.stallTimeoutMs||j.xM,N=new Response(function({firstChunk:a,reader:b}){let c=!1;return new ReadableStream({async pull(d){if(!c){d.enqueue(a),c=!0;return}try{let{done:a,value:c}=await b.read();a?(d.close(),b.releaseLock?.()):d.enqueue(c)}catch(a){d.error(a),b.cancel?.().catch(()=>{})}},cancel(a){b.cancel?.(a).catch(()=>{})}})}(I),{status:a.status,statusText:a.statusText,headers:a.headers}),O=(0,h.Jb)(N,K,G,L,M),P=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return(0,m.ox)((0,l.$R)({provider:b,model:c,connectionId:z,apiKey:A,apiKeyName:B,latency:{ttft:0,total:Date.now()-y},tokens:{prompt_tokens:0,completion_tokens:0},request:(0,l.Fo)(u,v),providerRequest:x||w||null,providerResponse:"[Streaming - raw response not captured]",response:{content:"[Streaming in progress...]",thinking:null,type:"streaming"},status:"success"},{id:P})).catch(a=>{console.error("[RequestDetail] Failed to save streaming request:",a.message)}),{success:!0,response:new Response(O,{headers:n.RK})}}function r({provider:a,model:b,connectionId:c,apiKey:d,apiKeyName:e,requestStartTime:f,body:g,stream:h,finalBody:i,translatedBody:j,clientRawRequest:k}){let n=`${Date.now()}-${Math.random().toString(36).slice(2,11)}`;return{onStreamComplete:(o,p,q)=>{let r={ttft:q?q-f:Date.now()-f,total:Date.now()-f},s=o?.content||"[Empty streaming response]",t=o?.thinking||null;(0,m.ox)((0,l.$R)({provider:a,model:b,connectionId:c,apiKey:d,apiKeyName:e,latency:r,tokens:p||{prompt_tokens:0,completion_tokens:0},request:(0,l.Fo)(g,h),providerRequest:i||j||null,providerResponse:s,response:{content:s,thinking:t,type:"streaming"},status:"success"},{id:n})).catch(a=>{console.error("[RequestDetail] Failed to update streaming content:",a.message)}),(0,l.qr)({provider:a,model:b,tokens:p,connectionId:c,apiKey:d,endpoint:k?.endpoint,label:"STREAM USAGE"})},streamDetailId:n}}},61210:(a,b,c)=>{c.d(b,{F:()=>g});let d=[{triggers:["mcp__exa__web_search_exa","mcp__exa__web_fetch_exa"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:["mcp__tavily__tavily_search","mcp__tavily__tavily_extract"],strip:["WebSearch","WebFetch","mcp__workspace__web_fetch"]},{triggers:[/^mcp__browsermcp__/],strip:[/^mcp__Claude_in_Chrome__/]}];function e(a){return a?.name||a?.function?.name||""}function f(a,b){return"string"==typeof b?a===b:b instanceof RegExp&&b.test(a)}function g(a){if(!Array.isArray(a)||0===a.length)return{tools:a,stripped:[]};let b=a.map(e),c=new Set;for(let a of d)if(b.some(b=>a.triggers.some(a=>f(b,a))))for(let d of b)a.strip.some(a=>f(d,a))&&c.add(d);return 0===c.size?{tools:a,stripped:[]}:{tools:a.filter(a=>!c.has(e(a))),stripped:Array.from(c)}}},63192:(a,b,c)=>{c.d(b,{p:()=>j});var d=c(5761);let e="Code blocks, file paths, commands, errors, URLs: keep exact. Security warnings, irreversible action confirmations, multi-step ordered sequences: write normal. Resume terse style after.",f='Not: "Sure! I\'d be happy to help you with that. The issue you\'re experiencing is likely caused by..." Yes: "Bug in auth middleware. Token expiry check use `<` not `<=`. Fix:"',g="Auto-Clarity: drop caveman for security warnings, irreversible actions, multi-step sequences where fragment ambiguity risks misread, or when user repeats a question. Resume after the clear part.",h="ACTIVE EVERY RESPONSE. No revert after many turns. No filler drift. Still active if unsure.",i={lite:["Respond tersely. Keep grammar and full sentences but drop filler, hedging and pleasantries (just/really/basically/sure/of course/I'd be happy to). Pattern: state the thing, the action, the reason. Then next step.",f,e,g,h].join(" "),full:["Respond like terse caveman. All technical substance stay exact, only fluff die. Drop: articles (a/an/the), filler (just/really/basically/actually/simply), pleasantries, hedging. Fragments OK. Short synonyms (big not extensive, fix not implement a solution for). Pattern: [thing] [action] [reason]. [next step].",f,e,g,h].join(" "),ultra:["Respond ultra-terse. Maximum compression. Telegraphic. Abbreviate (DB/auth/config/req/res/fn/impl), strip conjunctions, use arrows for causality (X → Y). One word when one word enough. Pattern: [thing] → [result]. [fix].",f,e,g,h].join(" "),"wenyan-lite":["Respond semi-classical. Drop filler/hedging but keep grammar structure, classical register. Use classical Chinese sentence patterns where natural. Keep English for technical terms.",f,e,g,h].join(" "),wenyan:["Respond classical Chinese (文言文). Maximum classical terseness. 80-90% character reduction. Classical sentence patterns, verbs precede objects, subjects often omitted, classical particles (之/乃/為/其). Keep English for code, commands, function names, API names, error strings.",f,e,g,h].join(" "),"wenyan-ultra":["Respond extreme classical compression (文言文 ultra). Maximum compression, ultra terse. Same classical rules as wenyan-full but even more compressed. One classical particle per clause.",f,e,g,h].join(" ")};function j(a,b,c){(0,d.J)(a,b,i[c])}},67860:(a,b,c)=>{c.d(b,{i5:()=>q,l2:()=>r,lm:()=>g.lm,v8:()=>h.v8});var d=c(44602),e=c(69152),f=c(23648),g=c(73329),h=c(30794),i=c(46646),j=c(25440),k=c(15204);function l(a,b,c,d,f,g){var i;if(!b||0===b.length||f!==e.h.OPENAI)return!1;let j=(i=c?.messageId,{id:i?.startsWith("chatcmpl-")?i:`chatcmpl-${i||Date.now()}`,object:"chat.completion.chunk",created:Math.floor(Date.now()/1e3),model:d||null,choices:[{index:0,delta:{tool_calls:b},finish_reason:"tool_calls"}]}),k=(0,h.v8)(j,e.h.OPENAI);return g?.appendConvertedChunk?.(k),a.enqueue(m.encode(k)),!0}c(2933);let m=new TextEncoder,n="translate",o="passthrough";function p(a={}){let{mode:b=n,targetFormat:c,sourceFormat:q,provider:r=null,reqLogger:s=null,toolNameMap:t=null,model:u=null,connectionId:v=null,body:w=null,onStreamComplete:x=null,apiKey:y=null,normalizeKimiToolCalls:z=null}=a,A="",B=null,C=w?.tools?(0,k.Qv)(w.tools):null,D=new TextDecoder("utf-8",{fatal:!1}),E=b===n?{...(0,d.Ws)(q),provider:r,toolNameMap:t,model:u}:null,F=0,G="",H="",I=null,J=0,K=0,L={},M=/kimi-k2\./i.test(u||""),N=null,O=!1,P=null,Q=!1,R=!1,S=!1;return new TransformStream({transform(a,f){I||(I=Date.now());let p=D.decode(a,{stream:!0});A+=p,s?.appendProviderChunk?.(p);let r=A.split("\n");for(let a of(A=r.pop()||"",r)){let p=a.trim();if(j.T&&p&&(J++,p.startsWith("event:"))){let a=p.slice(6).trim();L[a]=(L[a]||0)+1}if(b===n&&c===e.h.OPENAI_RESPONSES&&p.startsWith("event:")&&(P=p.slice(6).trim()),b===o){let b,c=!1;if(p.startsWith("data:")&&"[DONE]"!==p.slice(5).trim())try{let a=JSON.parse(p.slice(5).trim()),d=(0,h.A4)(a),f=!1;if(void 0!==a.choices&&(a.object||(a.object="chat.completion.chunk",f=!0),a.created||(a.created=Math.floor(Date.now()/1e3),f=!0)),void 0!==a.prompt_filter_results&&(delete a.prompt_filter_results,f=!0),a?.choices)for(let b of a.choices)void 0!==b.content_filter_results&&(delete b.content_filter_results,f=!0);if(C&&C.length>0&&Array.isArray(a.choices))for(let b of a.choices){let a=b?.delta;if(Array.isArray(a?.tool_calls)){for(let b of a.tool_calls)if(b.function?.name){let a=(0,k.vh)(b.function.name,C);a!==b.function.name&&(b.function.name=a,f=!0)}}}if(!(0,h.c2)(a,e.h.OPENAI))continue;let i=a.choices?.[0]?.delta,j=i?.content,l=i?.reasoning_content;j&&"string"==typeof j&&(F+=j.length,G+=j),l&&"string"==typeof l&&(F+=l.length,H+=l);let m=(0,g.f5)(a);m&&(B=m);let n=a.choices?.[0]?.finish_reason;if(n&&!(0,g.Gh)(a.usage)){let d=(0,g.OF)(w,F,e.h.OPENAI);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
22
22
  `,B=d,c=!0}else if(n&&B){let d=(0,g.O9)(B);a.usage=(0,g.WL)(d,e.h.OPENAI),b=`data: ${JSON.stringify(a)}
@@ -27,7 +27,7 @@ data: [DONE]
27
27
 
28
28
  `)),b.close()}}),{headers:d.RK});let f=a.id||`chatcmpl-${Date.now()}`,g=a.created||Math.floor(Date.now()/1e3),h=a.model||"unknown",i=[];i.push({id:f,object:"chat.completion.chunk",created:g,model:h,choices:[{index:0,delta:{role:"assistant"},finish_reason:null,logprobs:null}]}),c.reasoning_content&&i.push({id:f,object:"chat.completion.chunk",created:g,model:h,choices:[{index:0,delta:{reasoning_content:c.reasoning_content},finish_reason:null,logprobs:null}]}),c.content&&i.push({id:f,object:"chat.completion.chunk",created:g,model:h,choices:[{index:0,delta:{content:c.content},finish_reason:null,logprobs:null}]}),c.tool_calls?.length>0&&i.push({id:f,object:"chat.completion.chunk",created:g,model:h,choices:[{index:0,delta:{tool_calls:c.tool_calls},finish_reason:null,logprobs:null}]});let j={id:f,object:"chat.completion.chunk",created:g,model:h,choices:[{index:0,delta:{},finish_reason:b.finish_reason||"stop",logprobs:null}]};return a.usage&&(j.usage=a.usage),i.push(j),new Response(new ReadableStream({start(a){for(let b of i)a.enqueue(e.encode(`data: ${JSON.stringify(b)}
29
29
 
30
- `));a.enqueue(e.encode("data: [DONE]\n\n")),a.close()}}),{headers:d.RK})}},92557:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.SB}),c(2607),c(13946),c(22830),c(92398),c(85577),c(69152),c(44602),c(54729),c(23095),c(90529),c(91392),c(28765);var e=c(36110);c(78963);var f=c(63548);c(15261),c(67860);var g=a([e,f]);[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},92913:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(23648),e=c(67860);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,apiKey:a.apiKey||null,apiKeyName:a.apiKeyName||null,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},94054:(a,b,c)=>{c.d(b,{J:()=>e,Q:()=>f});let d={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function e(a={},b={}){let c=(a["user-agent"]||"").toLowerCase(),d=(a["x-app"]||"").toLowerCase(),f=(a["openai-intent"]||"").toLowerCase(),g=(a["x-initiator"]||a["X-Initiator"]||"").toLowerCase();return"antigravity"===b.userAgent?"antigravity":c.includes("githubcopilotchat")||"conversation-panel"===f||"user"===g?"github-copilot":c.includes("claude-cli")||c.includes("claude-code")||"cli"===d?"claude":c.includes("gemini-cli")?"gemini-cli":c.includes("codex-cli")?"codex":c.includes("deepseek-tui")?"deepseek-tui":null}function f(a,b){if(!a)return!1;let c=d[a];if(!c)return!1;let e=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(e)}},98932:(a,b,c)=>{c.d(b,{BI:()=>D,fT:()=>F});let d=new Set(["node_modules",".git","target","__pycache__",".next","dist","build",".cache",".turbo",".vercel",".pytest_cache",".mypy_cache",".tox",".venv","venv","env","coverage",".nyc_output",".DS_Store","Thumbs.db",".idea",".vscode",".vs","*.egg-info",".eggs"]);function e(a,b=500){let c=[],d="",f=0,g=0,h=!1,i=0,j=0,k=!1;for(let e of a.split("\n")){if(e.startsWith("diff --git")){j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`);let a=e.split(" b/");d=a.length>1?a.slice(1).join(" b/"):"unknown",c.push(`
30
+ `));a.enqueue(e.encode("data: [DONE]\n\n")),a.close()}}),{headers:d.RK})}},92557:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{SB:()=>f.SB}),c(2607),c(13946),c(22830),c(92398),c(85577),c(69152),c(44602),c(54729),c(23095),c(87702),c(91392),c(28765);var e=c(36110);c(78963);var f=c(63548);c(15261),c(67860);var g=a([e,f]);[e,f]=g.then?(await g)():g,d()}catch(a){d(a)}})},92913:(a,b,c)=>{c.d(b,{$R:()=>i,Fo:()=>g,MK:()=>h,qr:()=>j});var d=c(23648),e=c(67860);let f=["temperature","top_p","top_k","max_tokens","max_completion_tokens","thinking","reasoning","enable_thinking","presence_penalty","frequency_penalty","seed","stop","tools","tool_choice","response_format","prediction","store","metadata","n","logprobs","top_logprobs","logit_bias","user","parallel_tool_calls"];function g(a,b){let c={messages:a.messages||[],model:a.model,stream:b};for(let b of f)void 0!==a[b]&&(c[b]=a[b]);return c}function h(a){return a&&"object"==typeof a?a.usage?.input_tokens!==void 0?{prompt_tokens:a.usage.input_tokens||0,completion_tokens:a.usage.output_tokens||0,cache_read_input_tokens:a.usage.cache_read_input_tokens,cache_creation_input_tokens:a.usage.cache_creation_input_tokens}:a.usage?.prompt_tokens!==void 0?{prompt_tokens:a.usage.prompt_tokens||0,completion_tokens:a.usage.completion_tokens||0,cached_tokens:a.usage.prompt_tokens_details?.cached_tokens,reasoning_tokens:a.usage.completion_tokens_details?.reasoning_tokens}:a.usageMetadata?{prompt_tokens:a.usageMetadata.promptTokenCount||0,completion_tokens:a.usageMetadata.candidatesTokenCount||0,reasoning_tokens:a.usageMetadata.thoughtsTokenCount}:null:null}function i(a,b={}){return{provider:a.provider||"unknown",model:a.model||"unknown",connectionId:a.connectionId||void 0,apiKey:a.apiKey||null,apiKeyName:a.apiKeyName||null,timestamp:new Date().toISOString(),latency:a.latency||{ttft:0,total:0},tokens:a.tokens||{prompt_tokens:0,completion_tokens:0},request:a.request,providerRequest:a.providerRequest||null,providerResponse:a.providerResponse||null,response:a.response||{},status:a.status||"success",...b}}function j({provider:a,model:b,tokens:c,connectionId:f,apiKey:g,endpoint:h,label:i="USAGE"}){if(!c||"object"!=typeof c)return;let k=c.input_tokens??c.prompt_tokens??0,l=c.output_tokens??c.completion_tokens??0;if(0===k&&0===l)return;let m=new Date().toLocaleTimeString("en-US",{hour12:!1,hour:"2-digit",minute:"2-digit",second:"2-digit"}),n=f?` | account=${f.slice(0,8)}...`:"";console.log(`${e.lm.green}[${m}] 📊 [${i}] ${a.toUpperCase()} | in=${k} | out=${l}${n}${e.lm.reset}`);let o={prompt_tokens:c.prompt_tokens??c.input_tokens??0,completion_tokens:c.completion_tokens??c.output_tokens??0};(0,d.sZ)({provider:a||"unknown",model:b||"unknown",tokens:o,timestamp:new Date().toISOString(),connectionId:f||void 0,apiKey:g||void 0,endpoint:h||null}).catch(()=>{})}},94054:(a,b,c)=>{c.d(b,{J:()=>e,Q:()=>f});let d={claude:["claude","anthropic"],"gemini-cli":["gemini-cli"],antigravity:["antigravity"],codex:["codex"]};function e(a={},b={}){let c=(a["user-agent"]||"").toLowerCase(),d=(a["x-app"]||"").toLowerCase(),f=(a["openai-intent"]||"").toLowerCase(),g=(a["x-initiator"]||a["X-Initiator"]||"").toLowerCase();return"antigravity"===b.userAgent?"antigravity":c.includes("githubcopilotchat")||"conversation-panel"===f||"user"===g?"github-copilot":c.includes("claude-cli")||c.includes("claude-code")||"cli"===d?"claude":c.includes("gemini-cli")?"gemini-cli":c.includes("codex-cli")?"codex":c.includes("deepseek-tui")?"deepseek-tui":null}function f(a,b){if(!a)return!1;let c=d[a];if(!c)return!1;let e=b.startsWith("anthropic-compatible")?"anthropic":b;return c.includes(e)}},98932:(a,b,c)=>{c.d(b,{BI:()=>D,fT:()=>F});let d=new Set(["node_modules",".git","target","__pycache__",".next","dist","build",".cache",".turbo",".vercel",".pytest_cache",".mypy_cache",".tox",".venv","venv","env","coverage",".nyc_output",".DS_Store","Thumbs.db",".idea",".vscode",".vs","*.egg-info",".eggs"]);function e(a,b=500){let c=[],d="",f=0,g=0,h=!1,i=0,j=0,k=!1;for(let e of a.split("\n")){if(e.startsWith("diff --git")){j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`);let a=e.split(" b/");d=a.length>1?a.slice(1).join(" b/"):"unknown",c.push(`
31
31
  ${d}`),f=0,g=0,h=!1,i=0}else e.startsWith("@@")?(j>0&&(c.push(` ... (${j} lines truncated)`),k=!0,j=0),h=!0,i=0,c.push(` ${e}`)):h&&(e.startsWith("+")&&!e.startsWith("+++")?(f+=1,i<100?(c.push(` ${e}`),i+=1):j+=1):e.startsWith("-")&&!e.startsWith("---")?(g+=1,i<100?(c.push(` ${e}`),i+=1):j+=1):i<100&&!e.startsWith("\\")&&i>0&&(c.push(` ${e}`),i+=1));if(c.length>=b){c.push("\n... (more changes truncated)"),k=!0;break}}return j>0&&(c.push(` ... (${j} lines truncated)`),k=!0),d&&(f>0||g>0)&&c.push(` +${f} -${g}`),k&&c.push("[full diff: rtk git diff --no-compact]"),c.join("\n")}function f(a){let b=a.split("\n");if(0===b.length||1===b.length&&!b[0].trim())return"Clean working tree";let c="",d=[],e=[],f=[],g=0,h=0,i=0,j=0;for(let a of b){if(!a.trim())continue;let b=a.match(/^On branch (\S+)/);if(b){c=b[1];continue}if(a.startsWith("##")){c=a.replace(/^##\s*/,"");continue}if(a.length>=3&&/^[ MADRCU?!][ MADRCU?!] /.test(a)){let b=a[0],c=a[1],k=a.slice(3);if("??"===a.slice(0,2)){i++,f.push(k);continue}"MADRC".includes(b)?(g++,d.push(k)):"U"===b&&j++,("M"===c||"D"===c)&&(h++,e.push(k));continue}let k=a.match(/^\s*(modified|new file|deleted|renamed|both modified):\s+(.+)$/);if(k){let a=k[1],b=k[2].trim();"both modified"===a?j++:"modified"===a||"deleted"===a?(h++,e.push(b)):("new file"===a||"renamed"===a)&&(g++,d.push(b));continue}}let k="";if(c&&(k+=`* ${c}
32
32
  `),g>0){for(let a of(k+=`+ Staged: ${g} files
33
33
  `,d.slice(0,10)))k+=` ${a}
@@ -1 +1 @@
1
- "use strict";exports.id=3424,exports.ids=[3424],exports.modules={2607:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(92398);let f=globalThis.fetch,g=new Map,h=new Map,i=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").flatMap(a=>{let b=a.trim().toLowerCase();return b?[b]:[]}).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function n(a){let b=k(a);if(!b)return null;try{return new URL(b),b}catch{return`http://${b}`}}async function o(a){let b=n(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(3398).then(c.t.bind(c,13398,19));g.set(b,new a({uri:b}))}return g.get(b)}async function p(a,b,e){let[f,g]=await Promise.all([Promise.resolve().then(c.t.bind(c,55591,23)),Promise.resolve().then(c.t.bind(c,91645,23))]),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${a.message}`)}return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},13946:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(68711);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},22830:(a,b,c)=>{c.d(b,{$V:()=>x,A9:()=>m,Cn:()=>n,Co:()=>w,Ic:()=>u,J5:()=>r,K:()=>s,NA:()=>z,Ox:()=>o,QH:()=>p,VK:()=>A,Wu:()=>y,go:()=>h,nZ:()=>t,no:()=>f,sX:()=>i,uR:()=>q,x0:()=>k,zv:()=>v});var d=c(21820),e=c(13946);function f(){return"0.1.39"}c(2607);let g=e.xq["gemini-cli"]?.cliVersion,h=e.xq["gemini-cli"]?.apiClient;function i(a="unknown"){let b;return`GeminiCLI/${g}/${a||"unknown"} (${(0,d.platform)()}; ${"ia32"===(b=(0,d.arch)())?"x86":b}; terminal)`}let j=e.xq.github?.copilot||{},k={VSCODE_VERSION:j.vscodeVersion,COPILOT_CHAT_VERSION:j.chatVersion,USER_AGENT:j.userAgent,API_VERSION:j.apiVersion};function l(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}function m(){return`antigravity/1.104.0 ${(0,d.platform)()}/${(0,d.arch)()}`}let n={ideType:9,platform:l(),pluginType:2},o={name:"x-request-source",value:"local"},p="_ide",q="_ide",r=new Set(["browser_subagent","command_status","find_by_name","generate_image","grep_search","list_dir","list_resources","multi_replace_file_content","notify_user","read_resource","read_terminal","read_url_content","replace_file_content","run_command","search_web","send_command_input","task_boundary","view_content_chunk","view_file","write_to_file"]),s={"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},t={loadCodeAssist:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUser:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser"},u={"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:9,platform:l(),pluginType:2})},v={ideType:9,platform:l(),pluginType:2},w="You are Claude Code, Anthropic's official CLI for Claude.",x="You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**",y=Object.fromEntries(Object.entries(e.sr).filter(([,a])=>a.refreshLeadMs).map(([a,b])=>[a,b.refreshLeadMs])),z={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:e.sr.codex?.tokenUrl,auth:e.sr.codex?.authorizeUrl},anthropic:{token:e.sr.claude?.tokenUrl,auth:"https://api.anthropic.com/v1/oauth/authorize"},qwen:{token:e.sr.qwen?.tokenUrl,auth:e.sr.qwen?.deviceCodeUrl},iflow:{token:e.sr.iflow?.tokenUrl,auth:e.sr.iflow?.authorizeUrl},github:{token:e.sr.github?.tokenUrl,auth:e.sr.github?.authorizeUrl,deviceCode:e.sr.github?.deviceCodeUrl}};function A(){return{"X-Msh-Platform":"9router","X-Msh-Version":"2.1.2","X-Msh-Device-Model":"u">typeof process?`${process.platform} ${process.arch}`:"unknown","X-Msh-Device-Id":`kimi-${Date.now()}`}}},28765:(a,b,c)=>{c.d(b,{Vq:()=>k,fp:()=>i});var d=c(91392),e=c(68711);let f=e.sr.codex?.maxRefreshAgeMs,g=new Map;function h(a){if(null==a||""===a)return null;if("number"==typeof a)return a<1e12?1e3*a:a;let b=new Date(a).getTime();return Number.isFinite(b)?b:null}function i(a,b,c=Date.now()){if(!b)return!1;let g=h(b?.expiresAt??b?.tokenExpiresAt);if(null!==g&&g-c<(0,d.Og)(a))return!0;let j=e.sr[a]?.maxRefreshAgeMs;return!!(j&&b.refreshToken&&function(a,b=Date.now(),c=f){let d=h(a?.lastRefreshAt??a?.lastRefresh??a?.providerSpecificData?.lastRefreshAt);return!d||b-d>=c}(b,c,j))}async function j(a,b,c){let d,e=(d=b?.connectionId||b?.id||b?.email||b?.name||b?.refreshToken?.slice?.(-16)||"default",`${a}:${d}`),f=g.get(e);if(f)return f;let h=Promise.resolve().then(c).finally(()=>{g.delete(e)});return g.set(e,h),h}async function k(a,b,c){return b?j(a,b,async()=>{let f=await (0,d.$B)(a,b,c);return function(a,b,c,f=Date.now()){var g,h;if(!c)return null;if((0,d.jT)(c))return c;let i={},j=new Date(f).toISOString();c.accessToken&&(i.accessToken=c.accessToken),c.apiKey&&(i.apiKey=c.apiKey),c.token&&(i.token=c.token);let k=c.refreshToken??b?.refreshToken;k&&(i.refreshToken=k);let l=c.idToken??b?.idToken;return l&&(i.idToken=l),c.expiresIn?(i.expiresIn=c.expiresIn,i.expiresAt=function(a,b=Date.now()){return a?new Date(b+1e3*a).toISOString():null}(c.expiresIn,f)):c.expiresAt&&(i.expiresAt=c.expiresAt),c.projectId&&(i.projectId=c.projectId),c.providerSpecificData&&(g=b?.providerSpecificData,i.providerSpecificData=(h=c.providerSpecificData)&&"object"==typeof h?{...g||{},...h}:g),c.copilotToken&&(i.copilotToken=c.copilotToken),c.copilotTokenExpiresAt&&(i.copilotTokenExpiresAt=c.copilotTokenExpiresAt),(e.sr[a]?.trackRefreshAt||i.accessToken||i.apiKey||i.token||i.refreshToken||i.copilotToken)&&(i.lastRefreshAt=c.lastRefreshAt||j),i}(a,b,f)}):null}},91392:(a,b,c)=>{c.d(b,{oD:()=>w,Og:()=>y,jT:()=>x,Sc:()=>z,jR:()=>u,I9:()=>n,Ql:()=>r,$B:()=>E,pb:()=>B,qZ:()=>F});var d=c(13946),e=c(22830),f=c(2607);let g=new Map;async function h(a,b,c,d){if(!b)return c();let e=`${a}:${b}`,f=g.get(e);if(f){if(f.promise)return d?.info?.("TOKEN_REFRESH",`Reusing in-flight refresh for ${a}`),f.promise;if(f.expiresAt>Date.now())return d?.info?.("TOKEN_REFRESH",`Reusing recent refresh result for ${a}`),f.result;g.delete(e)}let h=(async()=>{try{let a=await c();return g.set(e,{result:a,expiresAt:Date.now()+1e4}),a}catch(a){throw g.delete(e),a}})();return g.set(e,{promise:h}),h}var i=c(91550);let j=null;async function k(a,b){return a?h("xai",a,async()=>{try{j||(j=new(await Promise.all([c.e(4105),c.e(715)]).then(c.bind(c,10715))).XaiService);let b=await j.refreshAccessToken(a);return{accessToken:b.access_token,refreshToken:b.refresh_token||a,expiresIn:b.expires_in,idToken:b.id_token}}catch(c){b?.warn?.("TOKEN_REFRESH",`xai refresh failed: ${c?.message||c}`);let a=String(c?.message||"");if(a.includes("invalid_grant")||a.includes("invalid_request"))return{error:"invalid_grant"};return null}},b):null}async function l(a,b,c,e){let f=d.xq[a];return f&&f.refreshUrl?b?h(a,b,async()=>{try{let c=await fetch(f.refreshUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:b,client_id:f.clientId,client_secret:f.clientSecret})});if(!c.ok){let b=await c.text();return e?.error?.("TOKEN_REFRESH",`Failed to refresh token for ${a}`,{status:c.status,error:b}),null}let d=await c.json();return e?.info?.("TOKEN_REFRESH",`Successfully refreshed token for ${a}`,{hasNewAccessToken:!!d.access_token,hasNewRefreshToken:!!d.refresh_token,expiresIn:d.expires_in}),{accessToken:d.access_token,refreshToken:d.refresh_token||b,expiresIn:d.expires_in}}catch(b){return e?.error?.("TOKEN_REFRESH",`Error refreshing token for ${a}`,{error:b.message}),null}},e):(e?.warn?.("TOKEN_REFRESH",`No refresh token available for provider: ${a}`),null):(e?.warn?.("TOKEN_REFRESH",`No refresh URL configured for provider: ${a}`),null)}async function m(a,b){return a?h("claude",a,async()=>{try{let c=await fetch(e.NA.anthropic.token,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.claude.clientId})});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Claude OAuth token",{status:c.status,error:a}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Claude OAuth token",{hasNewAccessToken:!!f.access_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Claude token: ${a.message}`),null}},b):null}async function n(a,b,c,d){return a?h(`google:${b}`,a,async()=>{try{let f=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:b,client_secret:c})});if(!f.ok){let a=await f.text();return d?.error?.("TOKEN_REFRESH","Failed to refresh Google token",{status:f.status,error:a}),null}let g=await f.json();return d?.info?.("TOKEN_REFRESH","Successfully refreshed Google token",{hasNewAccessToken:!!g.access_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}catch(a){return d?.error?.("TOKEN_REFRESH",`Network error refreshing Google token: ${a.message}`),null}},d):null}async function o(a,b){return a?h("qwen",a,async()=>{let c=e.NA.qwen.token;try{let e=await fetch(c,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.qwen.clientId})});if(200===e.status){let c=await e.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qwen token",{hasNewAccessToken:!!c.access_token,hasNewRefreshToken:!!c.refresh_token,expiresIn:c.expires_in}),{accessToken:c.access_token,refreshToken:c.refresh_token||a,expiresIn:c.expires_in,providerSpecificData:c.resource_url?{resourceUrl:c.resource_url}:void 0}}{let a=await e.text().catch(()=>"");b?.warn?.("TOKEN_REFRESH","Error with Qwen endpoint",{status:e.status,error:a})}}catch(a){b?.warn?.("TOKEN_REFRESH","Network error trying Qwen endpoint",{error:a.message})}return b?.error?.("TOKEN_REFRESH","Failed to refresh Qwen token"),null},b):null}async function p(a,b){return a?h("codex",a,async()=>{try{let c=await fetch(e.NA.openai.token,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:d.xq.codex.clientId,grant_type:"refresh_token",refresh_token:a})});if(!c.ok){let a=await c.text(),d=function(a="",b=0){let c=null;try{c=a?JSON.parse(a):null}catch{c=null}let d=c?.error?.code||c?.error||c?.error_code||"",e=c?.error_description||c?.message||a||"",f=`${d} ${e}`.toLowerCase();return{status:b,code:d,description:e,permanent:["refresh_token_expired","refresh_token_reused","refresh_token_invalidated","invalid_grant"].some(a=>f.includes(a))}}(a,c.status);if(d.permanent)return b?.error?.("TOKEN_REFRESH","Codex refresh token already used or invalid. Re-auth required.",{status:c.status,code:d.code}),{error:"unrecoverable_refresh_error",code:d.code};return b?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:c.status,error:a,code:d.code,permanent:d.permanent}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,hasIdToken:!!f.id_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,idToken:f.id_token,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${a.message}`),null}},b):null}async function q(a,b,d){if(a?.profileArn)return{};let e=d?.trim?.()||null;if(!e){let{fetchKiroProfileArn:a}=await Promise.all([c.e(3398),c.e(7010),c.e(7916),c.e(3133),c.e(4418),c.e(4574),c.e(2557),c.e(6975),c.e(6085)]).then(c.bind(c,96975));e=await a(b)}return e?{providerSpecificData:{profileArn:e}}:{}}async function r(a,b,c,e=null){return a?h("kiro",a,async()=>{let g=b?.authMethod,h=b?.clientId,j=b?.clientSecret,k=b?.region;if("external_idp"===g){let d;try{d=(0,i.uo)(a,b)}catch(a){return c?.warn?.("TOKEN_REFRESH",`Invalid Kiro external_idp refresh config: ${a.message}`),null}let g=await (0,f.proxyAwareFetch)(d.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:d.body},e);if(!g.ok){let a=await g.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro external_idp token",{status:g.status,error:a}),null}let h=await g.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro external_idp token",{hasNewAccessToken:!!h.access_token,hasNewRefreshToken:!!h.refresh_token,expiresIn:h.expires_in}),{accessToken:h.access_token,refreshToken:h.refresh_token||a,expiresIn:h.expires_in,providerSpecificData:d.providerSpecificData}}if(h&&j){let d="idc"===g&&k?`https://oidc.${k}.amazonaws.com/token`:"https://oidc.us-east-1.amazonaws.com/token",i=await (0,f.proxyAwareFetch)(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:h,clientSecret:j,refreshToken:a,grantType:"refresh_token"})},e);if(!i.ok){let a=await i.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro AWS token",{status:i.status,error:a}),null}let l=await i.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro AWS token",{hasNewAccessToken:!!l.accessToken,expiresIn:l.expiresIn}),{accessToken:l.accessToken,refreshToken:l.refreshToken||a,expiresIn:l.expiresIn,...await q(b,l.accessToken,l.profileArn)}}let l=await (0,f.proxyAwareFetch)(d.xq.kiro.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:a})},e);if(!l.ok){let a=await l.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro social token",{status:l.status,error:a}),null}let m=await l.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro social token",{hasNewAccessToken:!!m.accessToken,expiresIn:m.expiresIn}),{accessToken:m.accessToken,refreshToken:m.refreshToken||a,expiresIn:m.expiresIn,...await q(b,m.accessToken,m.profileArn)}},c):null}async function s(a,b){return a?h("iflow",a,async()=>{let c=btoa(`${d.xq.iflow.clientId}:${d.xq.iflow.clientSecret}`),f=await fetch(e.NA.iflow.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${c}`},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.iflow.clientId,client_secret:d.xq.iflow.clientSecret})});if(!f.ok){let a=await f.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh iFlow token",{status:f.status,error:a}),null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed iFlow token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}},b):null}async function t(a,b){return a?h("github",a,async()=>{let c={grant_type:"refresh_token",refresh_token:a,client_id:d.xq.github.clientId};d.xq.github.clientSecret&&(c.client_secret=d.xq.github.clientSecret);let f=await fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams(c)});if(!f.ok){let a=await f.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh GitHub token",{status:f.status,error:a}),null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed GitHub token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}},b):null}async function u(a,b){return a?h("copilot",a,async()=>{try{let c=await fetch(d.sr.github?.copilotTokenUrl,{headers:{Authorization:`token ${a}`,"User-Agent":e.x0.USER_AGENT,"Editor-Version":`vscode/${e.x0.VSCODE_VERSION}`,"Editor-Plugin-Version":`copilot-chat/${e.x0.COPILOT_CHAT_VERSION}`,Accept:"application/json","x-github-api-version":e.x0.API_VERSION}});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Copilot token",{status:c.status,error:a}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Copilot token",{hasToken:!!f.token,expiresAt:f.expires_at}),{token:f.token,expiresAt:f.expires_at}}catch(a){return b?.error?.("TOKEN_REFRESH","Error refreshing Copilot token",{error:a.message}),null}},b):null}async function v(a,b){return a?h("codebuddy-cn",a,async()=>{let c=d.sr["codebuddy-cn"]||{},e=await fetch(c.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":c.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-Refresh-Token":a,"X-Auth-Refresh-Source":"plugin","X-Product":"SaaS"},body:"{}"});if(!e.ok){let a=await e.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh CodeBuddy token",{status:e.status,error:a}),null}let f=await e.json();return 0===f.code&&f.data?.accessToken?(b?.info?.("TOKEN_REFRESH","Successfully refreshed CodeBuddy token",{hasNewAccessToken:!!f.data.accessToken,hasNewRefreshToken:!!f.data.refreshToken,expiresIn:f.data.expiresIn}),{accessToken:f.data.accessToken,refreshToken:f.data.refreshToken||a,expiresIn:f.data.expiresIn}):(b?.error?.("TOKEN_REFRESH","CodeBuddy token refresh returned no token",{code:f.code,msg:f.msg}),null)},b):null}let w=3e5;function x(a){return a&&"object"==typeof a&&("unrecoverable_refresh_error"===a.error||"refresh_token_reused"===a.error||"invalid_request"===a.error||"invalid_grant"===a.error)}function y(a){return e.Wu[a]||w}function z(a){if("string"!=typeof a)return null;try{let b=JSON.parse(a);if("service_account"===b.type&&b.client_email&&b.private_key&&b.project_id)return b;return null}catch{return null}}let A=new Map;async function B(a,b){let d=a.client_email,f=A.get(d);if(f&&f.expiresAt-Date.now()>3e5)return{accessToken:f.token,expiresAt:f.expiresAt};try{let{SignJWT:f,importPKCS8:g}=await Promise.all([c.e(5924),c.e(7947)]).then(c.bind(c,87947));b?.debug?.("TOKEN_REFRESH",`Vertex minting token for ${a.client_email}`);let h=await g(a.private_key.replace(/\\n/g,"\n"),"RS256"),i=Math.floor(Date.now()/1e3),j=await new f({scope:"https://www.googleapis.com/auth/cloud-platform"}).setProtectedHeader({alg:"RS256"}).setIssuer(a.client_email).setAudience(e.NA.google.token).setIssuedAt(i).setExpirationTime(i+3600).sign(h),k=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:j})});if(!k.ok){let a=await k.text();return b?.error?.("TOKEN_REFRESH",`Vertex token mint failed: ${a}`),null}let{access_token:l,expires_in:m}=await k.json(),n=Date.now()+(m??3600)*1e3;return A.set(d,{token:l,expiresAt:n}),b?.info?.("TOKEN_REFRESH",`Vertex token minted for ${a.client_email}`),{accessToken:l,expiresAt:n}}catch(a){return b?.error?.("TOKEN_REFRESH",`Vertex token error: ${a.message}`),null}}function C(a,b){let c=z(a.apiKey);return c?B(c,b):null}let D={"gemini-cli":(a,b)=>n(a.refreshToken,d.xq["gemini-cli"].clientId,d.xq["gemini-cli"].clientSecret,b),antigravity:(a,b)=>n(a.refreshToken,d.xq.antigravity.clientId,d.xq.antigravity.clientSecret,b),claude:(a,b)=>m(a.refreshToken,b),codex:(a,b)=>p(a.refreshToken,b),qwen:(a,b)=>o(a.refreshToken,b),iflow:(a,b)=>s(a.refreshToken,b),github:(a,b)=>t(a.refreshToken,b),kiro:(a,b)=>r(a.refreshToken,a.providerSpecificData,b),xai:(a,b)=>k(a.refreshToken,b),"codebuddy-cn":(a,b)=>v(a.refreshToken,b),vertex:C,"vertex-partner":C};async function E(a,b,c){if(!b.refreshToken)return null;let d=D[a];return d?d(b,c):l(a,b.refreshToken,b,c)}async function F(a,b=3,c=null){async function d(e){if(e>0){let a=1e3*e;c?.debug?.("TOKEN_REFRESH",`Retry ${e}/${b} after ${a}ms`),await new Promise(b=>setTimeout(b,a))}try{let b=await a();if(b)return b}catch(a){c?.warn?.("TOKEN_REFRESH",`Attempt ${e+1}/${b} failed: ${a.message}`)}return e+1>=b?(c?.error?.("TOKEN_REFRESH",`All ${b} retry attempts failed`),null):d(e+1)}return d(0)}},91550:(a,b,c)=>{c.d(b,{Xj:()=>i,uo:()=>j});let d=new Set(["login.microsoftonline.com","login.microsoft.com","login.windows.net"]);function e(a){return"string"==typeof a?a.trim():""}function f(a){let b,c=e(a);if(!c)throw Error("token_endpoint is required");try{b=new URL(c)}catch{throw Error("token_endpoint must be a valid URL")}if("https:"!==b.protocol)throw Error("token_endpoint must use https");let f=b.hostname.toLowerCase();if(!d.has(f))throw Error("token_endpoint must be a Microsoft login endpoint");return b.toString()}function g(a){return Array.isArray(a)?a.map(e).filter(Boolean).join(" "):e(a)}function h(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4;return JSON.parse(Buffer.from(`${c}${"=".repeat(d)}`,"base64").toString("utf8"))}catch{return null}}function i(a){let b=a;if("string"==typeof b)try{b=JSON.parse(b)}catch{throw Error("CLIProxyAPI auth JSON is invalid")}if(!b||"object"!=typeof b)throw Error("CLIProxyAPI auth JSON is required");let c=e(b.auth_method||b.authMethod);if(c&&"external_idp"!==c)throw Error("Only external_idp Kiro auth is supported by this importer");let d=e(b.access_token||b.accessToken),i=e(b.refresh_token||b.refreshToken),j=e(b.client_id||b.clientId),k=f(b.token_endpoint||b.tokenEndpoint),l=e(b.profile_arn||b.profileArn),m=e(b.region)||"us-east-1",n=g(b.scopes||b.scope);if(!d)throw Error("access_token is required");if(!i)throw Error("refresh_token is required");if(!j)throw Error("client_id is required");if(!n)throw Error("scopes is required");if(!l)throw Error("profile_arn is required");let o=h(d),p=b.email||o?.email||o?.preferred_username||o?.upn||o?.sub||null;return{accessToken:d,refreshToken:i,expiresAt:function(a){let b=a.expired||a.expires_at||a.expiresAt;if(b){let a=new Date(b).getTime();if(Number.isFinite(a))return new Date(a).toISOString()}let c=Number(a.expires_in||a.expiresIn||0);if(Number.isFinite(c)&&c>0)return new Date(Date.now()+1e3*c).toISOString();let d=h(a.access_token||a.accessToken);return d?.exp?new Date(1e3*d.exp).toISOString():new Date(Date.now()+36e5).toISOString()}(b),email:p,providerSpecificData:{profileArn:l,region:m,authMethod:"external_idp",provider:"CLIProxyAPI",clientId:j,tokenEndpoint:k,scope:n}}}function j(a,b={}){let c=e(b.clientId||b.client_id),d=f(b.tokenEndpoint||b.token_endpoint),h=g(b.scope||b.scopes);if(!a)throw Error("refresh token is required");if(!c)throw Error("clientId is required for external_idp refresh");if(!h)throw Error("scope is required for external_idp refresh");return{tokenEndpoint:d,body:new URLSearchParams({grant_type:"refresh_token",client_id:c,refresh_token:a,scope:h}),providerSpecificData:{...b,authMethod:"external_idp",clientId:c,tokenEndpoint:d,scope:h}}}},94164:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(45479)}};
1
+ "use strict";exports.id=3424,exports.ids=[3424],exports.modules={2607:(a,b,c)=>{c.d(b,{proxyAwareFetch:()=>q});var d=c(27910),e=c(92398);let f=globalThis.fetch,g=new Map,h=new Map,i=["cloudcode-pa.googleapis.com","daily-cloudcode-pa.googleapis.com","api.individual.githubcopilot.com","q.us-east-1.amazonaws.com","codewhisperer.us-east-1.amazonaws.com","api2.cursor.sh"],j=["8.8.8.8","8.8.4.4"];function k(a){return null==a?"":String(a).trim()}async function l(a){let b=h.get(a);if(b&&Date.now()<b.expiry)return b.ip;try{let b=await Promise.resolve().then(c.t.bind(c,14985,23)),{promisify:d}=await Promise.resolve().then(c.t.bind(c,28354,23)),f=new b.Resolver;f.setServers(j);let g=d(f.resolve4.bind(f)),i=await g(a);return h.set(a,{ip:i[0],expiry:Date.now()+e.v1.dnsCacheTtlMs}),i[0]}catch(b){return console.warn(`[ProxyFetch] DNS resolve failed for ${a}:`,b.message),null}}function m(a,b){let c,d=k(b);if(!d)return!1;try{c=new URL(a).hostname.toLowerCase()}catch{return!1}return d.split(",").flatMap(a=>{let b=a.trim().toLowerCase();return b?[b]:[]}).some(a=>"*"===a||(a.startsWith(".")?c.endsWith(a)||c===a.slice(1):c===a||c.endsWith(`.${a}`)))}function n(a){let b=k(a);if(!b)return null;try{return new URL(b),b}catch{return`http://${b}`}}async function o(a){let b=n(a);if(!b)return null;if(!g.has(b)){g.size>=e.v1.proxyDispatchersMaxSize&&g.delete(g.keys().next().value);let{ProxyAgent:a}=await c.e(3398).then(c.t.bind(c,13398,19));g.set(b,new a({uri:b}))}return g.get(b)}async function p(a,b,e){let[f,g]=await Promise.all([Promise.resolve().then(c.t.bind(c,55591,23)),Promise.resolve().then(c.t.bind(c,91645,23))]),h=f.default??f,i=g.default??g;return new Promise((c,f)=>{let g=new i.Socket;g.connect(443,b,()=>{let b={socket:g,servername:a.hostname,path:a.pathname+a.search,method:e.method||"POST",headers:{...e.headers,Host:a.hostname}},i=h.request(b,a=>{let b={ok:a.statusCode>=200&&a.statusCode<300,status:a.statusCode,statusText:a.statusMessage,headers:new Map(Object.entries(a.headers)),body:d.Readable.toWeb(a),text:async()=>{let b=[];for await(let c of a)b.push(c);return Buffer.concat(b).toString()},json:async()=>JSON.parse(await b.text())};c(b)});i.on("error",f),e.body&&i.write("string"==typeof e.body?e.body:JSON.stringify(e.body)),i.end()}),g.on("error",f)})}async function q(a,b={},c=null){let d="string"==typeof a?a:a.toString(),e=k(c?.vercelRelayUrl);if(e){let a=new URL(d),c={...b.headers,"x-relay-target":`${a.protocol}//${a.host}`,"x-relay-path":`${a.pathname}${a.search}`};return f(e,{...b,headers:c})}let g=function(a,b){if(b?.enabled!==!0&&b?.connectionProxyEnabled!==!0)return null;let c=k(b?.url??b?.connectionProxyUrl);if(!c)return null;let d=k(b?.noProxy??b?.connectionNoProxy);return d&&m(a,d)?null:n(c)}(d,c),h=g?null:n(function(a){let b;if(m(a,process.env.NO_PROXY||process.env.no_proxy))return null;try{b=new URL(a).protocol}catch{return null}return"https:"===b?process.env.HTTPS_PROXY||process.env.https_proxy||process.env.ALL_PROXY||process.env.all_proxy:process.env.HTTP_PROXY||process.env.http_proxy||process.env.ALL_PROXY||process.env.all_proxy}(d)),j=g||h;if(function(a){try{let b=new URL(a).hostname;return i.some(a=>b.includes(a))}catch{return!1}}(d)){if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct bypass: ${a.message}`)}try{let a=new URL(d),c=await l(a.hostname);if(c)return await p(a,c,b)}catch(a){console.warn(`[ProxyFetch] MITM bypass failed: ${a.message}`)}}if(j)try{let c=await o(j);return await f(a,{...b,dispatcher:c})}catch(a){if(c?.strictProxy===!0)throw Error(`[ProxyFetch] Proxy required but failed (strictProxy=true): ${a.message}`);console.warn(`[ProxyFetch] Proxy failed, falling back to direct: ${a.message}`)}return f(a,b)}async function r(a,b={}){return q(a,b,null)}globalThis.fetch!==r&&(globalThis.fetch=r)},13946:(a,b,c)=>{c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(68711);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},22830:(a,b,c)=>{c.d(b,{$V:()=>x,A9:()=>m,Cn:()=>n,Co:()=>w,Ic:()=>u,J5:()=>r,K:()=>s,NA:()=>z,Ox:()=>o,QH:()=>p,VK:()=>A,Wu:()=>y,go:()=>h,nZ:()=>t,no:()=>f,sX:()=>i,uR:()=>q,x0:()=>k,zv:()=>v});var d=c(21820),e=c(13946);function f(){return"0.1.39"}c(2607);let g=e.xq["gemini-cli"]?.cliVersion,h=e.xq["gemini-cli"]?.apiClient;function i(a="unknown"){let b;return`GeminiCLI/${g}/${a||"unknown"} (${(0,d.platform)()}; ${"ia32"===(b=(0,d.arch)())?"x86":b}; terminal)`}let j=e.xq.github?.copilot||{},k={VSCODE_VERSION:j.vscodeVersion,COPILOT_CHAT_VERSION:j.chatVersion,USER_AGENT:j.userAgent,API_VERSION:j.apiVersion};function l(){let a=(0,d.platform)(),b=(0,d.arch)();return"darwin"===a?"arm64"===b?2:1:"linux"===a?"arm64"===b?4:3:5*("win32"===a)}function m(){return`antigravity/1.104.0 ${(0,d.platform)()}/${(0,d.arch)()}`}let n={ideType:9,platform:l(),pluginType:2},o={name:"x-request-source",value:"local"},p="_ide",q="_ide",r=new Set(["browser_subagent","command_status","find_by_name","generate_image","grep_search","list_dir","list_resources","multi_replace_file_content","notify_user","read_resource","read_terminal","read_url_content","replace_file_content","run_command","search_web","send_command_input","task_boundary","view_content_chunk","view_file","write_to_file"]),s={"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},t={loadCodeAssist:"https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",onboardUser:"https://cloudcode-pa.googleapis.com/v1internal:onboardUser"},u={"Content-Type":"application/json","User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"google-cloud-sdk vscode_cloudshelleditor/0.1","Client-Metadata":JSON.stringify({ideType:9,platform:l(),pluginType:2})},v={ideType:9,platform:l(),pluginType:2},w="You are Claude Code, Anthropic's official CLI for Claude.",x="You are Antigravity, a powerful agentic AI coding assistant designed by the Google Deepmind team working on Advanced Agentic Coding.You are pair programming with a USER to solve their coding task. The task may require creating a new codebase, modifying or debugging an existing codebase, or simply answering a question.**Absolute paths only****Proactiveness**",y=Object.fromEntries(Object.entries(e.sr).filter(([,a])=>a.refreshLeadMs).map(([a,b])=>[a,b.refreshLeadMs])),z={google:{token:"https://oauth2.googleapis.com/token",auth:"https://accounts.google.com/o/oauth2/auth"},openai:{token:e.sr.codex?.tokenUrl,auth:e.sr.codex?.authorizeUrl},anthropic:{token:e.sr.claude?.tokenUrl,auth:"https://api.anthropic.com/v1/oauth/authorize"},qwen:{token:e.sr.qwen?.tokenUrl,auth:e.sr.qwen?.deviceCodeUrl},iflow:{token:e.sr.iflow?.tokenUrl,auth:e.sr.iflow?.authorizeUrl},github:{token:e.sr.github?.tokenUrl,auth:e.sr.github?.authorizeUrl,deviceCode:e.sr.github?.deviceCodeUrl}};function A(){return{"X-Msh-Platform":"9router","X-Msh-Version":"2.1.2","X-Msh-Device-Model":"u">typeof process?`${process.platform} ${process.arch}`:"unknown","X-Msh-Device-Id":`kimi-${Date.now()}`}}},28765:(a,b,c)=>{c.d(b,{Vq:()=>k,fp:()=>i});var d=c(91392),e=c(68711);let f=e.sr.codex?.maxRefreshAgeMs,g=new Map;function h(a){if(null==a||""===a)return null;if("number"==typeof a)return a<1e12?1e3*a:a;let b=new Date(a).getTime();return Number.isFinite(b)?b:null}function i(a,b,c=Date.now()){if(!b)return!1;let g=h(b?.expiresAt??b?.tokenExpiresAt);if(null!==g&&g-c<(0,d.Og)(a))return!0;let j=e.sr[a]?.maxRefreshAgeMs;return!!(j&&b.refreshToken&&function(a,b=Date.now(),c=f){let d=h(a?.lastRefreshAt??a?.lastRefresh??a?.providerSpecificData?.lastRefreshAt);return!d||b-d>=c}(b,c,j))}async function j(a,b,c){let d,e=(d=b?.connectionId||b?.id||b?.email||b?.name||b?.refreshToken?.slice?.(-16)||"default",`${a}:${d}`),f=g.get(e);if(f)return f;let h=Promise.resolve().then(c).finally(()=>{g.delete(e)});return g.set(e,h),h}async function k(a,b,c){return b?j(a,b,async()=>{let f=await (0,d.$B)(a,b,c);return function(a,b,c,f=Date.now()){var g,h;if(!c)return null;if((0,d.jT)(c))return c;let i={},j=new Date(f).toISOString();c.accessToken&&(i.accessToken=c.accessToken),c.apiKey&&(i.apiKey=c.apiKey),c.token&&(i.token=c.token);let k=c.refreshToken??b?.refreshToken;k&&(i.refreshToken=k);let l=c.idToken??b?.idToken;return l&&(i.idToken=l),c.expiresIn?(i.expiresIn=c.expiresIn,i.expiresAt=function(a,b=Date.now()){return a?new Date(b+1e3*a).toISOString():null}(c.expiresIn,f)):c.expiresAt&&(i.expiresAt=c.expiresAt),c.projectId&&(i.projectId=c.projectId),c.providerSpecificData&&(g=b?.providerSpecificData,i.providerSpecificData=(h=c.providerSpecificData)&&"object"==typeof h?{...g||{},...h}:g),c.copilotToken&&(i.copilotToken=c.copilotToken),c.copilotTokenExpiresAt&&(i.copilotTokenExpiresAt=c.copilotTokenExpiresAt),(e.sr[a]?.trackRefreshAt||i.accessToken||i.apiKey||i.token||i.refreshToken||i.copilotToken)&&(i.lastRefreshAt=c.lastRefreshAt||j),i}(a,b,f)}):null}},91392:(a,b,c)=>{c.d(b,{oD:()=>w,Og:()=>y,jT:()=>x,Sc:()=>z,jR:()=>u,I9:()=>n,Ql:()=>r,$B:()=>E,pb:()=>B,qZ:()=>F});var d=c(13946),e=c(22830),f=c(2607);let g=new Map;async function h(a,b,c,d){if(!b)return c();let e=`${a}:${b}`,f=g.get(e);if(f){if(f.promise)return d?.info?.("TOKEN_REFRESH",`Reusing in-flight refresh for ${a}`),f.promise;if(f.expiresAt>Date.now())return d?.info?.("TOKEN_REFRESH",`Reusing recent refresh result for ${a}`),f.result;g.delete(e)}let h=(async()=>{try{let a=await c();return g.set(e,{result:a,expiresAt:Date.now()+1e4}),a}catch(a){throw g.delete(e),a}})();return g.set(e,{promise:h}),h}var i=c(91550);let j=null;async function k(a,b){return a?h("xai",a,async()=>{try{j||(j=new(await Promise.all([c.e(4105),c.e(715)]).then(c.bind(c,10715))).XaiService);let b=await j.refreshAccessToken(a);return{accessToken:b.access_token,refreshToken:b.refresh_token||a,expiresIn:b.expires_in,idToken:b.id_token}}catch(c){b?.warn?.("TOKEN_REFRESH",`xai refresh failed: ${c?.message||c}`);let a=String(c?.message||"");if(a.includes("invalid_grant")||a.includes("invalid_request"))return{error:"invalid_grant"};return null}},b):null}async function l(a,b,c,e){let f=d.xq[a];return f&&f.refreshUrl?b?h(a,b,async()=>{try{let c=await fetch(f.refreshUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:b,client_id:f.clientId,client_secret:f.clientSecret})});if(!c.ok){let b=await c.text();return e?.error?.("TOKEN_REFRESH",`Failed to refresh token for ${a}`,{status:c.status,error:b}),null}let d=await c.json();return e?.info?.("TOKEN_REFRESH",`Successfully refreshed token for ${a}`,{hasNewAccessToken:!!d.access_token,hasNewRefreshToken:!!d.refresh_token,expiresIn:d.expires_in}),{accessToken:d.access_token,refreshToken:d.refresh_token||b,expiresIn:d.expires_in}}catch(b){return e?.error?.("TOKEN_REFRESH",`Error refreshing token for ${a}`,{error:b.message}),null}},e):(e?.warn?.("TOKEN_REFRESH",`No refresh token available for provider: ${a}`),null):(e?.warn?.("TOKEN_REFRESH",`No refresh URL configured for provider: ${a}`),null)}async function m(a,b){return a?h("claude",a,async()=>{try{let c=await fetch(e.NA.anthropic.token,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.claude.clientId})});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Claude OAuth token",{status:c.status,error:a}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Claude OAuth token",{hasNewAccessToken:!!f.access_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Claude token: ${a.message}`),null}},b):null}async function n(a,b,c,d){return a?h(`google:${b}`,a,async()=>{try{let f=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:b,client_secret:c})});if(!f.ok){let a=await f.text();return d?.error?.("TOKEN_REFRESH","Failed to refresh Google token",{status:f.status,error:a}),null}let g=await f.json();return d?.info?.("TOKEN_REFRESH","Successfully refreshed Google token",{hasNewAccessToken:!!g.access_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}}catch(a){return d?.error?.("TOKEN_REFRESH",`Network error refreshing Google token: ${a.message}`),null}},d):null}async function o(a,b){return a?h("qwen",a,async()=>{let c=e.NA.qwen.token;try{let e=await fetch(c,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.qwen.clientId})});if(200===e.status){let c=await e.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Qwen token",{hasNewAccessToken:!!c.access_token,hasNewRefreshToken:!!c.refresh_token,expiresIn:c.expires_in}),{accessToken:c.access_token,refreshToken:c.refresh_token||a,expiresIn:c.expires_in,providerSpecificData:c.resource_url?{resourceUrl:c.resource_url}:void 0}}{let a=await e.text().catch(()=>"");b?.warn?.("TOKEN_REFRESH","Error with Qwen endpoint",{status:e.status,error:a})}}catch(a){b?.warn?.("TOKEN_REFRESH","Network error trying Qwen endpoint",{error:a.message})}return b?.error?.("TOKEN_REFRESH","Failed to refresh Qwen token"),null},b):null}async function p(a,b){return a?h("codex",a,async()=>{try{let c=await fetch(e.NA.openai.token,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:d.xq.codex.clientId,grant_type:"refresh_token",refresh_token:a})});if(!c.ok){let a=await c.text(),d=function(a="",b=0){let c=null;try{c=a?JSON.parse(a):null}catch{c=null}let d=c?.error?.code||c?.error||c?.error_code||"",e=c?.error_description||c?.message||a||"",f=`${d} ${e}`.toLowerCase();return{status:b,code:d,description:e,permanent:["refresh_token_expired","refresh_token_reused","refresh_token_invalidated","invalid_grant"].some(a=>f.includes(a))}}(a,c.status);if(d.permanent)return b?.error?.("TOKEN_REFRESH","Codex refresh token already used or invalid. Re-auth required.",{status:c.status,code:d.code}),{error:"unrecoverable_refresh_error",code:d.code};return b?.error?.("TOKEN_REFRESH","Failed to refresh Codex token",{status:c.status,error:a,code:d.code,permanent:d.permanent}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Codex token",{hasNewAccessToken:!!f.access_token,hasNewRefreshToken:!!f.refresh_token,hasIdToken:!!f.id_token,expiresIn:f.expires_in}),{accessToken:f.access_token,refreshToken:f.refresh_token||a,idToken:f.id_token,expiresIn:f.expires_in}}catch(a){return b?.error?.("TOKEN_REFRESH",`Network error refreshing Codex token: ${a.message}`),null}},b):null}async function q(a,b,d){if(a?.profileArn)return{};let e=d?.trim?.()||null;if(!e){let{fetchKiroProfileArn:a}=await Promise.all([c.e(3398),c.e(7010),c.e(7916),c.e(404),c.e(4418),c.e(4574),c.e(2557),c.e(6975),c.e(6085)]).then(c.bind(c,96975));e=await a(b)}return e?{providerSpecificData:{profileArn:e}}:{}}async function r(a,b,c,e=null){return a?h("kiro",a,async()=>{let g=b?.authMethod,h=b?.clientId,j=b?.clientSecret,k=b?.region;if("external_idp"===g){let d;try{d=(0,i.uo)(a,b)}catch(a){return c?.warn?.("TOKEN_REFRESH",`Invalid Kiro external_idp refresh config: ${a.message}`),null}let g=await (0,f.proxyAwareFetch)(d.tokenEndpoint,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:d.body},e);if(!g.ok){let a=await g.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro external_idp token",{status:g.status,error:a}),null}let h=await g.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro external_idp token",{hasNewAccessToken:!!h.access_token,hasNewRefreshToken:!!h.refresh_token,expiresIn:h.expires_in}),{accessToken:h.access_token,refreshToken:h.refresh_token||a,expiresIn:h.expires_in,providerSpecificData:d.providerSpecificData}}if(h&&j){let d="idc"===g&&k?`https://oidc.${k}.amazonaws.com/token`:"https://oidc.us-east-1.amazonaws.com/token",i=await (0,f.proxyAwareFetch)(d,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({clientId:h,clientSecret:j,refreshToken:a,grantType:"refresh_token"})},e);if(!i.ok){let a=await i.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro AWS token",{status:i.status,error:a}),null}let l=await i.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro AWS token",{hasNewAccessToken:!!l.accessToken,expiresIn:l.expiresIn}),{accessToken:l.accessToken,refreshToken:l.refreshToken||a,expiresIn:l.expiresIn,...await q(b,l.accessToken,l.profileArn)}}let l=await (0,f.proxyAwareFetch)(d.xq.kiro.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:a})},e);if(!l.ok){let a=await l.text();return c?.error?.("TOKEN_REFRESH","Failed to refresh Kiro social token",{status:l.status,error:a}),null}let m=await l.json();return c?.info?.("TOKEN_REFRESH","Successfully refreshed Kiro social token",{hasNewAccessToken:!!m.accessToken,expiresIn:m.expiresIn}),{accessToken:m.accessToken,refreshToken:m.refreshToken||a,expiresIn:m.expiresIn,...await q(b,m.accessToken,m.profileArn)}},c):null}async function s(a,b){return a?h("iflow",a,async()=>{let c=btoa(`${d.xq.iflow.clientId}:${d.xq.iflow.clientSecret}`),f=await fetch(e.NA.iflow.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json",Authorization:`Basic ${c}`},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:a,client_id:d.xq.iflow.clientId,client_secret:d.xq.iflow.clientSecret})});if(!f.ok){let a=await f.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh iFlow token",{status:f.status,error:a}),null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed iFlow token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}},b):null}async function t(a,b){return a?h("github",a,async()=>{let c={grant_type:"refresh_token",refresh_token:a,client_id:d.xq.github.clientId};d.xq.github.clientSecret&&(c.client_secret=d.xq.github.clientSecret);let f=await fetch(e.NA.github.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams(c)});if(!f.ok){let a=await f.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh GitHub token",{status:f.status,error:a}),null}let g=await f.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed GitHub token",{hasNewAccessToken:!!g.access_token,hasNewRefreshToken:!!g.refresh_token,expiresIn:g.expires_in}),{accessToken:g.access_token,refreshToken:g.refresh_token||a,expiresIn:g.expires_in}},b):null}async function u(a,b){return a?h("copilot",a,async()=>{try{let c=await fetch(d.sr.github?.copilotTokenUrl,{headers:{Authorization:`token ${a}`,"User-Agent":e.x0.USER_AGENT,"Editor-Version":`vscode/${e.x0.VSCODE_VERSION}`,"Editor-Plugin-Version":`copilot-chat/${e.x0.COPILOT_CHAT_VERSION}`,Accept:"application/json","x-github-api-version":e.x0.API_VERSION}});if(!c.ok){let a=await c.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh Copilot token",{status:c.status,error:a}),null}let f=await c.json();return b?.info?.("TOKEN_REFRESH","Successfully refreshed Copilot token",{hasToken:!!f.token,expiresAt:f.expires_at}),{token:f.token,expiresAt:f.expires_at}}catch(a){return b?.error?.("TOKEN_REFRESH","Error refreshing Copilot token",{error:a.message}),null}},b):null}async function v(a,b){return a?h("codebuddy-cn",a,async()=>{let c=d.sr["codebuddy-cn"]||{},e=await fetch(c.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json","User-Agent":c.userAgent,"X-Requested-With":"XMLHttpRequest","X-Domain":"copilot.tencent.com","X-Refresh-Token":a,"X-Auth-Refresh-Source":"plugin","X-Product":"SaaS"},body:"{}"});if(!e.ok){let a=await e.text();return b?.error?.("TOKEN_REFRESH","Failed to refresh CodeBuddy token",{status:e.status,error:a}),null}let f=await e.json();return 0===f.code&&f.data?.accessToken?(b?.info?.("TOKEN_REFRESH","Successfully refreshed CodeBuddy token",{hasNewAccessToken:!!f.data.accessToken,hasNewRefreshToken:!!f.data.refreshToken,expiresIn:f.data.expiresIn}),{accessToken:f.data.accessToken,refreshToken:f.data.refreshToken||a,expiresIn:f.data.expiresIn}):(b?.error?.("TOKEN_REFRESH","CodeBuddy token refresh returned no token",{code:f.code,msg:f.msg}),null)},b):null}let w=3e5;function x(a){return a&&"object"==typeof a&&("unrecoverable_refresh_error"===a.error||"refresh_token_reused"===a.error||"invalid_request"===a.error||"invalid_grant"===a.error)}function y(a){return e.Wu[a]||w}function z(a){if("string"!=typeof a)return null;try{let b=JSON.parse(a);if("service_account"===b.type&&b.client_email&&b.private_key&&b.project_id)return b;return null}catch{return null}}let A=new Map;async function B(a,b){let d=a.client_email,f=A.get(d);if(f&&f.expiresAt-Date.now()>3e5)return{accessToken:f.token,expiresAt:f.expiresAt};try{let{SignJWT:f,importPKCS8:g}=await Promise.all([c.e(5924),c.e(7947)]).then(c.bind(c,87947));b?.debug?.("TOKEN_REFRESH",`Vertex minting token for ${a.client_email}`);let h=await g(a.private_key.replace(/\\n/g,"\n"),"RS256"),i=Math.floor(Date.now()/1e3),j=await new f({scope:"https://www.googleapis.com/auth/cloud-platform"}).setProtectedHeader({alg:"RS256"}).setIssuer(a.client_email).setAudience(e.NA.google.token).setIssuedAt(i).setExpirationTime(i+3600).sign(h),k=await fetch(e.NA.google.token,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"urn:ietf:params:oauth:grant-type:jwt-bearer",assertion:j})});if(!k.ok){let a=await k.text();return b?.error?.("TOKEN_REFRESH",`Vertex token mint failed: ${a}`),null}let{access_token:l,expires_in:m}=await k.json(),n=Date.now()+(m??3600)*1e3;return A.set(d,{token:l,expiresAt:n}),b?.info?.("TOKEN_REFRESH",`Vertex token minted for ${a.client_email}`),{accessToken:l,expiresAt:n}}catch(a){return b?.error?.("TOKEN_REFRESH",`Vertex token error: ${a.message}`),null}}function C(a,b){let c=z(a.apiKey);return c?B(c,b):null}let D={"gemini-cli":(a,b)=>n(a.refreshToken,d.xq["gemini-cli"].clientId,d.xq["gemini-cli"].clientSecret,b),antigravity:(a,b)=>n(a.refreshToken,d.xq.antigravity.clientId,d.xq.antigravity.clientSecret,b),claude:(a,b)=>m(a.refreshToken,b),codex:(a,b)=>p(a.refreshToken,b),qwen:(a,b)=>o(a.refreshToken,b),iflow:(a,b)=>s(a.refreshToken,b),github:(a,b)=>t(a.refreshToken,b),kiro:(a,b)=>r(a.refreshToken,a.providerSpecificData,b),xai:(a,b)=>k(a.refreshToken,b),"codebuddy-cn":(a,b)=>v(a.refreshToken,b),vertex:C,"vertex-partner":C};async function E(a,b,c){if(!b.refreshToken)return null;let d=D[a];return d?d(b,c):l(a,b.refreshToken,b,c)}async function F(a,b=3,c=null){async function d(e){if(e>0){let a=1e3*e;c?.debug?.("TOKEN_REFRESH",`Retry ${e}/${b} after ${a}ms`),await new Promise(b=>setTimeout(b,a))}try{let b=await a();if(b)return b}catch(a){c?.warn?.("TOKEN_REFRESH",`Attempt ${e+1}/${b} failed: ${a.message}`)}return e+1>=b?(c?.error?.("TOKEN_REFRESH",`All ${b} retry attempts failed`),null):d(e+1)}return d(0)}},91550:(a,b,c)=>{c.d(b,{Xj:()=>i,uo:()=>j});let d=new Set(["login.microsoftonline.com","login.microsoft.com","login.windows.net"]);function e(a){return"string"==typeof a?a.trim():""}function f(a){let b,c=e(a);if(!c)throw Error("token_endpoint is required");try{b=new URL(c)}catch{throw Error("token_endpoint must be a valid URL")}if("https:"!==b.protocol)throw Error("token_endpoint must use https");let f=b.hostname.toLowerCase();if(!d.has(f))throw Error("token_endpoint must be a Microsoft login endpoint");return b.toString()}function g(a){return Array.isArray(a)?a.map(e).filter(Boolean).join(" "):e(a)}function h(a){try{if(!a||"string"!=typeof a)return null;let b=a.split(".");if(3!==b.length)return null;let c=b[1].replace(/-/g,"+").replace(/_/g,"/"),d=(4-c.length%4)%4;return JSON.parse(Buffer.from(`${c}${"=".repeat(d)}`,"base64").toString("utf8"))}catch{return null}}function i(a){let b=a;if("string"==typeof b)try{b=JSON.parse(b)}catch{throw Error("CLIProxyAPI auth JSON is invalid")}if(!b||"object"!=typeof b)throw Error("CLIProxyAPI auth JSON is required");let c=e(b.auth_method||b.authMethod);if(c&&"external_idp"!==c)throw Error("Only external_idp Kiro auth is supported by this importer");let d=e(b.access_token||b.accessToken),i=e(b.refresh_token||b.refreshToken),j=e(b.client_id||b.clientId),k=f(b.token_endpoint||b.tokenEndpoint),l=e(b.profile_arn||b.profileArn),m=e(b.region)||"us-east-1",n=g(b.scopes||b.scope);if(!d)throw Error("access_token is required");if(!i)throw Error("refresh_token is required");if(!j)throw Error("client_id is required");if(!n)throw Error("scopes is required");if(!l)throw Error("profile_arn is required");let o=h(d),p=b.email||o?.email||o?.preferred_username||o?.upn||o?.sub||null;return{accessToken:d,refreshToken:i,expiresAt:function(a){let b=a.expired||a.expires_at||a.expiresAt;if(b){let a=new Date(b).getTime();if(Number.isFinite(a))return new Date(a).toISOString()}let c=Number(a.expires_in||a.expiresIn||0);if(Number.isFinite(c)&&c>0)return new Date(Date.now()+1e3*c).toISOString();let d=h(a.access_token||a.accessToken);return d?.exp?new Date(1e3*d.exp).toISOString():new Date(Date.now()+36e5).toISOString()}(b),email:p,providerSpecificData:{profileArn:l,region:m,authMethod:"external_idp",provider:"CLIProxyAPI",clientId:j,tokenEndpoint:k,scope:n}}}function j(a,b={}){let c=e(b.clientId||b.client_id),d=f(b.tokenEndpoint||b.token_endpoint),h=g(b.scope||b.scopes);if(!a)throw Error("refresh token is required");if(!c)throw Error("clientId is required for external_idp refresh");if(!h)throw Error("scope is required for external_idp refresh");return{tokenEndpoint:d,body:new URLSearchParams({grant_type:"refresh_token",client_id:c,refresh_token:a,scope:h}),providerSpecificData:{...b,authMethod:"external_idp",clientId:c,tokenEndpoint:d,scope:h}}}},94164:(a,b,c)=>{c.d(b,{CG:()=>d.CG,Dj:()=>d.Dj,Fh:()=>d.Fh,Iq:()=>d.Iq,K1:()=>d.K1,KJ:()=>d.KJ,L:()=>d.L,L9:()=>d.L9,Lh:()=>d.Lh,Mc:()=>d.Mc,OM:()=>d.OM,PX:()=>d.PX,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Uv:()=>d.Uv,VT:()=>d.VT,XW:()=>d.XW,Xx:()=>d.Xx,Yd:()=>d.Yd,ZO:()=>d.ZO,bI:()=>d.bI,c:()=>d.c,ek:()=>d.ek,fK:()=>d.fK,fv:()=>d.fv,getProviderConnections:()=>d.P,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,iE:()=>d.iE,jd:()=>d.jd,mt:()=>d.mt,o5:()=>d.o5,oG:()=>d.oG,op:()=>d.op,r4:()=>d.r4,uL:()=>d.uL,ui:()=>d.ui,updateProviderConnection:()=>d.rj,uv:()=>d.uv,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(45479)}};
@@ -1 +1 @@
1
- exports.id=383,exports.ids=[383,1253,5577],exports.modules={13674:()=>{},13946:(a,b,c)=>{"use strict";c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(68711);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},39006:a=>{"use strict";a.exports={rE:"0.7.7"}},41073:(a,b,c)=>{"use strict";c.d(b,{g:()=>m,l:()=>l});var d=c(79646),e=c(33873),f=c.n(e),g=c(29021),h=c.n(g),i=c(21820),j=c.n(i),k=c(79603);async function l(){!function(){try{let a=f().join("win32"===process.platform?f().join(process.env.APPDATA||"","9router"):f().join(j().homedir(),".9router"),"mitm",".mitm.pid");if(!h().existsSync(a))return;let b=parseInt(h().readFileSync(a,"utf8").trim(),10);if(!b)return;if("win32"===process.platform)try{(0,d.execSync)(`taskkill /F /T /PID ${b}`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{try{(0,d.execSync)(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${b} -Force"`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}}else try{(0,d.execSync)(`sudo -n kill -9 ${b} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{try{process.kill(b,"SIGKILL")}catch{}}try{h().unlinkSync(a)}catch{}}catch{}}();let a=function(){let a=[];if("win32"===process.platform){try{(0,d.execSync)('powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter \'Name=\\"node.exe\\"\' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"',{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").slice(1).filter(a=>a.trim()).forEach(b=>{let c=b.toLowerCase();if(c.includes("9router")||c.includes("next-server")||c.includes("\\bin\\app\\")||c.includes("/bin/app/")||c.includes("cli.js")){let c=b.match(/^"(\d+)"/);c&&c[1]&&c[1]!==process.pid.toString()&&a.push(c[1])}})}catch{}for(let b of["cloudflared","tray_windows_release"])try{let c=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-Process ${b} -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Id"`;(0,d.execSync)(c,{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").forEach(b=>{let c=b.trim();c&&!isNaN(c)&&a.push(c)})}catch{}}else try{(0,d.execSync)("ps aux 2>/dev/null",{encoding:"utf8",timeout:5e3}).split("\n").forEach(b=>{if(b.includes("9router")||b.includes("next-server")||b.includes("cloudflared")||b.includes("/bin/app/")||b.includes("tray_darwin")||b.includes("tray_linux")){let c=b.trim().split(/\s+/)[1];c&&!isNaN(c)&&c!==process.pid.toString()&&a.push(c)}})}catch{}return a}(),b=process.platform;a.forEach(a=>{try{"win32"===b?(0,d.execSync)(`taskkill /F /PID ${a} 2>nul`,{stdio:"ignore",shell:!0,windowsHide:!0,timeout:3e3}):(0,d.execSync)(`kill -9 ${a} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{}}),a.length>0&&await new Promise(a=>setTimeout(a,1500))}function m(a=k.h0.npmPackageName){let b=function(a){try{if(!a||!h().existsSync(a))return a;let b=f().join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?f().join(process.env.APPDATA||f().join(j().homedir(),"AppData","Roaming"),"9router"):f().join(j().homedir(),".9router"),"runtime","updater"),c=f().join(b,"updater.js");if(h().existsSync(c))try{if(h().statSync(a).size===h().statSync(c).size)return c}catch{}return h().mkdirSync(b,{recursive:!0}),h().copyFileSync(a,c),c}catch{return a}}(function(){if(process.env.UPDATER_SCRIPT_PATH&&h().existsSync(process.env.UPDATER_SCRIPT_PATH))return process.env.UPDATER_SCRIPT_PATH;let a=f().join(process.cwd(),"src","lib","updater","updater.js");if(h().existsSync(a))return a;let b=f().join(process.cwd(),"..","src","lib","updater","updater.js");return h().existsSync(b)?b:a}()),c="1"===process.env.TRAY_MODE,e={cmd:"win32"===process.platform?"npx.cmd":"npx",args:[k.h0.npmPackageName]},g=c?[...e.args,"--tray","--skip-update"]:[...e.args,"--skip-update"];(0,d.spawn)(process.execPath,[b],{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,UPDATER_PKG_NAME:a,UPDATER_PORT:String(k.h0.statusPort),UPDATER_TAIL_LINES:String(k.h0.statusLogTailLines),UPDATER_RETRIES:String(k.h0.installRetries),UPDATER_RETRY_DELAY_MS:String(k.h0.installRetryDelayMs),UPDATER_LINGER_MS:String(k.h0.lingerAfterDoneMs),UPDATER_WAIT_MIN_MS:String(k.h0.waitForExitMinMs),UPDATER_WAIT_MAX_MS:String(k.h0.waitForExitMaxMs),UPDATER_WAIT_CHECK_MS:String(k.h0.waitForExitCheckMs),UPDATER_APP_PORT:String(k.h0.appPort),UPDATER_RELAUNCH:"1",UPDATER_RELAUNCH_CMD:e.cmd,UPDATER_RELAUNCH_ARGS:JSON.stringify(g)}}).unref(),setTimeout(()=>process.exit(0),k.h0.exitDelayMs)}},67259:(a,b,c)=>{"use strict";c.d(b,{CP:()=>f,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(85577);Object.entries(c(91253).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},79603:(a,b,c)=>{"use strict";c.d(b,{AA:()=>i,UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(91253),f=c(67259);d.rE;let g={npmPackageName:"vansrouter",installCmd:"npm i -g vansrouter",installCmdLatest:"npm i -g vansrouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={settingsKey:"claudeAutoPing",tickIntervalMs:6e4,pingLeadMs:5e3,pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1,refreshAheadMs:3e5,fiveHourKey:"session (5h)"}},85577:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>o,PROVIDER_MODELS:()=>f.vq,fZ:()=>j,cY:()=>p,ux:()=>k,OA:()=>l,kt:()=>m,SM:()=>i});var d=c(13946),e=c(55290),f=c(68711),g=c(57959);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}function k(a,b){let c=f.vq[a];return c?(0,g.gr)(c.find(a=>a.id===b)):null}function l(a,b){let c=f.vq[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.kind||d?.type||null}function m(a,b){let c=f.vq[a],d=c?.find(a=>a.id===b);return d?.upstreamModelId?d.upstreamModelId:"cx"===a&&"string"==typeof b&&b.endsWith(h)?b.slice(0,-h.length):b}let n=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),o=Object.fromEntries(Object.keys(d.xq).map(a=>[a,n[a]||a]));function p(a,b){return(0,g.g5)(f.vq[a]?.find(a=>a.id===b))}},91253:(a,b,c)=>{"use strict";c.d(b,{AI_PROVIDERS:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(55290);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a)return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},95522:()=>{}};
1
+ exports.id=383,exports.ids=[383,1253,5577],exports.modules={13674:()=>{},13946:(a,b,c)=>{"use strict";c.d(b,{Ak:()=>e,Yg:()=>h,sr:()=>d.sr,xq:()=>d.xq});var d=c(68711);function e(a){return(a?.providerSpecificData?.baseUrl?.trim()||"http://localhost:11434").replace(/\/$/,"")}let f=d.xq["xiaomi-tokenplan"]?.regions||{},g=d.xq["xiaomi-tokenplan"]?.defaultRegion;function h(a){return f[a?.providerSpecificData?.region]||f[g]}},39006:a=>{"use strict";a.exports={rE:"0.8.1"}},41073:(a,b,c)=>{"use strict";c.d(b,{g:()=>m,l:()=>l});var d=c(79646),e=c(33873),f=c.n(e),g=c(29021),h=c.n(g),i=c(21820),j=c.n(i),k=c(79603);async function l(){!function(){try{let a=f().join("win32"===process.platform?f().join(process.env.APPDATA||"","9router"):f().join(j().homedir(),".9router"),"mitm",".mitm.pid");if(!h().existsSync(a))return;let b=parseInt(h().readFileSync(a,"utf8").trim(),10);if(!b)return;if("win32"===process.platform)try{(0,d.execSync)(`taskkill /F /T /PID ${b}`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{try{(0,d.execSync)(`powershell -NonInteractive -WindowStyle Hidden -Command "Stop-Process -Id ${b} -Force"`,{stdio:"ignore",windowsHide:!0,timeout:3e3})}catch{}}else try{(0,d.execSync)(`sudo -n kill -9 ${b} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{try{process.kill(b,"SIGKILL")}catch{}}try{h().unlinkSync(a)}catch{}}catch{}}();let a=function(){let a=[];if("win32"===process.platform){try{(0,d.execSync)('powershell -NonInteractive -WindowStyle Hidden -Command "Get-WmiObject Win32_Process -Filter \'Name=\\"node.exe\\"\' | Select-Object ProcessId,CommandLine | ConvertTo-Csv -NoTypeInformation"',{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").slice(1).filter(a=>a.trim()).forEach(b=>{let c=b.toLowerCase();if(c.includes("9router")||c.includes("next-server")||c.includes("\\bin\\app\\")||c.includes("/bin/app/")||c.includes("cli.js")){let c=b.match(/^"(\d+)"/);c&&c[1]&&c[1]!==process.pid.toString()&&a.push(c[1])}})}catch{}for(let b of["cloudflared","tray_windows_release"])try{let c=`powershell -NonInteractive -WindowStyle Hidden -Command "Get-Process ${b} -ErrorAction SilentlyContinue | Select-Object -ExpandProperty Id"`;(0,d.execSync)(c,{encoding:"utf8",windowsHide:!0,timeout:5e3}).split("\n").forEach(b=>{let c=b.trim();c&&!isNaN(c)&&a.push(c)})}catch{}}else try{(0,d.execSync)("ps aux 2>/dev/null",{encoding:"utf8",timeout:5e3}).split("\n").forEach(b=>{if(b.includes("9router")||b.includes("next-server")||b.includes("cloudflared")||b.includes("/bin/app/")||b.includes("tray_darwin")||b.includes("tray_linux")){let c=b.trim().split(/\s+/)[1];c&&!isNaN(c)&&c!==process.pid.toString()&&a.push(c)}})}catch{}return a}(),b=process.platform;a.forEach(a=>{try{"win32"===b?(0,d.execSync)(`taskkill /F /PID ${a} 2>nul`,{stdio:"ignore",shell:!0,windowsHide:!0,timeout:3e3}):(0,d.execSync)(`kill -9 ${a} 2>/dev/null`,{stdio:"ignore",timeout:3e3})}catch{}}),a.length>0&&await new Promise(a=>setTimeout(a,1500))}function m(a=k.h0.npmPackageName){let b=function(a){try{if(!a||!h().existsSync(a))return a;let b=f().join(process.env.DATA_DIR?process.env.DATA_DIR:"win32"===process.platform?f().join(process.env.APPDATA||f().join(j().homedir(),"AppData","Roaming"),"9router"):f().join(j().homedir(),".9router"),"runtime","updater"),c=f().join(b,"updater.js");if(h().existsSync(c))try{if(h().statSync(a).size===h().statSync(c).size)return c}catch{}return h().mkdirSync(b,{recursive:!0}),h().copyFileSync(a,c),c}catch{return a}}(function(){if(process.env.UPDATER_SCRIPT_PATH&&h().existsSync(process.env.UPDATER_SCRIPT_PATH))return process.env.UPDATER_SCRIPT_PATH;let a=f().join(process.cwd(),"src","lib","updater","updater.js");if(h().existsSync(a))return a;let b=f().join(process.cwd(),"..","src","lib","updater","updater.js");return h().existsSync(b)?b:a}()),c="1"===process.env.TRAY_MODE,e={cmd:"win32"===process.platform?"npx.cmd":"npx",args:[k.h0.npmPackageName]},g=c?[...e.args,"--tray","--skip-update"]:[...e.args,"--skip-update"];(0,d.spawn)(process.execPath,[b],{detached:!0,stdio:"ignore",windowsHide:!0,env:{...process.env,UPDATER_PKG_NAME:a,UPDATER_PORT:String(k.h0.statusPort),UPDATER_TAIL_LINES:String(k.h0.statusLogTailLines),UPDATER_RETRIES:String(k.h0.installRetries),UPDATER_RETRY_DELAY_MS:String(k.h0.installRetryDelayMs),UPDATER_LINGER_MS:String(k.h0.lingerAfterDoneMs),UPDATER_WAIT_MIN_MS:String(k.h0.waitForExitMinMs),UPDATER_WAIT_MAX_MS:String(k.h0.waitForExitMaxMs),UPDATER_WAIT_CHECK_MS:String(k.h0.waitForExitCheckMs),UPDATER_APP_PORT:String(k.h0.appPort),UPDATER_RELAUNCH:"1",UPDATER_RELAUNCH_CMD:e.cmd,UPDATER_RELAUNCH_ARGS:JSON.stringify(g)}}).unref(),setTimeout(()=>process.exit(0),k.h0.exitDelayMs)}},67259:(a,b,c)=>{"use strict";c.d(b,{CP:()=>f,Xg:()=>d.Xg,eh:()=>e,vq:()=>d.PROVIDER_MODELS});var d=c(85577);Object.entries(c(91253).AI_PROVIDERS).filter(([,a])=>a.passthroughModels).map(([a])=>a);let e=Object.entries(d.PROVIDER_MODELS).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name}))),f=(a,b=null)=>a?.kind||a?.type||b},79603:(a,b,c)=>{"use strict";c.d(b,{AA:()=>i,UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g});var d=c(39006),e=c(91253),f=c(67259);d.rE;let g={npmPackageName:"vansrouter",installCmd:"npm i -g vansrouter",installCmdLatest:"npm i -g vansrouter@latest --prefer-online",shutdownCountdownSec:3,exitDelayMs:500,statusPort:20129,statusPollIntervalMs:1e3,statusLogTailLines:8,installRetries:3,installRetryDelayMs:5e3,lingerAfterDoneMs:3e4,waitForExitMinMs:5e3,waitForExitMaxMs:2e4,waitForExitCheckMs:500,appPort:20128},h={maxLines:200,pollIntervalMs:1e3},i={settingsKey:"claudeAutoPing",tickIntervalMs:6e4,pingLeadMs:5e3,pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1,refreshAheadMs:3e5,fiveHourKey:"session (5h)"}},85577:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>o,PROVIDER_MODELS:()=>f.vq,fZ:()=>j,cY:()=>p,ux:()=>k,OA:()=>l,kt:()=>m,SM:()=>i});var d=c(13946),e=c(6850),f=c(68711),g=c(57959);let h="-review";function i(a){return f.vq[a]||[]}function j(a){let b=f.vq[a];return b?.[0]?.id||null}function k(a,b){let c=f.vq[a];return c?(0,g.gr)(c.find(a=>a.id===b)):null}function l(a,b){let c=f.vq[a];if(!c)return null;let d=c.find(a=>a.id===b);return d?.kind||d?.type||null}function m(a,b){let c=f.vq[a],d=c?.find(a=>a.id===b);return d?.upstreamModelId?d.upstreamModelId:"cx"===a&&"string"==typeof b&&b.endsWith(h)?b.slice(0,-h.length):b}let n=Object.fromEntries(e.A.filter(a=>a.alias&&a.alias!==a.id).map(a=>[a.id,a.alias])),o=Object.fromEntries(Object.keys(d.xq).map(a=>[a,n[a]||a]));function p(a,b){return(0,g.g5)(f.vq[a]?.find(a=>a.id===b))}},91253:(a,b,c)=>{"use strict";c.d(b,{AI_PROVIDERS:()=>s,js:()=>w,DI:()=>n,fg:()=>k,Pd:()=>o,IS:()=>h,nJ:()=>i,zN:()=>j,JH:()=>m,jO:()=>y,wb:()=>x,br:()=>l,wG:()=>v,zt:()=>t,gb:()=>q,gC:()=>r,mq:()=>p,rs:()=>u});var d=c(6850);let e="⚠️ Risk Notice: This provider uses a subscription/OAuth session not officially licensed for proxy/router use. Account may be restricted or banned. Use at your own risk.";Object.fromEntries(d.A.filter(a=>a.display).map(a=>{let b;return[a.id,"RISK_NOTICE"===(b=a.display).deprecationNotice?{...b,deprecationNotice:e}:b]}));let f=["serviceKinds","ttsConfig","sttConfig","embeddingConfig","imageConfig","imageToTextConfig","videoConfig","musicConfig","searchViaChat","searchConfig","fetchConfig","modelsFetcher","mediaPriority","hiddenKinds"],g=a=>Object.fromEntries(d.A.filter(b=>b.category===a).map(a=>[a.id,function(a){let b={};for(let c of(a.media&&Object.assign(b,a.media),f))void 0!==a[c]&&(b[c]=a[c]);let c={...a.display||{}};return"RISK_NOTICE"===c.deprecationNotice&&(c.deprecationNotice=e),{...c,id:a.id,alias:a.uiAlias||a.alias,...a.hidden?{hidden:!0}:{},...b,...void 0!==a.priority?{priority:a.priority}:{},...a.hasFree?{hasFree:!0}:{},...a.thinkingConfig?{thinkingConfig:a.thinkingConfig}:{},...a.regions?{regions:a.regions,defaultRegion:a.defaultRegion}:{},...a.hasProviderSpecificData?{hasProviderSpecificData:!0}:{},...a.noAuth?{noAuth:!0}:{},...a.passthroughModels?{passthroughModels:!0}:{},...a.hasOAuth?{hasOAuth:!0}:{},...a.authModes?{authModes:a.authModes}:{},...a.authType?{authType:a.authType}:{},...a.authHint?{authHint:a.authHint}:{}}}(a)])),h=g("free"),i=g("freeTier"),j=g("oauth"),k=g("apikey"),l=g("webCookie"),m="openai-compatible-",n="anthropic-compatible-",o="custom-embedding-";function p(a){return"string"==typeof a&&a.startsWith(m)}function q(a){return"string"==typeof a&&a.startsWith(n)}function r(a){return"string"==typeof a&&a.startsWith(o)}let s={...h,...i,...j,...k,...l};function t(a){for(let b of Object.values(s))if(b.alias===a||b.id===a)return b;return null}function u(a){let b=t(a);return b?.id||a}function v(a){let b=s[a];return b?.alias||a}let w=Object.values(s).reduce((a,b)=>(a[b.alias]=b.id,a),{});Object.values(s).reduce((a,b)=>(a[b.id]=b.alias,a),{});let x=d.A.filter(a=>a.features?.usage).map(a=>a.id),y=d.A.filter(a=>a.features?.usageApikey).map(a=>a.id)},95522:()=>{}};
@@ -1,2 +1,2 @@
1
- "use strict";exports.id=4004,exports.ids=[4004],exports.modules={44004:(a,b,c)=>{c.d(b,{Pr:()=>q,UP:()=>o,Vu:()=>p,ZO:()=>h,vt:()=>s});var d=c(90529),e=c(15261),f=c(7916),g=c(83712);function h(a){return"string"!=typeof a?a:a.startsWith("combo/")?a.slice(6):a}let i=new Set(["vision","pdf","audioInput","videoInput"]),j="[Called tools: ",k="[Tool result: ";function l(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${k}${(0,g.kU)(a.content)||String(a.content??"")}]`};if("assistant"===a.role&&Array.isArray(a.tool_calls)){let{tool_calls:b,...c}=a,d=b.map(a=>a?.function?.name||a?.name||"tool").join(", "),e=(0,g.kU)(c.content)||("string"==typeof c.content?c.content:"");return{...c,content:`${e}${e?"\n":""}${j}${d}]`}}if(Array.isArray(a.content)){let b=a.content.some(a=>"tool_use"===a.type),c=a.content.some(a=>"tool_result"===a.type);if(b||c){let b=[],c=[],d=[];for(let e of a.content)"text"===e.type&&e.text&&b.push(e.text),"tool_use"===e.type&&c.push(e.name||"tool"),"tool_result"===e.type&&d.push((0,g.kU)(e.content)||String(e.content??""));let{...e}=a,f=b.join("\n");return c.length>0&&(f=`${f}${f?"\n":""}${j}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${k}${d.join("\n")}]`),{...e,content:f}}}return a})}let m=new Map;function n(a){if(!Array.isArray(a)||0===a.length)return[];let b=a=>"assistant"===a||"model"===a,c=a.length-1;for(;c>=0&&!b(a[c]?.role);)c--;return a.slice(c+1)}function o(a){a?m.delete(a):m.clear()}function p(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function q({body:a,models:b,handleSingleModel:c,log:g,comboName:h,comboStrategy:j,comboStickyLimit:k=1,autoSwitch:l=!0}){let o=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let f=b||"__default__",g=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,h=m.get(f),i="number"==typeof h?{index:h,consecutiveUseCount:0}:h||{index:0,consecutiveUseCount:0},j=i.index%a.length,k=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,j),l=i.consecutiveUseCount+1;return l>=g?m.set(f,{index:(j+1)%a.length,consecutiveUseCount:0}):m.set(f,{index:j,consecutiveUseCount:l}),k}(b,h,j,k);if(l){let b=function(a){let b=new Set;if(!a||"object"!=typeof a)return b;let c=a=>{if(!a||"object"!=typeof a)return;let c=a.type;("image_url"===c||"image"===c||"input_image"===c)&&b.add("vision"),("file"===c||"document"===c||"input_file"===c)&&b.add("pdf");let d=a.inlineData?.mimeType||a.fileData?.mimeType;"string"==typeof d&&d.startsWith("image/")&&b.add("vision"),"application/pdf"===d&&b.add("pdf")},d=a=>{if(Array.isArray(a))for(let b of a)c(b)};for(let b of n(a.messages))d(b.content);for(let b of n(a.input))d(b.content);for(let b of n(a.contents||a.request?.contents))d(b.parts);if(Array.isArray(a.tools)){for(let c of a.tools)if(c?.type==="web_search"){b.add("search");break}}return b}(a);if(b.size>0){let a=function(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>i.has(a)),d=[...b].filter(a=>!i.has(a)),e=a.map((a,b)=>{let e,g,h,i;return{m:a,i:b,t:(g=(e="string"==typeof a?a.indexOf("/"):-1)>0?a.slice(0,e):"",h=e>0?a.slice(e+1):a,i=(0,f.nl)(g,h),c.every(a=>!0===i[a])?+!d.every(a=>!0===i[a]):2)}});return e.every(a=>2===a.t)?a:e.sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m)}(o,b);a[0]!==o[0]&&g.info("COMBO",`auto-switch for [${[...b].join(",")}] → ${a[0]}`),o=a}}let p=null,r=null,s=null;for(let b=0;b<o.length;b++){let e=o[b];g.info("COMBO",`Trying model ${b+1}/${o.length}: ${e}`);try{let b=await c(a,e);if(b.ok)return g.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",h=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,h=a?.retryAfter||null}catch{}if(h&&(!r||new Date(h)<new Date(r))&&(r=h),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return g.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(g.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),p=f||String(b.status),s||(s=b.status),g.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){p=a.message||String(a),s||(s=500),g.warn("COMBO",`Model ${e} threw error, trying next`,{error:p})}}let t=p&&p.toLowerCase().includes("no credentials")?503:s||503,u=p||"All combo models unavailable";if(r){let a=(0,d.Qo)(r);return g.warn("COMBO",`All models failed | ${u} (${a})`),(0,e.wO)(t,u,r,a)}return g.warn("COMBO",`All models failed | ${u}`),new Response(JSON.stringify({error:{message:u}}),{status:t,headers:{"Content-Type":"application/json"}})}let r={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};async function s({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:h}){var i;let j,k,m=Array.isArray(b)?b.filter(Boolean):[];if(0===m.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===m.length)return c(a,m[0]);let n={...r,...h||{}},o=Math.min(Math.max(2,n.minPanel),m.length),p=f&&f.trim()?f.trim():m[0];d.info("FUSION",`Combo "${e}" | panel=${m.length} [${m.join(", ")}] | judge=${p} | quorum=${o}`);let{tools:q,tool_choice:t,...u}=a,v={...u,stream:!1};Array.isArray(v.messages)?v.messages=l(v.messages):Array.isArray(v.input)&&(v.input=l(v.input));let w=Date.now(),x=m.map(a=>{var b,d;return b=c(v,a,!0),d=n.panelHardTimeoutMs,new Promise(a=>{let c=setTimeout(()=>a({__timeout:!0}),d);Promise.resolve(b).then(b=>{clearTimeout(c),a(b)}).catch(b=>{clearTimeout(c),a({__error:b})})})}),y=await function(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d}){return new Promise(e=>{let f=Array(a.length),g=0,h=0,i=!1,j=null,k=()=>{i||(i=!0,clearTimeout(l),j&&clearTimeout(j),e(f))},l=setTimeout(k,d);a.forEach((d,e)=>{Promise.resolve(d).then(a=>{f[e]=a}).catch(a=>{f[e]={__error:a}}).finally(()=>{if(g++,f[e]&&f[e].ok&&h++,g===a.length)return k();h>=b&&!j&&(j=setTimeout(k,c))})})})}(x,{...n,minPanel:o});d.info("FUSION",`fan-out collected in ${Date.now()-w}ms`);let z=[];for(let a=0;a<y.length;a++){let b=y[a],c=m[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:b.__error?.message||String(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];if(b){let a=b.message??b.delta??{},c=(0,g.kU)(a.content);if(c.trim())return c;if("string"==typeof b.text&&b.text.trim())return b.text}let c=(0,g.kU)(a.content);if(c.trim())return c;let d=a.candidates?.[0]?.content?.parts;if(Array.isArray(d)){let a=d.map(a=>a?.text||"").join("");if(a.trim())return a}if(Array.isArray(a.output)){let b=a.output.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>a?.text||""):[]).join("");if(b.trim())return b}return""}(a);e?(z.push({model:c,text:e}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===z.length)return d.warn("FUSION","All panel models failed"),new Response(JSON.stringify({error:{message:"All fusion panel models failed"}}),{status:503,headers:{"Content-Type":"application/json"}});if(1===z.length)return d.info("FUSION",`Only ${z[0].model} succeeded — answering directly (no fusion)`),c(a,z[0].model);let A=(j=z.map((a,b)=>`[Source ${b+1}]
1
+ "use strict";exports.id=4004,exports.ids=[4004],exports.modules={44004:(a,b,c)=>{c.d(b,{Pr:()=>r,UP:()=>p,Vu:()=>q,ZO:()=>i,vt:()=>t});var d=c(87702),e=c(15261),f=c(92398),g=c(7916),h=c(83712);function i(a){return"string"!=typeof a?a:a.startsWith("combo/")?a.slice(6):a}let j=new Set(["vision","pdf","audioInput","videoInput"]),k="[Called tools: ",l="[Tool result: ";function m(a){return a.filter(a=>a).map(a=>{if("tool"===a.role||"function"===a.role)return{role:"assistant",content:`${l}${(0,h.kU)(a.content)||String(a.content??"")}]`};if("assistant"===a.role&&Array.isArray(a.tool_calls)){let{tool_calls:b,...c}=a,d=b.map(a=>a?.function?.name||a?.name||"tool").join(", "),e=(0,h.kU)(c.content)||("string"==typeof c.content?c.content:"");return{...c,content:`${e}${e?"\n":""}${k}${d}]`}}if(Array.isArray(a.content)){let b=a.content.some(a=>"tool_use"===a.type),c=a.content.some(a=>"tool_result"===a.type);if(b||c){let b=[],c=[],d=[];for(let e of a.content)"text"===e.type&&e.text&&b.push(e.text),"tool_use"===e.type&&c.push(e.name||"tool"),"tool_result"===e.type&&d.push((0,h.kU)(e.content)||String(e.content??""));let{...e}=a,f=b.join("\n");return c.length>0&&(f=`${f}${f?"\n":""}${k}${c.join(", ")}]`),d.length>0&&(f=`${f}${f?"\n":""}${l}${d.join("\n")}]`),{...e,content:f}}}return a})}let n=new Map;function o(a){if(!Array.isArray(a)||0===a.length)return[];let b=a=>"assistant"===a||"model"===a,c=a.length-1;for(;c>=0&&!b(a[c]?.role);)c--;return a.slice(c+1)}function p(a){a?n.delete(a):n.clear()}function q(a,b){if(a.includes("/"))return null;let c=(Array.isArray(b)?b:b?.combos||[]).find(b=>b.name===a);return c&&c.models&&c.models.length>0?c.models:null}async function r({body:a,models:b,handleSingleModel:c,log:h,comboName:i,comboStrategy:k,comboStickyLimit:l=1,autoSwitch:m=!0,signal:p=null,timeoutMs:q=f.oy,queueDepth:s=null}){let t=function(a,b,c,d=1){let e;if(!a||a.length<=1||"round-robin"!==c)return a;let f=b||"__default__",g=Number.isFinite(e=Number.parseInt(d,10))&&e>0?e:1,h=n.get(f),i="number"==typeof h?{index:h,consecutiveUseCount:0}:h||{index:0,consecutiveUseCount:0},j=i.index%a.length,k=function(a,b){let c=[...a];for(let a=0;a<b;a++){let a=c.shift();c.push(a)}return c}(a,j),l=i.consecutiveUseCount+1;return l>=g?n.set(f,{index:(j+1)%a.length,consecutiveUseCount:0}):n.set(f,{index:j,consecutiveUseCount:l}),k}(b,i,k,l);if(m){let b=function(a){let b=new Set;if(!a||"object"!=typeof a)return b;let c=a=>{if(!a||"object"!=typeof a)return;let c=a.type;("image_url"===c||"image"===c||"input_image"===c)&&b.add("vision"),("file"===c||"document"===c||"input_file"===c)&&b.add("pdf");let d=a.inlineData?.mimeType||a.fileData?.mimeType;"string"==typeof d&&d.startsWith("image/")&&b.add("vision"),"application/pdf"===d&&b.add("pdf")},d=a=>{if(Array.isArray(a))for(let b of a)c(b)};for(let b of o(a.messages))d(b.content);for(let b of o(a.input))d(b.content);for(let b of o(a.contents||a.request?.contents))d(b.parts);if(Array.isArray(a.tools)){for(let c of a.tools)if(c?.type==="web_search"){b.add("search");break}}return b}(a);if(b.size>0){let a=function(a,b){if(!b||0===b.size||!Array.isArray(a)||a.length<=1)return a;let c=[...b].filter(a=>j.has(a)),d=[...b].filter(a=>!j.has(a)),e=a.map((a,b)=>{let e,f,h,i;return{m:a,i:b,t:(f=(e="string"==typeof a?a.indexOf("/"):-1)>0?a.slice(0,e):"",h=e>0?a.slice(e+1):a,i=(0,g.nl)(f,h),c.every(a=>!0===i[a])?+!d.every(a=>!0===i[a]):2)}});return e.every(a=>2===a.t)?a:e.sort((a,b)=>a.t-b.t||a.i-b.i).map(a=>a.m)}(t,b);a[0]!==t[0]&&h.info("COMBO",`auto-switch for [${[...b].join(",")}] → ${a[0]}`),t=a}}let u=null,v=null,w=null;for(let b=0;b<t.length;b++){let e=t[b];if(p?.aborted)return h.info("COMBO","External signal aborted — stopping combo fallback"),new Response(JSON.stringify({error:{message:"Client disconnected"}}),{status:499,headers:{"Content-Type":"application/json"}});h.info("COMBO",`Trying model ${b+1}/${t.length}: ${e}`);try{let b;if(!Number.isFinite(q)||q<=0)b=await c(a,e);else{let d,f=new AbortController,g=!1,i=function(...a){let b=a.filter(a=>a&&"function"==typeof a.addEventListener);if(0===b.length)return null;if(1===b.length)return b[0];let c=new AbortController,d=()=>c.abort(),e=!1;for(let a of b){if(a.aborted){e=!0;break}a.addEventListener("abort",d,{once:!0})}return e&&c.abort(),c.signal}(p,f.signal),j={};i&&(j.signal=i),null!=s&&(j.maxQueueSize=s);let k=new Promise(a=>{d=setTimeout(()=>{g=!0,h.warn("COMBO",`Model ${e} exceeded ${q}ms timeout — falling back`),f.abort(Error("combo-per-model-timeout")),a(new Response(JSON.stringify({error:{message:`Model ${e} timed out`}}),{status:524,headers:{"Content-Type":"application/json"}}))},q)});try{b=await Promise.race([Promise.resolve(c(a,e,Object.keys(j).length>0?j:void 0)).catch(a=>{if(g)return new Response(null,{status:599});throw a}),k])}finally{clearTimeout(d)}}if(b.ok)return h.info("COMBO",`Model ${e} succeeded`),b;let f=b.statusText||"",g=null;try{let a=await b.clone().json();f=a?.error?.message||a?.error||a?.message||f,g=a?.retryAfter||null}catch{}if(g&&(!v||new Date(g)<new Date(v))&&(v=g),"string"!=typeof f)try{f=JSON.stringify(f)}catch{f=String(f)}let{shouldFallback:i,cooldownMs:j}=(0,d.hk)(b.status,f);if(!i)return h.warn("COMBO",`Model ${e} failed (no fallback)`,{status:b.status}),b;j&&j>0&&j<=5e3&&(503===b.status||502===b.status||504===b.status)&&(h.info("COMBO",`Model ${e} transient ${b.status}, waiting ${j}ms before next`),await new Promise(a=>setTimeout(a,j))),u=f||String(b.status),w||(w=b.status),h.warn("COMBO",`Model ${e} failed, trying next`,{status:b.status})}catch(a){u=a.message||String(a),w||(w=500),h.warn("COMBO",`Model ${e} threw error, trying next`,{error:u})}}let x=u&&u.toLowerCase().includes("no credentials")?503:w||503,y=u||"All combo models unavailable";if(v){let a=(0,d.Qo)(v);return h.warn("COMBO",`All models failed | ${y} (${a})`),(0,e.wO)(x,y,v,a)}return h.warn("COMBO",`All models failed | ${y}`),new Response(JSON.stringify({error:{message:y}}),{status:x,headers:{"Content-Type":"application/json"}})}let s={minPanel:2,stragglerGraceMs:8e3,panelHardTimeoutMs:9e4};async function t({body:a,models:b,handleSingleModel:c,log:d,comboName:e,judgeModel:f,tuning:g}){var i;let j,k,l=Array.isArray(b)?b.filter(Boolean):[];if(0===l.length)return new Response(JSON.stringify({error:{message:"Fusion combo has no models"}}),{status:400,headers:{"Content-Type":"application/json"}});if(1===l.length)return c(a,l[0]);let n={...s,...g||{}},o=Math.min(Math.max(2,n.minPanel),l.length),p=f&&f.trim()?f.trim():l[0];d.info("FUSION",`Combo "${e}" | panel=${l.length} [${l.join(", ")}] | judge=${p} | quorum=${o}`);let{tools:q,tool_choice:r,...u}=a,v={...u,stream:!1};Array.isArray(v.messages)?v.messages=m(v.messages):Array.isArray(v.input)&&(v.input=m(v.input));let w=Date.now(),x=l.map(a=>{var b,d;return b=c(v,a,!0),d=n.panelHardTimeoutMs,new Promise(a=>{let c=setTimeout(()=>a({__timeout:!0}),d);Promise.resolve(b).then(b=>{clearTimeout(c),a(b)}).catch(b=>{clearTimeout(c),a({__error:b})})})}),y=await function(a,{minPanel:b,stragglerGraceMs:c,panelHardTimeoutMs:d}){return new Promise(e=>{let f=Array(a.length),g=0,h=0,i=!1,j=null,k=()=>{i||(i=!0,clearTimeout(l),j&&clearTimeout(j),e(f))},l=setTimeout(k,d);a.forEach((d,e)=>{Promise.resolve(d).then(a=>{f[e]=a}).catch(a=>{f[e]={__error:a}}).finally(()=>{if(g++,f[e]&&f[e].ok&&h++,g===a.length)return k();h>=b&&!j&&(j=setTimeout(k,c))})})})}(x,{...n,minPanel:o});d.info("FUSION",`fan-out collected in ${Date.now()-w}ms`);let z=[];for(let a=0;a<y.length;a++){let b=y[a],c=l[a];if(!b){d.warn("FUSION",`Panel ${c} dropped (straggler/timeout)`);continue}if(b.__timeout){d.warn("FUSION",`Panel ${c} timed out`);continue}if(b.__error){d.warn("FUSION",`Panel ${c} threw`,{error:b.__error?.message||String(b.__error)});continue}if(!b.ok){d.warn("FUSION",`Panel ${c} failed`,{status:b.status});continue}try{let a=await b.clone().json(),e=function(a){if(!a||"object"!=typeof a)return"";let b=a.choices?.[0];if(b){let a=b.message??b.delta??{},c=(0,h.kU)(a.content);if(c.trim())return c;if("string"==typeof b.text&&b.text.trim())return b.text}let c=(0,h.kU)(a.content);if(c.trim())return c;let d=a.candidates?.[0]?.content?.parts;if(Array.isArray(d)){let a=d.map(a=>a?.text||"").join("");if(a.trim())return a}if(Array.isArray(a.output)){let b=a.output.flatMap(a=>Array.isArray(a.content)?a.content.map(a=>a?.text||""):[]).join("");if(b.trim())return b}return""}(a);e?(z.push({model:c,text:e}),d.info("FUSION",`Panel ${c} ok (${e.length} chars)`)):d.warn("FUSION",`Panel ${c} returned empty content`)}catch(a){d.warn("FUSION",`Panel ${c} unparseable`,{error:a.message||String(a)})}}if(0===z.length)return d.warn("FUSION","All panel models failed"),new Response(JSON.stringify({error:{message:"All fusion panel models failed"}}),{status:503,headers:{"Content-Type":"application/json"}});if(1===z.length)return d.info("FUSION",`Only ${z[0].model} succeeded — answering directly (no fusion)`),c(a,z[0].model);let A=(j=z.map((a,b)=>`[Source ${b+1}]
2
2
  ${a.text}`).join("\n\n"),i=[`You are the JUDGE in a model-fusion panel. ${z.length} expert models independently answered the user's most recent request. Their responses are below, anonymized by source.`,"\nDo NOT mention that multiple models were used, and do NOT refer to the sources. Produce ONE authoritative final answer addressed directly to the user.\n\nFirst, internally analyze the panel along these dimensions: consensus (points most sources agree on — treat as higher-confidence), contradictions (where they disagree — resolve with your own judgment), partial coverage, unique insights only one source surfaced, and blind spots every source missed. Then write the best possible final answer grounded in that analysis — more complete and correct than any single response, with no filler.\n\n=== PANEL RESPONSES ===",j,"=== END PANEL RESPONSES ===\n\nNow write the final answer to the user's original request."].join("\n"),k={...a},Array.isArray(a.messages)?k.messages=[...a.messages,{role:"user",content:i}]:Array.isArray(a.input)?k.input=[...a.input,{role:"user",content:i}]:Array.isArray(a.contents)?k.contents=[...a.contents,{role:"user",parts:[{text:i}]}]:k.messages=[{role:"user",content:i}],k);return d.info("FUSION",`Judging ${z.length} answers with ${p}`),c(A,p)}}};