vansrouter 0.9.71 → 0.9.75

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 (662) hide show
  1. package/app/.next-cli-build/BUILD_ID +1 -1
  2. package/app/.next-cli-build/app-path-routes-manifest.json +16 -16
  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/server/app/(dashboard)/dashboard/basic-chat/page.js +1 -1
  6. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page.js.nft.json +1 -1
  7. package/app/.next-cli-build/server/app/(dashboard)/dashboard/basic-chat/page_client-reference-manifest.js +1 -1
  8. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js +1 -1
  9. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page.js.nft.json +1 -1
  10. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/[toolId]/page_client-reference-manifest.js +1 -1
  11. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js +1 -1
  12. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page.js.nft.json +1 -1
  13. package/app/.next-cli-build/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  14. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js +2 -2
  15. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page.js.nft.json +1 -1
  16. package/app/.next-cli-build/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  17. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js +2 -2
  18. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page.js.nft.json +1 -1
  19. package/app/.next-cli-build/server/app/(dashboard)/dashboard/console-log/page_client-reference-manifest.js +1 -1
  20. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js +1 -1
  21. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page.js.nft.json +1 -1
  22. package/app/.next-cli-build/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  23. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js +1 -1
  24. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page.js.nft.json +1 -1
  25. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js +1 -1
  27. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page.js.nft.json +1 -1
  28. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/[kind]/page_client-reference-manifest.js +1 -1
  29. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js +1 -1
  30. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page.js.nft.json +1 -1
  31. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/combo/[id]/page_client-reference-manifest.js +1 -1
  32. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js +1 -1
  33. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page.js.nft.json +1 -1
  34. package/app/.next-cli-build/server/app/(dashboard)/dashboard/media-providers/web/page_client-reference-manifest.js +1 -1
  35. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js +1 -1
  36. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page.js.nft.json +1 -1
  37. package/app/.next-cli-build/server/app/(dashboard)/dashboard/mitm/page_client-reference-manifest.js +1 -1
  38. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js +1 -1
  39. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page.js.nft.json +1 -1
  40. package/app/.next-cli-build/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  41. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js +1 -1
  42. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page.js.nft.json +1 -1
  43. package/app/.next-cli-build/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  44. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js +1 -1
  45. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page.js.nft.json +1 -1
  46. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  47. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js +1 -1
  48. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page.js.nft.json +1 -1
  49. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  50. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js +1 -1
  51. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page.js.nft.json +1 -1
  52. package/app/.next-cli-build/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  53. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js +1 -1
  54. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page.js.nft.json +1 -1
  55. package/app/.next-cli-build/server/app/(dashboard)/dashboard/proxy-pools/page_client-reference-manifest.js +1 -1
  56. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js +1 -1
  57. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page.js.nft.json +1 -1
  58. package/app/.next-cli-build/server/app/(dashboard)/dashboard/pxpipe/page_client-reference-manifest.js +1 -1
  59. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js +1 -1
  60. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page.js.nft.json +1 -1
  61. package/app/.next-cli-build/server/app/(dashboard)/dashboard/quota/page_client-reference-manifest.js +1 -1
  62. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js +1 -1
  63. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page.js.nft.json +1 -1
  64. package/app/.next-cli-build/server/app/(dashboard)/dashboard/skills/page_client-reference-manifest.js +1 -1
  65. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js +1 -1
  66. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page.js.nft.json +1 -1
  67. package/app/.next-cli-build/server/app/(dashboard)/dashboard/token-saver/page_client-reference-manifest.js +1 -1
  68. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js +1 -1
  69. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page.js.nft.json +1 -1
  70. package/app/.next-cli-build/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  71. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js +1 -1
  72. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page.js.nft.json +1 -1
  73. package/app/.next-cli-build/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  74. package/app/.next-cli-build/server/app/_global-error/page.js.nft.json +1 -1
  75. package/app/.next-cli-build/server/app/_global-error/page_client-reference-manifest.js +1 -1
  76. package/app/.next-cli-build/server/app/_global-error.html +1 -1
  77. package/app/.next-cli-build/server/app/_global-error.rsc +2 -2
  78. package/app/.next-cli-build/server/app/_global-error.segments/_full.segment.rsc +2 -2
  79. package/app/.next-cli-build/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  80. package/app/.next-cli-build/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  81. package/app/.next-cli-build/server/app/_global-error.segments/_head.segment.rsc +1 -1
  82. package/app/.next-cli-build/server/app/_global-error.segments/_index.segment.rsc +1 -1
  83. package/app/.next-cli-build/server/app/_global-error.segments/_tree.segment.rsc +2 -2
  84. package/app/.next-cli-build/server/app/_not-found/page.js +1 -1
  85. package/app/.next-cli-build/server/app/_not-found/page.js.nft.json +1 -1
  86. package/app/.next-cli-build/server/app/_not-found/page_client-reference-manifest.js +1 -1
  87. package/app/.next-cli-build/server/app/_not-found.html +1 -1
  88. package/app/.next-cli-build/server/app/_not-found.rsc +19 -19
  89. package/app/.next-cli-build/server/app/_not-found.segments/_full.segment.rsc +19 -19
  90. package/app/.next-cli-build/server/app/_not-found.segments/_head.segment.rsc +1 -1
  91. package/app/.next-cli-build/server/app/_not-found.segments/_index.segment.rsc +8 -8
  92. package/app/.next-cli-build/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  93. package/app/.next-cli-build/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  94. package/app/.next-cli-build/server/app/_not-found.segments/_tree.segment.rsc +3 -2
  95. package/app/.next-cli-build/server/app/api/auth/check/route.js +1 -1
  96. package/app/.next-cli-build/server/app/api/auth/check/route.js.nft.json +1 -1
  97. package/app/.next-cli-build/server/app/api/auth/login/route.js +1 -1
  98. package/app/.next-cli-build/server/app/api/auth/login/route.js.nft.json +1 -1
  99. package/app/.next-cli-build/server/app/api/auth/logout/route.js +1 -1
  100. package/app/.next-cli-build/server/app/api/auth/logout/route.js.nft.json +1 -1
  101. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js +1 -1
  102. package/app/.next-cli-build/server/app/api/auth/oidc/callback/route.js.nft.json +1 -1
  103. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js +1 -1
  104. package/app/.next-cli-build/server/app/api/auth/oidc/start/route.js.nft.json +1 -1
  105. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js +1 -1
  106. package/app/.next-cli-build/server/app/api/auth/oidc/test/route.js.nft.json +1 -1
  107. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js +1 -1
  108. package/app/.next-cli-build/server/app/api/auth/reset-password/route.js.nft.json +1 -1
  109. package/app/.next-cli-build/server/app/api/auth/status/route.js +1 -1
  110. package/app/.next-cli-build/server/app/api/auth/status/route.js.nft.json +1 -1
  111. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js +5 -5
  112. package/app/.next-cli-build/server/app/api/cli-tools/all-statuses/route.js.nft.json +1 -1
  113. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js +1 -1
  114. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/alias/route.js.nft.json +1 -1
  115. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js +1 -1
  116. package/app/.next-cli-build/server/app/api/cli-tools/antigravity-mitm/route.js.nft.json +1 -1
  117. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js +2 -2
  118. package/app/.next-cli-build/server/app/api/cli-tools/claude-settings/route.js.nft.json +1 -1
  119. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js +2 -2
  120. package/app/.next-cli-build/server/app/api/cli-tools/cline-settings/route.js.nft.json +1 -1
  121. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js +1 -1
  122. package/app/.next-cli-build/server/app/api/cli-tools/codex-settings/route.js.nft.json +1 -1
  123. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js +1 -1
  124. package/app/.next-cli-build/server/app/api/cli-tools/copilot-settings/route.js.nft.json +1 -1
  125. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js +1 -1
  126. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-registry/route.js.nft.json +1 -1
  127. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js +2 -2
  128. package/app/.next-cli-build/server/app/api/cli-tools/cowork-mcp-tools/route.js.nft.json +1 -1
  129. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js +1 -1
  130. package/app/.next-cli-build/server/app/api/cli-tools/cowork-settings/route.js.nft.json +1 -1
  131. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js +1 -1
  132. package/app/.next-cli-build/server/app/api/cli-tools/deepseek-tui-settings/route.js.nft.json +1 -1
  133. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js +2 -2
  134. package/app/.next-cli-build/server/app/api/cli-tools/droid-settings/route.js.nft.json +1 -1
  135. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js +2 -2
  136. package/app/.next-cli-build/server/app/api/cli-tools/grok-build-settings/route.js.nft.json +1 -1
  137. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js +2 -2
  138. package/app/.next-cli-build/server/app/api/cli-tools/hermes-settings/route.js.nft.json +1 -1
  139. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js +1 -1
  140. package/app/.next-cli-build/server/app/api/cli-tools/jcode-settings/route.js.nft.json +1 -1
  141. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js +2 -2
  142. package/app/.next-cli-build/server/app/api/cli-tools/kilo-settings/route.js.nft.json +1 -1
  143. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js +2 -2
  144. package/app/.next-cli-build/server/app/api/cli-tools/openclaw-settings/route.js.nft.json +1 -1
  145. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js +1 -1
  146. package/app/.next-cli-build/server/app/api/cli-tools/opencode-settings/route.js.nft.json +1 -1
  147. package/app/.next-cli-build/server/app/api/combos/[id]/route.js +1 -1
  148. package/app/.next-cli-build/server/app/api/combos/[id]/route.js.nft.json +1 -1
  149. package/app/.next-cli-build/server/app/api/combos/route.js +1 -1
  150. package/app/.next-cli-build/server/app/api/combos/route.js.nft.json +1 -1
  151. package/app/.next-cli-build/server/app/api/headroom/extras/route.js.nft.json +1 -1
  152. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js +1 -1
  153. package/app/.next-cli-build/server/app/api/headroom/proxy/[...path]/route.js.nft.json +1 -1
  154. package/app/.next-cli-build/server/app/api/headroom/restart/route.js +1 -1
  155. package/app/.next-cli-build/server/app/api/headroom/restart/route.js.nft.json +1 -1
  156. package/app/.next-cli-build/server/app/api/headroom/start/route.js +1 -1
  157. package/app/.next-cli-build/server/app/api/headroom/start/route.js.nft.json +1 -1
  158. package/app/.next-cli-build/server/app/api/headroom/status/route.js +1 -1
  159. package/app/.next-cli-build/server/app/api/headroom/status/route.js.nft.json +1 -1
  160. package/app/.next-cli-build/server/app/api/headroom/stop/route.js.nft.json +1 -1
  161. package/app/.next-cli-build/server/app/api/health/route.js.nft.json +1 -1
  162. package/app/.next-cli-build/server/app/api/init/route.js.nft.json +1 -1
  163. package/app/.next-cli-build/server/app/api/keys/[id]/route.js +1 -1
  164. package/app/.next-cli-build/server/app/api/keys/[id]/route.js.nft.json +1 -1
  165. package/app/.next-cli-build/server/app/api/keys/route.js +1 -1
  166. package/app/.next-cli-build/server/app/api/keys/route.js.nft.json +1 -1
  167. package/app/.next-cli-build/server/app/api/locale/route.js.nft.json +1 -1
  168. package/app/.next-cli-build/server/app/api/mcp/[plugin]/message/route.js.nft.json +1 -1
  169. package/app/.next-cli-build/server/app/api/mcp/[plugin]/sse/route.js.nft.json +1 -1
  170. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js +1 -1
  171. package/app/.next-cli-build/server/app/api/media-providers/tts/deepgram/voices/route.js.nft.json +1 -1
  172. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js +1 -1
  173. package/app/.next-cli-build/server/app/api/media-providers/tts/elevenlabs/voices/route.js.nft.json +1 -1
  174. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js +1 -1
  175. package/app/.next-cli-build/server/app/api/media-providers/tts/inworld/voices/route.js.nft.json +1 -1
  176. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js +1 -1
  177. package/app/.next-cli-build/server/app/api/media-providers/tts/minimax/voices/route.js.nft.json +1 -1
  178. package/app/.next-cli-build/server/app/api/media-providers/tts/voices/route.js.nft.json +1 -1
  179. package/app/.next-cli-build/server/app/api/models/alias/route.js +1 -1
  180. package/app/.next-cli-build/server/app/api/models/alias/route.js.nft.json +1 -1
  181. package/app/.next-cli-build/server/app/api/models/availability/route.js +1 -1
  182. package/app/.next-cli-build/server/app/api/models/availability/route.js.nft.json +1 -1
  183. package/app/.next-cli-build/server/app/api/models/custom/route.js +1 -1
  184. package/app/.next-cli-build/server/app/api/models/custom/route.js.nft.json +1 -1
  185. package/app/.next-cli-build/server/app/api/models/disabled/route.js +1 -1
  186. package/app/.next-cli-build/server/app/api/models/disabled/route.js.nft.json +1 -1
  187. package/app/.next-cli-build/server/app/api/models/route.js +1 -1
  188. package/app/.next-cli-build/server/app/api/models/route.js.nft.json +1 -1
  189. package/app/.next-cli-build/server/app/api/models/test/route.js +1 -1
  190. package/app/.next-cli-build/server/app/api/models/test/route.js.nft.json +1 -1
  191. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js +1 -1
  192. package/app/.next-cli-build/server/app/api/oauth/[provider]/[action]/route.js.nft.json +1 -1
  193. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js +1 -1
  194. package/app/.next-cli-build/server/app/api/oauth/codex/bulk-import/route.js.nft.json +1 -1
  195. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js +1 -1
  196. package/app/.next-cli-build/server/app/api/oauth/codex/import-token/route.js.nft.json +1 -1
  197. package/app/.next-cli-build/server/app/api/oauth/cursor/auto-import/route.js.nft.json +1 -1
  198. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js +1 -1
  199. package/app/.next-cli-build/server/app/api/oauth/cursor/import/route.js.nft.json +1 -1
  200. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js +1 -1
  201. package/app/.next-cli-build/server/app/api/oauth/gitlab/pat/route.js.nft.json +1 -1
  202. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js +1 -1
  203. package/app/.next-cli-build/server/app/api/oauth/iflow/cookie/route.js.nft.json +1 -1
  204. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js +1 -1
  205. package/app/.next-cli-build/server/app/api/oauth/kiro/api-key/route.js.nft.json +1 -1
  206. package/app/.next-cli-build/server/app/api/oauth/kiro/auto-import/route.js.nft.json +1 -1
  207. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js +1 -1
  208. package/app/.next-cli-build/server/app/api/oauth/kiro/import/route.js.nft.json +1 -1
  209. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js +1 -1
  210. package/app/.next-cli-build/server/app/api/oauth/kiro/import-cli-proxy/route.js.nft.json +1 -1
  211. package/app/.next-cli-build/server/app/api/oauth/kiro/social-authorize/route.js.nft.json +1 -1
  212. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js +1 -1
  213. package/app/.next-cli-build/server/app/api/oauth/kiro/social-exchange/route.js.nft.json +1 -1
  214. package/app/.next-cli-build/server/app/api/pricing/route.js +1 -1
  215. package/app/.next-cli-build/server/app/api/pricing/route.js.nft.json +1 -1
  216. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js +1 -1
  217. package/app/.next-cli-build/server/app/api/provider-nodes/[id]/route.js.nft.json +1 -1
  218. package/app/.next-cli-build/server/app/api/provider-nodes/route.js +1 -1
  219. package/app/.next-cli-build/server/app/api/provider-nodes/route.js.nft.json +1 -1
  220. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js +1 -1
  221. package/app/.next-cli-build/server/app/api/provider-nodes/validate/route.js.nft.json +1 -1
  222. package/app/.next-cli-build/server/app/api/providers/[id]/gcp-projects/route.js +1 -1
  223. package/app/.next-cli-build/server/app/api/providers/[id]/gcp-projects/route.js.nft.json +1 -1
  224. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js +1 -1
  225. package/app/.next-cli-build/server/app/api/providers/[id]/models/route.js.nft.json +1 -1
  226. package/app/.next-cli-build/server/app/api/providers/[id]/route.js +1 -1
  227. package/app/.next-cli-build/server/app/api/providers/[id]/route.js.nft.json +1 -1
  228. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js +1 -1
  229. package/app/.next-cli-build/server/app/api/providers/[id]/test/route.js.nft.json +1 -1
  230. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js +1 -1
  231. package/app/.next-cli-build/server/app/api/providers/[id]/test-models/route.js.nft.json +1 -1
  232. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/[name]/reset/route.js +1 -1
  233. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/[name]/reset/route.js.nft.json +1 -1
  234. package/app/.next-cli-build/server/app/api/providers/circuit-breakers/route.js.nft.json +1 -1
  235. package/app/.next-cli-build/server/app/api/providers/client/route.js +1 -1
  236. package/app/.next-cli-build/server/app/api/providers/client/route.js.nft.json +1 -1
  237. package/app/.next-cli-build/server/app/api/providers/kilo/free-models/route.js.nft.json +1 -1
  238. package/app/.next-cli-build/server/app/api/providers/route.js +1 -1
  239. package/app/.next-cli-build/server/app/api/providers/route.js.nft.json +1 -1
  240. package/app/.next-cli-build/server/app/api/providers/suggested-models/route.js.nft.json +1 -1
  241. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js +1 -1
  242. package/app/.next-cli-build/server/app/api/providers/test-batch/route.js.nft.json +1 -1
  243. package/app/.next-cli-build/server/app/api/providers/validate/route.js +1 -1
  244. package/app/.next-cli-build/server/app/api/providers/validate/route.js.nft.json +1 -1
  245. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js +1 -1
  246. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/route.js.nft.json +1 -1
  247. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js +1 -1
  248. package/app/.next-cli-build/server/app/api/proxy-pools/[id]/test/route.js.nft.json +1 -1
  249. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js +1 -1
  250. package/app/.next-cli-build/server/app/api/proxy-pools/cloudflare-deploy/route.js.nft.json +1 -1
  251. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js +1 -1
  252. package/app/.next-cli-build/server/app/api/proxy-pools/deno-deploy/route.js.nft.json +1 -1
  253. package/app/.next-cli-build/server/app/api/proxy-pools/route.js +1 -1
  254. package/app/.next-cli-build/server/app/api/proxy-pools/route.js.nft.json +1 -1
  255. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js +2 -2
  256. package/app/.next-cli-build/server/app/api/proxy-pools/vercel-deploy/route.js.nft.json +1 -1
  257. package/app/.next-cli-build/server/app/api/pxpipe/health/route.js.nft.json +1 -1
  258. package/app/.next-cli-build/server/app/api/pxpipe/install/route.js.nft.json +1 -1
  259. package/app/.next-cli-build/server/app/api/pxpipe/logs/route.js.nft.json +1 -1
  260. package/app/.next-cli-build/server/app/api/pxpipe/restart/route.js.nft.json +1 -1
  261. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js +1 -1
  262. package/app/.next-cli-build/server/app/api/pxpipe/start/route.js.nft.json +1 -1
  263. package/app/.next-cli-build/server/app/api/pxpipe/stats/route.js.nft.json +1 -1
  264. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js +1 -1
  265. package/app/.next-cli-build/server/app/api/pxpipe/status/route.js.nft.json +1 -1
  266. package/app/.next-cli-build/server/app/api/pxpipe/stop/route.js.nft.json +1 -1
  267. package/app/.next-cli-build/server/app/api/settings/database/route.js +1 -1
  268. package/app/.next-cli-build/server/app/api/settings/database/route.js.nft.json +1 -1
  269. package/app/.next-cli-build/server/app/api/settings/proxy-test/route.js.nft.json +1 -1
  270. package/app/.next-cli-build/server/app/api/settings/require-login/route.js +1 -1
  271. package/app/.next-cli-build/server/app/api/settings/require-login/route.js.nft.json +1 -1
  272. package/app/.next-cli-build/server/app/api/settings/route.js +1 -1
  273. package/app/.next-cli-build/server/app/api/settings/route.js.nft.json +1 -1
  274. package/app/.next-cli-build/server/app/api/shutdown/route.js.nft.json +1 -1
  275. package/app/.next-cli-build/server/app/api/tags/route.js.nft.json +1 -1
  276. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js +1 -1
  277. package/app/.next-cli-build/server/app/api/translator/console-logs/route.js.nft.json +1 -1
  278. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js +3 -5
  279. package/app/.next-cli-build/server/app/api/translator/console-logs/stream/route.js.nft.json +1 -1
  280. package/app/.next-cli-build/server/app/api/translator/load/route.js.nft.json +1 -1
  281. package/app/.next-cli-build/server/app/api/translator/save/route.js.nft.json +1 -1
  282. package/app/.next-cli-build/server/app/api/translator/send/route.js +1 -1
  283. package/app/.next-cli-build/server/app/api/translator/send/route.js.nft.json +1 -1
  284. package/app/.next-cli-build/server/app/api/translator/translate/route.js +1 -1
  285. package/app/.next-cli-build/server/app/api/translator/translate/route.js.nft.json +1 -1
  286. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js +1 -1
  287. package/app/.next-cli-build/server/app/api/tunnel/disable/route.js.nft.json +1 -1
  288. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js +1 -1
  289. package/app/.next-cli-build/server/app/api/tunnel/enable/route.js.nft.json +1 -1
  290. package/app/.next-cli-build/server/app/api/tunnel/status/route.js +1 -1
  291. package/app/.next-cli-build/server/app/api/tunnel/status/route.js.nft.json +1 -1
  292. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js +1 -1
  293. package/app/.next-cli-build/server/app/api/tunnel/tailscale-check/route.js.nft.json +1 -1
  294. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js +1 -1
  295. package/app/.next-cli-build/server/app/api/tunnel/tailscale-disable/route.js.nft.json +1 -1
  296. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js +1 -1
  297. package/app/.next-cli-build/server/app/api/tunnel/tailscale-enable/route.js.nft.json +1 -1
  298. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js +2 -2
  299. package/app/.next-cli-build/server/app/api/tunnel/tailscale-install/route.js.nft.json +1 -1
  300. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js +1 -1
  301. package/app/.next-cli-build/server/app/api/usage/[connectionId]/codex-reset-credits/route.js.nft.json +1 -1
  302. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js +1 -1
  303. package/app/.next-cli-build/server/app/api/usage/[connectionId]/route.js.nft.json +1 -1
  304. package/app/.next-cli-build/server/app/api/usage/chart/route.js +1 -1
  305. package/app/.next-cli-build/server/app/api/usage/chart/route.js.nft.json +1 -1
  306. package/app/.next-cli-build/server/app/api/usage/history/route.js +1 -1
  307. package/app/.next-cli-build/server/app/api/usage/history/route.js.nft.json +1 -1
  308. package/app/.next-cli-build/server/app/api/usage/logs/route.js +1 -1
  309. package/app/.next-cli-build/server/app/api/usage/logs/route.js.nft.json +1 -1
  310. package/app/.next-cli-build/server/app/api/usage/providers/route.js +1 -1
  311. package/app/.next-cli-build/server/app/api/usage/providers/route.js.nft.json +1 -1
  312. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js +1 -1
  313. package/app/.next-cli-build/server/app/api/usage/request-details/[id]/route.js.nft.json +1 -1
  314. package/app/.next-cli-build/server/app/api/usage/request-details/route.js +1 -1
  315. package/app/.next-cli-build/server/app/api/usage/request-details/route.js.nft.json +1 -1
  316. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js +1 -1
  317. package/app/.next-cli-build/server/app/api/usage/request-logs/route.js.nft.json +1 -1
  318. package/app/.next-cli-build/server/app/api/usage/stats/route.js +1 -1
  319. package/app/.next-cli-build/server/app/api/usage/stats/route.js.nft.json +1 -1
  320. package/app/.next-cli-build/server/app/api/usage/stream/route.js +1 -1
  321. package/app/.next-cli-build/server/app/api/usage/stream/route.js.nft.json +1 -1
  322. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js +1 -1
  323. package/app/.next-cli-build/server/app/api/v1/api/chat/route.js.nft.json +1 -1
  324. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js +1 -1
  325. package/app/.next-cli-build/server/app/api/v1/audio/speech/route.js.nft.json +1 -1
  326. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js +1 -1
  327. package/app/.next-cli-build/server/app/api/v1/audio/transcriptions/route.js.nft.json +1 -1
  328. package/app/.next-cli-build/server/app/api/v1/audio/voices/route.js.nft.json +1 -1
  329. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js +1 -1
  330. package/app/.next-cli-build/server/app/api/v1/chat/completions/route.js.nft.json +1 -1
  331. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js +1 -1
  332. package/app/.next-cli-build/server/app/api/v1/embeddings/route.js.nft.json +1 -1
  333. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js +2 -2
  334. package/app/.next-cli-build/server/app/api/v1/images/generations/route.js.nft.json +1 -1
  335. package/app/.next-cli-build/server/app/api/v1/messages/count_tokens/route.js.nft.json +1 -1
  336. package/app/.next-cli-build/server/app/api/v1/messages/route.js +1 -1
  337. package/app/.next-cli-build/server/app/api/v1/messages/route.js.nft.json +1 -1
  338. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js +1 -1
  339. package/app/.next-cli-build/server/app/api/v1/models/[kind]/route.js.nft.json +1 -1
  340. package/app/.next-cli-build/server/app/api/v1/models/info/route.js +1 -1
  341. package/app/.next-cli-build/server/app/api/v1/models/info/route.js.nft.json +1 -1
  342. package/app/.next-cli-build/server/app/api/v1/models/route.js +1 -1
  343. package/app/.next-cli-build/server/app/api/v1/models/route.js.nft.json +1 -1
  344. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js +1 -1
  345. package/app/.next-cli-build/server/app/api/v1/responses/compact/route.js.nft.json +1 -1
  346. package/app/.next-cli-build/server/app/api/v1/responses/route.js +1 -1
  347. package/app/.next-cli-build/server/app/api/v1/responses/route.js.nft.json +1 -1
  348. package/app/.next-cli-build/server/app/api/v1/route.js +1 -1
  349. package/app/.next-cli-build/server/app/api/v1/route.js.nft.json +1 -1
  350. package/app/.next-cli-build/server/app/api/v1/search/route.js +1 -1
  351. package/app/.next-cli-build/server/app/api/v1/search/route.js.nft.json +1 -1
  352. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js +1 -1
  353. package/app/.next-cli-build/server/app/api/v1/videos/[id]/route.js.nft.json +1 -1
  354. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js +1 -1
  355. package/app/.next-cli-build/server/app/api/v1/videos/edits/route.js.nft.json +1 -1
  356. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js +1 -1
  357. package/app/.next-cli-build/server/app/api/v1/videos/extensions/route.js.nft.json +1 -1
  358. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js +1 -1
  359. package/app/.next-cli-build/server/app/api/v1/videos/generations/route.js.nft.json +1 -1
  360. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js +1 -1
  361. package/app/.next-cli-build/server/app/api/v1/web/fetch/route.js.nft.json +1 -1
  362. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js +1 -1
  363. package/app/.next-cli-build/server/app/api/v1beta/models/[...path]/route.js.nft.json +1 -1
  364. package/app/.next-cli-build/server/app/api/v1beta/models/route.js +1 -1
  365. package/app/.next-cli-build/server/app/api/v1beta/models/route.js.nft.json +1 -1
  366. package/app/.next-cli-build/server/app/api/version/route.js +1 -1
  367. package/app/.next-cli-build/server/app/api/version/route.js.nft.json +1 -1
  368. package/app/.next-cli-build/server/app/api/version/shutdown/route.js.nft.json +1 -1
  369. package/app/.next-cli-build/server/app/api/version/update/route.js.nft.json +1 -1
  370. package/app/.next-cli-build/server/app/callback/page.js +1 -1
  371. package/app/.next-cli-build/server/app/callback/page.js.nft.json +1 -1
  372. package/app/.next-cli-build/server/app/callback/page_client-reference-manifest.js +1 -1
  373. package/app/.next-cli-build/server/app/callback.html +1 -1
  374. package/app/.next-cli-build/server/app/callback.rsc +23 -23
  375. package/app/.next-cli-build/server/app/callback.segments/_full.segment.rsc +23 -23
  376. package/app/.next-cli-build/server/app/callback.segments/_head.segment.rsc +1 -1
  377. package/app/.next-cli-build/server/app/callback.segments/_index.segment.rsc +8 -8
  378. package/app/.next-cli-build/server/app/callback.segments/_tree.segment.rsc +3 -2
  379. package/app/.next-cli-build/server/app/callback.segments/callback/__PAGE__.segment.rsc +1 -1
  380. package/app/.next-cli-build/server/app/callback.segments/callback.segment.rsc +1 -1
  381. package/app/.next-cli-build/server/app/dashboard/basic-chat.html +1 -1
  382. package/app/.next-cli-build/server/app/dashboard/basic-chat.rsc +22 -22
  383. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat/__PAGE__.segment.rsc +2 -2
  384. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard/basic-chat.segment.rsc +1 -1
  385. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  386. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  387. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_full.segment.rsc +22 -22
  388. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_head.segment.rsc +1 -1
  389. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_index.segment.rsc +8 -8
  390. package/app/.next-cli-build/server/app/dashboard/basic-chat.segments/_tree.segment.rsc +3 -2
  391. package/app/.next-cli-build/server/app/dashboard/cli-tools.html +1 -1
  392. package/app/.next-cli-build/server/app/dashboard/cli-tools.rsc +23 -23
  393. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools/__PAGE__.segment.rsc +2 -2
  394. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard/cli-tools.segment.rsc +1 -1
  395. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  396. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  397. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_full.segment.rsc +23 -23
  398. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_head.segment.rsc +1 -1
  399. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_index.segment.rsc +8 -8
  400. package/app/.next-cli-build/server/app/dashboard/cli-tools.segments/_tree.segment.rsc +3 -2
  401. package/app/.next-cli-build/server/app/dashboard/combos.html +1 -1
  402. package/app/.next-cli-build/server/app/dashboard/combos.rsc +25 -25
  403. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos/__PAGE__.segment.rsc +2 -2
  404. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard/combos.segment.rsc +1 -1
  405. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  406. package/app/.next-cli-build/server/app/dashboard/combos.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  407. package/app/.next-cli-build/server/app/dashboard/combos.segments/_full.segment.rsc +25 -25
  408. package/app/.next-cli-build/server/app/dashboard/combos.segments/_head.segment.rsc +1 -1
  409. package/app/.next-cli-build/server/app/dashboard/combos.segments/_index.segment.rsc +8 -8
  410. package/app/.next-cli-build/server/app/dashboard/combos.segments/_tree.segment.rsc +3 -2
  411. package/app/.next-cli-build/server/app/dashboard/endpoint.html +1 -1
  412. package/app/.next-cli-build/server/app/dashboard/endpoint.rsc +23 -23
  413. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint/__PAGE__.segment.rsc +2 -2
  414. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard/endpoint.segment.rsc +1 -1
  415. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  416. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  417. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_full.segment.rsc +23 -23
  418. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_head.segment.rsc +1 -1
  419. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_index.segment.rsc +8 -8
  420. package/app/.next-cli-build/server/app/dashboard/endpoint.segments/_tree.segment.rsc +3 -2
  421. package/app/.next-cli-build/server/app/dashboard/media-providers/web.html +1 -1
  422. package/app/.next-cli-build/server/app/dashboard/media-providers/web.rsc +26 -24
  423. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web/__PAGE__.segment.rsc +2 -2
  424. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers/web.segment.rsc +1 -1
  425. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard/media-providers.segment.rsc +1 -1
  426. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  427. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  428. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_full.segment.rsc +26 -24
  429. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_head.segment.rsc +1 -1
  430. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_index.segment.rsc +8 -8
  431. package/app/.next-cli-build/server/app/dashboard/media-providers/web.segments/_tree.segment.rsc +3 -2
  432. package/app/.next-cli-build/server/app/dashboard/mitm.html +1 -1
  433. package/app/.next-cli-build/server/app/dashboard/mitm.rsc +22 -22
  434. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm/__PAGE__.segment.rsc +2 -2
  435. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard/mitm.segment.rsc +1 -1
  436. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  437. package/app/.next-cli-build/server/app/dashboard/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  438. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_full.segment.rsc +22 -22
  439. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_head.segment.rsc +1 -1
  440. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_index.segment.rsc +8 -8
  441. package/app/.next-cli-build/server/app/dashboard/mitm.segments/_tree.segment.rsc +3 -2
  442. package/app/.next-cli-build/server/app/dashboard/profile.html +1 -1
  443. package/app/.next-cli-build/server/app/dashboard/profile.rsc +25 -25
  444. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile/__PAGE__.segment.rsc +2 -2
  445. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard/profile.segment.rsc +1 -1
  446. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  447. package/app/.next-cli-build/server/app/dashboard/profile.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  448. package/app/.next-cli-build/server/app/dashboard/profile.segments/_full.segment.rsc +25 -25
  449. package/app/.next-cli-build/server/app/dashboard/profile.segments/_head.segment.rsc +1 -1
  450. package/app/.next-cli-build/server/app/dashboard/profile.segments/_index.segment.rsc +8 -8
  451. package/app/.next-cli-build/server/app/dashboard/profile.segments/_tree.segment.rsc +3 -2
  452. package/app/.next-cli-build/server/app/dashboard/providers/new.html +1 -1
  453. package/app/.next-cli-build/server/app/dashboard/providers/new.rsc +26 -24
  454. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new/__PAGE__.segment.rsc +2 -2
  455. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers/new.segment.rsc +1 -1
  456. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  457. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  458. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  459. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_full.segment.rsc +26 -24
  460. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_head.segment.rsc +1 -1
  461. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_index.segment.rsc +8 -8
  462. package/app/.next-cli-build/server/app/dashboard/providers/new.segments/_tree.segment.rsc +3 -2
  463. package/app/.next-cli-build/server/app/dashboard/providers.html +1 -1
  464. package/app/.next-cli-build/server/app/dashboard/providers.rsc +25 -25
  465. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers/__PAGE__.segment.rsc +2 -2
  466. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard/providers.segment.rsc +1 -1
  467. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  468. package/app/.next-cli-build/server/app/dashboard/providers.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  469. package/app/.next-cli-build/server/app/dashboard/providers.segments/_full.segment.rsc +25 -25
  470. package/app/.next-cli-build/server/app/dashboard/providers.segments/_head.segment.rsc +1 -1
  471. package/app/.next-cli-build/server/app/dashboard/providers.segments/_index.segment.rsc +8 -8
  472. package/app/.next-cli-build/server/app/dashboard/providers.segments/_tree.segment.rsc +3 -2
  473. package/app/.next-cli-build/server/app/dashboard/proxy-pools.html +1 -1
  474. package/app/.next-cli-build/server/app/dashboard/proxy-pools.rsc +25 -25
  475. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools/__PAGE__.segment.rsc +2 -2
  476. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard/proxy-pools.segment.rsc +1 -1
  477. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  478. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  479. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_full.segment.rsc +25 -25
  480. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_head.segment.rsc +1 -1
  481. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_index.segment.rsc +8 -8
  482. package/app/.next-cli-build/server/app/dashboard/proxy-pools.segments/_tree.segment.rsc +3 -2
  483. package/app/.next-cli-build/server/app/dashboard/pxpipe.html +1 -1
  484. package/app/.next-cli-build/server/app/dashboard/pxpipe.rsc +22 -22
  485. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe/__PAGE__.segment.rsc +2 -2
  486. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard/pxpipe.segment.rsc +1 -1
  487. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  488. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  489. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_full.segment.rsc +22 -22
  490. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_head.segment.rsc +1 -1
  491. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_index.segment.rsc +8 -8
  492. package/app/.next-cli-build/server/app/dashboard/pxpipe.segments/_tree.segment.rsc +3 -2
  493. package/app/.next-cli-build/server/app/dashboard/quota.html +2 -2
  494. package/app/.next-cli-build/server/app/dashboard/quota.rsc +23 -23
  495. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota/__PAGE__.segment.rsc +3 -3
  496. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard/quota.segment.rsc +1 -1
  497. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  498. package/app/.next-cli-build/server/app/dashboard/quota.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  499. package/app/.next-cli-build/server/app/dashboard/quota.segments/_full.segment.rsc +23 -23
  500. package/app/.next-cli-build/server/app/dashboard/quota.segments/_head.segment.rsc +1 -1
  501. package/app/.next-cli-build/server/app/dashboard/quota.segments/_index.segment.rsc +8 -8
  502. package/app/.next-cli-build/server/app/dashboard/quota.segments/_tree.segment.rsc +3 -2
  503. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js +1 -1
  504. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page.js.nft.json +1 -1
  505. package/app/.next-cli-build/server/app/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  506. package/app/.next-cli-build/server/app/dashboard/settings/pricing.html +1 -1
  507. package/app/.next-cli-build/server/app/dashboard/settings/pricing.rsc +23 -23
  508. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_full.segment.rsc +23 -23
  509. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_head.segment.rsc +1 -1
  510. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_index.segment.rsc +8 -8
  511. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/_tree.segment.rsc +3 -2
  512. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing/__PAGE__.segment.rsc +1 -1
  513. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings/pricing.segment.rsc +1 -1
  514. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard/settings.segment.rsc +1 -1
  515. package/app/.next-cli-build/server/app/dashboard/settings/pricing.segments/dashboard.segment.rsc +1 -1
  516. package/app/.next-cli-build/server/app/dashboard/skills.html +1 -1
  517. package/app/.next-cli-build/server/app/dashboard/skills.rsc +25 -25
  518. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills/__PAGE__.segment.rsc +2 -2
  519. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard/skills.segment.rsc +1 -1
  520. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  521. package/app/.next-cli-build/server/app/dashboard/skills.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  522. package/app/.next-cli-build/server/app/dashboard/skills.segments/_full.segment.rsc +25 -25
  523. package/app/.next-cli-build/server/app/dashboard/skills.segments/_head.segment.rsc +1 -1
  524. package/app/.next-cli-build/server/app/dashboard/skills.segments/_index.segment.rsc +8 -8
  525. package/app/.next-cli-build/server/app/dashboard/skills.segments/_tree.segment.rsc +3 -2
  526. package/app/.next-cli-build/server/app/dashboard/token-saver.html +1 -1
  527. package/app/.next-cli-build/server/app/dashboard/token-saver.rsc +22 -22
  528. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver/__PAGE__.segment.rsc +2 -2
  529. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard/token-saver.segment.rsc +1 -1
  530. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  531. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  532. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_full.segment.rsc +22 -22
  533. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_head.segment.rsc +1 -1
  534. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_index.segment.rsc +8 -8
  535. package/app/.next-cli-build/server/app/dashboard/token-saver.segments/_tree.segment.rsc +3 -2
  536. package/app/.next-cli-build/server/app/dashboard/translator.html +1 -1
  537. package/app/.next-cli-build/server/app/dashboard/translator.rsc +25 -25
  538. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator/__PAGE__.segment.rsc +2 -2
  539. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard/translator.segment.rsc +1 -1
  540. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  541. package/app/.next-cli-build/server/app/dashboard/translator.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  542. package/app/.next-cli-build/server/app/dashboard/translator.segments/_full.segment.rsc +25 -25
  543. package/app/.next-cli-build/server/app/dashboard/translator.segments/_head.segment.rsc +1 -1
  544. package/app/.next-cli-build/server/app/dashboard/translator.segments/_index.segment.rsc +8 -8
  545. package/app/.next-cli-build/server/app/dashboard/translator.segments/_tree.segment.rsc +3 -2
  546. package/app/.next-cli-build/server/app/dashboard/usage.html +1 -1
  547. package/app/.next-cli-build/server/app/dashboard/usage.rsc +25 -25
  548. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage/__PAGE__.segment.rsc +2 -2
  549. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard/usage.segment.rsc +1 -1
  550. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  551. package/app/.next-cli-build/server/app/dashboard/usage.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  552. package/app/.next-cli-build/server/app/dashboard/usage.segments/_full.segment.rsc +25 -25
  553. package/app/.next-cli-build/server/app/dashboard/usage.segments/_head.segment.rsc +1 -1
  554. package/app/.next-cli-build/server/app/dashboard/usage.segments/_index.segment.rsc +8 -8
  555. package/app/.next-cli-build/server/app/dashboard/usage.segments/_tree.segment.rsc +3 -2
  556. package/app/.next-cli-build/server/app/dashboard.html +1 -1
  557. package/app/.next-cli-build/server/app/dashboard.rsc +23 -23
  558. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard/__PAGE__.segment.rsc +2 -2
  559. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk/dashboard.segment.rsc +1 -1
  560. package/app/.next-cli-build/server/app/dashboard.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
  561. package/app/.next-cli-build/server/app/dashboard.segments/_full.segment.rsc +23 -23
  562. package/app/.next-cli-build/server/app/dashboard.segments/_head.segment.rsc +1 -1
  563. package/app/.next-cli-build/server/app/dashboard.segments/_index.segment.rsc +8 -8
  564. package/app/.next-cli-build/server/app/dashboard.segments/_tree.segment.rsc +3 -2
  565. package/app/.next-cli-build/server/app/favicon.ico/route.js.nft.json +1 -1
  566. package/app/.next-cli-build/server/app/landing/page.js +1 -1
  567. package/app/.next-cli-build/server/app/landing/page.js.nft.json +1 -1
  568. package/app/.next-cli-build/server/app/landing/page_client-reference-manifest.js +1 -1
  569. package/app/.next-cli-build/server/app/landing.html +1 -1
  570. package/app/.next-cli-build/server/app/landing.rsc +23 -23
  571. package/app/.next-cli-build/server/app/landing.segments/_full.segment.rsc +23 -23
  572. package/app/.next-cli-build/server/app/landing.segments/_head.segment.rsc +1 -1
  573. package/app/.next-cli-build/server/app/landing.segments/_index.segment.rsc +8 -8
  574. package/app/.next-cli-build/server/app/landing.segments/_tree.segment.rsc +3 -2
  575. package/app/.next-cli-build/server/app/landing.segments/landing/__PAGE__.segment.rsc +2 -2
  576. package/app/.next-cli-build/server/app/landing.segments/landing.segment.rsc +1 -1
  577. package/app/.next-cli-build/server/app/login/page.js +1 -1
  578. package/app/.next-cli-build/server/app/login/page.js.nft.json +1 -1
  579. package/app/.next-cli-build/server/app/login/page_client-reference-manifest.js +1 -1
  580. package/app/.next-cli-build/server/app/login.html +1 -1
  581. package/app/.next-cli-build/server/app/login.rsc +23 -23
  582. package/app/.next-cli-build/server/app/login.segments/_full.segment.rsc +23 -23
  583. package/app/.next-cli-build/server/app/login.segments/_head.segment.rsc +1 -1
  584. package/app/.next-cli-build/server/app/login.segments/_index.segment.rsc +8 -8
  585. package/app/.next-cli-build/server/app/login.segments/_tree.segment.rsc +3 -2
  586. package/app/.next-cli-build/server/app/login.segments/login/__PAGE__.segment.rsc +2 -2
  587. package/app/.next-cli-build/server/app/login.segments/login.segment.rsc +1 -1
  588. package/app/.next-cli-build/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  589. package/app/.next-cli-build/server/app/masuk/page.js +1 -1
  590. package/app/.next-cli-build/server/app/masuk/page.js.nft.json +1 -1
  591. package/app/.next-cli-build/server/app/masuk/page_client-reference-manifest.js +1 -1
  592. package/app/.next-cli-build/server/app-paths-manifest.json +16 -16
  593. package/app/.next-cli-build/server/chunks/1632.js +1 -0
  594. package/app/.next-cli-build/server/chunks/1688.js +2 -2
  595. package/app/.next-cli-build/server/chunks/2262.js +2 -2
  596. package/app/.next-cli-build/server/chunks/2557.js +7 -7
  597. package/app/.next-cli-build/server/chunks/3040.js +2 -2
  598. package/app/.next-cli-build/server/chunks/3405.js +2 -2
  599. package/app/.next-cli-build/server/chunks/3539.js +1 -0
  600. package/app/.next-cli-build/server/chunks/3559.js +1 -0
  601. package/app/.next-cli-build/server/chunks/3736.js +1 -1
  602. package/app/.next-cli-build/server/chunks/383.js +1 -1
  603. package/app/.next-cli-build/server/chunks/4105.js +1 -1
  604. package/app/.next-cli-build/server/chunks/4121.js +1 -1
  605. package/app/.next-cli-build/server/chunks/4539.js +2 -2
  606. package/app/.next-cli-build/server/chunks/4836.js +1 -1
  607. package/app/.next-cli-build/server/chunks/5006.js +1 -1
  608. package/app/.next-cli-build/server/chunks/5050.js +1 -0
  609. package/app/.next-cli-build/server/chunks/{9633.js → 5267.js} +12 -4
  610. package/app/.next-cli-build/server/chunks/5302.js +1 -1
  611. package/app/.next-cli-build/server/chunks/5414.js +1 -0
  612. package/app/.next-cli-build/server/chunks/5577.js +1 -1
  613. package/app/.next-cli-build/server/chunks/5638.js +2 -2
  614. package/app/.next-cli-build/server/chunks/6165.js +2 -2
  615. package/app/.next-cli-build/server/chunks/622.js +1 -0
  616. package/app/.next-cli-build/server/chunks/6385.js +1 -1
  617. package/app/.next-cli-build/server/chunks/{8385.js → 6723.js} +1 -1
  618. package/app/.next-cli-build/server/chunks/7006.js +2 -2
  619. package/app/.next-cli-build/server/chunks/740.js +1 -1
  620. package/app/.next-cli-build/server/chunks/7938.js +2 -2
  621. package/app/.next-cli-build/server/chunks/7950.js +1 -0
  622. package/app/.next-cli-build/server/chunks/8057.js +2 -2
  623. package/app/.next-cli-build/server/chunks/856.js +1 -0
  624. package/app/.next-cli-build/server/chunks/8691.js +2 -2
  625. package/app/.next-cli-build/server/chunks/8765.js +1 -1
  626. package/app/.next-cli-build/server/chunks/9984.js +1 -1
  627. package/app/.next-cli-build/server/middleware-build-manifest.js +1 -1
  628. package/app/.next-cli-build/server/middleware.js +3 -3
  629. package/app/.next-cli-build/server/pages/404.html +1 -1
  630. package/app/.next-cli-build/server/pages/500.html +1 -1
  631. package/app/.next-cli-build/server/server-reference-manifest.js +1 -1
  632. package/app/.next-cli-build/server/server-reference-manifest.json +1 -1
  633. package/app/.next-cli-build/static/chunks/2940-e9e17b73a8dbb236.js +1 -0
  634. package/app/.next-cli-build/static/chunks/{4385-f8d0890bcd2c8690.js → 4385-edcd1dd4526ccb0c.js} +1 -1
  635. package/app/.next-cli-build/static/chunks/9131-de9f8f7aa6d37223.js +3 -0
  636. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-5de110c9d826db7a.js +1 -0
  637. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-91427dc2416753e5.js +1 -0
  638. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-31a282df958d7d97.js +1 -0
  639. package/app/.next-cli-build/static/chunks/app/landing/page-7a5a45d8af9fc7a7.js +1 -0
  640. package/app/.next-cli-build/static/chunks/app/layout-4fd9787928e78424.js +1 -0
  641. package/app/.next-cli-build/static/chunks/{webpack-bc04f378a1088de3.js → webpack-ace861933f9767e3.js} +1 -1
  642. package/app/.next-cli-build/static/css/176108f7913ea72b.css +1 -0
  643. package/app/package.json +2 -2
  644. package/app/src/shared/services/quotaAutoPing.js +1 -1
  645. package/package.json +1 -1
  646. package/app/.next-cli-build/server/chunks/1929.js +0 -1
  647. package/app/.next-cli-build/server/chunks/2732.js +0 -1
  648. package/app/.next-cli-build/server/chunks/3950.js +0 -1
  649. package/app/.next-cli-build/server/chunks/5300.js +0 -1
  650. package/app/.next-cli-build/server/chunks/8171.js +0 -1
  651. package/app/.next-cli-build/server/chunks/9162.js +0 -1
  652. package/app/.next-cli-build/server/chunks/935.js +0 -1
  653. package/app/.next-cli-build/static/chunks/2940-48989ef09fe01727.js +0 -1
  654. package/app/.next-cli-build/static/chunks/9131-35d90b99e28db378.js +0 -3
  655. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/combos/page-79d84c4805fde654.js +0 -1
  656. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/console-log/page-64441a0e58f1ec16.js +0 -1
  657. package/app/.next-cli-build/static/chunks/app/(dashboard)/dashboard/providers/page-307e6341d1f0b15e.js +0 -1
  658. package/app/.next-cli-build/static/chunks/app/landing/page-775bf0f40a06728d.js +0 -1
  659. package/app/.next-cli-build/static/chunks/app/layout-c7e89b3e4871eeaa.js +0 -1
  660. package/app/.next-cli-build/static/css/04cdd30b78c3f748.css +0 -1
  661. /package/app/.next-cli-build/static/{DyCA8QWmMwHq8zuzERHLA → pnhvfkLAO8ddG3CSpJ-Gs}/_buildManifest.js +0 -0
  662. /package/app/.next-cli-build/static/{DyCA8QWmMwHq8zuzERHLA → pnhvfkLAO8ddG3CSpJ-Gs}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=6385,exports.ids=[6385],exports.modules={56230:(a,b,c)=>{c.d(b,{N:()=>n,v:()=>m});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j=process.env.DATA_DIR||("win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),"VansRoute"):g().join(i().homedir(),".9router")),k=g().join(j,"mitm","aliases.json");function l(a){let b=g().dirname(k);e().mkdirSync(b,{recursive:!0});let c=`${k}.tmp`;e().writeFileSync(c,JSON.stringify(a,null,2),"utf8"),e().renameSync(c,k)}async function m(){try{let{getMitmAlias:a}=await Promise.resolve().then(c.bind(c,81950)),b=await a();l(b||{})}catch(a){console.log("[mitmAliasCache] sync failed:",a.message)}}function n(a,b){try{let c={};if(e().existsSync(k))try{c=JSON.parse(e().readFileSync(k,"utf8"))}catch{}c[a]=b||{},l(c)}catch(a){console.log("[mitmAliasCache] write failed:",a.message)}}},56385:(a,b,c)=>{c.d(b,{Ay:()=>v,Zh:()=>u});var d=c(21820),e=c.n(d),f=c(79551),g=c(33873),h=c(29021),i=c(94164),j=c(50575),k=c(91548),l=c(56230),m=c(86851);if(!process.env.MITM_SERVER_PATH)try{let a=(0,f.fileURLToPath)("file:///home/runner/work/VansRouter/VansRouter/src/shared/services/initializeApp.js"),b=(0,g.dirname)((0,g.dirname)(a)),c=(0,g.join)(b,"mitm","server.js");(0,h.existsSync)(c)&&(process.env.MITM_SERVER_PATH=c)}catch{}try{(0,k.initDbHooks)(i.mt,i.Xx)}catch{}process.setMaxListeners(20);let n=global.__appSingleton??={signalHandlersRegistered:!1,watchdogInterval:null,networkMonitorInterval:null,lastNetworkFingerprint:null,lastWatchdogTick:Date.now(),lastOnline:null,mitmStartInProgress:!1,tunnelAutoResumed:!1,tailscaleAutoResumed:!1};async function o(){var a;await (0,i.bI)();let b=await (0,i.mt)();b.tunnelEnabled&&!n.tunnelAutoResumed&&(n.tunnelAutoResumed=!0,console.log("[InitApp] Tunnel was enabled, auto-resuming..."),r("startup").catch(a=>console.log("[InitApp] Tunnel resume failed:",a.message))),b.tailscaleEnabled&&!n.tailscaleAutoResumed&&(n.tailscaleAutoResumed=!0,console.log("[InitApp] Tailscale was enabled, auto-resuming..."),s("startup").catch(a=>console.log("[InitApp] Tailscale resume failed:",a.message))),b.tunnelEnabled&&(0,j.Al)().catch(()=>{}),b.mitmEnabled&&((0,l.v)().catch(()=>{}),p(b)),u(b),a=b,[a?.claudeAutoPing,a?.codexAutoPing].some(a=>Object.values(a?.connections||{}).some(Boolean))&&Promise.all([c.e(3398),c.e(3813),c.e(8711),c.e(7010),c.e(7916),c.e(8765),c.e(2445),c.e(32),c.e(3235),c.e(9212),c.e(4574),c.e(2557),c.e(935),c.e(9162)]).then(c.bind(c,4043)).then(({startQuotaAutoPing:a})=>a()).catch(a=>console.log("[AutoPing] scheduler start failed:",a.message))}async function p(a){if(!n.mitmStartInProgress){n.mitmStartInProgress=!0;try{if(!a.mitmEnabled||(await (0,k.getMitmStatus)()).running)return;let b=await (0,k.loadEncryptedPassword)();if(!b&&"win32"!==process.platform)return void console.log("[InitApp] MITM was enabled but no saved password found, skipping auto-start");let c=(await (0,i.PX)()).find(a=>!1!==a.isActive);console.log("[InitApp] MITM was enabled, auto-starting..."),await (0,k.startMitm)(c?.key||"sk_9router",b),console.log("[InitApp] MITM auto-started");try{await (0,k.restoreToolDNS)(b),console.log("[InitApp] DNS restored from saved state")}catch(a){console.log("[InitApp] DNS restore failed:",a.message)}}catch(a){console.log("[InitApp] MITM auto-start failed:",a.message)}finally{n.mitmStartInProgress=!1}}}let q=/^(startup|netchange|sleep|sleep\+netchange|online|unexpected-exit)$/;async function r(a){let b=(0,j.Qn)();if(!(await (0,i.mt)()).tunnelEnabled||b.cancelToken.cancelled||b.spawnInProgress)return;let c=q.test(a);if(!(0,j.nN)()){if(!c&&Date.now()-b.lastRestartAt<j.Lh)return void console.log(`[Tunnel] degraded but cooldown active, skip (${a})`);if(await (0,j.u7)()){console.log(`[Tunnel] safeRestart (${a}) — tunnel unreachable${c?" [force]":""}`);try{await (0,j.cb)(),b.lastRestartAt=Date.now(),console.log("[Tunnel] restart success")}catch(a){/cloudflared killed|tunnel cancelled/.test(a.message)||console.log("[Tunnel] restart failed:",a.message)}}}}async function s(a){let b=(0,j.oN)();if(!(await (0,i.mt)()).tailscaleEnabled||b.cancelToken.cancelled||b.spawnInProgress||("startup"===a?await (0,j.hp)():(0,j.Kp)()))return;if((0,j.si)()&&b.activeLocalPort){try{await (0,j.LC)(b.activeLocalPort),b.lastRestartAt=Date.now(),console.log("[Tailscale] funnel re-established (daemon alive)")}catch(a){console.log("[Tailscale] funnel recovery failed:",a.message)}return}let c=q.test(a);if(!c&&Date.now()-b.lastRestartAt<j.Lh)return void console.log(`[Tailscale] degraded but cooldown active, skip (${a})`);if(await (0,j.u7)()){console.log(`[Tailscale] safeRestart (${a}) — daemon not running${c?" [force]":""}`);try{await (0,j.mh)(),b.lastRestartAt=Date.now(),console.log("[Tailscale] restart success")}catch(a){console.log("[Tailscale] restart failed:",a.message)}}}function t(){let a=e().networkInterfaces(),b=[];for(let[c,d]of Object.entries(a))if(d&&!j.Lx.test(c))for(let a of d)a.internal||"IPv4"!==a.family||b.push(`${c}:${a.address}`);return b.sort().join("|")}function u(a){if(a?.tunnelEnabled||a?.tailscaleEnabled){!n.watchdogInterval&&(n.watchdogInterval=setInterval(()=>{r("watchdog").catch(()=>{}),s("watchdog").catch(()=>{})},j.DA),n.watchdogInterval.unref&&n.watchdogInterval.unref()),!n.networkMonitorInterval&&(n.lastNetworkFingerprint=t(),n.lastWatchdogTick=Date.now(),n.lastOnline=null,n.networkMonitorInterval=setInterval(async()=>{try{let a=Date.now(),b=a-n.lastWatchdogTick;n.lastWatchdogTick=a;let c=t(),d=c!==n.lastNetworkFingerprint,e=b>6*j.rI;d&&(n.lastNetworkFingerprint=c);let f=await (0,j.u7)(),g=!1===n.lastOnline;if(n.lastOnline=f,!f||!d&&!e&&!g)return;await new Promise(a=>setTimeout(a,j.cw));let h=g?"online":e&&d?"sleep+netchange":e?"sleep":"netchange";r(h).catch(()=>{}),s(h).catch(()=>{})}catch(a){console.log("[NetworkMonitor] error:",a.message)}},j.rI),n.networkMonitorInterval.unref&&n.networkMonitorInterval.unref());return}n.watchdogInterval&&(clearInterval(n.watchdogInterval),n.watchdogInterval=null),n.networkMonitorInterval&&(clearInterval(n.networkMonitorInterval),n.networkMonitorInterval=null,n.lastNetworkFingerprint=null,n.lastOnline=null)}let v=async function a(){try{if(!n.signalHandlersRegistered){let a=()=>{try{(0,k.removeAllDNSEntriesSync)()}catch{}try{(0,m.killAllBridges)()}catch{}(0,j.ss)(),process.exit()};process.on("SIGINT",a),process.on("SIGTERM",a),process.on("exit",()=>{try{(0,k.removeAllDNSEntriesSync)()}catch{}}),n.signalHandlersRegistered=!0}(0,j.X$)(()=>{r("unexpected-exit").catch(()=>{})}),setTimeout(()=>{o().catch(a=>console.error("[InitApp] deferred startup failed:",a.message))},3e3)}catch(a){console.error("[InitApp] Error:",a)}}},81928:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],ALLOWED_MCP_COMMANDS:new Set(["npx","node","uvx","python","python3","bunx","bun"]),buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},86851:(a,b,c)=>{let{spawn:d}=c(79646),e=c(55511),{LOCAL_STDIO_PLUGINS:f}=c(81928),g="__9routerMcpBridges",h=()=>(globalThis[g]||(globalThis[g]=new Map),globalThis[g]);function i(a){return f.find(b=>b.name===a)||null}function j(a){let b=h(),c=b.get(a);if(c?.proc&&!c.proc.killed&&null===c.proc.exitCode)return c;let e=i(a);if(!e)throw Error(`Unknown local plugin: ${a}`);let f=d(e.command,e.args,{stdio:["pipe","pipe","pipe"],env:process.env});return c={proc:f,sessions:new Map,buffer:""},b.set(a,c),f.stdout.on("data",a=>{let b;for(c.buffer+=a.toString("utf8");(b=c.buffer.indexOf("\n"))>=0;){let a=c.buffer.slice(0,b).trim();if(c.buffer=c.buffer.slice(b+1),!a)continue;let d=function(a){try{let b=JSON.parse(a),c=b?.result?.content;if(!Array.isArray(c))return a;let d=!1;for(let a of c)if(a?.type==="text"&&"string"==typeof a.text){let b=function(a){if("string"!=typeof a||a.length<2e3)return a;let b=a;if((b=function(a){let b=a.split("\n"),c=[],d=0;for(;d<b.length;){let a=b[d],e=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(!e){c.push(a),d++;continue}let f=e[1],g=e[2],h=d;for(;h<b.length;){let a=b[h],c=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(c&&c[1]===f&&c[2]===g||a.startsWith(`${f} `)||a.startsWith(`${f} `)){h++;continue}break}let i=h-d;if(i>=30){let a=function(a,b,c,d){let e=0;for(let f=b;f<a.length;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(b&&b[1]===c&&b[2]===d&&++e>10)return f}return a.length}(b,d,f,g),e=function(a,b,c,d){let e=[];for(let f=0;f<b;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);b&&b[1]===c&&b[2]===d&&e.push(f)}return e.length>5?e[e.length-5]:b}(b,h,f,g);for(let e=d;e<a;e++)c.push(b[e]);c.push(`${f}... [${i-10-5} similar "${g}" items omitted by 9router bridge]`);for(let a=e;a<h;a++)c.push(b[a])}else for(let a=d;a<h;a++)c.push(b[a]);d=h}return c.join("\n")}(b=(b=b.replace(/^\s*-\s*generic:?\s*$/gm,"")).replace(/^\s*-\s*text:\s*""\s*$/gm,""))).length>5e4){let c=b.slice(0,49700);b=`${c}
1
+ "use strict";exports.id=6385,exports.ids=[6385],exports.modules={56230:(a,b,c)=>{c.d(b,{N:()=>n,v:()=>m});var d=c(29021),e=c.n(d),f=c(33873),g=c.n(f),h=c(21820),i=c.n(h);let j=process.env.DATA_DIR||("win32"===process.platform?g().join(process.env.APPDATA||g().join(i().homedir(),"AppData","Roaming"),"VansRoute"):g().join(i().homedir(),".9router")),k=g().join(j,"mitm","aliases.json");function l(a){let b=g().dirname(k);e().mkdirSync(b,{recursive:!0});let c=`${k}.tmp`;e().writeFileSync(c,JSON.stringify(a,null,2),"utf8"),e().renameSync(c,k)}async function m(){try{let{getMitmAlias:a}=await Promise.resolve().then(c.bind(c,81950)),b=await a();l(b||{})}catch(a){console.log("[mitmAliasCache] sync failed:",a.message)}}function n(a,b){try{let c={};if(e().existsSync(k))try{c=JSON.parse(e().readFileSync(k,"utf8"))}catch{}c[a]=b||{},l(c)}catch(a){console.log("[mitmAliasCache] write failed:",a.message)}}},56385:(a,b,c)=>{c.d(b,{Ay:()=>v,Zh:()=>u});var d=c(21820),e=c.n(d),f=c(79551),g=c(33873),h=c(29021),i=c(94164),j=c(50575),k=c(91548),l=c(56230),m=c(86851);if(!process.env.MITM_SERVER_PATH)try{let a=(0,f.fileURLToPath)("file:///home/runner/work/VansRouter/VansRouter/src/shared/services/initializeApp.js"),b=(0,g.dirname)((0,g.dirname)(a)),c=(0,g.join)(b,"mitm","server.js");(0,h.existsSync)(c)&&(process.env.MITM_SERVER_PATH=c)}catch{}try{(0,k.initDbHooks)(i.mt,i.Xx)}catch{}process.setMaxListeners(20);let n=global.__appSingleton??={signalHandlersRegistered:!1,watchdogInterval:null,networkMonitorInterval:null,lastNetworkFingerprint:null,lastWatchdogTick:Date.now(),lastOnline:null,mitmStartInProgress:!1,tunnelAutoResumed:!1,tailscaleAutoResumed:!1};async function o(){var a;await (0,i.bI)();let b=await (0,i.mt)();b.tunnelEnabled&&!n.tunnelAutoResumed&&(n.tunnelAutoResumed=!0,console.log("[InitApp] Tunnel was enabled, auto-resuming..."),r("startup").catch(a=>console.log("[InitApp] Tunnel resume failed:",a.message))),b.tailscaleEnabled&&!n.tailscaleAutoResumed&&(n.tailscaleAutoResumed=!0,console.log("[InitApp] Tailscale was enabled, auto-resuming..."),s("startup").catch(a=>console.log("[InitApp] Tailscale resume failed:",a.message))),b.tunnelEnabled&&(0,j.Al)().catch(()=>{}),b.mitmEnabled&&((0,l.v)().catch(()=>{}),p(b)),u(b),a=b,[a?.claudeAutoPing,a?.codexAutoPing].some(a=>Object.values(a?.connections||{}).some(Boolean))&&Promise.all([c.e(3398),c.e(3813),c.e(8711),c.e(7010),c.e(7916),c.e(8765),c.e(2445),c.e(3235),c.e(32),c.e(9212),c.e(4574),c.e(2557),c.e(622),c.e(856)]).then(c.bind(c,4043)).then(({startQuotaAutoPing:a})=>a()).catch(a=>console.log("[AutoPing] scheduler start failed:",a.message))}async function p(a){if(!n.mitmStartInProgress){n.mitmStartInProgress=!0;try{if(!a.mitmEnabled||(await (0,k.getMitmStatus)()).running)return;let b=await (0,k.loadEncryptedPassword)();if(!b&&"win32"!==process.platform)return void console.log("[InitApp] MITM was enabled but no saved password found, skipping auto-start");let c=(await (0,i.PX)()).find(a=>!1!==a.isActive);console.log("[InitApp] MITM was enabled, auto-starting..."),await (0,k.startMitm)(c?.key||"sk_9router",b),console.log("[InitApp] MITM auto-started");try{await (0,k.restoreToolDNS)(b),console.log("[InitApp] DNS restored from saved state")}catch(a){console.log("[InitApp] DNS restore failed:",a.message)}}catch(a){console.log("[InitApp] MITM auto-start failed:",a.message)}finally{n.mitmStartInProgress=!1}}}let q=/^(startup|netchange|sleep|sleep\+netchange|online|unexpected-exit)$/;async function r(a){let b=(0,j.Qn)();if(!(await (0,i.mt)()).tunnelEnabled||b.cancelToken.cancelled||b.spawnInProgress)return;let c=q.test(a);if(!(0,j.nN)()){if(!c&&Date.now()-b.lastRestartAt<j.Lh)return void console.log(`[Tunnel] degraded but cooldown active, skip (${a})`);if(await (0,j.u7)()){console.log(`[Tunnel] safeRestart (${a}) — tunnel unreachable${c?" [force]":""}`);try{await (0,j.cb)(),b.lastRestartAt=Date.now(),console.log("[Tunnel] restart success")}catch(a){/cloudflared killed|tunnel cancelled/.test(a.message)||console.log("[Tunnel] restart failed:",a.message)}}}}async function s(a){let b=(0,j.oN)();if(!(await (0,i.mt)()).tailscaleEnabled||b.cancelToken.cancelled||b.spawnInProgress||("startup"===a?await (0,j.hp)():(0,j.Kp)()))return;if((0,j.si)()&&b.activeLocalPort){try{await (0,j.LC)(b.activeLocalPort),b.lastRestartAt=Date.now(),console.log("[Tailscale] funnel re-established (daemon alive)")}catch(a){console.log("[Tailscale] funnel recovery failed:",a.message)}return}let c=q.test(a);if(!c&&Date.now()-b.lastRestartAt<j.Lh)return void console.log(`[Tailscale] degraded but cooldown active, skip (${a})`);if(await (0,j.u7)()){console.log(`[Tailscale] safeRestart (${a}) — daemon not running${c?" [force]":""}`);try{await (0,j.mh)(),b.lastRestartAt=Date.now(),console.log("[Tailscale] restart success")}catch(a){console.log("[Tailscale] restart failed:",a.message)}}}function t(){let a=e().networkInterfaces(),b=[];for(let[c,d]of Object.entries(a))if(d&&!j.Lx.test(c))for(let a of d)a.internal||"IPv4"!==a.family||b.push(`${c}:${a.address}`);return b.sort().join("|")}function u(a){if(a?.tunnelEnabled||a?.tailscaleEnabled){!n.watchdogInterval&&(n.watchdogInterval=setInterval(()=>{r("watchdog").catch(()=>{}),s("watchdog").catch(()=>{})},j.DA),n.watchdogInterval.unref&&n.watchdogInterval.unref()),!n.networkMonitorInterval&&(n.lastNetworkFingerprint=t(),n.lastWatchdogTick=Date.now(),n.lastOnline=null,n.networkMonitorInterval=setInterval(async()=>{try{let a=Date.now(),b=a-n.lastWatchdogTick;n.lastWatchdogTick=a;let c=t(),d=c!==n.lastNetworkFingerprint,e=b>6*j.rI;d&&(n.lastNetworkFingerprint=c);let f=await (0,j.u7)(),g=!1===n.lastOnline;if(n.lastOnline=f,!f||!d&&!e&&!g)return;await new Promise(a=>setTimeout(a,j.cw));let h=g?"online":e&&d?"sleep+netchange":e?"sleep":"netchange";r(h).catch(()=>{}),s(h).catch(()=>{})}catch(a){console.log("[NetworkMonitor] error:",a.message)}},j.rI),n.networkMonitorInterval.unref&&n.networkMonitorInterval.unref());return}n.watchdogInterval&&(clearInterval(n.watchdogInterval),n.watchdogInterval=null),n.networkMonitorInterval&&(clearInterval(n.networkMonitorInterval),n.networkMonitorInterval=null,n.lastNetworkFingerprint=null,n.lastOnline=null)}let v=async function a(){try{if(!n.signalHandlersRegistered){let a=()=>{try{(0,k.removeAllDNSEntriesSync)()}catch{}try{(0,m.killAllBridges)()}catch{}(0,j.ss)(),process.exit()};process.on("SIGINT",a),process.on("SIGTERM",a),process.on("exit",()=>{try{(0,k.removeAllDNSEntriesSync)()}catch{}}),n.signalHandlersRegistered=!0}(0,j.X$)(()=>{r("unexpected-exit").catch(()=>{})}),setTimeout(()=>{o().catch(a=>console.error("[InitApp] deferred startup failed:",a.message))},3e3)}catch(a){console.error("[InitApp] Error:",a)}}},81928:a=>{a.exports={DEFAULT_PLUGINS:[{name:"exa",title:"Exa",description:"Real-time web search and code documentation",url:"https://mcp.exa.ai/mcp",transport:"http",oauth:!1,toolNames:["web_search_exa","web_fetch_exa"]},{name:"tavily",title:"Tavily",description:"Real-time web search optimized for LLM agents",url:"https://mcp.tavily.com/mcp",transport:"http",oauth:!0,toolNames:["tavily_search","tavily_extract","tavily_crawl","tavily_map"]}],LOCAL_STDIO_PLUGINS:[{name:"browsermcp",title:"Browser MCP",description:"Control your running Chrome (requires Chrome extension)",extensionUrl:"https://chromewebstore.google.com/detail/browser-mcp-automate-your/bjfgambnhccakkhmkepdoekmckoijdlc",command:"npx",args:["-y","@browsermcp/mcp@latest"],toolNames:["browser_navigate","browser_snapshot","browser_click","browser_type","browser_screenshot","browser_get_console_logs","browser_wait","browser_press_key","browser_go_back","browser_go_forward"]}],ALLOWED_MCP_COMMANDS:new Set(["npx","node","uvx","python","python3","bunx","bun"]),buildManagedMcpServers:function(a){let b=Array.isArray(a)?a:[],c=[],d=new Set;for(let a of b){if(!a?.name||!a?.url||d.has(a.name))continue;d.add(a.name);let b={name:a.name,url:a.url,transport:a.transport||(/\/sse(\b|\/)/i.test(a.url)?"sse":"http")};if(a.oauth&&(b.oauth=!0),Array.isArray(a.toolNames)&&a.toolNames.length>0){let c=`${a.name}-`,d=new Set;for(let b of a.toolNames){if("string"!=typeof b||!b)continue;let a=b;for(;a.startsWith(c);)a=a.slice(c.length);d.add(a)}let e={};for(let a of d)e[a]="allow",e[`${c}${a}`]="allow";b.toolPolicy=e}c.push(b)}return c}}},86851:(a,b,c)=>{let{spawn:d}=c(79646),e=c(55511),{LOCAL_STDIO_PLUGINS:f}=c(81928),g="__9routerMcpBridges",h=()=>(globalThis[g]||(globalThis[g]=new Map),globalThis[g]);function i(a){return f.find(b=>b.name===a)||null}function j(a){let b=h(),c=b.get(a);if(c?.proc&&!c.proc.killed&&null===c.proc.exitCode)return c;let e=i(a);if(!e)throw Error(`Unknown local plugin: ${a}`);let f=d(e.command,e.args,{stdio:["pipe","pipe","pipe"],env:process.env});return c={proc:f,sessions:new Map,buffer:""},b.set(a,c),f.stdout.on("data",a=>{let b;for(c.buffer+=a.toString("utf8");(b=c.buffer.indexOf("\n"))>=0;){let a=c.buffer.slice(0,b).trim();if(c.buffer=c.buffer.slice(b+1),!a)continue;let d=function(a){try{let b=JSON.parse(a),c=b?.result?.content;if(!Array.isArray(c))return a;let d=!1;for(let a of c)if(a?.type==="text"&&"string"==typeof a.text){let b=function(a){if("string"!=typeof a||a.length<2e3)return a;let b=a;if((b=function(a){let b=a.split("\n"),c=[],d=0;for(;d<b.length;){let a=b[d],e=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(!e){c.push(a),d++;continue}let f=e[1],g=e[2],h=d;for(;h<b.length;){let a=b[h],c=a.match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(c&&c[1]===f&&c[2]===g||a.startsWith(`${f} `)||a.startsWith(`${f} `)){h++;continue}break}let i=h-d;if(i>=30){let a=function(a,b,c,d){let e=0;for(let f=b;f<a.length;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);if(b&&b[1]===c&&b[2]===d&&++e>10)return f}return a.length}(b,d,f,g),e=function(a,b,c,d){let e=[];for(let f=0;f<b;f++){let b=a[f].match(/^(\s*)-\s*([a-zA-Z]+)\b/);b&&b[1]===c&&b[2]===d&&e.push(f)}return e.length>5?e[e.length-5]:b}(b,h,f,g);for(let e=d;e<a;e++)c.push(b[e]);c.push(`${f}... [${i-10-5} similar "${g}" items omitted by 9router bridge]`);for(let a=e;a<h;a++)c.push(b[a])}else for(let a=d;a<h;a++)c.push(b[a]);d=h}return c.join("\n")}(b=(b=b.replace(/^\s*-\s*generic:?\s*$/gm,"")).replace(/^\s*-\s*text:\s*""\s*$/gm,""))).length>5e4){let c=b.slice(0,49700);b=`${c}
2
2
 
3
3
  ... [truncated ${a.length-c.length} chars by 9router bridge. Page is large; ask user to scroll/navigate to a specific section, or click an element with the refs shown above]`}return b}(a.text);b!==a.text&&(a.text=b,d=!0)}return d?JSON.stringify(b):a}catch{return a}}(a);for(let a of c.sessions.values())try{a(`event: message
4
4
  data: ${d}
@@ -1 +1 @@
1
- "use strict";exports.id=8385,exports.ids=[8385],exports.modules={12340:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},16723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>A});var e=c(92557),f=c(14836),g=c(5505),h=c(83679),i=c(8188),j=c(94164),k=c(84310),l=c(95584),m=c(66781),n=c(36110),o=c(12340),p=c(15261),q=c(44004),r=c(83571),s=c(92398),t=c(69152),u=c(90293),v=c(83950),w=c(72238),x=c(97118),y=a([e,n]);function z(a,b=null,c=!0){return!!c&&(b?(0,g.iF)(a,b):(0,g.qG)(a))}async function A(a,b=null){let c;try{c=await a.json()}catch{return u.warn("CHAT","Invalid JSON body"),(0,p.yj)(s.gx.BAD_REQUEST,"Invalid JSON body")}(a.headers.get("accept")||"").includes("text/event-stream")&&void 0===c.stream&&(c.stream=!0),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,l.n)(b.headers);let d=new URL(a.url),e=c.model,g=c.messages?.length||c.input?.length||0,h=c.tools?.length||0,i=c.reasoning_effort||c.reasoning?.effort||null;u.request("POST",`${d.pathname} | ${e} | ${g} msgs${h?` | ${h} tools`:""}${i?` | effort=${i}`:""}`);let k=a.headers.get("Authorization"),n=(0,f.Tr)(a);if(k&&n){let a=u.maskKey(n);u.debug("AUTH",`API Key: ${a}`)}else u.debug("AUTH","No API key provided (local mode)");let o=await (0,j.mt)(),t=null;if(!await (0,f.Ov)(a)&&o.requireApiKey){if(!n)return u.warn("AUTH","Missing API key (requireApiKey=true)"),(0,p.yj)(s.gx.UNAUTHORIZED,"Missing API key");if(!(t=await (0,f.kI)(n)))return u.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,p.yj)(s.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return u.warn("CHAT","Missing model"),(0,p.yj)(s.gx.BAD_REQUEST,"Missing model");if(!(0,f.L$)(t,"llm"))return u.warn("AUTH","LLM kind not allowed for API key"),(0,p.yj)(s.gx.FORBIDDEN,"Chat/LLM requests are not allowed for this API key");let v=a?.headers?.get("user-agent")||"",w=(0,r.c)(c,e,v,!!o.ccFilterNaming);if(w)return w.response||w;let x=await (0,m.d_)(e);if(x){if(!(0,f.DC)(t,e))return u.warn("AUTH",`Combo "${e}" not allowed for API key`),(0,p.yj)(s.gx.FORBIDDEN,`Combo "${e}" is not allowed for this API key`);let d=o.comboStrategies||{},g=d[e]?.fallbackStrategy||o.comboStrategy||"fallback";if("fusion"===g)return u.info("CHAT",`Combo "${e}" with ${x.length} models (strategy: fusion)`),(0,q.vt)({body:c,models:x,handleSingleModel:(c,d,e)=>{let f=b;if(e&&b){let{tools:a,tool_choice:c,...d}=b.body||{};f={...b,body:d}}return B(c,d,f,a,n,t)},log:u,comboName:e,judgeModel:d[e]?.judgeModel,tuning:d[e]?.fusionTuning});let h=o.comboStickyRoundRobinLimit;return u.info("CHAT",`Combo "${e}" with ${x.length} models (strategy: ${g}, sticky: ${h})`),(0,q.Pr)({body:c,models:x,handleSingleModel:(c,d,e)=>B(c,d,b,a,n,t,e),log:u,comboName:e,comboStrategy:g,comboStickyLimit:h,signal:a?.signal??null,timeoutMs:d[e]?.targetTimeoutMs??null,queueDepth:d[e]?.queueDepth??null})}return B(c,e,b,a,n,t)}async function B(a,b,c=null,d=null,e=null,l=null,r=null){let y=r?.signal??null,A=d?.signal&&y?AbortSignal.any([d.signal,y]):d?.signal||y||null,C=await (0,m.mA)(b);if(!C.provider){let f=await (0,m.d_)(b);if(f){let g=await (0,j.mt)(),h=g.comboStrategies||{},i=h[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("fusion"===i)return u.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,q.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=c;if(f&&c){let{tools:a,tool_choice:b,...d}=c.body||{};g={...c,body:d}}return B(a,b,g,d,e,l)},log:u,comboName:b,judgeModel:h[b]?.judgeModel,tuning:h[b]?.fusionTuning});let k=g.comboStickyRoundRobinLimit;return u.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${i}, sticky: ${k})`),(0,q.Pr)({body:a,models:f,handleSingleModel:(a,b,f)=>B(a,b,c,d,e,l,f),log:u,comboName:b,comboStrategy:i,comboStickyLimit:k,signal:d?.signal??null,timeoutMs:h[b]?.targetTimeoutMs??null,queueDepth:h[b]?.queueDepth??null})}return u.warn("CHAT","Invalid model format",{model:b}),(0,p.yj)(s.gx.BAD_REQUEST,"Invalid model format")}let{provider:D,model:E}=C;if(!await (0,f.kt)(l,D))return u.warn("AUTH",`Provider "${D}" not allowed for API key`,{provider:D}),(0,p.yj)(s.gx.FORBIDDEN,`Provider "${D}" is not allowed for this API key`);let F=`${D}/${E}`;if(!(b===F?await (0,k.Uw)(F,l):await (0,k.Uw)(b,l)||await (0,k.Uw)(F,l)))return u.warn("CHAT","Model not in available models list",{model:F}),(0,p.yj)(s.gx.NOT_FOUND,`Model "${F}" is not available. Only models listed in /v1/models can be used.`);b!==`${D}/${E}`?u.info("ROUTING",`${b} → ${D}/${E}`):u.info("ROUTING",`Provider: ${D}, Model: ${E}`);let G=d?.headers?.get("user-agent")||"",H=await (0,j.mt)(),I=!1!==H.circuitBreakerEnabled&&0!==H.circuitBreakerEnabled;if(z(D,null,I)){let a=(0,g.xK)(D),b=Math.ceil(a/1e3)||30,c=new Date(Date.now()+a).toISOString();return u.warn("GATE",`${D} circuit breaker OPEN on all proxy buckets — short-circuiting before credential lookup`),(0,p.VO)((0,p.wO)(s.gx.SERVICE_UNAVAILABLE,`[${D}/${E}] Provider temporarily unavailable (circuit breaker open)`,c,`${b}s`),null)}let J=0;try{let a=await (0,j.getProviderConnections)({provider:D});J=a?.length||0}catch(a){u?.warn?.("AUTH",`Failed to count provider connections for ${D}: ${a.message}`)}let K=new Set,L=null,M=null,N=null,O=0,P=0;for(;;){let b;if(d?.signal?.aborted)return u.info("CHAT",`[${D}/${E}] client disconnected — aborting fallback loop`),(0,p.VO)(new Response(null,{status:499}),N);let k=await (0,f.c1)(D,K,E);if(!k||k.allRateLimited){if(k?.allRateLimited){if(k.retryAfter&&P<x.gI){let a=await (0,x.U5)({retryAfter:k.retryAfter,retriesSoFar:P,signal:d?.signal});if(a.shouldRetry){P++,u.info("CHAT",`[${D}/${E}] all accounts rate-limited — waited ${a.waitedMs}ms, retrying (attempt ${P})`);continue}if("client_disconnected"===a.reason)return u.info("CHAT",`[${D}/${E}] client disconnected during cooldown wait — aborting`),(0,p.VO)(new Response(null,{status:499}),k?.connectionId??null);u.info("CHAT",`[${D}/${E}] cooldown retry skipped: ${a.reason}`)}let a=L||k.lastError||"Unavailable",b=M||Number(k.lastErrorCode)||s.gx.SERVICE_UNAVAILABLE;return u.warn("CHAT",`[${D}/${E}] ${a} (${k.retryAfterHuman})`),(0,p.VO)((0,p.wO)(b,`[${D}/${E}] ${a}`,k.retryAfter,k.retryAfterHuman),k?.connectionId??null)}if(0===K.size)return u.warn("AUTH",`No active credentials for provider: ${D}`),(0,p.VO)((0,p.yj)(s.gx.NOT_FOUND,`No active credentials for provider: ${D}`),k?.connectionId??null);return u.warn("CHAT","No more accounts available",{provider:D}),(0,p.VO)((0,p.yj)(M||s.gx.SERVICE_UNAVAILABLE,L||"All accounts unavailable"),N)}let m=(0,i.T)(k.providerSpecificData);if(z(D,m,I)){u.warn("AUTH",`${D} proxy bucket ${m} circuit breaker OPEN — skipping account ${k.connectionName}`),K.add(k.connectionId),N=k.connectionId;continue}u.info("AUTH",`\x1b[32mUsing ${D} account: ${k.connectionName}\x1b[0m`);let q=await (0,v.eU)(D,k);if(("antigravity"===D||"gemini-cli"===D)&&!q.projectId){let a=await (0,w.eG)(k.connectionId,q.accessToken);a&&(q.projectId=a,(0,v.vN)(k.connectionId,{projectId:a}).catch(()=>{}))}let y=(0,h.pz)({provider:D,model:E,connectionId:k.connectionId,credentials:q,proxyHash:m}),B=(0,h.VQ)(q),C=!1!==H.semaphoreEnabled&&0!==H.semaphoreEnabled,F=()=>{};if(C&&y&&null!=B)try{let a={maxConcurrency:B,timeoutMs:3e4};r?.maxQueueSize!=null&&(a.maxQueueSize=r.maxQueueSize),F=await (0,h.XC)(y,a)}catch(a){if((0,h.rv)(a)){u.warn("AUTH",`Account ${k.connectionName} at capacity, trying fallback`),K.add(k.connectionId);continue}throw a}let Q=(H.providerThinking||{})[D]||null;try{b=await (0,n.wk)({body:{...a,model:`${D}/${E}`},modelInfo:{provider:D,model:E,accountCount:J},credentials:q,log:u,clientRawRequest:c,connectionId:k.connectionId,userAgent:G,apiKey:e,apiKeyName:l?.name||null,ccFilterNaming:!!H.ccFilterNaming,rtkEnabled:!!H.rtkEnabled,headroomEnabled:!!H.headroomEnabled,headroomUrl:H.headroomUrl||o.ag,headroomCompressUserMessages:!!H.headroomCompressUserMessages,cavemanEnabled:!!H.cavemanEnabled,cavemanLevel:H.cavemanLevel||"full",ponytailEnabled:!!H.ponytailEnabled,ponytailLevel:H.ponytailLevel||"full",loopGuardEnabled:!1!==H.loopGuardEnabled&&0!==H.loopGuardEnabled,providerThinking:Q,clientSignal:A,sourceFormatOverride:d?.url?(0,t.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,v.vN)(k.connectionId,{...a,existingProviderSpecificData:k.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(k.connectionId,k,E),(0,g.Fr)(D,m)}})}finally{F()}if(b.success)return(0,p.VO)(b.response,k.connectionId);if("STREAM_EARLY_EOF"===b.errorCode&&O<1){O++,u.warn("STREAM",`${D}/${E} closed stream before useful content — retrying once (attempt ${O})`);continue}let R=b.error?.message||b.error;if((0,g.lE)(D,R))try{let a=(0,g.CR)();await (0,j.updateProviderConnection)(k.connectionId,a),u.warn("AUTH",`Kimchi quota exhausted: deactivated ${k.connectionName||k.connectionId} until ${a.rateLimitedUntil}`)}catch(a){u.error("AUTH",`Failed to deactivate Kimchi account on quota exhausted: ${a.message}`)}if((0,g.Z6)(D,R)&&429===b.status)try{let a=(0,g.UQ)(E);await (0,j.updateProviderConnection)(k.connectionId,a),u.warn("AUTH",`Daily quota exhausted: locked model ${E} on ${k.connectionName||k.connectionId} until tomorrow 00:00 UTC`)}catch(a){u.error("AUTH",`Failed to lock model on daily quota exhaustion: ${a.message}`)}let{shouldFallback:S}=await (0,f.vk)(k.connectionId,b.status,R,D,E,b.resetsAtMs);if((0,g.lE)(D,R)||(0,g.p8)(D,b.status,R,u,k.connectionId,m),S){u.warn("AUTH",`Account ${k.connectionName} unavailable (${b.status}), trying fallback`),K.add(k.connectionId),L=R,M=b.status;continue}return(0,p.VO)(b.response,k.connectionId)}}[e,n]=y.then?(await y)():y,d()}catch(a){d(a)}})},56211:(a,b,c)=>{c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(5759);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){if((i=i||0)<0||i+16>c.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i},66781:(a,b,c)=>{c.d(b,{d_:()=>j,mA:()=>i});var d=c(94164),e=c(23095),f=c(53813);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},h=new Set(Object.keys(g));for(let a of f.A)for(let b of(h.add(a.id),a.alias&&h.add(a.alias),a.aliases||[]))h.add(b);async function i(a){let b,c=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!c.isAlias){if(!h.has(c.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===c.providerAlias);if(a)return{provider:a.id,model:c.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===c.providerAlias);if(b)return{provider:b.id,model:c.model};let e=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===c.providerAlias);if(e)return{provider:e.id,model:c.model}}return{provider:c.provider,model:c.model}}return await (0,d.Dj)(c.model)?{provider:null,model:c.model}:(0,e.js)(a,d.OM)}async function j(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},83679:(a,b,c)=>{c.d(b,{VQ:()=>j,XC:()=>g,pz:()=>i,rv:()=>h});let d=new Map;class e extends Error{constructor(a,b){super(`Semaphore "${a}" capacity reached — timed out after ${b}ms`),this.name="SemaphoreCapacityError",this.semaphoreKey=a,this.timeoutMs=b}}function f(a,b){b.cleanupTimer||(b.cleanupTimer=setTimeout(()=>{b.cleanupTimer=null,b&&0===b.running&&0===b.queue.length&&(!b.blockedUntil||Date.now()>=b.blockedUntil)&&(b.cleanupTimer&&(clearTimeout(b.cleanupTimer),b.cleanupTimer=null),d.delete(a))},0),"function"==typeof b.cleanupTimer.unref&&b.cleanupTimer.unref())}function g(a,b={}){let c,h=b.maxConcurrency??1,i=b.timeoutMs??3e4,j=b.signal??null,k=b.maxQueueSize??20;if(null==h||h<=0)return Promise.resolve(()=>{});let l=((c=d.get(a))?c.maxConcurrency=h:(c={running:0,maxConcurrency:h,queue:[],blockedUntil:null,cleanupTimer:null},d.set(a,c)),c);if(l.blockedUntil&&Date.now()<l.blockedUntil);else if(l.blockedUntil=null,l.running<l.maxConcurrency){l.running++;let b=!1;return Promise.resolve(()=>{b||(b=!0,l.running--,function a(b,c){for(;c.queue.length>0&&c.running<c.maxConcurrency&&!(c.blockedUntil&&Date.now()<c.blockedUntil);){c.blockedUntil=null;let d=c.queue.shift();if(!d)break;c.running++;let e=!1;d.resolve(()=>{e||(e=!0,c.running--,a(b,c))})}0===c.running&&0===c.queue.length&&(!c.blockedUntil||Date.now()>=c.blockedUntil)&&f(b,c)}(a,l))})}return l.queue.length>=k?Promise.reject(new e(a,0)):new Promise((b,c)=>{let d=!1,g=setTimeout(()=>{if(d)return;d=!0;let b=l.queue.indexOf(h);b>=0&&l.queue.splice(b,1),c(new e(a,i))},i);"function"==typeof g.unref&&g.unref(),j&&j.addEventListener?.("abort",()=>{if(d)return;d=!0,clearTimeout(g);let a=l.queue.indexOf(h);a>=0&&l.queue.splice(a,1),c(j.reason||Error("Aborted"))});let h={resolve:a=>{d||(d=!0,clearTimeout(g),b(a))},reject:a=>{d||(d=!0,clearTimeout(g),c(a))},timer:g};l.queue.push(h),f(a,l)})}function h(a){return a instanceof e}function i({provider:a,model:b,connectionId:c,credentials:d,proxyHash:e="direct"}){return a&&c?function({provider:a,accountKey:b,proxyHash:c="direct"}){return`${String(a)}:${String(b)}:${String(c)}`}({provider:a,accountKey:c,proxyHash:e}):null}function j(a){if(!a)return 3;let b=a.providerSpecificData?.maxConcurrency;return 0===b||null===b?null:"number"==typeof b&&b>0?b:3}},97118:(a,b,c)=>{c.d(b,{U5:()=>e,gI:()=>d});let d=1;async function e({retryAfter:a,retriesSoFar:b,signal:c,maxWaitMs:f=3e4,maxRetries:g=d,now:h=Date.now}){if(b>=g)return{shouldRetry:!1,reason:"budget_exhausted"};if(c?.aborted)return{shouldRetry:!1,reason:"client_disconnected"};let i=function(a){if(null==a)return null;if("number"==typeof a)return Number.isFinite(a)?a:null;if(a instanceof Date)return Number.isNaN(a.getTime())?null:a.getTime();if("string"==typeof a){let b=Date.parse(a);return Number.isNaN(b)?null:b}return null}(a);if(null==i)return{shouldRetry:!1,reason:"invalid_retry_after"};let j=i-h();if(j<=0)return{shouldRetry:!0,waitedMs:0};if(j>f)return{shouldRetry:!1,reason:"wait_too_long"};try{var k,l;return await (k=j,l=c,new Promise((a,b)=>{if(l?.aborted)return void b(l.reason||Error("aborted"));let c=setTimeout(()=>{l&&l.removeEventListener("abort",d),a()},k);function d(){clearTimeout(c),b(l.reason||Error("aborted"))}l&&l.addEventListener("abort",d,{once:!0})})),{shouldRetry:!0,waitedMs:j}}catch(a){if(c?.aborted)return{shouldRetry:!1,reason:"client_disconnected"};return{shouldRetry:!1,reason:"wait_failed"}}}}};
1
+ "use strict";exports.id=6723,exports.ids=[6723],exports.modules={12340:(a,b,c)=>{c.d(b,{F_:()=>g,Nc:()=>h,Qh:()=>t,Su:()=>q,ag:()=>o,kI:()=>p,rl:()=>u,sy:()=>s});var d=c(79646),e=c(33873),f=c.n(e);let g=["code","ml"],h={code:["tree-sitter","tree-sitter-language-pack"],ml:["torch","huggingface-hub"]},i="win32"===process.platform,j=i?"where":"which",k=i?[`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python313\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python312\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python311\\Scripts`,`${process.env.LOCALAPPDATA||""}\\Programs\\Python\\Python310\\Scripts`,`${process.env.APPDATA||""}\\Python\\Python313\\Scripts`]:["/usr/local/bin","/opt/homebrew/bin","/Library/Frameworks/Python.framework/Versions/3.13/bin","/Library/Frameworks/Python.framework/Versions/3.12/bin","/Library/Frameworks/Python.framework/Versions/3.11/bin","/Library/Frameworks/Python.framework/Versions/3.10/bin",`${process.env.HOME||""}/.local/bin`,"/usr/bin","/bin"],l=[...k,process.env.PATH||""].filter(Boolean).join(f().delimiter),m=["python3.13","python3.12","python3.11","python3.10","python3","python"],n=new Set(["localhost","127.0.0.1","::1","[::1]","0.0.0.0"]),o=process.env.HEADROOM_URL||"http://localhost:8787";function p(){try{let a=(0,d.execSync)(`${j} headroom`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim();return a?a.split(/\r?\n/)[0].trim():null}catch{return null}}function q(){let a=null;for(let b of function(){let a=[],b=p();if(b){let c=f().dirname(b);for(let b of i?["python.exe","python3.exe"]:["python3","python3.13","python"])a.push(f().join(c,b))}for(let b of k)if(b)for(let c of m)a.push(f().join(b,i?`${c}.exe`:c));return a.push(...m),a}())try{let c=(0,d.execSync)(`${b} --version`,{stdio:["ignore","pipe","ignore"],windowsHide:!0,env:{...process.env,PATH:l}}).toString().trim().match(/(\d+)\.(\d+)/);if(!c)continue;let[e,f]=[parseInt(c[1],10),parseInt(c[2],10)];if(!(e>3||3===e&&f>=10))continue;a||(a=b);try{return(0,d.execFileSync)(b,["-m","pip","show","headroom-ai"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}),b}catch{}}catch{}return a}async function r(a){if(!a)return!1;let b=String(a).replace(/\/$/,"");try{return(await fetch(`${b}/health`,{signal:AbortSignal.timeout(1500)})).ok}catch{return!1}}function s(a){try{let b=new URL(a);return n.has(b.hostname)}catch{return!1}}async function t(a){let b=p(),c=q(),d=!!b,e=await r(a),f=s(a),g=d?u(c):{installed:!1,version:null,extras:{code:!1,ml:!1}};return{installed:d,path:b,running:e,python:c,localUrl:f,canStart:d&&f,version:g.version,extras:g.extras}}function u(a){let b=a||q();if(!b)return{installed:!1,version:null,extras:{code:!1,ml:!1}};try{let a=(0,d.execFileSync)(b,["-m","pip","list","--format=json","--disable-pip-version-check"],{stdio:["ignore","pipe","ignore"],windowsHide:!0,timeout:8e3,env:{...process.env,PATH:l}}).toString(),c=JSON.parse(a),e=new Set(c.map(a=>String(a.name||"").toLowerCase()));if(!e.has("headroom-ai"))return{installed:!1,version:null,extras:{code:!1,ml:!1}};let f=c.find(a=>a.name?.toLowerCase()==="headroom-ai")?.version||null,i={};for(let a of g)i[a]=h[a].some(a=>e.has(a));return{installed:!0,version:f,extras:i}}catch{return{installed:!1,version:null,extras:{code:!1,ml:!1}}}}},16723:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.d(b,{P:()=>A});var e=c(92557),f=c(14836),g=c(5505),h=c(83679),i=c(8188),j=c(94164),k=c(47950),l=c(95584),m=c(66781),n=c(36110),o=c(12340),p=c(15261),q=c(44004),r=c(83571),s=c(92398),t=c(69152),u=c(90293),v=c(83950),w=c(72238),x=c(97118),y=a([e,n]);function z(a,b=null,c=!0){return!!c&&(b?(0,g.iF)(a,b):(0,g.qG)(a))}async function A(a,b=null){let c;try{c=await a.json()}catch{return u.warn("CHAT","Invalid JSON body"),(0,p.yj)(s.gx.BAD_REQUEST,"Invalid JSON body")}(a.headers.get("accept")||"").includes("text/event-stream")&&void 0===c.stream&&(c.stream=!0),b||(b={endpoint:new URL(a.url).pathname,body:c,headers:Object.fromEntries(a.headers.entries())}),(0,l.n)(b.headers);let d=new URL(a.url),e=c.model,g=c.messages?.length||c.input?.length||0,h=c.tools?.length||0,i=c.reasoning_effort||c.reasoning?.effort||null;u.request("POST",`${d.pathname} | ${e} | ${g} msgs${h?` | ${h} tools`:""}${i?` | effort=${i}`:""}`);let k=a.headers.get("Authorization"),n=(0,f.Tr)(a);if(k&&n){let a=u.maskKey(n);u.debug("AUTH",`API Key: ${a}`)}else u.debug("AUTH","No API key provided (local mode)");let o=await (0,j.mt)(),t=null;if(!await (0,f.Ov)(a)&&o.requireApiKey){if(!n)return u.warn("AUTH","Missing API key (requireApiKey=true)"),(0,p.yj)(s.gx.UNAUTHORIZED,"Missing API key");if(!(t=await (0,f.kI)(n)))return u.warn("AUTH","Invalid API key (requireApiKey=true)"),(0,p.yj)(s.gx.UNAUTHORIZED,"Invalid API key")}if(!e)return u.warn("CHAT","Missing model"),(0,p.yj)(s.gx.BAD_REQUEST,"Missing model");if(!(0,f.L$)(t,"llm"))return u.warn("AUTH","LLM kind not allowed for API key"),(0,p.yj)(s.gx.FORBIDDEN,"Chat/LLM requests are not allowed for this API key");let v=a?.headers?.get("user-agent")||"",w=(0,r.c)(c,e,v,!!o.ccFilterNaming);if(w)return w.response||w;let x=await (0,m.d_)(e);if(x){if(!(0,f.DC)(t,e))return u.warn("AUTH",`Combo "${e}" not allowed for API key`),(0,p.yj)(s.gx.FORBIDDEN,`Combo "${e}" is not allowed for this API key`);let d=o.comboStrategies||{},g=d[e]?.fallbackStrategy||o.comboStrategy||"fallback";if("fusion"===g)return u.info("CHAT",`Combo "${e}" with ${x.length} models (strategy: fusion)`),(0,q.vt)({body:c,models:x,handleSingleModel:(c,d,e)=>{let f=b;if(e&&b){let{tools:a,tool_choice:c,...d}=b.body||{};f={...b,body:d}}return B(c,d,f,a,n,t)},log:u,comboName:e,judgeModel:d[e]?.judgeModel,tuning:d[e]?.fusionTuning});let h=o.comboStickyRoundRobinLimit;return u.info("CHAT",`Combo "${e}" with ${x.length} models (strategy: ${g}, sticky: ${h})`),(0,q.Pr)({body:c,models:x,handleSingleModel:(c,d,e)=>B(c,d,b,a,n,t,e),log:u,comboName:e,comboStrategy:g,comboStickyLimit:h,signal:a?.signal??null,timeoutMs:d[e]?.targetTimeoutMs??null,queueDepth:d[e]?.queueDepth??null})}return B(c,e,b,a,n,t)}async function B(a,b,c=null,d=null,e=null,l=null,r=null){let y=r?.signal??null,A=d?.signal&&y?AbortSignal.any([d.signal,y]):d?.signal||y||null,C=await (0,m.mA)(b);if(!C.provider){let f=await (0,m.d_)(b);if(f){let g=await (0,j.mt)(),h=g.comboStrategies||{},i=h[b]?.fallbackStrategy||g.comboStrategy||"fallback";if("fusion"===i)return u.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: fusion)`),(0,q.vt)({body:a,models:f,handleSingleModel:(a,b,f)=>{let g=c;if(f&&c){let{tools:a,tool_choice:b,...d}=c.body||{};g={...c,body:d}}return B(a,b,g,d,e,l)},log:u,comboName:b,judgeModel:h[b]?.judgeModel,tuning:h[b]?.fusionTuning});let k=g.comboStickyRoundRobinLimit;return u.info("CHAT",`Combo "${b}" with ${f.length} models (strategy: ${i}, sticky: ${k})`),(0,q.Pr)({body:a,models:f,handleSingleModel:(a,b,f)=>B(a,b,c,d,e,l,f),log:u,comboName:b,comboStrategy:i,comboStickyLimit:k,signal:d?.signal??null,timeoutMs:h[b]?.targetTimeoutMs??null,queueDepth:h[b]?.queueDepth??null})}return u.warn("CHAT","Invalid model format",{model:b}),(0,p.yj)(s.gx.BAD_REQUEST,"Invalid model format")}let{provider:D,model:E}=C;if(!await (0,f.kt)(l,D))return u.warn("AUTH",`Provider "${D}" not allowed for API key`,{provider:D}),(0,p.yj)(s.gx.FORBIDDEN,`Provider "${D}" is not allowed for this API key`);let F=`${D}/${E}`;if(!(b===F?await (0,k.Uw)(F,l):await (0,k.Uw)(b,l)||await (0,k.Uw)(F,l)))return u.warn("CHAT","Model not in available models list",{model:F}),(0,p.yj)(s.gx.NOT_FOUND,`Model "${F}" is not available. Only models listed in /v1/models can be used.`);b!==`${D}/${E}`?u.info("ROUTING",`${b} → ${D}/${E}`):u.info("ROUTING",`Provider: ${D}, Model: ${E}`);let G=d?.headers?.get("user-agent")||"",H=await (0,j.mt)(),I=!1!==H.circuitBreakerEnabled&&0!==H.circuitBreakerEnabled;if(z(D,null,I)){let a=(0,g.xK)(D),b=Math.ceil(a/1e3)||30,c=new Date(Date.now()+a).toISOString();return u.warn("GATE",`${D} circuit breaker OPEN on all proxy buckets — short-circuiting before credential lookup`),(0,p.VO)((0,p.wO)(s.gx.SERVICE_UNAVAILABLE,`[${D}/${E}] Provider temporarily unavailable (circuit breaker open)`,c,`${b}s`),null)}let J=0;try{let a=await (0,j.getProviderConnections)({provider:D});J=a?.length||0}catch(a){u?.warn?.("AUTH",`Failed to count provider connections for ${D}: ${a.message}`)}let K=new Set,L=null,M=null,N=null,O=0,P=0;for(;;){let b;if(d?.signal?.aborted)return u.info("CHAT",`[${D}/${E}] client disconnected — aborting fallback loop`),(0,p.VO)(new Response(null,{status:499}),N);let k=await (0,f.c1)(D,K,E);if(!k||k.allRateLimited){if(k?.allRateLimited){if(k.retryAfter&&P<x.gI){let a=await (0,x.U5)({retryAfter:k.retryAfter,retriesSoFar:P,signal:d?.signal});if(a.shouldRetry){P++,u.info("CHAT",`[${D}/${E}] all accounts rate-limited — waited ${a.waitedMs}ms, retrying (attempt ${P})`);continue}if("client_disconnected"===a.reason)return u.info("CHAT",`[${D}/${E}] client disconnected during cooldown wait — aborting`),(0,p.VO)(new Response(null,{status:499}),k?.connectionId??null);u.info("CHAT",`[${D}/${E}] cooldown retry skipped: ${a.reason}`)}let a=L||k.lastError||"Unavailable",b=M||Number(k.lastErrorCode)||s.gx.SERVICE_UNAVAILABLE;return u.warn("CHAT",`[${D}/${E}] ${a} (${k.retryAfterHuman})`),(0,p.VO)((0,p.wO)(b,`[${D}/${E}] ${a}`,k.retryAfter,k.retryAfterHuman),k?.connectionId??null)}if(0===K.size)return u.warn("AUTH",`No active credentials for provider: ${D}`),(0,p.VO)((0,p.yj)(s.gx.NOT_FOUND,`No active credentials for provider: ${D}`),k?.connectionId??null);return u.warn("CHAT","No more accounts available",{provider:D}),(0,p.VO)((0,p.yj)(M||s.gx.SERVICE_UNAVAILABLE,L||"All accounts unavailable"),N)}let m=(0,i.T)(k.providerSpecificData);if(z(D,m,I)){u.warn("AUTH",`${D} proxy bucket ${m} circuit breaker OPEN — skipping account ${k.connectionName}`),K.add(k.connectionId),N=k.connectionId;continue}u.info("AUTH",`\x1b[32mUsing ${D} account: ${k.connectionName}\x1b[0m`);let q=await (0,v.eU)(D,k);if(("antigravity"===D||"gemini-cli"===D)&&!q.projectId){let a=await (0,w.eG)(k.connectionId,q.accessToken);a&&(q.projectId=a,(0,v.vN)(k.connectionId,{projectId:a}).catch(()=>{}))}let y=(0,h.pz)({provider:D,model:E,connectionId:k.connectionId,credentials:q,proxyHash:m}),B=(0,h.VQ)(q),C=!1!==H.semaphoreEnabled&&0!==H.semaphoreEnabled,F=()=>{};if(C&&y&&null!=B)try{let a={maxConcurrency:B,timeoutMs:3e4};r?.maxQueueSize!=null&&(a.maxQueueSize=r.maxQueueSize),F=await (0,h.XC)(y,a)}catch(a){if((0,h.rv)(a)){u.warn("AUTH",`Account ${k.connectionName} at capacity, trying fallback`),K.add(k.connectionId);continue}throw a}let Q=(H.providerThinking||{})[D]||null;try{b=await (0,n.wk)({body:{...a,model:`${D}/${E}`},modelInfo:{provider:D,model:E,accountCount:J},credentials:q,log:u,clientRawRequest:c,connectionId:k.connectionId,userAgent:G,apiKey:e,apiKeyName:l?.name||null,ccFilterNaming:!!H.ccFilterNaming,rtkEnabled:!!H.rtkEnabled,headroomEnabled:!!H.headroomEnabled,headroomUrl:H.headroomUrl||o.ag,headroomCompressUserMessages:!!H.headroomCompressUserMessages,cavemanEnabled:!!H.cavemanEnabled,cavemanLevel:H.cavemanLevel||"full",ponytailEnabled:!!H.ponytailEnabled,ponytailLevel:H.ponytailLevel||"full",loopGuardEnabled:!1!==H.loopGuardEnabled&&0!==H.loopGuardEnabled,providerThinking:Q,clientSignal:A,sourceFormatOverride:d?.url?(0,t.t)(new URL(d.url).pathname,a):null,onCredentialsRefreshed:async a=>{await (0,v.vN)(k.connectionId,{...a,existingProviderSpecificData:k.providerSpecificData,testStatus:"active"})},onRequestSuccess:async()=>{await (0,f.Pt)(k.connectionId,k,E),(0,g.Fr)(D,m)}})}finally{F()}if(b.success)return(0,p.VO)(b.response,k.connectionId);if("STREAM_EARLY_EOF"===b.errorCode&&O<1){O++,u.warn("STREAM",`${D}/${E} closed stream before useful content — retrying once (attempt ${O})`);continue}let R=b.error?.message||b.error;if((0,g.lE)(D,R))try{let a=(0,g.CR)();await (0,j.updateProviderConnection)(k.connectionId,a),u.warn("AUTH",`Kimchi quota exhausted: deactivated ${k.connectionName||k.connectionId} until ${a.rateLimitedUntil}`)}catch(a){u.error("AUTH",`Failed to deactivate Kimchi account on quota exhausted: ${a.message}`)}if((0,g.Z6)(D,R)&&429===b.status)try{let a=(0,g.UQ)(E);await (0,j.updateProviderConnection)(k.connectionId,a),u.warn("AUTH",`Daily quota exhausted: locked model ${E} on ${k.connectionName||k.connectionId} until tomorrow 00:00 UTC`)}catch(a){u.error("AUTH",`Failed to lock model on daily quota exhaustion: ${a.message}`)}let{shouldFallback:S}=await (0,f.vk)(k.connectionId,b.status,R,D,E,b.resetsAtMs);if((0,g.lE)(D,R)||(0,g.p8)(D,b.status,R,u,k.connectionId,m),S){u.warn("AUTH",`Account ${k.connectionName} unavailable (${b.status}), trying fallback`),K.add(k.connectionId),L=R,M=b.status;continue}return(0,p.VO)(b.response,k.connectionId)}}[e,n]=y.then?(await y)():y,d()}catch(a){d(a)}})},66781:(a,b,c)=>{c.d(b,{d_:()=>j,mA:()=>i});var d=c(94164),e=c(23095),f=c(53813);let g={xmtp:"xiaomi-tokenplan","xiaomi-tokenplan":"xiaomi-tokenplan"},h=new Set(Object.keys(g));for(let a of f.A)for(let b of(h.add(a.id),a.alias&&h.add(a.alias),a.aliases||[]))h.add(b);async function i(a){let b,c=(b=(0,e.Xh)(a),b?.providerAlias&&g[b.providerAlias]?{...b,provider:g[b.providerAlias]}:b);if(!c.isAlias){if(!h.has(c.providerAlias)){let a=(await (0,d.Fh)({type:"openai-compatible"})).find(a=>a.prefix===c.providerAlias);if(a)return{provider:a.id,model:c.model};let b=(await (0,d.Fh)({type:"anthropic-compatible"})).find(a=>a.prefix===c.providerAlias);if(b)return{provider:b.id,model:c.model};let e=(await (0,d.Fh)({type:"custom-embedding"})).find(a=>a.prefix===c.providerAlias);if(e)return{provider:e.id,model:c.model}}return{provider:c.provider,model:c.model}}return await (0,d.Dj)(c.model)?{provider:null,model:c.model}:(0,e.js)(a,d.OM)}async function j(a){if(a.includes("/"))return null;let b=await (0,d.Dj)(a);return b&&b.models&&b.models.length>0?b.models:null}},83679:(a,b,c)=>{c.d(b,{VQ:()=>j,XC:()=>g,pz:()=>i,rv:()=>h});let d=new Map;class e extends Error{constructor(a,b){super(`Semaphore "${a}" capacity reached — timed out after ${b}ms`),this.name="SemaphoreCapacityError",this.semaphoreKey=a,this.timeoutMs=b}}function f(a,b){b.cleanupTimer||(b.cleanupTimer=setTimeout(()=>{b.cleanupTimer=null,b&&0===b.running&&0===b.queue.length&&(!b.blockedUntil||Date.now()>=b.blockedUntil)&&(b.cleanupTimer&&(clearTimeout(b.cleanupTimer),b.cleanupTimer=null),d.delete(a))},0),"function"==typeof b.cleanupTimer.unref&&b.cleanupTimer.unref())}function g(a,b={}){let c,h=b.maxConcurrency??1,i=b.timeoutMs??3e4,j=b.signal??null,k=b.maxQueueSize??20;if(null==h||h<=0)return Promise.resolve(()=>{});let l=((c=d.get(a))?c.maxConcurrency=h:(c={running:0,maxConcurrency:h,queue:[],blockedUntil:null,cleanupTimer:null},d.set(a,c)),c);if(l.blockedUntil&&Date.now()<l.blockedUntil);else if(l.blockedUntil=null,l.running<l.maxConcurrency){l.running++;let b=!1;return Promise.resolve(()=>{b||(b=!0,l.running--,function a(b,c){for(;c.queue.length>0&&c.running<c.maxConcurrency&&!(c.blockedUntil&&Date.now()<c.blockedUntil);){c.blockedUntil=null;let d=c.queue.shift();if(!d)break;c.running++;let e=!1;d.resolve(()=>{e||(e=!0,c.running--,a(b,c))})}0===c.running&&0===c.queue.length&&(!c.blockedUntil||Date.now()>=c.blockedUntil)&&f(b,c)}(a,l))})}return l.queue.length>=k?Promise.reject(new e(a,0)):new Promise((b,c)=>{let d=!1,g=setTimeout(()=>{if(d)return;d=!0;let b=l.queue.indexOf(h);b>=0&&l.queue.splice(b,1),c(new e(a,i))},i);"function"==typeof g.unref&&g.unref(),j&&j.addEventListener?.("abort",()=>{if(d)return;d=!0,clearTimeout(g);let a=l.queue.indexOf(h);a>=0&&l.queue.splice(a,1),c(j.reason||Error("Aborted"))});let h={resolve:a=>{d||(d=!0,clearTimeout(g),b(a))},reject:a=>{d||(d=!0,clearTimeout(g),c(a))},timer:g};l.queue.push(h),f(a,l)})}function h(a){return a instanceof e}function i({provider:a,model:b,connectionId:c,credentials:d,proxyHash:e="direct"}){return a&&c?function({provider:a,accountKey:b,proxyHash:c="direct"}){return`${String(a)}:${String(b)}:${String(c)}`}({provider:a,accountKey:c,proxyHash:e}):null}function j(a){if(!a)return 3;let b=a.providerSpecificData?.maxConcurrency;return 0===b||null===b?null:"number"==typeof b&&b>0?b:3}},97118:(a,b,c)=>{c.d(b,{U5:()=>e,gI:()=>d});let d=1;async function e({retryAfter:a,retriesSoFar:b,signal:c,maxWaitMs:f=3e4,maxRetries:g=d,now:h=Date.now}){if(b>=g)return{shouldRetry:!1,reason:"budget_exhausted"};if(c?.aborted)return{shouldRetry:!1,reason:"client_disconnected"};let i=function(a){if(null==a)return null;if("number"==typeof a)return Number.isFinite(a)?a:null;if(a instanceof Date)return Number.isNaN(a.getTime())?null:a.getTime();if("string"==typeof a){let b=Date.parse(a);return Number.isNaN(b)?null:b}return null}(a);if(null==i)return{shouldRetry:!1,reason:"invalid_retry_after"};let j=i-h();if(j<=0)return{shouldRetry:!0,waitedMs:0};if(j>f)return{shouldRetry:!1,reason:"wait_too_long"};try{var k,l;return await (k=j,l=c,new Promise((a,b)=>{if(l?.aborted)return void b(l.reason||Error("aborted"));let c=setTimeout(()=>{l&&l.removeEventListener("abort",d),a()},k);function d(){clearTimeout(c),b(l.reason||Error("aborted"))}l&&l.addEventListener("abort",d,{once:!0})})),{shouldRetry:!0,waitedMs:j}}catch(a){if(c?.aborted)return{shouldRetry:!1,reason:"client_disconnected"};return{shouldRetry:!1,reason:"wait_failed"}}}}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=7006,exports.ids=[7006],exports.modules={17006:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(78785);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let c=new(await Promise.resolve().then(function(){var a=Error("Cannot find module 'node:sqlite'");throw a.code="MODULE_NOT_FOUND",a})).DatabaseSync(a);c.exec(d.oG);let e=new Map;function f(a){let b=e.get(a);return b||(b=c.prepare(a),e.set(a,b)),b}let g=setInterval(()=>{try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{e.clear()}catch{}try{c.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=f(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>f(a).get(...b),all:(a,b=[])=>f(a).all(...b),exec:a=>c.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;c.exec(`SAVEPOINT ${b}`);try{let d=a();return c.exec(`RELEASE ${b}`),d}catch(a){try{c.exec(`ROLLBACK TO ${b}`),c.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:c}}},78785:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=7006,exports.ids=[7006],exports.modules={17006:(a,b,c)=>{c.d(b,{createNodeSqliteAdapter:()=>e});var d=c(78785);async function e(a){let b=process.emit;process.emit=function(a,c,...d){return!("warning"===a&&c?.name==="ExperimentalWarning"&&/SQLite/i.test(c.message||""))&&b.call(process,a,c,...d)};let c=new(await Promise.resolve().then(function(){var a=Error("Cannot find module 'node:sqlite'");throw a.code="MODULE_NOT_FOUND",a})).DatabaseSync(a);c.exec(d.oG);let e=new Map;function f(a){let b=e.get(a);return b||(b=c.prepare(a),e.set(a,b)),b}let g=setInterval(()=>{try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}try{e.clear()}catch{}try{c.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"node:sqlite",run(a,b=[]){let c=f(a).run(...b);return{changes:Number(c.changes??0),lastInsertRowid:Number(c.lastInsertRowid??0)}},get:(a,b=[])=>f(a).get(...b),all:(a,b=[])=>f(a).all(...b),exec:a=>c.exec(a),transaction(a){let b=`sp_${Math.random().toString(36).slice(2)}`;c.exec(`SAVEPOINT ${b}`);try{let d=a();return c.exec(`RELEASE ${b}`),d}catch(a){try{c.exec(`ROLLBACK TO ${b}`),c.exec(`RELEASE ${b}`)}catch{}throw a}},checkpoint(){try{c.exec("PRAGMA wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:c}}},78785:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=2,e=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},cachedProviderModels:{columns:{providerId:"TEXT NOT NULL",modelId:"TEXT NOT NULL",kind:"TEXT DEFAULT 'llm'",ownedBy:"TEXT NOT NULL",capabilities:"TEXT",updatedAt:"INTEGER NOT NULL"},primaryKey:"PRIMARY KEY (providerId, modelId)",indexes:["CREATE INDEX IF NOT EXISTS idx_cpm_kind ON cachedProviderModels(kind)","CREATE INDEX IF NOT EXISTS idx_cpm_provider ON cachedProviderModels(providerId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}}};
@@ -1 +1 @@
1
- "use strict";exports.id=740,exports.ids=[740,1253,6820],exports.modules={5759:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},8188:(a,b,c)=>{c.d(b,{B:()=>f,T:()=>h});var d=c(46820);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}function g(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c),b&=b;return Math.abs(b).toString(36)}function h(a={}){let b=a?.connectionProxyEnabled===!0?e(a?.connectionProxyUrl):"";if(b)return`proxy-${g(b)}`;let c=e(a?.proxyPoolId);return c?`pool-${g(c)}`:"direct"}},23123:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(5759);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},45598:(a,b,c)=>{c.d(b,{F:()=>x});var d=c(94164),e=c(8188),f=c(59980),g=c(91253),h=c(85577),i=c(13946),j=c(28765),k=c(59824),l=c(56726),m=c(53912);let n={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs","User-Agent":"codex_cli_rs/0.136.0"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},kimi:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:k.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"kimchi/0.1.40"},refreshable:!1},"grok-cli":{url:i.xq["grok-cli"]?.userUrl||"https://cli-chat-proxy.grok.com/v1/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json",...i.xq["grok-cli"]?.headers||{"User-Agent":"grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)","x-xai-token-auth":"xai-grok-cli","x-grok-client-identifier":"grok-pager","x-grok-client-version":"0.2.93"}},refreshable:!0,acceptStatuses:[402],softFailMessage:{402:"Connected, but Grok Build credits are exhausted (spending limit). Add credits or upgrade SuperGrok."}}};function o(a,b,c=""){if(!a)return{valid:!1,error:"No response",soft:!1};let d=a.status;if(!(a.ok||b?.acceptStatuses&&b.acceptStatuses.includes(d)))return 401===d?{valid:!1,error:"Token invalid or revoked",soft:!1}:403===d?{valid:!1,error:"Access denied",soft:!1}:{valid:!1,error:`API returned ${d}`,soft:!1};if(!a.ok&&b?.acceptStatuses?.includes(d)){let a=b.softFailMessage||{};if(a[d])return{valid:!0,error:a[d],soft:!0}}return{valid:!0,error:null,soft:!1}}async function p(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,l.w$)(a,{Accept:"application/json"})})}let q=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});function r(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim())return c.trim();if(c)return JSON.stringify(c)}catch{}return a.trim()||b}async function s(a,b,c=null){let d="antigravity"===a.provider?"google-api-nodejs-client/9.15.1 vscode-antigravity/1.107.0":"google-api-nodejs-client/9.15.1 gemini-cli/0.34.0";if(a.projectId){let e=await v("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:JSON.stringify({project:a.projectId})},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:r(await e.text().catch(()=>""),`GCP Project ID test failed with status ${e.status}`),status:e.status}}let e=await v("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:q},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:r(await e.text().catch(()=>""),`API returned ${e.status}`),status:e.status}}async function t(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b||"grok-cli"===b||"xai"===b)return await (0,j.Vq)(b,a,console);if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function u(a,b=null){let c=n[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,j.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let b=await t(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=b.accessToken,e=!0,f=b}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await s(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await t(a);if(c?.accessToken){let d=await s(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider){let b=async a=>{let b=await p(a);return b.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===b.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${b.status}`,refreshed:e}},c=await b(d);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let g=await t(a);return g?.accessToken?(e=!0,f=g,d=g.accessToken,await b(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await v(g,i,b),k=j.ok?"":await j.text().catch(()=>""),l=o(j,c,k);if(l.valid)return{valid:!0,error:l.soft?l.error:null,warning:l.soft?l.error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await t(a);if(d){let a=c.buildUrl?c.buildUrl(d.accessToken):g,e=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},f={method:c.method,headers:e};c.body&&(f.body=c.body);let h=await v(a,f,b),i=h.ok?"":await h.text().catch(()=>""),j=o(h,c,i);if(j.valid)return{valid:!0,error:j.soft?j.error:null,warning:j.soft?j.error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:l.error,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function v(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,2607));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,2607));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function w(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await v(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await v(d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await v(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await v(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await v("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await v("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await v("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await v(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await v("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await v("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await v("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await v({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await v("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":case"alims-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"alims-intl"===a.provider?"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await v(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await v(i.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await v("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await v("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await v("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await v("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await v("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await v("https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await v("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await v("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await v("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await v("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await v("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await v("https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await v("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,i.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await v("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await v("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await v("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await v("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await v("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await v("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await v("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await v("https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await v(`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=i.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await v(`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}case"agentrouter":{let c=await (0,m.P7)(a.apiKey,(a,c)=>v(a,c,b));return{valid:c,error:c?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function x(a,b=null){let c,g=await (0,d.Mc)(a);if(!g)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};b&&(g={...g,...b});let h=await (0,e.B)(g.providerSpecificData||{});if(h.connectionProxyEnabled&&h.connectionProxyUrl&&!h.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:h.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let i=Date.now();c="apikey"===g.authType||"cookie"===g.authType?await w(g,h):await u(g,h);let j=Date.now()-i,k=c.valid&&(c.warning||c.error),l={testStatus:c.valid?"active":"error",lastError:c.valid?k||null:c.error,lastErrorAt:c.valid?k?new Date().toISOString():null:new Date().toISOString()};return c.refreshed&&c.newTokens&&(c.newTokens.accessToken&&(l.accessToken=c.newTokens.accessToken),c.newTokens.refreshToken&&(l.refreshToken=c.newTokens.refreshToken),c.newTokens.idToken&&(l.idToken=c.newTokens.idToken),c.newTokens.lastRefreshAt&&(l.lastRefreshAt=c.newTokens.lastRefreshAt),c.newTokens.expiresIn&&(l.expiresIn=c.newTokens.expiresIn),c.newTokens.expiresIn?l.expiresAt=new Date(Date.now()+1e3*c.newTokens.expiresIn).toISOString():c.newTokens.expiresAt&&(l.expiresAt=c.newTokens.expiresAt),c.newTokens.providerSpecificData&&(l.providerSpecificData={...g.providerSpecificData||{},...c.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,l),{valid:c.valid,error:c.error,refreshed:!!c.refreshed,latencyMs:j,testedAt:new Date().toISOString()}}},46820:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(94164)},59824:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>z,Nu:()=>p,OV:()=>h,Op:()=>A,S6:()=>s,Td:()=>B,Tx:()=>q,WN:()=>t,Ww:()=>D,YT:()=>n,ZL:()=>m,aV:()=>u,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,qp:()=>C,w1:()=>x});var d=c(21820),e=c(24567),f=c(68711);function g(){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)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.dG,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr.kimi,clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||process.env.KIMI_OAUTH_CLIENT_ID||f.xq.kimi?.clientId||f.sr.kimi?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.clinepass},y={...f.sr.gitlab},z={...f.sr["codebuddy-cn"]},A={...f.sr.zcode},B={...f.sr.kimchi},C={...f.sr["grok-cli"]},D=3e5},59980:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(13398);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"VansRouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},91253:(a,b,c)=>{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(53813);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)},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=740,exports.ids=[740,1253,6820],exports.modules={5759:(a,b,c)=>{c.d(b,{k:()=>e});let d=[];for(let a=0;a<256;++a)d.push((a+256).toString(16).slice(1));function e(a,b=0){return(d[a[b+0]]+d[a[b+1]]+d[a[b+2]]+d[a[b+3]]+"-"+d[a[b+4]]+d[a[b+5]]+"-"+d[a[b+6]]+d[a[b+7]]+"-"+d[a[b+8]]+d[a[b+9]]+"-"+d[a[b+10]]+d[a[b+11]]+d[a[b+12]]+d[a[b+13]]+d[a[b+14]]+d[a[b+15]]).toLowerCase()}},8188:(a,b,c)=>{c.d(b,{B:()=>f,T:()=>h});var d=c(46820);function e(a){return null==a?"":String(a).trim()}async function f(a={}){try{let b=e(a?.proxyPoolId),c="__none__"===b?"":b,f=function(a={}){let b=a?.connectionProxyEnabled===!0,c=e(a?.connectionProxyUrl);return{connectionProxyEnabled:b,connectionProxyUrl:c,connectionNoProxy:e(a?.connectionNoProxy)}}(a);if(c){let a=await (0,d.hr)(c),b=e(a?.proxyUrl),f=e(a?.noProxy);if(a&&!0===a.isActive&&b){if("vercel"===a.type||"cloudflare"===a.type||"deno"===a.type)return{source:a.type,proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:f,strictProxy:!0===a.strictProxy,vercelRelayUrl:b};return{source:"pool",proxyPoolId:c,proxyPool:a,connectionProxyEnabled:!0,connectionProxyUrl:b,connectionNoProxy:f,strictProxy:!0===a.strictProxy}}}if(f.connectionProxyEnabled&&f.connectionProxyUrl)return{source:"legacy",proxyPoolId:c||null,proxyPool:null,...f};return{source:"none",proxyPoolId:c||null,proxyPool:null,...f}}catch(a){return console.error("[resolveConnectionProxyConfig] Failed to resolve proxy config:",a),{source:"error",proxyPoolId:null,proxyPool:null,connectionProxyEnabled:!1,connectionProxyUrl:"",connectionNoProxy:"",strictProxy:!1}}}function g(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b+a.charCodeAt(c),b&=b;return Math.abs(b).toString(36)}function h(a={}){let b=a?.connectionProxyEnabled===!0?e(a?.connectionProxyUrl):"";if(b)return`proxy-${g(b)}`;let c=e(a?.proxyPoolId);return c?`pool-${g(c)}`:"direct"}},23123:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(77598);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length;var h=c(5759);let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();var i=a,j=c;let k=(i=i||{}).random??i.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(k.length<16)throw Error("Random bytes length must be >= 16");if(k[6]=15&k[6]|64,k[8]=63&k[8]|128,b){if((j=j||0)<0||j+16>b.length)throw RangeError(`UUID byte range ${j}:${j+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[j+a]=k[a];return b}return(0,h.k)(k)}},45598:(a,b,c)=>{c.d(b,{F:()=>x});var d=c(94164),e=c(8188),f=c(59980),g=c(91253),h=c(85577),i=c(13946),j=c(28765),k=c(59824),l=c(56726),m=c(53912);let n={claude:{checkExpiry:!0,refreshable:!0},codex:{url:"https://chatgpt.com/backend-api/codex/responses",method:"POST",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"Content-Type":"application/json",originator:"codex_cli_rs","User-Agent":"codex_cli_rs/0.136.0"},body:JSON.stringify({model:"gpt-5.3-codex",input:[],stream:!1,store:!1}),acceptStatuses:[400],refreshable:!0},"gemini-cli":{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},antigravity:{url:"https://www.googleapis.com/oauth2/v1/userinfo?alt=json",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!0},github:{url:"https://api.github.com/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{"User-Agent":"9Router",Accept:"application/vnd.github+json"}},iflow:{buildUrl:a=>`https://iflow.cn/api/oauth/getUserInfo?accessToken=${encodeURIComponent(a)}`,method:"GET",noAuth:!0},qwen:{checkExpiry:!0,refreshable:!0},kiro:{checkExpiry:!0,refreshable:!0},qoder:{url:"https://openapi.qoder.sh/api/v1/userinfo",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",refreshable:!1},kimi:{checkExpiry:!0,refreshable:!0},"kimi-coding":{checkExpiry:!0,refreshable:!0},cursor:{tokenExists:!0},kilocode:{url:`${k.MZ.apiBaseUrl}/api/profile`,method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},cline:{refreshable:!0},gitlab:{url:"https://gitlab.com/api/v4/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer "},"codebuddy-cn":{tokenExists:!0},kimchi:{url:k.Td.validationUrl||"https://api.cast.ai/v1/llm/openai/supported-providers",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json","User-Agent":"kimchi/0.1.40"},refreshable:!1},"grok-cli":{url:i.xq["grok-cli"]?.userUrl||"https://cli-chat-proxy.grok.com/v1/user",method:"GET",authHeader:"Authorization",authPrefix:"Bearer ",extraHeaders:{Accept:"application/json",...i.xq["grok-cli"]?.headers||{"User-Agent":"grok-pager/0.2.93 grok-shell/0.2.93 (linux; x86_64)","x-xai-token-auth":"xai-grok-cli","x-grok-client-identifier":"grok-pager","x-grok-client-version":"0.2.93"}},refreshable:!0,acceptStatuses:[402],softFailMessage:{402:"Connected, but Grok Build credits are exhausted (spending limit). Add credits or upgrade SuperGrok."}}};function o(a,b,c=""){if(!a)return{valid:!1,error:"No response",soft:!1};let d=a.status;if(!(a.ok||b?.acceptStatuses&&b.acceptStatuses.includes(d)))return 401===d?{valid:!1,error:"Token invalid or revoked",soft:!1}:403===d?{valid:!1,error:"Access denied",soft:!1}:{valid:!1,error:`API returned ${d}`,soft:!1};if(!a.ok&&b?.acceptStatuses?.includes(d)){let a=b.softFailMessage||{};if(a[d])return{valid:!0,error:a[d],soft:!0}}return{valid:!0,error:null,soft:!1}}async function p(a){return await fetch("https://api.cline.bot/api/v1/users/me",{method:"GET",headers:(0,l.w$)(a,{Accept:"application/json"})})}let q=JSON.stringify({metadata:{ideType:"IDE_UNSPECIFIED",platform:"PLATFORM_UNSPECIFIED",pluginType:"GEMINI"}});function r(a,b){if(!a)return b;try{let b=JSON.parse(a),c=b?.error?.message||b?.message||b?.error;if("string"==typeof c&&c.trim())return c.trim();if(c)return JSON.stringify(c)}catch{}return a.trim()||b}async function s(a,b,c=null){let d="antigravity"===a.provider?"google-api-nodejs-client/9.15.1 vscode-antigravity/1.107.0":"google-api-nodejs-client/9.15.1 gemini-cli/0.34.0";if(a.projectId){let e=await v("https://cloudcode-pa.googleapis.com/v1internal:retrieveUserQuota",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:JSON.stringify({project:a.projectId})},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:r(await e.text().catch(()=>""),`GCP Project ID test failed with status ${e.status}`),status:e.status}}let e=await v("https://cloudcode-pa.googleapis.com/v1internal:loadCodeAssist",{method:"POST",headers:{Authorization:`Bearer ${b}`,"Content-Type":"application/json","User-Agent":d},body:q},c);return e.ok?{valid:!0,error:null}:{valid:!1,error:r(await e.text().catch(()=>""),`API returned ${e.status}`),status:e.status}}async function t(a){let b=a.provider,c=a.refreshToken;if(!c)return null;try{if("gemini-cli"===b||"antigravity"===b){let a="gemini-cli"===b?k.LT:k.YT,d=await fetch("https://oauth2.googleapis.com/token",{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({client_id:a.clientId,client_secret:a.clientSecret,grant_type:"refresh_token",refresh_token:c})});if(!d.ok)return null;let e=await d.json();return{accessToken:e.access_token,expiresIn:e.expires_in,refreshToken:e.refresh_token||c}}if("codex"===b||"grok-cli"===b||"xai"===b)return await (0,j.Vq)(b,a,console);if("claude"===b){let a=await fetch(k.OV.tokenUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",refresh_token:c,client_id:k.OV.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("kiro"===b){let b=a.providerSpecificData||{},d=b.clientId||a.clientId,e=b.clientSecret||a.clientSecret,f=b.region||a.region;if(d&&e){let a=`https://oidc.${f||"us-east-1"}.amazonaws.com/token`,b=await fetch(a,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({clientId:d,clientSecret:e,refreshToken:c,grantType:"refresh_token"})});if(!b.ok)return null;let g=await b.json();return{accessToken:g.accessToken,expiresIn:g.expiresIn||3600,refreshToken:g.refreshToken||c}}let g=await fetch(k.Tx.socialRefreshUrl,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":"kiro-cli/1.0.0"},body:JSON.stringify({refreshToken:c})});if(!g.ok)return null;let h=await g.json();return{accessToken:h.accessToken,expiresIn:h.expiresIn||3600,refreshToken:h.refreshToken||c}}if("qwen"===b){let a=await fetch(k.Hp.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:c,client_id:k.Hp.clientId})});if(!a.ok)return null;let b=await a.json();return{accessToken:b.access_token,expiresIn:b.expires_in,refreshToken:b.refresh_token||c}}if("cline"===b){let a=await fetch(k.lB.refreshUrl,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({refreshToken:c,grantType:"refresh_token",clientType:"extension"})});if(!a.ok)return null;let b=await a.json(),d=b?.data||b,e=d?.expiresAt?Math.max(1,Math.floor((new Date(d.expiresAt).getTime()-Date.now())/1e3)):3600;return{accessToken:d?.accessToken,expiresIn:e,refreshToken:d?.refreshToken||c}}return null}catch(a){return console.log(`Error refreshing ${b} token:`,a.message),null}}async function u(a,b=null){let c=n[a.provider];if(!c)return{valid:!1,error:"Provider test not supported",refreshed:!1};if(!a.accessToken)return{valid:!1,error:"No access token",refreshed:!1};if(c.tokenExists)return{valid:!0,error:null,refreshed:!1,newTokens:null};let d=a.accessToken,e=!1,f=null,g=(0,j.fp)(a.provider,a);if(c.refreshable&&g&&a.refreshToken){let b=await t(a);if(!b)return{valid:!1,error:"Token expired and refresh failed",refreshed:!1};d=b.accessToken,e=!0,f=b}if(c.checkExpiry)return e?{valid:!0,error:null,refreshed:e,newTokens:f}:g?{valid:!1,error:"Token expired",refreshed:!1}:{valid:!0,error:null,refreshed:!1,newTokens:null};if("gemini-cli"===a.provider||"antigravity"===a.provider){let g=await s(a,d,b);if(g.valid)return{valid:!0,error:null,refreshed:e,newTokens:f};if(401===g.status&&c.refreshable&&!e&&a.refreshToken){let c=await t(a);if(c?.accessToken){let d=await s(a,c.accessToken,b);return d.valid?{valid:!0,error:null,refreshed:!0,newTokens:c}:{valid:!1,error:d.error,refreshed:!0,newTokens:c}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:g.error,refreshed:e}}if("cline"===a.provider){let b=async a=>{let b=await p(a);return b.ok?{valid:!0,error:null,refreshed:e,newTokens:f}:401===b.status?{valid:!1,error:"Token invalid or revoked",refreshed:e}:403===b.status?{valid:!1,error:"Access denied",refreshed:e}:{valid:!1,error:`API returned ${b.status}`,refreshed:e}},c=await b(d);if(c.valid||"Token invalid or revoked"!==c.error||!a.refreshToken)return c;let g=await t(a);return g?.accessToken?(e=!0,f=g,d=g.accessToken,await b(d)):{valid:!1,error:"Token invalid or revoked",refreshed:!1}}try{let g=c.buildUrl?c.buildUrl(d):c.url,h=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d}`,...c.extraHeaders},i={method:c.method,headers:h};c.body&&(i.body=c.body);let j=await v(g,i,b),k=j.ok?"":await j.text().catch(()=>""),l=o(j,c,k);if(l.valid)return{valid:!0,error:l.soft?l.error:null,warning:l.soft?l.error:null,refreshed:e,newTokens:f};if(401===j.status&&c.refreshable&&!e&&a.refreshToken){let d=await t(a);if(d){let a=c.buildUrl?c.buildUrl(d.accessToken):g,e=c.noAuth?{...c.extraHeaders}:{[c.authHeader]:`${c.authPrefix}${d.accessToken}`,...c.extraHeaders},f={method:c.method,headers:e};c.body&&(f.body=c.body);let h=await v(a,f,b),i=h.ok?"":await h.text().catch(()=>""),j=o(h,c,i);if(j.valid)return{valid:!0,error:j.soft?j.error:null,warning:j.soft?j.error:null,refreshed:!0,newTokens:d}}return{valid:!1,error:"Token invalid or revoked",refreshed:!1}}return{valid:!1,error:l.error,refreshed:e}}catch(a){return{valid:!1,error:a.message,refreshed:e}}}async function v(a,b={},d=null){if(d?.vercelRelayUrl){let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,2607));return e(a,b,{vercelRelayUrl:d.vercelRelayUrl})}if(!d?.connectionProxyEnabled||!d?.connectionProxyUrl)return fetch(a,b);let{proxyAwareFetch:e}=await Promise.resolve().then(c.bind(c,2607));return e(a,b,{connectionProxyEnabled:!0,connectionProxyUrl:d.connectionProxyUrl,connectionNoProxy:d.connectionNoProxy||""})}async function w(a,b=null){if((0,g.mq)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{let d=await v(`${c.replace(/\/$/,"")}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}if((0,g.gb)(a.provider)){let c=a.providerSpecificData?.baseUrl;if(!c)return{valid:!1,error:"Missing base URL"};try{(c=c.replace(/\/$/,"")).endsWith("/messages")&&(c=c.slice(0,-9));let d=`${c}/v1/messages`,e=a.defaultModel||"claude-3-haiku-20240307",f=await v(d,{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:e,max_tokens:1,messages:[{role:"user",content:"test"}]})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid API key or base URL"}}catch(a){return{valid:!1,error:a.message}}}try{switch(a.provider){case"cloudflare-ai":{let c=(a.providerSpecificData||{}).accountId;if(!c)return{valid:!1,error:"Missing Account ID"};let d=`https://api.cloudflare.com/client/v4/accounts/${c}/ai/v1/chat/completions`,e=await v(d,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"Content-Type":"application/json"},body:JSON.stringify({model:(0,h.fZ)("cloudflare-ai"),messages:[{role:"user",content:"test"}],max_tokens:1})},b),f=401!==e.status&&403!==e.status&&404!==e.status;return{valid:f,error:f?null:"Invalid API token or Account ID"}}case"azure":{let c=a.providerSpecificData||{},d=(c.azureEndpoint||"").replace(/\/$/,""),e=c.deployment||"gpt-4",f=c.apiVersion||"2024-10-01-preview",g=`${d}/openai/deployments/${e}/chat/completions?api-version=${f}`,h={"api-key":a.apiKey,"Content-Type":"application/json"};c.organization&&(h["OpenAI-Organization"]=c.organization);let i=await v(g,{method:"POST",headers:h,body:JSON.stringify({messages:[{role:"user",content:"test"}],max_completion_tokens:1})},b),j=401!==i.status&&403!==i.status;return{valid:j,error:j?null:"Invalid API key or Azure configuration"}}case"openai":{let c=await v("https://api.openai.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"vercel-ai-gateway":{let c=await v("https://ai-gateway.vercel.sh/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"anthropic":{let c=await v("https://api.anthropic.com/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"claude-3-haiku-20240307",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"gemini":{let c=await v(`https://generativelanguage.googleapis.com/v1/models?key=${a.apiKey}`,{},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"openrouter":{let c=await v("https://openrouter.ai/api/v1/auth/key",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"glm":{let c=await v("https://api.z.ai/api/anthropic/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"glm-cn":{let c=await v("https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:"glm-4.7",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"minimax":case"minimax-cn":{let c=await v({minimax:"https://api.minimax.io/anthropic/v1/messages","minimax-cn":"https://api.minimaxi.com/anthropic/v1/messages"}[a.provider],{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"minimax-m2",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"kimi":{let c=await v("https://api.kimi.com/coding/v1/messages",{method:"POST",headers:{"x-api-key":a.apiKey,"anthropic-version":"2023-06-01","content-type":"application/json"},body:JSON.stringify({model:"kimi-latest",max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"alicode":case"alicode-intl":case"alims-intl":{let c="alicode-intl"===a.provider?"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions":"alims-intl"===a.provider?"https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions":"https://coding.dashscope.aliyuncs.com/v1/chat/completions",d=await v(c,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),e=401!==d.status&&403!==d.status;return{valid:e,error:e?null:"Invalid API key"}}case"volcengine-ark":case"byteplus":{let c=await v(i.xq[a.provider]?.baseUrl,{method:"POST",headers:{Authorization:`Bearer ${a.apiKey}`,"content-type":"application/json"},body:JSON.stringify({model:(0,h.fZ)(a.provider),max_tokens:1,messages:[{role:"user",content:"test"}]})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"deepseek":{let c=await v("https://api.deepseek.com/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"groq":{let c=await v("https://api.groq.com/openai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"mistral":{let c=await v("https://api.mistral.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"xai":{let c=await v("https://api.x.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nvidia":{let c=await v("https://integrate.api.nvidia.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"perplexity":{let c=await v("https://api.perplexity.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"together":{let c=await v("https://api.together.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fireworks":{let c=await v("https://api.fireworks.ai/inference/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cerebras":{let c=await v("https://api.cerebras.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"cohere":{let c=await v("https://api.cohere.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nebius":{let c=await v("https://api.studio.nebius.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"siliconflow":{let c=await v("https://api.siliconflow.com/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"hyperbolic":{let c=await v("https://api.hyperbolic.xyz/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"ollama":{let b=await fetch("https://ollama.com/api/tags",{headers:{Authorization:`Bearer ${a.apiKey}`}});return{valid:b.ok,error:b.ok?null:"Invalid API key"}}case"ollama-local":{let b=(0,i.Ak)(a),c=await fetch(`${b}/api/tags`);return{valid:c.ok,error:c.ok?null:`Ollama not reachable at ${b}`}}case"deepgram":{let c=await v("https://api.deepgram.com/v1/projects",{headers:{Authorization:`Token ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"assemblyai":{let c=await v("https://api.assemblyai.com/v1/account",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"nanobanana":{let c=await v("https://api.nanobananaapi.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"fal-ai":{let c=await v("https://api.fal.ai/v1/models?limit=1",{headers:{Authorization:`Key ${a.apiKey}`}},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"chutes":{let c=await v("https://llm.chutes.ai/v1/models",{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"grok-web":{let c=a.apiKey.startsWith("sso=")?a.apiKey.slice(4):a.apiKey,d=a=>Array.from(crypto.getRandomValues(new Uint8Array(a)),a=>a.toString(16).padStart(2,"0")).join(""),e=Buffer.from("e:TypeError: Cannot read properties of null (reading 'children')").toString("base64"),f=await v("https://grok.com/rest/app-chat/conversations/new",{method:"POST",headers:{Accept:"*/*","Content-Type":"application/json",Cookie:`sso=${c}`,Origin:"https://grok.com",Referer:"https://grok.com/","User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","x-statsig-id":e,"x-xai-request-id":crypto.randomUUID(),traceparent:`00-${d(16)}-${d(8)}-00`},body:JSON.stringify({temporary:!0,modelName:"grok-4",message:"ping",fileAttachments:[],imageAttachments:[],disableSearch:!1,enableImageGeneration:!1,sendFinalMetadata:!0})},b),g=401!==f.status&&403!==f.status;return{valid:g,error:g?null:"Invalid SSO cookie"}}case"perplexity-web":{let c=a.apiKey;c.startsWith("__Secure-next-auth.session-token=")&&(c=c.slice(33));let d=await v("https://www.perplexity.ai/api/auth/session",{method:"GET",headers:{"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",Cookie:`__Secure-next-auth.session-token=${c}`}},b);if(!d.ok)return{valid:!1,error:"Invalid session cookie"};let e=await d.json().catch(()=>null),f=!!(e&&e.user);return{valid:f,error:f?null:"Session expired — re-paste cookie"}}case"opencode-go":{let c=await v("https://opencode.ai/zen/go/v1/chat/completions",{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${a.apiKey}`},body:JSON.stringify({model:(0,h.fZ)("opencode-go"),messages:[{role:"user",content:"ping"}],max_tokens:1,stream:!1})},b),d=401!==c.status&&403!==c.status;return{valid:d,error:d?null:"Invalid API key"}}case"xiaomi-mimo":case"xiaomi-tokenplan":{let c=await v(`${{"xiaomi-mimo":"https://api.xiaomimimo.com/v1","xiaomi-tokenplan":"https://token-plan-sgp.xiaomimimo.com/v1"}[a.provider]}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:c.ok,error:c.ok?null:"Invalid API key"}}case"blackbox":{let c=i.xq.blackbox?.baseUrl?.replace(/\/chat\/completions$/,"")||"https://api.blackbox.ai/v1",d=await v(`${c}/models`,{headers:{Authorization:`Bearer ${a.apiKey}`}},b);return{valid:d.ok,error:d.ok?null:"Invalid API key"}}case"agentrouter":{let c=await (0,m.P7)(a.apiKey,(a,c)=>v(a,c,b));return{valid:c,error:c?null:"Invalid API key"}}default:return{valid:!1,error:"Provider test not supported"}}}catch(a){return{valid:!1,error:a.message}}}async function x(a,b=null){let c,g=await (0,d.Mc)(a);if(!g)return{valid:!1,error:"Connection not found",latencyMs:0,testedAt:new Date().toISOString()};b&&(g={...g,...b});let h=await (0,e.B)(g.providerSpecificData||{});if(h.connectionProxyEnabled&&h.connectionProxyUrl&&!h.vercelRelayUrl){let b=await (0,f.C)({proxyUrl:h.connectionProxyUrl});if(!b.ok){let c=b.error||`Proxy test failed with status ${b.status}`;return await (0,d.updateProviderConnection)(a,{testStatus:"error",lastError:c,lastErrorAt:new Date().toISOString()}),{valid:!1,error:c,latencyMs:0,testedAt:new Date().toISOString()}}}let i=Date.now();c="apikey"===g.authType||"cookie"===g.authType?await w(g,h):await u(g,h);let j=Date.now()-i,k=c.valid&&(c.warning||c.error),l={testStatus:c.valid?"active":"error",lastError:c.valid?k||null:c.error,lastErrorAt:c.valid?k?new Date().toISOString():null:new Date().toISOString()};return c.refreshed&&c.newTokens&&(c.newTokens.accessToken&&(l.accessToken=c.newTokens.accessToken),c.newTokens.refreshToken&&(l.refreshToken=c.newTokens.refreshToken),c.newTokens.idToken&&(l.idToken=c.newTokens.idToken),c.newTokens.lastRefreshAt&&(l.lastRefreshAt=c.newTokens.lastRefreshAt),c.newTokens.expiresIn&&(l.expiresIn=c.newTokens.expiresIn),c.newTokens.expiresIn?l.expiresAt=new Date(Date.now()+1e3*c.newTokens.expiresIn).toISOString():c.newTokens.expiresAt&&(l.expiresAt=c.newTokens.expiresAt),c.newTokens.providerSpecificData&&(l.providerSpecificData={...g.providerSpecificData||{},...c.newTokens.providerSpecificData})),await (0,d.updateProviderConnection)(a,l),{valid:c.valid,error:c.error,refreshed:!!c.refreshed,latencyMs:j,testedAt:new Date().toISOString()}}},46820:(a,b,c)=>{c.d(b,{Fh:()=>d.Fh,L9:()=>d.L9,Mc:()=>d.Mc,OM:()=>d.OM,P:()=>d.getProviderConnections,Pc:()=>d.Pc,Q_:()=>d.Q_,Qu:()=>d.Qu,S8:()=>d.S8,Yd:()=>d.Yd,ZO:()=>d.ZO,c:()=>d.c,createProviderConnection:()=>d.iE,fK:()=>d.fK,fv:()=>d.fv,ho:()=>d.ho,hr:()=>d.hr,i0:()=>d.i0,o5:()=>d.o5,op:()=>d.op,rj:()=>d.updateProviderConnection,uL:()=>d.uL,ui:()=>d.ui,uv:()=>d.uv});var d=c(94164)},59824:(a,b,c)=>{c.d(b,{DI:()=>i,Hp:()=>k,LT:()=>j,MZ:()=>v,Nl:()=>z,Nu:()=>p,OV:()=>h,Op:()=>A,S6:()=>s,Td:()=>B,Tx:()=>q,WN:()=>t,Ww:()=>D,YT:()=>n,ZL:()=>m,aV:()=>u,cD:()=>o,f7:()=>y,hF:()=>l,lB:()=>w,qp:()=>C,w1:()=>x});var d=c(21820),e=c(24567),f=c(68711);function g(){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)}let h={...f.sr.claude},i={...f.sr.codex},j={...e.dG,...f.sr["gemini-cli"]},k={...f.sr.qwen},l={...f.sr.qoder},m={...f.sr.iflow},n={...e.XP,...f.sr.antigravity,loadCodeAssistClientMetadata:JSON.stringify({ideType:9,platform:g(),pluginType:2})};function o(){return{ideType:9,platform:g(),pluginType:2}}({...f.sr.openai});let p={...f.sr.github},q={...f.sr.kiro},r=/^[a-z]{2}-[a-z]+-\d{1,2}$/;function s(a){if("string"!=typeof a||!r.test(a))throw Error("Invalid region");return a}let t={...f.sr.cursor,tokenStoragePaths:{linux:"~/.config/Cursor/User/globalStorage/state.vscdb",macos:"/Users/<user>/Library/Application Support/Cursor/User/globalStorage/state.vscdb",windows:"%APPDATA%\\Cursor\\User\\globalStorage\\state.vscdb"}},u={...f.sr.kimi,clientId:process.env.KIMI_CODING_OAUTH_CLIENT_ID||process.env.KIMI_OAUTH_CLIENT_ID||f.xq.kimi?.clientId||f.sr.kimi?.clientId},v={...f.sr.kilocode},w={...f.sr.cline},x={...f.sr.clinepass},y={...f.sr.gitlab},z={...f.sr["codebuddy-cn"]},A={...f.sr.zcode},B={...f.sr.kimchi},C={...f.sr["grok-cli"]},D=3e5},59980:(a,b,c)=>{c.d(b,{C:()=>f});var d=c(13398);function e(a){return null==a?"":String(a).trim()}async function f({proxyUrl:a,testUrl:b,timeoutMs:c}={}){let g,h=e(a);if(!h)return{ok:!1,status:400,error:"proxyUrl is required"};let i=e(b)||"https://google.com/",j=Number(c),k=Number.isFinite(j)&&j>0?Math.min(j,3e4):8e3;try{try{g=new d.ProxyAgent({uri:h})}catch(a){return{ok:!1,status:400,error:`Invalid proxy URL: ${a?.message||String(a)}`}}let a=new AbortController,b=Date.now(),c=setTimeout(()=>a.abort(),k);try{let c=await (0,d.hd)(i,{method:"HEAD",dispatcher:g,signal:a.signal,headers:{"User-Agent":"VansRouter"}});return{ok:c.ok,status:c.status,statusText:c.statusText,url:i,elapsedMs:Date.now()-b}}catch(b){let a=b?.name==="AbortError"?"Proxy test timed out":function(a){if(!a)return"Unknown error";let b=a?.message||String(a),c=a?.cause?.code||a?.code,d=a?.cause?.message;return d&&d!==b?c?`${b}: ${d} (${c})`:`${b}: ${d}`:c&&!b.includes(c)?`${b} (${c})`:b}(b);return{ok:!1,status:500,error:a}}finally{clearTimeout(c)}}finally{try{await g?.close?.()}catch{}}}},91253:(a,b,c)=>{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(53813);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)},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,XH:()=>d.XH,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,wA:()=>d.wA,yF:()=>d.yF,yg:()=>d.yg,zP:()=>d.zP});var d=c(77725)}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=7938,exports.ids=[7938],exports.modules={26985:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=7938,exports.ids=[7938],exports.modules={26985:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=2,e=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},67938:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>g});var d=c(87550),e=c.n(d),f=c(26985);function g(a){let b=new(e())(a);b.exec(f.oG);let c=new Map;function d(a){let d=c.get(a);return d||(d=b.prepare(a),c.set(a,d)),d}let g=setInterval(()=>{try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{c.clear()}catch{}try{b.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"better-sqlite3",run:(a,b=[])=>d(a).run(b),get:(a,b=[])=>d(a).get(b),all:(a,b=[])=>d(a).all(b),exec:a=>b.exec(a),transaction:a=>b.transaction(a)(),checkpoint(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:b}}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},cachedProviderModels:{columns:{providerId:"TEXT NOT NULL",modelId:"TEXT NOT NULL",kind:"TEXT DEFAULT 'llm'",ownedBy:"TEXT NOT NULL",capabilities:"TEXT",updatedAt:"INTEGER NOT NULL"},primaryKey:"PRIMARY KEY (providerId, modelId)",indexes:["CREATE INDEX IF NOT EXISTS idx_cpm_kind ON cachedProviderModels(kind)","CREATE INDEX IF NOT EXISTS idx_cpm_provider ON cachedProviderModels(providerId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},67938:(a,b,c)=>{c.d(b,{createBetterSqliteAdapter:()=>g});var d=c(87550),e=c.n(d),f=c(26985);function g(a){let b=new(e())(a);b.exec(f.oG);let c=new Map;function d(a){let d=c.get(a);return d||(d=b.prepare(a),c.set(a,d)),d}let g=setInterval(()=>{try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},6e4);function h(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}try{c.clear()}catch{}try{b.close()}catch{}}"function"==typeof g.unref&&g.unref();let i=()=>h();return process.once("beforeExit",i),process.once("SIGINT",()=>{i(),process.exit(0)}),process.once("SIGTERM",()=>{i(),process.exit(0)}),{driver:"better-sqlite3",run:(a,b=[])=>d(a).run(b),get:(a,b=[])=>d(a).get(b),all:(a,b=[])=>d(a).all(b),exec:a=>b.exec(a),transaction:a=>b.transaction(a)(),checkpoint(){try{b.pragma("wal_checkpoint(TRUNCATE)")}catch{}},close(){clearInterval(g),h()},raw:b}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=7950,exports.ids=[7950],exports.modules={47950:(a,b,c)=>{c.d(b,{PX:()=>N,Uw:()=>R});var d=c(67259),e=c(91253),f=c(94164),g=c(76489),h=c(84397),i=c(26415),j=c(2607),k=c(22830),l=c(91392);let m=new Map;async function n(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),1e4);try{let d=await (0,j.proxyAwareFetch)("https://api.githubcopilot.com/models",{method:"GET",headers:{Authorization:`Bearer ${a}`,"Content-Type":"application/json","Copilot-Integration-Id":"vscode-chat","editor-version":`vscode/${k.x0.VSCODE_VERSION}`,"editor-plugin-version":`copilot-chat/${k.x0.COPILOT_CHAT_VERSION}`,"user-agent":k.x0.USER_AGENT,"x-github-api-version":k.x0.API_VERSION},cache:"no-store",signal:b||c.signal});if(!d.ok){let a=Error(`Copilot /models returned ${d.status}`);throw a.status=d.status,a}let e=await d.json();return Array.isArray(e?.data)?e.data:[]}finally{clearTimeout(d)}}async function o(a,b={}){let c,d=a?.providerSpecificData?.copilotToken||a?.accessToken;if(!d)return b.log?.debug?.("COPILOT_MODELS","No copilotToken/accessToken; skipping live fetch"),null;let e=a?.providerSpecificData?.copilotToken||a?.accessToken||"copilot-anonymous",f=Date.now();if(!b.forceRefresh){let a=m.get(e);if(a&&a.expiresAt>f)return{models:a.models}}try{c=await n(d,b.signal)}catch(d){if(!d||401!==d.status&&403!==d.status||!a.accessToken)return b.log?.warn?.("COPILOT_MODELS",`Live model fetch failed: ${d?.message||d}`),null;{b.log?.info?.("COPILOT_MODELS",`Got ${d.status}; refreshing Copilot token`);let e=await (0,l.jR)(a.accessToken);if(!e?.token)return b.log?.warn?.("COPILOT_MODELS","Token refresh did not return a token"),null;if("function"==typeof b.onCredentialsRefreshed)try{await b.onCredentialsRefreshed({copilotToken:e.token,copilotTokenExpiresAt:e.expiresAt})}catch(a){b.log?.warn?.("COPILOT_MODELS",`onCredentialsRefreshed failed: ${a?.message||a}`)}try{c=await n(e.token,b.signal)}catch(a){return b.log?.warn?.("COPILOT_MODELS",`Retry after refresh failed: ${a?.message||a}`),null}}}let g=function(a){let b=new Set,c=[];for(let d of a){if(!d||"object"!=typeof d||d.capabilities?.type!=="chat"||d.policy&&"enabled"!==d.policy.state)continue;let a=d.id;!a||b.has(a)||(b.add(a),c.push({id:a,name:d.name||a}))}return c}(c);return g.length?(m.set(e,{expiresAt:f+3e5,models:g}),{models:g}):null}var p=c(56726);async function q(a){let b=!!a?.apiKey,c=b?a.apiKey:a?.accessToken;if(!c)return null;let d=new AbortController,e=setTimeout(()=>d.abort(),5e3);try{let a=b?{Accept:"application/json",Authorization:`Bearer ${c}`}:(0,p.w$)(c,{Accept:"application/json"}),e=await fetch("https://api.cline.bot/api/v1/models",{method:"GET",headers:a,signal:d.signal});if(!e.ok)return null;let f=await e.json(),g=Array.isArray(f)?f:f?.data;if(!Array.isArray(g))return null;let h=g.filter(a=>"string"==typeof a?.id&&a.id.startsWith("cline-pass/")).map(a=>({id:a.id.slice(11),name:a.name||a.id.slice(11)}));return h.length?{models:h}:null}catch{return null}finally{clearTimeout(e)}}var r=c(21135),s=c(7160),t=c(83950),u=c(8188),v=c(7916);let w=/[-_][0-9a-f]{8,}$/i,x=["llm","tts","embedding","image","imageToText","stt","webSearch","webFetch"],y={image:"image",tts:"tts",embedding:"embedding",stt:"stt",imageToText:"imageToText"},z={kiro:async a=>{let b=await (0,h.c)({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null},qoder:async a=>{let b=await (0,i.EV)({accessToken:a.accessToken,refreshToken:a.refreshToken,email:a.email,displayName:a.displayName,providerSpecificData:a.providerSpecificData||{}});return b?.models?.length?{models:b.models.map(a=>({id:a.id,name:a.name}))}:null},github:async a=>{let b=await o({accessToken:a.accessToken,refreshToken:a.refreshToken,providerSpecificData:a.providerSpecificData||{}},{log:console,onCredentialsRefreshed:async b=>{await (0,t.vN)(a.id,{copilotToken:b.copilotToken,copilotTokenExpiresAt:b.copilotTokenExpiresAt,existingProviderSpecificData:a.providerSpecificData||{}})}});return b?.models?.length?{models:b.models}:null},clinepass:async a=>{let b=await q({accessToken:a.accessToken,apiKey:a.apiKey});return b?.models?.length?{models:b.models}:null},"grok-cli":async a=>{let b=await (0,u.B)(a.providerSpecificData||{}),c=await (0,r.M)({...a,connectionId:a.id},{log:console,proxyOptions:{connectionProxyEnabled:!0===b.connectionProxyEnabled,connectionProxyUrl:b.connectionProxyUrl||"",connectionNoProxy:b.connectionNoProxy||"",vercelRelayUrl:b.vercelRelayUrl||"",strictProxy:!0===b.strictProxy},onCredentialsRefreshed:async b=>{await (0,t.vN)(a.id,{...b,existingProviderSpecificData:a.providerSpecificData||{}})}});return c?.models?.length?{models:c.models}:null},cursor:async a=>{let b=await (0,s.FD)({accessToken:a.accessToken,providerSpecificData:a.providerSpecificData||{}},{log:console});return b?.models?.length?{models:b.models}:null}};function A(a){let b=a?.kind||a?.type;return b&&y[b]||"llm"}function B(a){let b=String(a).toLowerCase();return/embed/.test(b)?"embedding":/tts|speech|audio|voice/.test(b)?"tts":/image|imagen|dall-?e|flux|sdxl|sd-|stable-diffusion/.test(b)?"image":"llm"}function C(a,b){let c=e.AI_PROVIDERS[a];return(Array.isArray(c?.serviceKinds)&&c.serviceKinds.length>0?c.serviceKinds:["llm"]).some(a=>b.has(a))}let D={},E={};async function F(a,b){let c=b?.modelsFetcher;if(!c?.url)return[];let d=Date.now();if(D[a]&&d<(E[a]||0))return D[a];try{let b,e=new AbortController,f=setTimeout(()=>e.abort(),8e3),g=await fetch(c.url,{method:"GET",headers:{"Content-Type":"application/json"},cache:"no-store",signal:e.signal});if(clearTimeout(f),!g.ok)return[];let h=await g.json(),i=Array.isArray(h)?h:h?.data||h?.models||h?.results||[];b="opencode-free"===c.type?i.reduce((a,b)=>{let c=b?.id||b?.name||b?.model;return"string"==typeof c&&""!==c.trim()&&c.endsWith("-free")&&a.push(c),a},[]):i.reduce((a,b)=>{let c=b?.id||b?.name||b?.model;return"string"==typeof c&&""!==c.trim()&&a.push(c),a},[]);let j=Array.from(new Set(b));return D[a]=j,E[a]=d+3e5,j}catch{return D[a]||[]}}globalThis._compatibleModelsCache||(globalThis._compatibleModelsCache=new Map);let G=globalThis._compatibleModelsCache;async function H(a){if(!a?.apiKey)return[];let b="string"==typeof a?.providerSpecificData?.baseUrl?a.providerSpecificData.baseUrl.trim().replace(/\/$/,""):"";if(!b)return[];let c=`${a.provider}:${b}:${a.apiKey}`,d=Date.now(),f=G.get(c);if(f&&f.expiresAt>d)return f.ids;let g=`${b}/models`,h={"Content-Type":"application/json"};if((0,e.mq)(a.provider))h.Authorization=`Bearer ${a.apiKey}`;else{if(!(0,e.gb)(a.provider))return[];g.endsWith("/messages/models")?g=g.slice(0,-9):g.endsWith("/messages")&&(g=`${g.slice(0,-9)}/models`),h["x-api-key"]=a.apiKey,h["anthropic-version"]="2023-06-01",h.Authorization=`Bearer ${a.apiKey}`}try{let a=new AbortController,b=setTimeout(()=>a.abort(),5e3),e=await fetch(g,{method:"GET",headers:h,cache:"no-store",signal:a.signal});if(clearTimeout(b),!e.ok)return[];let f=await e.json(),i=Array.isArray(f)?f:f?.data||f?.models||f?.results||[],j=Array.from(new Set(i.reduce((a,b)=>{let c=b?.id||b?.name||b?.model;return"string"==typeof c&&""!==c.trim()&&a.push(c),a},[])));return G.set(c,{ids:j,expiresAt:d+3e5}),j}catch{return G.get(c)?.ids||[]}}async function I(){let[a,b,c,d,e]=await Promise.allSettled([(0,f.getProviderConnections)(),(0,f.Uv)(),(0,f.uv)(),(0,f.OM)(),(0,g.vF)()]),h="fulfilled"===a.status&&Array.isArray(a.value)?a.value.filter(a=>a?.isActive!==!1):[],i="fulfilled"===b.status&&Array.isArray(b.value)?b.value:[],j="fulfilled"===c.status&&Array.isArray(c.value)?c.value:[],k="fulfilled"===d.status&&d.value?d.value:{},l="fulfilled"===e.status&&e.value?e.value:{},m="fulfilled"===a.status||"fulfilled"===b.status,n=new Map;for(let a of h)n.has(a.provider)||n.set(a.provider,a);return{connections:h,combos:i,customModels:j,modelAliases:k,isDisabled:(a,b)=>Array.isArray(l[a])&&l[a].includes(b),activeConnectionByProvider:n,dbAvailable:m}}async function J(a,b,c,f,g,h,i,j={}){let k=!0===j.skipDynamicFetch;a=new Set(a);let l=[];for(let c of b){if(!function(a,b){let c=a?.kind||"llm";return b.has(c)}(c,a))continue;let b={id:`combo/${c.name}`,object:"model",owned_by:"combo"};("webSearch"===c.kind||"webFetch"===c.kind)&&(b.kind=c.kind),l.push(b)}if(i){let b=[...h.entries()].filter(([b])=>C(b,a));for(let d of(await Promise.allSettled(b.map(([b,d])=>K(b,d,a,c,f,g,k)))))"fulfilled"===d.status&&Array.isArray(d.value)&&l.push(...d.value)}else{let b=Object.fromEntries(Object.entries(d.Xg).map(([a,b])=>[b,a]));for(let[c,e]of Object.entries(d.vq))if(C(b[c]||c,a))for(let b of e)a.has(A(b))&&(g(c,b.id)||l.push({id:`${c}/${b.id}`,object:"model",owned_by:c}));for(let b of c){if(!b?.id||b.type&&"llm"!==b.type||!a.has("llm"))continue;let c=b.providerAlias;if(!c)continue;let d=String(b.id).trim();d&&l.push({id:`${c}/${d}`,object:"model",owned_by:c})}}let m=Object.entries(e.AI_PROVIDERS).filter(([b,c])=>!h.has(b)&&c.noAuth&&C(b,a));for(let b of(await Promise.allSettled(m.map(([b,d])=>L(b,d,a,c,f,g)))))"fulfilled"===b.status&&Array.isArray(b.value)&&l.push(...b.value);return l}async function K(a,b,c,f,g,h,i=!1){let j=[],k=d.Xg[a]||a,l=(b?.providerSpecificData?.prefix||(0,e.wG)(a)||k).trim(),m=d.vq[k]||[],n=b?.providerSpecificData?.enabledModels,o=Array.isArray(n)&&n.length>0,p=(0,e.mq)(a)||(0,e.gb)(a),q=e.AI_PROVIDERS[a]?.passthroughModels===!0,r=new Map(m.map(a=>[a.id,A(a)])),s=o?Array.from(new Set(n.filter(a=>"string"==typeof a&&""!==a.trim()))):m.map(a=>a.id);!p||0!==s.length||w.test(a)||i||(s=await H(b));let t=e.AI_PROVIDERS[a];t?.noAuth&&t?.modelsFetcher&&(s=Array.from(new Set([...s,...await F(a,t)]))),q&&0===s.length&&(s=m.map(a=>a.id)),q&&!o&&(s=m.map(a=>a.id));let u=z[a],x=new Map,y=null;if(u&&!o&&!i)try{let a=await u(b);if(a?.models?.length){for(let b of(s=a.models.map(a=>a.id),a.models))b.id&&b.capabilities&&x.set(b.id,b.capabilities);y=a.kind||null}}catch(b){console.log(`Live model fetch failed for ${a}: ${b?.message||b}`)}let C=s.reduce((b,c)=>{let d=c;return d.startsWith(`${l}/`)?d=d.slice(l.length+1):d.startsWith(`${k}/`)?d=d.slice(k.length+1):d.startsWith(`${a}/`)&&(d=d.slice(a.length+1)),"string"==typeof d&&""!==d.trim()&&b.push(d),b},[]),D=new Map;for(let b of Array.from(new Set([...C,...f.reduce((b,e)=>{if(!e?.id)return b;let f=(0,d.CP)(e)||"llm";if(!c.has(f)&&!("imageToText"===f&&c.has("llm")))return b;let g=e.providerAlias;if(g!==k&&g!==l&&g!==a)return b;let h=String(e.id).trim();return""!==h&&(D.set(h,f),b.push(h)),b},[]),...Object.values(g||{}).reduce((b,c)=>{let d;return"string"==typeof c&&c.includes("/")&&(c.startsWith(`${l}/`)||c.startsWith(`${k}/`)||c.startsWith(`${a}/`))&&"string"==typeof(d=c.startsWith(`${l}/`)?c.slice(l.length+1):c.startsWith(`${k}/`)?c.slice(k.length+1):c.slice(a.length+1))&&""!==d.trim()&&b.push(d),b},[])]))){let d=D.get(b),e=r.get(b)||d||B(b),f="imageToText"===e&&c.has("llm");if(!c.has(e)&&!f||h(l,b)||h(k,b))continue;let g={id:`${l}/${b}`,object:"model",owned_by:l},i=x.get(b)||(0,v.a0)(d||y)||("llm"===e?(0,v.nl)(a,b):null);i&&(g.capabilities=i),j.push(g)}if(c.has("tts")&&Array.isArray(t?.ttsConfig?.models))for(let a of t.ttsConfig.models)!a?.id||h(l,a.id)||h(k,a.id)||j.push({id:`${l}/${a.id}`,object:"model",owned_by:l});if(c.has("embedding")&&Array.isArray(t?.embeddingConfig?.models))for(let a of t.embeddingConfig.models)!a?.id||h(l,a.id)||h(k,a.id)||j.push({id:`${l}/${a.id}`,object:"model",owned_by:l});return c.has("webSearch")&&t?.searchConfig&&j.push({id:`${l}/search`,object:"model",kind:"webSearch",owned_by:l}),c.has("webFetch")&&t?.fetchConfig&&j.push({id:`${l}/fetch`,object:"model",kind:"webFetch",owned_by:l}),j}async function L(a,b,c,f,g,h){let i=[],j=(0,e.wG)(a)||b.alias||a,k=new Map((d.vq[j]||[]).map(a=>[a.id,A(a)])),l=(d.vq[j]||[]).map(a=>a.id),m=[];for(let d of(b.modelsFetcher&&(m=await F(a,b)),Array.from(new Set([...l,...m,...f.reduce((b,c)=>{if(!c?.id||c.type&&"llm"!==c.type)return b;let d=c.providerAlias;if(d!==j&&d!==a)return b;let e=String(c.id).trim();return""!==e&&b.push(e),b},[]),...Object.values(g||{}).reduce((b,c)=>{let d;return"string"==typeof c&&c.includes("/")&&(c.startsWith(`${j}/`)||c.startsWith(`${a}/`))&&"string"==typeof(d=c.startsWith(`${j}/`)?c.slice(j.length+1):c.slice(a.length+1))&&""!==d.trim()&&b.push(d),b},[])])))){let a=k.get(d)||B(d);c.has(a)&&(h(j,d)||i.push({id:`${j}/${d}`,object:"model",owned_by:j}))}if(c.has("tts")&&Array.isArray(b?.ttsConfig?.models))for(let a of b.ttsConfig.models)a?.id&&!h(j,a.id)&&i.push({id:`${j}/${a.id}`,object:"model",owned_by:j});if(c.has("embedding")&&Array.isArray(b?.embeddingConfig?.models))for(let a of b.embeddingConfig.models)a?.id&&!h(j,a.id)&&i.push({id:`${j}/${a.id}`,object:"model",owned_by:j});return c.has("webSearch")&&b?.searchConfig&&i.push({id:`${j}/search`,object:"model",kind:"webSearch",owned_by:j}),c.has("webFetch")&&b?.fetchConfig&&i.push({id:`${j}/fetch`,object:"model",kind:"webFetch",owned_by:j}),i}globalThis._modelsListCache||(globalThis._modelsListCache=new Map);let M=globalThis._modelsListCache;async function N(a,b={}){let c=Array.isArray(a)?a.slice().sort().join(","):String(a),d=`${c}:${!0===b.skipDynamicFetch?"skip":"noskip"}`,e=Date.now(),g=M.get(d);if(g&&g.expiresAt>e)return g.models;let{combos:h,customModels:i,modelAliases:j,isDisabled:k,activeConnectionByProvider:l,dbAvailable:m}=await I(),n=await J(a,h,i,j,k,l,m,b),o=new Set,p=[];for(let a of n){if(!a?.id||o.has(a.id))continue;o.add(a.id);let b={id:a.id,object:"model",owned_by:a.owned_by||(a.id.includes("/")?a.id.split("/")[0]:"combo")};a.kind&&(b.kind=a.kind),a.capabilities&&(b.capabilities=a.capabilities),p.push(b)}if(0===p.length){let a=await (0,f.wA)();if(a.length>0)for(let b of a)o.has(b.id)||(o.add(b.id),p.push(b))}return M.set(d,{models:p,expiresAt:e+15e3}),p.length>0&&(0,f.XH)(p).catch(()=>{}),p}let O=null,P=0;async function Q(){let a=Date.now();if(O&&a<P)return O;let{combos:b,customModels:c,modelAliases:d,isDisabled:e,activeConnectionByProvider:f,dbAvailable:g}=await I(),h=await J(x,b,c,d,e,f,g),i=new Set;for(let a of h)a?.id&&i.add(a.id);return O=i,P=a+3e4,i}async function R(a,b=null){return!b||(await Q()).has(a)}},67259:(a,b,c)=>{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},76489:(a,b,c)=>{c.d(b,{oF:()=>d.oF,tm:()=>d.tm,vF:()=>d.vF});var d=c(77725)}};
@@ -1,4 +1,4 @@
1
- "use strict";exports.id=8057,exports.ids=[8057],exports.modules={78785:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=1,e=`
1
+ "use strict";exports.id=8057,exports.ids=[8057],exports.modules={78785:(a,b,c)=>{c.d(b,{CG:()=>f,f$:()=>d,oG:()=>e,zE:()=>g});let d=2,e=`
2
2
  PRAGMA journal_mode = WAL;
3
3
  PRAGMA synchronous = NORMAL;
4
4
  PRAGMA temp_store = MEMORY;
@@ -6,4 +6,4 @@ PRAGMA mmap_size = 30000000;
6
6
  PRAGMA cache_size = -64000;
7
7
  PRAGMA foreign_keys = ON;
8
8
  PRAGMA busy_timeout = 5000;
9
- `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},88057:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>x});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73468),i=c(78785);let j=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"fix-empty-allowed-lists",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")&&a.exec("UPDATE apiKeys SET allowedProviders = NULL WHERE allowedProviders = '[]'"),c.includes("allowedCombos")&&a.exec("UPDATE apiKeys SET allowedCombos = NULL WHERE allowedCombos = '[]'"),c.includes("allowedKinds")&&a.exec("UPDATE apiKeys SET allowedKinds = NULL WHERE allowedKinds = '[]'")}},{version:3,name:"add-allowed-lists-columns",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedProviders TEXT"),c.includes("allowedCombos")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedCombos TEXT"),c.includes("allowedKinds")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedKinds TEXT")}},{version:4,name:"add-request-details-apikey",up(a){let b=new Set(a.all("PRAGMA table_info(requestDetails)").map(a=>a.name));b.has("apiKey")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKey TEXT"),b.has("apiKeyName")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKeyName TEXT")}}].sort((a,b)=>a.version-b.version);function k(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function l(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}let m=null;function n(){if(m)return m;try{let a=g().join(process.cwd(),"package.json");m=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{m="0.0.0"}return m}let o=["requestDetails"];function p(a){(0,h.Jh)();let b=n(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function q(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var r=c(90118);let s=g().join(h.HG,".migrated-from-json"),t=new WeakSet;class u extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function v(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new u(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function w(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function x(a){if(t.has(a))return;t.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);q(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt(k(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=p(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(o),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),q(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt(k(a,"schemaVersion","0"),10)||0;if(b>=(j.length?j[j.length-1].version:0))return;let c=j.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),l(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}l(a,"backupSchemaVersion",i.f$);let d=e().existsSync(s),f=w(h.Or.main),m=w(h.Or.usage),x=w(h.Or.disabled),y=w(h.Or.details);if(b&&(f||m||x||y)&&!d){let b=Date.now(),c=p("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,r.s)(f.settings)]),v(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,r.s)(l),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),v(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),v(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),v(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),v(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,r.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,r.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,r.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,r.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,r.s)(c||{})])}if(m&&"object"==typeof m){for(let b of m.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,r.s)(c),(0,r.s)({})])}for(let[b,c]of Object.entries(m.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,r.s)(c)]);"number"==typeof m.totalRequestsLifetime&&l(a,"totalRequestsLifetime",m.totalRequestsLifetime)}if(x&&"object"==typeof x.disabled)for(let[b,c]of Object.entries(x.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,r.s)(c||[])]);if(y&&Array.isArray(y.records))for(let b of y.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,r.s)(b)]);l(a,"appVersion",n()),l(a,"backupSchemaVersion",i.f$),l(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof u)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(s,new Date().toISOString())}catch{}q(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let z=n();k(a,"appVersion",null)!==z&&l(a,"appVersion",z)}}};
9
+ `,f={_meta:{columns:{key:"TEXT PRIMARY KEY",value:"TEXT NOT NULL"}},settings:{columns:{id:"INTEGER PRIMARY KEY CHECK (id = 1)",data:"TEXT NOT NULL"}},providerConnections:{columns:{id:"TEXT PRIMARY KEY",provider:"TEXT NOT NULL",authType:"TEXT NOT NULL",name:"TEXT",email:"TEXT",priority:"INTEGER",isActive:"INTEGER DEFAULT 1",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pc_provider ON providerConnections(provider)","CREATE INDEX IF NOT EXISTS idx_pc_provider_active ON providerConnections(provider, isActive)","CREATE INDEX IF NOT EXISTS idx_pc_priority ON providerConnections(provider, priority)"]},providerNodes:{columns:{id:"TEXT PRIMARY KEY",type:"TEXT",name:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pn_type ON providerNodes(type)"]},proxyPools:{columns:{id:"TEXT PRIMARY KEY",isActive:"INTEGER DEFAULT 1",testStatus:"TEXT",data:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_pp_active ON proxyPools(isActive)","CREATE INDEX IF NOT EXISTS idx_pp_status ON proxyPools(testStatus)"]},apiKeys:{columns:{id:"TEXT PRIMARY KEY",key:"TEXT UNIQUE NOT NULL",name:"TEXT",machineId:"TEXT",isActive:"INTEGER DEFAULT 1",createdAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_ak_key ON apiKeys(key)"]},combos:{columns:{id:"TEXT PRIMARY KEY",name:"TEXT UNIQUE NOT NULL",kind:"TEXT",models:"TEXT NOT NULL",createdAt:"TEXT NOT NULL",updatedAt:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_combo_name ON combos(name)"]},kv:{columns:{scope:"TEXT NOT NULL",key:"TEXT NOT NULL",value:"TEXT NOT NULL"},primaryKey:"PRIMARY KEY (scope, key)",indexes:["CREATE INDEX IF NOT EXISTS idx_kv_scope ON kv(scope)"]},usageHistory:{columns:{id:"INTEGER PRIMARY KEY AUTOINCREMENT",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",apiKey:"TEXT",endpoint:"TEXT",promptTokens:"INTEGER DEFAULT 0",completionTokens:"INTEGER DEFAULT 0",cost:"REAL DEFAULT 0",status:"TEXT",tokens:"TEXT",meta:"TEXT"},indexes:["CREATE INDEX IF NOT EXISTS idx_uh_ts ON usageHistory(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_uh_provider ON usageHistory(provider)","CREATE INDEX IF NOT EXISTS idx_uh_model ON usageHistory(model)","CREATE INDEX IF NOT EXISTS idx_uh_conn ON usageHistory(connectionId)"]},usageDaily:{columns:{dateKey:"TEXT PRIMARY KEY",data:"TEXT NOT NULL"}},requestDetails:{columns:{id:"TEXT PRIMARY KEY",timestamp:"TEXT NOT NULL",provider:"TEXT",model:"TEXT",connectionId:"TEXT",apiKey:"TEXT",apiKeyName:"TEXT",status:"TEXT",data:"TEXT NOT NULL"},indexes:["CREATE INDEX IF NOT EXISTS idx_rd_ts ON requestDetails(timestamp DESC)","CREATE INDEX IF NOT EXISTS idx_rd_provider ON requestDetails(provider)","CREATE INDEX IF NOT EXISTS idx_rd_model ON requestDetails(model)","CREATE INDEX IF NOT EXISTS idx_rd_conn ON requestDetails(connectionId)"]},cachedProviderModels:{columns:{providerId:"TEXT NOT NULL",modelId:"TEXT NOT NULL",kind:"TEXT DEFAULT 'llm'",ownedBy:"TEXT NOT NULL",capabilities:"TEXT",updatedAt:"INTEGER NOT NULL"},primaryKey:"PRIMARY KEY (providerId, modelId)",indexes:["CREATE INDEX IF NOT EXISTS idx_cpm_kind ON cachedProviderModels(kind)","CREATE INDEX IF NOT EXISTS idx_cpm_provider ON cachedProviderModels(providerId)"]}};function g(a,b){let c=Object.entries(b.columns).map(([a,b])=>`${a} ${b}`);return b.primaryKey&&c.push(b.primaryKey),`CREATE TABLE IF NOT EXISTS ${a} (${c.join(", ")})`}},88057:(a,b,c)=>{c.d(b,{runMigrationOnce:()=>x});var d=c(73024),e=c.n(d),f=c(76760),g=c.n(f),h=c(73468),i=c(78785);let j=[{version:1,name:"initial",up(a){for(let[b,c]of Object.entries(i.CG))for(let d of(a.exec((0,i.zE)(b,c)),c.indexes||[]))a.exec(d)}},{version:2,name:"fix-empty-allowed-lists",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")&&a.exec("UPDATE apiKeys SET allowedProviders = NULL WHERE allowedProviders = '[]'"),c.includes("allowedCombos")&&a.exec("UPDATE apiKeys SET allowedCombos = NULL WHERE allowedCombos = '[]'"),c.includes("allowedKinds")&&a.exec("UPDATE apiKeys SET allowedKinds = NULL WHERE allowedKinds = '[]'")}},{version:3,name:"add-allowed-lists-columns",up(a){let b=a.all("PRAGMA table_info(apiKeys)"),c=Array.isArray(b)?b.map(a=>a.name):[];c.includes("allowedProviders")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedProviders TEXT"),c.includes("allowedCombos")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedCombos TEXT"),c.includes("allowedKinds")||a.exec("ALTER TABLE apiKeys ADD COLUMN allowedKinds TEXT")}},{version:4,name:"add-request-details-apikey",up(a){let b=new Set(a.all("PRAGMA table_info(requestDetails)").map(a=>a.name));b.has("apiKey")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKey TEXT"),b.has("apiKeyName")||a.exec("ALTER TABLE requestDetails ADD COLUMN apiKeyName TEXT")}}].sort((a,b)=>a.version-b.version);function k(a,b,c=null){let d=a.get("SELECT value FROM _meta WHERE key = ?",[b]);return d?d.value:c}function l(a,b,c){a.run("INSERT INTO _meta(key, value) VALUES(?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value",[b,String(c)])}let m=null;function n(){if(m)return m;try{let a=g().join(process.cwd(),"package.json");m=JSON.parse(e().readFileSync(a,"utf-8")).version||"0.0.0"}catch{m="0.0.0"}return m}let o=["requestDetails"];function p(a){(0,h.Jh)();let b=n(),c=`${a}-${b}-${function(a=new Date){let b=a=>String(a).padStart(2,"0");return`${a.getFullYear()}${b(a.getMonth()+1)}${b(a.getDate())}-${b(a.getHours())}${b(a.getMinutes())}${b(a.getSeconds())}`}()}`,d=g().join(h.KQ,c);return e().mkdirSync(d,{recursive:!0}),d}function q(){if(e().existsSync(h.KQ))for(let a of e().readdirSync(h.KQ,{withFileTypes:!0}).filter(a=>a.isDirectory()).map(a=>({name:a.name,full:g().join(h.KQ,a.name),mtime:e().statSync(g().join(h.KQ,a.name)).mtimeMs})).sort((a,b)=>b.mtime-a.mtime).slice(3))try{e().rmSync(a.full,{recursive:!0,force:!0})}catch{}}var r=c(90118);let s=g().join(h.HG,".migrated-from-json"),t=new WeakSet;class u extends Error{constructor(a,b){super(a),this.name="MigrationAborted",this.droppedRows=b}}function v(a,b,c,d,e){let f=[];for(let a of c)try{d(a)}catch(b){f.push({...e(a),reason:b.message})}let g=a.get(`SELECT COUNT(*) as c FROM ${b}`)?.c??0;if(g!==c.length)throw console.warn(`[DB][migrate] ${b} row-count mismatch: expected ${c.length}, got ${g}. Dropped:`,f),new u(`${b} row-count mismatch: expected ${c.length}, got ${g}`,f)}function w(a){if(!e().existsSync(a))return null;try{return JSON.parse(e().readFileSync(a,"utf-8"))}catch{return null}}async function x(a){if(t.has(a))return;t.add(a);let b=function(a){try{let b=a.get("SELECT COUNT(*) as c FROM _meta");return!b||0===b.c}catch{return!0}}(a);q(),a.exec((0,i.zE)("_meta",i.CG._meta));let c=parseInt(k(a,"backupSchemaVersion","0"),10)||0;if(!b&&c<i.f$)try{let b=p(`schema-${c}-to-${i.f$}`);!function(a,b,c="data.sqlite"){let d=g().join(b,c);try{e().rmSync(d,{force:!0})}catch{}let f=d.replace(/'/g,"''");a.exec(`ATTACH DATABASE '${f}' AS bak`);try{let b=new Set(o),c=a.all("SELECT name, sql FROM main.sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'").filter(a=>!b.has(a.name));a.transaction(()=>{for(let b of c){let c=b.sql.replace(/CREATE TABLE\s+/i,"CREATE TABLE bak.");a.exec(c),a.exec(`INSERT INTO bak.${b.name} SELECT * FROM main.${b.name}`)}})}finally{try{a.exec("DETACH DATABASE bak")}catch{}}}(a,b),q(),console.log(`[DB][migrate] pre-schema backup ${c} → ${i.f$}: ${b}`)}catch(a){console.warn(`[DB][migrate] pre-schema backup failed (continuing): ${a.message}`)}!function(a){a.exec((0,i.zE)("_meta",i.CG._meta));let b=parseInt(k(a,"schemaVersion","0"),10)||0;if(b>=(j.length?j[j.length-1].version:0))return;let c=j.filter(a=>a.version>b);for(let b of c)a.transaction(()=>{b.up(a),l(a,"schemaVersion",b.version)}),b.version,console.log(`[DB][migrate] applied #${b.version} ${b.name}`);c.length}(a);for(let[b,c]of Object.entries(i.CG)){a.exec((0,i.zE)(b,c));let d=new Set(a.all(`PRAGMA table_info(${b})`).map(a=>a.name));for(let[e,f]of Object.entries(c.columns))if(!d.has(e)){let c=f.replace(/PRIMARY KEY( AUTOINCREMENT)?/i,"").replace(/UNIQUE/i,"").trim();try{a.exec(`ALTER TABLE ${b} ADD COLUMN ${e} ${c}`),console.log(`[DB][sync] +column ${b}.${e}`)}catch(a){console.warn(`[DB][sync] add column ${b}.${e} failed: ${a.message}`)}}for(let b of c.indexes||[])try{a.exec(b)}catch{}}l(a,"backupSchemaVersion",i.f$);let d=e().existsSync(s),f=w(h.Or.main),m=w(h.Or.usage),x=w(h.Or.disabled),y=w(h.Or.details);if(b&&(f||m||x||y)&&!d){let b=Date.now(),c=p("migrate-from-json");for(let a of Object.values(h.Or))!function(a,b,c=null){if(!e().existsSync(a))return;let d=c||g().basename(a),f=g().join(b,d);e().copyFileSync(a,f)}(a,c);try{a.transaction(()=>{if(f&&"object"==typeof f){for(let[b,c]of(f.settings&&a.run("INSERT INTO settings(id, data) VALUES(1, ?) ON CONFLICT(id) DO UPDATE SET data = excluded.data",[(0,r.s)(f.settings)]),v(a,"providerConnections",f.providerConnections||[],b=>{let{id:c,provider:d,authType:e,name:f,email:g,priority:h,isActive:i,createdAt:j,updatedAt:k,...l}=b;a.run("INSERT OR REPLACE INTO providerConnections(id, provider, authType, name, email, priority, isActive, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[c,d,e||"oauth",f||null,g||null,h||null,+(!1!==i),(0,r.s)(l),j||new Date().toISOString(),k||new Date().toISOString()])},a=>({id:a.id??null,provider:a.provider??null,name:a.name??null})),v(a,"providerNodes",f.providerNodes||[],b=>{let{id:c,type:d,name:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO providerNodes(id, type, name, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,d||null,e||null,(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null,type:a.type??null,name:a.name??null})),v(a,"proxyPools",f.proxyPools||[],b=>{let{id:c,isActive:d,testStatus:e,createdAt:f,updatedAt:g,...h}=b;a.run("INSERT OR REPLACE INTO proxyPools(id, isActive, testStatus, data, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[c,+(!1!==d),e||"unknown",(0,r.s)(h),f||new Date().toISOString(),g||new Date().toISOString()])},a=>({id:a.id??null})),v(a,"apiKeys",f.apiKeys||[],b=>{a.run("INSERT OR REPLACE INTO apiKeys(id, key, name, machineId, isActive, createdAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.key,b.name||null,b.machineId||null,+(!1!==b.isActive),b.createdAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),v(a,"combos",f.combos||[],b=>{a.run("INSERT OR REPLACE INTO combos(id, name, kind, models, createdAt, updatedAt) VALUES(?, ?, ?, ?, ?, ?)",[b.id,b.name,b.kind||null,(0,r.s)(b.models||[]),b.createdAt||new Date().toISOString(),b.updatedAt||new Date().toISOString()])},a=>({id:a.id??null,name:a.name??null})),Object.entries(f.modelAliases||{})))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('modelAliases', ?, ?)",[b,(0,r.s)(c)]);for(let b of f.customModels||[]){let c=`${b.providerAlias}|${b.id}|${b.type||"llm"}`;a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('customModels', ?, ?)",[c,(0,r.s)(b)])}for(let[b,c]of Object.entries(f.mitmAlias||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('mitmAlias', ?, ?)",[b,(0,r.s)(c||{})]);for(let[b,c]of Object.entries(f.pricing||{}))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('pricing', ?, ?)",[b,(0,r.s)(c||{})])}if(m&&"object"==typeof m){for(let b of m.history||[]){let c=b.tokens||{};a.run("INSERT INTO usageHistory(timestamp, provider, model, connectionId, apiKey, endpoint, promptTokens, completionTokens, cost, status, tokens, meta) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",[b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.apiKey||null,b.endpoint||null,c.prompt_tokens||c.input_tokens||0,c.completion_tokens||c.output_tokens||0,b.cost||0,b.status||"ok",(0,r.s)(c),(0,r.s)({})])}for(let[b,c]of Object.entries(m.dailySummary||{}))a.run("INSERT OR REPLACE INTO usageDaily(dateKey, data) VALUES(?, ?)",[b,(0,r.s)(c)]);"number"==typeof m.totalRequestsLifetime&&l(a,"totalRequestsLifetime",m.totalRequestsLifetime)}if(x&&"object"==typeof x.disabled)for(let[b,c]of Object.entries(x.disabled))a.run("INSERT OR REPLACE INTO kv(scope, key, value) VALUES('disabledModels', ?, ?)",[b,(0,r.s)(c||[])]);if(y&&Array.isArray(y.records))for(let b of y.records)a.run("INSERT OR REPLACE INTO requestDetails(id, timestamp, provider, model, connectionId, status, data) VALUES(?, ?, ?, ?, ?, ?, ?)",[b.id,b.timestamp||new Date().toISOString(),b.provider||null,b.model||null,b.connectionId||null,b.status||null,(0,r.s)(b)]);l(a,"appVersion",n()),l(a,"backupSchemaVersion",i.f$),l(a,"migratedAt",new Date().toISOString())})}catch(a){if(a instanceof u)return void console.error(`[DB][migrate] aborted: ${a.message} | legacy JSON kept | backup: ${c}`);throw a}try{e().writeFileSync(s,new Date().toISOString())}catch{}q(),console.log(`[DB][migrate] JSON → SQLite in ${Date.now()-b}ms | legacy JSON kept at DATA_DIR | backup: ${c}`);return}let z=n();k(a,"appVersion",null)!==z&&l(a,"appVersion",z)}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=856,exports.ids=[856],exports.modules={4043:(a,b,c)=>{c.a(a,async(a,d)=>{try{c.r(b),c.d(b,{configureQuotaAutoPing:()=>z,runQuotaAutoPingTick:()=>w,startQuotaAutoPing:()=>x,stopQuotaAutoPing:()=>y});var e=c(92557),f=c(94164),g=c(60950),h=c(88017),i=c(63548),j=c(24567),k=c(2607),l=c(8188),m=c(68600),n=c(79603),o=a([e,i,m]);[e,i,m]=o.then?(await o)():o;let A=n.oc,B={claude:{getUsage:g.g,sendPing:s},codex:{getUsage:h.Tl,sendPing:u}},C=global.__quotaAutoPing??={interval:null,running:!1,resetCache:{},failureCache:{}};function p(a){let b=new Date(a).getTime();return Number.isFinite(b)?new Date(6e4*Math.floor(b/6e4)).toISOString():a}function q(a,b=null){if("number"==typeof a&&Number.isFinite(a))return a;if("string"==typeof a&&a.trim()){let b=Number(a);if(Number.isFinite(b))return b}return b}function r(a){if(!a||!0===a.unlimited)return!1;let b=q(a.remaining);if(null!==b)return b<=0;let c=q(a.used),d=q(a.total);return null!==d&&d>0&&null!==c&&c>=d}async function s(a,b,c,d){return(await d.proxyAwareFetch("https://api.anthropic.com/v1/messages?beta=true",{method:"POST",headers:{...j.$B,Authorization:`Bearer ${a.accessToken}`,"content-type":"application/json"},body:JSON.stringify({model:b.pingModel,max_tokens:b.pingMaxTokens,messages:[{role:"user",content:b.pingText}]})},c)).ok}async function t(a){if("function"==typeof a?.text)return void await a.text();let b=a?.body?.getReader?.();if(b)try{for(;;){let{done:a}=await b.read();if(a)return}}finally{b.releaseLock?.()}}async function u(a,b,c,d){var e;let f=d.getExecutor("codex"),{response:g}=await f.execute({model:b.pingModel,stream:!0,credentials:{accessToken:a.accessToken,connectionId:a.id,providerSpecificData:a.providerSpecificData},proxyOptions:c,log:console,body:{model:b.pingModel,input:(e=b.pingText,[{type:"message",role:"user",content:[{type:"input_text",text:e}]}]),instructions:b.pingInstructions,reasoning:b.pingReasoningEffort?{effort:b.pingReasoningEffort,summary:"auto"}:void 0,store:!1,stream:!0}});if(!g.ok){try{await g.body?.cancel?.()}catch{}return!1}return await t(g),!0}async function v(a,b,c,d,e,f=C){var g,h,i;let j=(g=a.id,`${b}:${g}`),k=f.resetCache[j];if(!c.pingWhenResetAtSlides&&k&&Date.now()<new Date(k).getTime()-A.refreshAheadMs||function(a,b,c=Date.now()){let d=a.failureCache[b];return d&&c-d<A.failureCooldownMs}(f,j))return;let l=(h=await e.resolveConnectionProxyConfig(a.providerSpecificData),{connectionProxyEnabled:!0===h.connectionProxyEnabled,connectionProxyUrl:h.connectionProxyUrl||"",connectionNoProxy:h.connectionNoProxy||"",vercelRelayUrl:h.vercelRelayUrl||"",strictProxy:!1}),m=a;try{m=(await e.refreshAndUpdateCredentials(m,!1,l)).connection}catch(c){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${a.id}: refresh failed: ${c.message}`);return}let n=await d.getUsage(m.accessToken,l),o=n?.quotas||{},q=o?.[c.quotaKey],s=q?.resetAt;if(!s||(f.resetCache[j]=s,c.skipWhenBlockingQuotaExhausted&&(i=c.quotaKey,Object.entries(o||{}).some(([a,b])=>a!==i&&!String(a).toLowerCase().includes("session")&&r(b)))||r(q)))return;let t=Date.now(),u=p(s),w=m.lastPingedResetKey||p(m.lastPingedResetAt);if(!(!function(a,b,c,d){if(a.pingWhenResetAtSlides){let d,e;return!!b&&(d=new Date(b).getTime(),e=new Date(c).getTime(),(Number.isFinite(d)&&Number.isFinite(e)?e-d:0)>=(a.resetAtDriftMs||0))}let e=new Date(c).getTime();return Number.isFinite(e)&&d>=e-A.pingLeadMs}(c,k,s,t)||function(a,b,c=Date.now()){if(!b)return!1;let d=new Date(a.lastPingAt).getTime();return Number.isFinite(d)&&c-d<b}(m,c.minPingIntervalMs,t))&&w!==u){if(!await d.sendPing(m,c,l,e)){f.failureCache[j]=Date.now(),console.warn(`[AutoPing] ${b}:${m.id}: ping failed (reset ${s})`);return}delete f.failureCache[j],await e.updateProviderConnection(m.id,{lastPingedResetAt:s,lastPingedResetKey:u,lastPingAt:new Date().toISOString(),updatedAt:new Date().toISOString()}),console.log(`[AutoPing] ${b}:${m.id}: ping sent (reset ${s})`)}}async function w(a={getSettings:f.mt,getProviderConnections:f.getProviderConnections,updateProviderConnection:f.updateProviderConnection,resolveConnectionProxyConfig:l.B,refreshAndUpdateCredentials:m.q,proxyAwareFetch:k.proxyAwareFetch,getExecutor:i.SB},b=C){if(!b.running){b.running=!0;try{let d=await a.getSettings();for(let[e,f]of Object.entries(A.providers)){let g=B[e];if(!g)continue;let h=d?.[f.settingsKey]?.connections||{};if(0!==Object.keys(h).length)for(let d of(await a.getProviderConnections({provider:e,isActive:!0})).filter(a=>"oauth"===a.authType&&!0===h[a.id]))try{await v(d,e,f,g,a,b)}catch(a){var c;b.failureCache[c=d.id,`${e}:${c}`]=Date.now(),console.warn(`[AutoPing] ${e}:${d.id}: ${a.message}`)}}}catch(a){console.warn("[AutoPing] tick error:",a.message)}finally{b.running=!1}}}function x(){!C.interval&&(console.log("[AutoPing] scheduler started"),w().catch(()=>{}),C.interval=setInterval(()=>{w().catch(()=>{})},A.tickIntervalMs),C.interval.unref&&C.interval.unref())}function y(){C.interval&&(clearInterval(C.interval),C.interval=null,console.log("[AutoPing] scheduler stopped"))}function z(a){Object.values(A.providers).some(b=>Object.values(a?.[b.settingsKey]?.connections||{}).some(Boolean))?x():y()}d()}catch(a){d(a)}})},12286:(a,b,c)=>{c.d(b,{Ut:()=>e,a_:()=>f,bC:()=>d});let d={STOP:"stop",LENGTH:"length",TOOL_CALLS:"tool_calls",CONTENT_FILTER:"content_filter"},e={END_TURN:"end_turn",MAX_TOKENS:"max_tokens",TOOL_USE:"tool_use",STOP_SEQUENCE:"stop_sequence"},f={STOP:"STOP",MAX_TOKENS:"MAX_TOKENS",SAFETY:"SAFETY",RECITATION:"RECITATION",BLOCKLIST:"BLOCKLIST",PROHIBITED_CONTENT:"PROHIBITED_CONTENT"}},37808:(a,b,c)=>{c.d(b,{N:()=>d});function d(a,b){if("string"!=typeof a)return a;try{return JSON.parse(a)}catch{return b}}},56211:(a,b,c)=>{c.d(b,{Ay:()=>j});var d=c(77598);let e=function(a){return Array.isArray(a)?a=Buffer.from(a):"string"==typeof a&&(a=Buffer.from(a,"utf8")),(0,d.createHash)("sha1").update(a).digest()},f=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i,g=function(a){let b;if(!("string"==typeof a&&f.test(a)))throw TypeError("Invalid UUID");return Uint8Array.of((b=parseInt(a.slice(0,8),16))>>>24,b>>>16&255,b>>>8&255,255&b,(b=parseInt(a.slice(9,13),16))>>>8,255&b,(b=parseInt(a.slice(14,18),16))>>>8,255&b,(b=parseInt(a.slice(19,23),16))>>>8,255&b,(b=parseInt(a.slice(24,36),16))/0x10000000000&255,b/0x100000000&255,b>>>24&255,b>>>16&255,b>>>8&255,255&b)};var h=c(5759);function i(a,b,c,d){var f=b,i=d;let j="string"==typeof a?function(a){let b=new Uint8Array((a=unescape(encodeURIComponent(a))).length);for(let c=0;c<a.length;++c)b[c]=a.charCodeAt(c);return b}(a):a,k="string"==typeof f?g(f):f;if("string"==typeof f&&(f=g(f)),f?.length!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+j.length);if(l.set(k),l.set(j,k.length),(l=e(l))[6]=15&l[6]|80,l[8]=63&l[8]|128,c){if((i=i||0)<0||i+16>c.length)throw RangeError(`UUID byte range ${i}:${i+15} is out of buffer bounds`);for(let a=0;a<16;++a)c[i+a]=l[a];return c}return(0,h.k)(l)}i.DNS="6ba7b810-9dad-11d1-80b4-00c04fd430c8",i.URL="6ba7b811-9dad-11d1-80b4-00c04fd430c8";let j=i},59638:(a,b,c)=>{c.d(b,{R4:()=>g,BY:()=>l,a_:()=>j.a_,RV:()=>e,rP:()=>k,x4:()=>f,bC:()=>j.bC,Du:()=>h,z7:()=>d,m8:()=>i});let d={USER:"user",ASSISTANT:"assistant",TOOL:"tool",SYSTEM:"system",DEVELOPER:"developer"},e={USER:"user",MODEL:"model"},f={TEXT:"text",IMAGE_URL:"image_url",IMAGE:"image",INPUT_AUDIO:"input_audio",AUDIO_URL:"audio_url",FILE:"file",FUNCTION:"function"},g={TEXT:"text",IMAGE:"image",DOCUMENT:"document",TOOL_USE:"tool_use",TOOL_RESULT:"tool_result",THINKING:"thinking",REDACTED_THINKING:"redacted_thinking"},h={MESSAGE:"message",FUNCTION_CALL:"function_call",FUNCTION_CALL_OUTPUT:"function_call_output",REASONING:"reasoning",OUTPUT_TEXT:"output_text",INPUT_TEXT:"input_text",INPUT_IMAGE:"input_image",SUMMARY_TEXT:"summary_text"},i=[f.TEXT,f.IMAGE_URL,f.IMAGE,f.INPUT_AUDIO,f.AUDIO_URL,f.FILE];f.TEXT,f.IMAGE_URL,f.IMAGE,g.TOOL_RESULT;var j=c(12286);let k="unknown",l="image/png"},67259:(a,b,c)=>{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)=>{c.d(b,{UY:()=>h,eh:()=>f.eh,fg:()=>e.fg,h0:()=>g,oc:()=>i});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={tickIntervalMs:6e4,pingLeadMs:5e3,refreshAheadMs:3e5,failureCooldownMs:9e5,providers:{claude:{settingsKey:"claudeAutoPing",quotaKey:"session (5h)",pingModel:"claude-haiku-4-5-20251001",pingText:"hi",pingMaxTokens:1},codex:{settingsKey:"codexAutoPing",quotaKey:"session",pingWhenResetAtSlides:!0,resetAtDriftMs:3e4,minPingIntervalMs:6e5,skipWhenBlockingQuotaExhausted:!0,pingModel:"gpt-5.5",pingText:"hi",pingInstructions:"Reply with OK.",pingReasoningEffort:"none"}}}},83712:(a,b,c)=>{c.d(b,{KZ:()=>k,S6:()=>h,Yr:()=>o,f6:()=>l,fc:()=>g,kU:()=>i,pT:()=>j,w_:()=>m});var d=c(37808),e=c(59638);let f=["minLength","maxLength","exclusiveMinimum","exclusiveMaximum","minItems","maxItems","format","default","examples","$schema","$defs","definitions","const","$ref","$comment","deprecated","readOnly","writeOnly","additionalProperties","propertyNames","patternProperties","enumDescriptions","anyOf","oneOf","allOf","not","dependencies","dependentSchemas","dependentRequired","title","optional","deprecated","if","then","else","contentMediaType","contentEncoding","cornerRadius","fillColor","fontFamily","fontSize","fontWeight","gap","padding","strokeColor","strokeThickness","textColor"],g=[{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"OFF"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"OFF"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"OFF"},{category:"HARM_CATEGORY_HARASSMENT",threshold:"OFF"},{category:"HARM_CATEGORY_CIVIC_INTEGRITY",threshold:"OFF"}];function h(a){let b=[];if("string"==typeof a)b.push({text:a});else if(Array.isArray(a)){for(let c of a)if(c.type===e.x4.TEXT)b.push({text:c.text});else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url?.startsWith("data:")){let a=c.image_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.IMAGE_URL&&c.image_url?.url&&(c.image_url.url.startsWith("http://")||c.image_url.url.startsWith("https://")))b.push({fileData:{fileUri:c.image_url.url,mimeType:"image/*"}});else if(c.type===e.x4.INPUT_AUDIO&&c.input_audio?.data){let a=c.input_audio.format||"wav",d="mp3"===a?"audio/mpeg":`audio/${a}`;b.push({inlineData:{mime_type:d,data:c.input_audio.data}})}else if(c.type===e.x4.AUDIO_URL&&c.audio_url?.url?.startsWith("data:")){let a=c.audio_url.url,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d),e=a.substring(d+1),f=c.split(";")[0];b.push({inlineData:{mime_type:f,data:e}})}}else if(c.type===e.x4.FILE&&c.file?.file_data?.startsWith("data:")){let a=c.file.file_data,d=a.indexOf(",");if(-1!==d){let c=a.substring(5,d).split(";")[0],e=a.substring(d+1);b.push({inlineData:{mime_type:c,data:e}})}}}return b}function i(a,b=""){return"string"==typeof a?a:Array.isArray(a)?a.filter(a=>a.type===e.x4.TEXT).map(a=>a.text).join(b):""}function j(a){return(0,d.N)(a,null)}function k(){return`agent-${crypto.randomUUID()}`}function l(){return crypto.randomUUID()+Date.now().toString()}function m(){let a=["useful","bright","swift","calm","bold"],b=["fuze","wave","spark","flow","core"],c=a[Math.floor(Math.random()*a.length)],d=b[Math.floor(Math.random()*b.length)];return`${c}-${d}-${crypto.randomUUID().slice(0,5)}`}function n(a){let b=0,c=-1;for(let d=0;d<a.length;d++){let e=a[d],f=0,g=e.type;"object"===g||e.properties?f=3:"array"===g||e.items?f=2:g&&"null"!==g&&(f=1),f>c&&(c=f,b=d)}return b}function o(a){return a&&"object"==typeof a&&(!function a(b){if(b&&"object"==typeof b)for(let c of(void 0===b.const||b.enum||(b.enum=[b.const],delete b.const),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.enum&&Array.isArray(b.enum)&&(b.enum=b.enum.map(a=>String(a)),b.type||(b.type="string")),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b){if(b&&"object"==typeof b){if(b.allOf&&Array.isArray(b.allOf)){let a={};for(let c of b.allOf)if(c.properties&&(a.properties||(a.properties={}),Object.assign(a.properties,c.properties)),c.required&&Array.isArray(c.required))for(let b of(a.required||(a.required=[]),c.required))a.required.includes(b)||a.required.push(b);delete b.allOf,a.properties&&(b.properties={...b.properties,...a.properties}),a.required&&(b.required=[...b.required||[],...a.required])}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.anyOf&&Array.isArray(b.anyOf)&&b.anyOf.length>0){let a=b.anyOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.anyOf,Object.assign(b,d)}}if(b.oneOf&&Array.isArray(b.oneOf)&&b.oneOf.length>0){let a=b.oneOf.filter(a=>a&&"null"!==a.type);if(a.length>0){let c=n(a),d=a[c];delete b.oneOf,Object.assign(b,d)}}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b){if(b.type&&Array.isArray(b.type)){let a=b.type.filter(a=>"null"!==a);b.type=a.length>0?a[0]:"string"}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of(b.properties&&!b.type&&(b.type="object"),Object.values(b)))c&&"object"==typeof c&&a(c)}(a),!function a(b,c){if(b&&"object"==typeof b){if(Array.isArray(b)){for(let d of b)a(d,c);return}for(let d of Object.keys(b)){if(c.includes(d)||d.startsWith("x-")){delete b[d];continue}let e=b[d];e&&"object"==typeof e&&a(e,c)}}}(a,f),!function a(b){if(b&&"object"==typeof b){if(b.required&&Array.isArray(b.required)&&b.properties){let a=b.required.filter(a=>Object.prototype.hasOwnProperty.call(b.properties,a));0===a.length?delete b.required:b.required=a}for(let c of Object.values(b))c&&"object"==typeof c&&a(c)}}(a),!function a(b){if(b&&"object"==typeof b)for(let c of("object"!==b.type||b.properties&&0!==Object.keys(b.properties).length||(b.properties={reason:{type:"string",description:"Brief explanation of why you are calling this tool"}},b.required=["reason"]),Object.values(b)))c&&"object"==typeof c&&a(c)}(a)),a}}};